Bab 3
Perancangan Sistem
3.1 Gambaran Umum Sistem
Aplikasi yang kami namakan ”Voice Protect” ini, mempunyai alur program sebagai berikut:
Gambar 3.1 Skema Sistem
Start
Enkripsi Pilih File Rekam Suara Feature Extraction
Simpan vektor suara
Enkripsi Blowfish Gagal Simpan file enkripsi
Dekripsi Buka file enkripsi
Rekam Suara Feature Extraction Hitung Euclidean Distance
Dekripsi Blowfish Gagal Simpan file hasil dekripsi
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.
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.
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 ber- ekstensi .vpt (Voice Protect). Artinya adalah, file ekstensi asli akan dihapus, dan file ber- ekstensi .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 karakter- karakter aneh yang tidak dapat dibaca.
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.
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.
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 :
Gambar 3.2 Hierarki Layar Layar Utama
Enkripsi Dekripsi Informasi
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.
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 VoiceProtect
Enkripsi Dekripsi Informasi Keluar
menggunakan aplikasi. Untuk kembali ke menu utama user dapat menekan tanda silang di pojok kanan atas layar.
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”.
Informasi
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!”.
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
Enkripsi
Lakukan Enkripsi! Kembali
Dekripsi
Lakukan Dekripsi! Kembali
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.
Gambar 3.7 State Transition Diagram pada Proses Enkripsi
Menu Utama Menu Informasi
Tekan tombol infomasi_
Tampilkan menu Informasi
Tekan tombol keluar Keluar dari menu informasi
Menu Dekripsi
Tekan tombol enkripsi Tampilkan menu enkripsi
Buka File
Tekan tombol buka file Tampilkan menu buka file ______Gagal_______
Tampilkan menu enkripsi
Sebutkan Password ______Gagal_______
Tampilkan menu dekripsi
Tekan tombol sebutkan password Sebutkan password suara
_____Berhasil____
Kembali ke menu utama 1
Tekan tombol keluar Keluar dari program
Dekripsi
Tekan tombol dekripsi Dekripsi file
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
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:
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
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
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:
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
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
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
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
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