34
Bab 3 Perancangan Sistem
3.1 Gambaran Umum Sistem
Aplikasi yang kami namakan ”Voice Protect” ini, mempunyai alur program sebagai berikut:
Start
Enkripsi
Dekripsi
Pilih File
Buka file enkripsi
Rekam Suara
Rekam Suara
Feature Extraction
Feature Extraction
Simpan vektor suara
Enkripsi Blowfish
Simpan file enkripsi
Hitung Euclidean Distance
Gagal
Dekripsi Blowfish
Simpan file hasil dekripsi
Gambar 3.1 Skema Sistem
Gagal
35 Aplikasi Voice Protect ini diawali dengan dua pilihan, yaitu Enkripsi dan Dekripsi. Untuk melakukan enkripsi pada file, langkah-langkahnya adalah: pilih file yang akan di-enkripsi, rekam suara, lakukan feature ectraction pada suara dengan metode Mel-frequency Cepstrum Coefficient (MFCC) dan Vector Quantization, simpan vektor suara yang dihasilkan dalam file .mat, lalu, jika berhasil, baru dilakukan enkripsi. Enkripsi dilakukan dengan menggunakan teknik Blowfish Encryption yang sangat aman dan tidak dipatenkan. Untuk melakukan dekripsi prosesnya hampir sama. Hanya saja, ditambahkan perhitungan Euclidean Distance untuk melakukan pengenalan.
3.2 Proses Enkripsi
Proses Enkripsi terdiri dari beberapa langkah, sesuai dengan Gambar 3.1. Detil dari langkah-langkah tersebut akan dijabarkan disini.
3.2.1 Pemilihan File
File yang akan di-enkripsi bisa berupa file apa saja, kecuali file hasil dekripsi. Ukuran file tidak dibatasi, namun, sebaiknya ukuran file tidak terlalu besar. Sepuluh Mega byte adalah limit yang direkomendasikan. File ini nantinya akan dihapus, dan digantikan dengan file yang sudah di-enkripsi. Dalam melakukan pemilihan file, user akan menggunakan dialog untuk membuka file, yang umum digunakan dalam sistem operasi Windows.
36 3.2.2 Perekaman Suara
Untuk merekam suara, user perlu menekan tombol record, dan Voice Protect akan merekam suara melalui microphone selama 3 detik. Bila user merasa perekamannya kurang baik, ia dapat menekan tombol record kembali, untuk merekam ulang. Hasil perekaman suara akan disimpan sementara di folder aplikasi, untuk kemudian dihapus kembali jika proses enkripsi sudah selesai. Perekaman suara harus dilakukan dengan mendekatkan mikrofon ke mulut, dan mengucapkan passwordnya dengan cukup keras, sehingga nantinya akan memudahkan dalam melakukan pengenalan. Dan akan lebih baik jika dalam melakukan perekaman, kondisi ruangan tidak bising. Sebaiknya, password diucapkan dengan nada yang datar, atau dengan nada yang biasa dan tidak dibuat-buat. Ini penting karena jika nada yang dipakai dalam enkripsi dan dekripsi terlampau berbeda, pengenalan akan sulit untuk dilakukan.
3.2.3 Feature Extraction
Seperti yang sudah dijabarkan pada Bab 2, feature extraction dilakukan dengan metode Mel-frequency Cepstrum Coefficients (MFCC) yang mempunyai akurasi lebih tinggi untuk aplikasi speaker verification. Setelah itu dilanjutkan dengan membuat codebook dengan metode Vector Quantization. Modul bagian ini ditulis dalam program Matlab, yang merupakan high level programming language, sehingga lebih mudah untuk melakukan operasi matrix dan operasi matematis lainnya seperti FFT (Fast Fourier Transform). Selain itu, Matlab juga merupakan tool yang powerful untuk melakukan signal processing. Modul akan dijabarkan pada akhir bab ini.
37 3.2.4 Penyimpanan Vektor Suara
Setelah dilakukan feature extraction, suara berubah menjadi vektor yang berdimensi kecil, yang memuat informasi penting tentang suara pembicara. Vektor ini disimpan dalam file .mat, yang nantinya akan digunakan dalam proses dekripsi untuk melakukan pengenalan. File ini akan disimpan dalam folder dimana file yang akan dienkripsi berada. File .mat sebetulnya adalah file data dalam program Matlab. Jadi, file ini bisa di-import ke dalam ruang lingkup Matlab. Namun, jika dibuka dengan Notepad, yang muncul adalah karakter-karakter yang tidak dapat dibaca.
3.2.5 Enkripsi Blowfish
Setelah vektor suara disimpan, berarti file sudah siap di-enkripsi. Enkripsi dilakukan dengan metode Blowfish, yang mempunyai tingkat keamanan tinggi dan tidak dipatenkan. Baris program untuk enkripsi Blowfish ini akan ditulis dalam Visual Basic, karena operasi yang diperlukan hanya operasi-operasi byte seperti XOR. Modul Blowfish akan dijabarkan di akhir bab.
3.2.6 Penyimpanan File Hasil Enkripsi
Setelah file selesai di-enkripsi, file tersebut akan ‘berubah’ menjadi file berekstensi .vpt (Voice Protect). Artinya adalah, file ekstensi asli akan dihapus, dan file berekstensi .vpt akan dibuat untuk menggantikannya. User harus menyimpan file ini dan file .mat untuk dapat melakukan dekripsi.
Jika user mencoba membuka file hasil
enkripsi dengan program seperti Notepad, yang akan muncul adalah deretan karakterkarakter aneh yang tidak dapat dibaca.
38 3.3 Proses Dekripsi
Proses dekripsi terdiri dari beberapa langkah, sesuai dengan Gambar 3.1. Detil dari langkah-langkah tersebut akan dijabarkan disini.
3.3.1 Pemilihan file
File yang dapat dipilih untuk di-dekripsi adalah file dengan ekstensi .vpt . Open File Dialog akan memakai filter agar hanya file tersebut yang dapat dibuka. vpt adalah kependekan dari Voice Protect. Sehingga, user dapat mengidentifikasi file tersebut sebagai file yang terenkripsi. Untuk melakukan dekripsi, file tersebut harus mempunyai pasangannya dalam folder yang sama, yaitu file berekstensi .mat dengan nama file yang sama. File tersebut adalah file berisi vektor suara yang akan digunakan untuk melakukan pengenalan. Jika salah satu file hilang, maka dekripsi tidak dapat dilakukan. Maka itu sebaiknya kedua file tersebut disimpan di dalam folder khusus, sehingga memperkecil kemungkinan file tersebut terhapus secara tidak sengaja.
3.3.2 Perekaman Suara
Proses perekaman suara sama dengan yang terdapat pada enkripsi. User harus mengucapkan password-nya dengan jelas dan cukup keras, dengan mendekatkan mikrofon ke mulut. Suasana ruangan pun harus tidak bising, untuk memudahkan dalam melakukan pengenalan. Dalam mengucapkan password, user harus mengucapkannya dengan nada yang mirip seperti yang diucapkan saat melakukan enkripsi.
39 Hal ini diperlukan karena pengenalan dilakukan dengan berbasis frekuensi. Maka apabila beda frekuensinya terlalu jauh, meskipun kata yang diucapkan sama, user tidak akan dikenali. Untuk mencegah hal yang tidak dinginkan, sebaiknya password diucapkan dengan nada yang biasa atau datar.
3.3.3 Feature Extraction
Ekstraksi ciri (feature extraction) juga sama dengan yang terdapat pada enkripsi., yaitu dengan MFCC (Mel-frequency Cepstrum Coefficients) dan dilanjutkan dengan Vector Quantization. Hanya saja, hasil dari feature extraction ini tidak untuk disimpan, melainkan untuk dibandingkan dengan vektor suara pada saat enkripsi, agar bisa dilakukan pengenalan atau verifikasi, apakah pemilik suara tersebut berhak membuka file atau tidak. Yang dibandingkan adalah Euclidean Distance-nya, yang merupakan langkah berikutnya dari proses dekripsi ini.
3.3.4 Perhitungan Euclidean Distance
Dalam metode Vector Quantization, untuk melakukan pengenalan perlu dicari besar VQ-distortion. VQ-distortion ini dilakukan dengan mencari Pairwise Euclidean Distance antara kedua vektor suara. Apabila VQ-distortion tersebut masuk dalam range yang diatur, maka dekripsi akan dilakukan. Namun apabila tidak masuk dalam range, deskripsi tidak dilakukan, dan user dianggap tidak berhak untuk membuka file tersebut. Modul ini juga ditulis dalam program Matlab, karena memerlukan kemampuan signal processing. Modul ini akan dijabarkan di akhir bab.
40 3.3.5 Dekripsi Blowfish
Dekripsi dengan metode Blowfish sama persis dengan enkripsinya. Hanya saja, subkey digunakan dengan urutan terbalik. Modul ini dibuat dengan menggunakan Visual Basic, dan operasi-operasi utamanya adalah operasi byte XOR. Dekripsi dilakukan per 8 byte data, sampai data tersebut terdekripsi seluruhnya.
3.3.6 Penyimpanan Hasil Dekripsi
Hasil dari dekripsi akan disimpan dalam ekstensi file yang asli, pada folder dimana file enkripsi berada. Ekstensi ini disimpan dalam file .mat bersama dengan vektor suara. Maka dari itu, keberadaan file .mat sangat penting, karena, selain menyimpan vektor suara, file itu juga menyimpan informasi mengenai ekstensi.
3.4 Rancangan Layar
Layar yang ada pada aplikasi, di luar layar-layar peringatan, berjumlah empat buah, yaitu:
Layar Utama,
Layar Informasi, Layar Enkripsi, dan Layar Dekripsi.
Hirarki dari layar-layar tersebut adalah sebagai berikut :
Layar Utama
Enkripsi
Dekripsi Gambar 3.2 Hierarki Layar
Informasi
41 3.4.1 Rancangan Layar Utama
Menu utama didapat ketika program dieksekusi dengan meng-klik icon program Voice Protect. Dalam menu utama terdapat 3 tombol, yakni: ”Enkripsi”, ”Dekripsi”, ”Informasi”, dan ”Keluar”. Tombol ”Enkripsi” berfungsi untuk melakukan enkripsi dengan menampilkan layar Enkripsi. Sedangkan tombol ”Dekripsi” berfungsi untuk melakukan dekripsi dengan menampilkan layar Dekripsi. Apabila user ingin melihat informasi seputar cara pemakaian program secara rinci, user dapat menekan tombol ”Informasi”. Tombol ”Keluar” berguna untuk keluar dari aplikasi.
VoiceProtect
Enkripsi
Dekripsi
Informasi
Keluar
Gambar 3.3 Rancangan Layar Utama
3.4.2 Rancangan Layar Informasi
Layar Informasi ini akan ditampilkan apabila user mengklik tombol ”Informasi” pada menu utama. Layar Informasi akan menampilkan informasi tentang bagaimana cara
42 menggunakan aplikasi. Untuk kembali ke menu utama user dapat menekan tanda silang di pojok kanan atas layar.
Informasi
Gambar 3.3 Perancangan Layar Informasi
Gambar 3.4 Rancangan Layar Informasi
3.4.3 Perancangan Layar Enkripsi
Setelah menekan tombol ”Enkripsi” pada layar utama maka user akan masuk pada layar Enkripsi. Untuk melakukan enkripsi, user harus terlebih dahulu memilih file yang akan di-enkripsi dengan menekan tombol ”Buka File”. Setelah memilih file, user perlu merekam password suaranya dengan menekan tombol record. Voice Protect akan merekam suara selama tiga detik, jadi user harus bersiap-siap di depan microphone-nya. Setelah merekam suara, proses enkripsi siap dilakukan. Untuk melakukan enkripsi, user perlu menekan tombol ”Lakukan Enkripsi!”. Lalu, Voice Protect akan meng-enkripsi file yang telah dipilih. Setelah proses selesai, sebuah pesan akan muncul, apakah enkripsi berhasil dilakukan, atau tidak. Untuk kembali ke ke layar utama, user dapat menekan tombol ”Kembali”.
43
Enkripsi
Lakukan Enkripsi!
Kembali
Gambar 3.5 Perancangan Layar Enkripsi
3.4.4 Rancangan Layar Dekripsi
Setelah memilih file, user perlu mengucapkan password dengan menekan tombol record. Dan, proses dekripsi siap dilakukan. Untuk melakukan dekripsi (dan verifikasi suara tentunya), user perlu menekan tombol ”Lakukan Dekripsi!”. Dekripsi
Lakukan Dekripsi!
Kembali
Gambar 3.6 Perancangan Layar Dekripsi
Apabila setelah dilakukan feature extraction dan Vector Quantization suara tersebut cocok dengan suara yang tersimpan, maka dekripsi akan dilakukan. Apabila
44 tidak cocok, maka akan muncul pesan bahwa user tidak berhak untuk membuka file tersebut. Untuk kembali ke menu utama, user dapat menekan tombol ”Kembali”.
3.5 State Transition Diagram
Berikut ini adalah State Transition Diagram (STD) untuk proses enkripsi dan dekripsi.
Kedua diagram ini akan digunakan sebagai panduan dalam membuat alur
program, sehingga dapat dihasilkan aplikasi yang terstruktur dengan baik.
45
Gambar 3.7 State Transition Diagram pada Proses Enkripsi
46 Tekan tombol infomasi_ Tampilkan menu Informasi
Menu Informasi
Tekan tombol keluar Keluar dari menu informasi
Menu Utama
Tekan tombol enkripsi Tampilkan menu enkripsi
Menu Dekripsi Tekan tombol keluar Keluar dari program
______Gagal_______ Tampilkan menu enkripsi Tekan tombol buka file Tampilkan menu buka file
Buka File
Tekan tombol sebutkan password Sebutkan password suara
______Gagal_______ Tampilkan menu dekripsi Sebutkan Password 1
Tekan tombol dekripsi Dekripsi file
Dekripsi _____Berhasil____ Kembali ke menu utama
Gambar 3.8 State Transition Diagram pada Proses Dekripsi
3.6 Spesifikasi Modul
Modul-modul pada aplikasi ini terdiri dari dua bagian, yaitu modul Visual Basic, dan modul Matlab. Modul pada Visual Basic terdiri dari modul untuk enkripsi dan dekripsi. Sedangkan modul Matlab adalah modul yang akan dipanggil untuk melakukan
47 komputasi-komputasi dalam melakukan pengenalan pembicara atau speaker verification, yaitu Proses Signal dan Verifikasi.
3.5.1. Modul Enkripsi Blowfish
Modul ini berfungsi untuk mengenkripsi file input dengan melakukan enkripsi Blowfish setiap 8 byte data. Enkripsi dilakukan dengan memanggil modul ”Enkripsi Byte”. Detail modul ini adalah sebagai berikut:
Mulai Buka File Input dan File Output Hitung Padding yang dibutuhkan untuk 8 byte Block Lakukan Perulangan sebanyak jumlah Block Baca File Input dalam 8 byte Block Ambil Block berikutnya Enkripsi dan Tulis ke File Output Selesai Lakukan Pad pada Block terakhir Lakukan Enkripsi Byte Tulis File Output Selesai 3.5.2. Modul Enkripsi Byte
Modul ini berfungsi untuk mengenkripsi 8 byte dari file input dengan melakukan operasi-operasi XOR . Detail modul ini adalah sebagai berikut:
48 Mulai Inisialisasikan Variabel xL dan xR Pecah input byte x menjadi xL (0-3) dan xR (4-7) Untuk i = 0 sampai (jumlah round -1) Lakukan xL = xL XOR subkey ke-i xR = blf_F(xL) XOR xR Tukar xL dan xR Selesai Tukar xL dan xR xR = xR XOR subkey ke-(banyaknya round – 1) xR = xL XOR subkey ke-banyaknya round Kembalikan xL dan xR kedalam bentuk byte Selesai 3.5.3. Modul Dekripsi Blowfish
Modul ini berfungsi untuk mendekripsi file input dengan melakukan dekripsi Blowfish setiap 8 byte data. Dekripsi dilakukan dengan memanggil modul ”Dekripsi Byte”. Detail modul ini adalah sebagai berikut:
Mulai Buka File Input dan File Output Hitung banyak 8 byte Block yang harus dibaca Lakukan Perulangan sebanyak jumlah Block Baca File Input dalam 8 byte Block kecuali Block terakhir Ambil Block berikutnya Dekripsi dan Tulis ke File Output Selesai Baca Block terakhir Lakukan Dekripsi Byte Tulis File Output Selesai
49 3.5.4. Modul Dekripsi Byte
Modul ini berfungsi untuk mendekripsi 8 byte dari file input dengan melakukan operasi-operasi XOR . Detail modul ini adalah sebagai berikut:
Mulai Inisialisasikan Variabel xL dan xR Pecah input byte x menjadi xL (0-3) dan xR (4-7) Untuk i = (jumlah round + 1) sampai 2 dengan Step – 1 Lakukan xL = xL XOR subkey ke-i xR = blf_F(xL) XOR xR Tukar xL dan xR Selesai Tukar xL dan xR xR = xR XOR subkey ke-1 xR = xL XOR subkey ke-0 Kembalikan xL dan xR kedalam bentuk byte Selesai 3.5.5. Modul Proses Signal
Modul ini adalah modul yang dipanggil untuk melakukan pemrosesan sinyal suara, mulai dari membaca file suara, mengubahnya dengan teknik Mel-frequency Cepstrum Coefficient, melakukan Vector Quantization untuk membuat codebook, dan menyimpan vektor suara yang dihasilkan dalam ekstensi .mat. Detail modul ini adalah sebagai berikut:
Mulai Baca file suara Lakukan MFCC dengan sampling rate 8000 Lakukan Vector Quantization dengan jumlah centroid 16 Simpan Vektor Suara Selesai
50 3.5.6. Modul Verifikasi
Modul ini dipanggil untuk melakukan perbandingan antara vektor suara yang telah disimpan dengan suara yang baru saja direkam. Modul ini seperti modul ”Proses Signal” juga memanggil modul MFCC dan Vector Quantization. Output dari modul ini adalah true, jika kedua suara tersebut sama, dan false, jika berbeda. Detail modul ini adalah sebagai berikut:
Mulai Baca file vektor suara yang telah disimpan Baca file suara yang baru saja direkam Lakukan MFCC dengan sampling rate 8000 Lakukan Vector Quantization dengan jumlah centroid 16 Cari Euclidean Distance dari kedua vektor suara Cari rata-rata dari Euclidean Distance Jika Distance > 2 dan Distance < 3 Return True Lainnya Return False Akhir Jika Selesai 3.5.7. Modul MFCC
Modul ini berfungsi untuk mengubah sinyal suara menjadi vektor dalam skala mel-frequency. Pertama-tama, dilakukan frame blocking pada sinyal suara, lalu windowing dengan teknik hamming window, operasi FFT, mengubah matriks menjadi matriks dalam skala mel-Frequency, dan mengubah matriks ke dalam skala logaritmik. Detail modul ini adalah sebagai berikut:
51 Mulai Inisialisasikan Variabel m = 100 Variabel n = 256 Variabel l = panjang signal Hitung nbFrame Untuk i = 1 sampai n Untuk j = 1 sampai nbFrame Matriks M(i,j) = signal(((j-1)*m) + i) Selesai Selesai h = hamming window dari n Matriks M2 = diagonal matriks dari h * m Untuk i = 1 sampai nbFrame Lakukan FFT Selesai Ubah matriks menjadi matriks mel-Frequency Ubah matriks dalam skala logaritmik Selesai 3.5.8. Modul Vector Quantization
Modul ini berfungsi untuk membuat codebook dengan teknik Vector Quantization terhadap vektor suara hasil MFCC. Detail modul ini adalah sebagai berikut: Mulai Inisialisasikan Variabel r = rata-rata dari matriks input Variable dpr = 10000 Untuk i = 1 sampai logaritma basis 2 dari jumlah centroid r = [ r * (1+e) , r * (1-e)] Selesai Lakukan terus-menerus Cari Euclidean Distance dari matriks input dan r Inisialisasikan Variabel t = 0 Untuk j = 1 sampai 2 pangkat i Hitung r dengan mencari rata-rata dari matriks input Hitung x dengan Euclidean Distance dari r Hitung t dengan menjumlahkan komponen x Selesai Jika (dpr – t)/t < e Maka Keluar
52 Akhir Jika Selesai Selesai 3.5.9. Modul Euclidean Distance
Modul ini dipanggil oleh modul ”Vector Quantization” untuk mencari Euclidean Distance, atau jarak Euclidean diantara dua vektor suara. Detail modul ini adalah sebagai berikut: Mulai Cari ukuran vektor X Simpan dalam M dan N Cari ukuran vektor Y Simpan dalam M2 dan P Jika M tidak sama dengan M2 Maka Kembalikan nilai false Akhir Jika d = matriks nol dengan dimensi N x P Jika N < P Maka copies = matriks nol dengan dimensi 1 x P Untuk n = 1 sampai N Lakukan Matriks d baris ke n = jumlah dari ((kolom matriks x kr n+copies)-y) 2 Selesai Lainnya copies = matriks nol dengan dimensi 1 x N Untuk p = 1 sampai P Matriks d kolom ke p = jumlah dari (( matriks x – matriks y kolom p + copies) 2 Akhir Jika d = sqrt d Selesai
53 3.5.10 Modul Main Program
Mulai Jika CloseButton ditekan maka Unload VoiceProtect Akhir Jika Jika EncryptButton ditekan maka Unload VoiceProtect Load dan Tampilkan Menu Encrypt Akhir Jika Jika DecryptButton ditekan maka Unload VoiceProtect Load dan Tampilkan Menu Decrypt Akhir Jika Jika HelpButton ditekan maka Load dan Tampilkan Menu Help Akhir Jika Selesai 3.5.11 Modul Form Enkripsi
Mulai Inisialisasi namaFileEncrypt, namaFileSound, namaFileMat, dan extention sebagai String Inisialisasi hasilTrain sebagai Variant Inisialisasi recorderStatus dan enkripsiStatus sebagai Boolean Inisialisasi speaker sebagai SpeakerVerificationClass Jika EncryptButton ditekan maka Jika TextBox kosong maka Tampilkan pesan “Anda belum memilih file yang dienkripsi” Akhir Jika Jika recorderStatus = false maka Tampilkan pesan “Anda belum merekam suara” Akhir Jika Simpan suara yang telah direkam Simpan ekstention dan namaFile dari file yang akan dienkripsi
54 Panggil Modul prosesSignal Panggil Modul Enkripsi Blowfish Jika Enkripsi berhasil maka Hapus file asli Set enkripsiStatus menjadi true Tampilkan “Enkripsi file berhasil” Lainnya Tampilkan “Enkripsi gagal dilakukan” Akhir Jika Akhir Jika Jika OpenButton ditekan maka Tampilkan OpenButtonDialog Akhir Jika Jika BackButton ditekan maka Unload Menu Enkripsi Load dan Tampilkan Menu Utama Akhir Jika Selesai 3.5.12 Modul Form Dekripsi
Mulai Inisialisasi namaFileDecrypt, namaFileSound, namaFileMat, dan extention sebagai String Inisialisasi recorderStatus dan dekripsiStatus sebagai Boolean Inisialisasi speaker sebagai SpeakerVerificationClass Jika DecryptButton ditekan maka Jika TextBox kosong maka Tampilkan pesan “Anda belum memilih file yang dienkripsi” Akhir Jika Jika recorderStatus = false maka Tampilkan pesan “Anda belum mengucapkan passwordnya” Akhir Jika Simpan suara yang telah direkam Ambil ekstention dan namaFile dari file yang akan dienkripsi Panggil Modul verifikasi Jika verifikasi mengembalikan nilai 1 maka Panggil Modul Dekripsi Blowfish Jika Dekripsi berhasil maka
55 Hapus File Dekripsi Tampilkan “Dekripsi berhasil” Lainnya Tampilkan “Dekripsi gagal” Akhir Jika Lainnya Tampilkan “Anda tidak berhak membuka file ini” Akhir Jika Akhir Jika Jika OpenButton ditekan maka Tampilkan OpenButtonDialog Akhir Jika Jika BackButton ditekan maka Unload Menu Enkripsi Load dan Tampilkan Menu Utama Akhir Jika Selesai