Hasil dan Pembahasan A. Ineke Pakereng,

11

4. Hasil dan Pembahasan

Pada bagian ini dijelaskan tentang hasil penelitian yang telah dilakukan. Sistem diimplementasikan dalam bentuk aplikasi desktop. Pengembangan aplikasi dilakukan dengan menggunakan Visual Studio 2012 Express for Desktop. Aplikasi terdiri dari dua bagian utama, yaitu bagian embedding dan bagian extracting. Gambar 6 Form Embedding Pada Gambar 6 ditunjukkan form embedding. Form tersebut menyediakan kontrol untuk memilih gambar cover, input pesan dan kunci. Hasil embedding ditampilkan setelah proses embed selesai. Gambar 7 Form Extracting Pada Gambar 7, ditunjukkan form yang digunakan untuk proses ekstraksi. Form ini memerlukan input berupa gambar stego dan kunci. Output dari proses ekstraksi adalah data teks, yaitu pesan yang disisipkan sebelumnya. Kode Program 1 Perintah Untuk Input Gambar Kedalam Aplikasi 1. private void button1_Clickobject sender, EventArgs e 2. { 3. OpenFileDialog d = new OpenFileDialog; 4. d.Filter = PNG Images|.png|All files .|.; 12 5. if d.ShowDialogthis == DialogResult.OK 6. { 7. this.pictureBox1.ImageLocation = d.FileName; 8. var b = new Bitmapd.FileName; 9. AddLogUkuran Piksel + b.Width + x + b.Height; 10. AddLogKapasistas Penyisipan + GetKapasitasb; 11. } 12. } 13. private static int GetKapasitasBitmap b 14. { 15. return b.Width b.Height 3 8 - 4; 16. } 17. Bitmap b = new Bitmapthis.pictureBox1.ImageLocation; 18. var kapasitas = GetKapasitasb; 19. if this.textBox2.Text.Length kapasitas 20. { 21. MessageBox.ShowPenyisipan tidak dapat dilakukan. Panjang Pesan 22. Melebihi Kapasitas; 23. return; 24. } Kode Program 1 merupakan potongan perintah untuk proses input image kedalam aplikasi. Format image yang digunakan adalah PNG baris 4. Setelah gambar berhasil dimasukan maka akan tampil informasi mengenai gambar yang sudah dimasukan kedalam aplikasi yaitu informasi ukuran piksel dan kapasitas penyisipan baris 9-10. Misalnya pada gambar berukuran 200x200 piksel, kapasitas penyisipan adalah 200 x 200 x 3 warna 8 bit = 15000 byte. Kemudian dikurangi 4 byte, untuk menyimpan 32 bit metadata. Sehingga kapasitas akhirnya adalah 14996 bytebaris 15. Jika pesan yang disisipkan melebihi kapasitas penyisipan maka akan diatasi dengan penanganan error atau error handling baris19-24. Kode Program 2 Perintah Untuk Input Pesan Dan User Key 1. If textBox2.TextLength == 0 2. { 3. MessageBox.ShowPesan tidak boleh kosong; 4. 5. return; 6. } 7. if shuffleCheckBox.Checked textBox3.TextLength 8 8. { 9. MessageBox.ShowKunci Minimal 8 Karakter, Maksimal 12; 10. return; 11. } Kode Program 2 merupakan potongan perintah untuk input pesan dan input user key. Pesan rahasia adalah hal yang sangat penting dan harus dimasukan untuk memulai proses penyisipan. Pesan rahasia tidak boleh kosong baris 1-3. Jumlah karakter yang dibutuhkan untuk memulai proses shuffle lokasi penyisipan adalah minimal 8 karakter dan maksimal 12 karakterbaris 7-10. 13 Kode Program 3 Perintah Untuk Penjumlahan Kunci 1. public class ToolKey 2. { 3. public static int SumKeybyte[] key 4. { 5. int result = key[0]; 6. for int i = 1; i key.Length; i++ 7. { 8. result = result + key[i]; 9. } 10. 11. return result; 12. } 13. } Kode program 3 merupakan perintah penjumlahan kunci menjadi angka seedbaris 5-8. Angka seed dipakai untuk melakukan proses shuffle indeks. Penggunaan user key yang sama akan menghasilkan urutan shuffle yang sama pada saat akan melakukan proses ekstraksi. Kode Program 4 Perintah Shuffle dengan Algoritma Fisher-Yates 1. public static T[] ShuffleTT[] array, int seed 2. { 3. T[] copy = new T[array.Length]; 4. array.CopyTocopy, 0; 5. Random r = new Randomseed; 6. for int i = copy.Length - 1; i 0; i-- 7. { 8. int index = r.Nexti; 9. T tmp = copy[index]; 10. copy[index] = copy[i]; 11. copy[i] = tmp; 12. } 13. return copy; } Kode Program 4 merupakan potongan perintah untuk proses shuffle dari sekumpulan nilai data. Proses shuffle dilakukan dengan menggunakan algoritma Fisher-Yates. Algoritma tersebut memanfaatkan fungsi acak. Pada .Net Framework, disediakan class random yang dapat membangkitkan bilangan acak baris 5. Angka acak diperoleh dengan memanggil fungsi next baris 8. Kode Program 5 Perintah Untuk Proses Penyisipan 1. int length = data.Length; 2. byte[] blength = BitConverter.GetByteslength; 3. byte[] pixels = ExtractPixelscover; 4. char[] biner; 5. int[] indeks = GenerateIndex0, pixels.Length; 6. If shuffle 7. { 8. int seed = Toolkey.SumKeykey; 9. indeks = FisherYates.Shuffleintindeks, seed; 10. } 11. int i; 12. int p = 0; 13. 14. region . SISIPKAN METADATA . 15. biner = GetBitStringblength.ToCharArray; 16. for i = 0; i biner.Length; i++ 17. { 14 18. pixels[indeks[p]] = ReplaceLSBpixels[indeks[p]], biner[i]; 19. LastLogData.Appendindeks[p] + ; 20. p++; 21. } 22. endregion 23. 24. region . SISIPKAN DATA . 25. biner = GetBitStringdata.ToCharArray; 26. 27. for i = 0; i biner.Length; i++ 28. { 29. pixels[indeks[p]] = ReplaceLSBpixels[indeks[p]], biner[i]; 30. LastLogData.Appendindeks[p] + ; 31. p++; 32. } 33. endregion 34. 35. Bitmap resultImage = CombinePixelscover, pixels, new byte[0]; 36. return resultImage Kode Program 5 merupakan potongan perintah untuk proses penyisipan ke dalam gambar. Proses terdiri dari 3 tahap utama. Tahap pertama yaitu proses shuffle indeks-indeks warna pada gambar. Proses ini dilakukan dengan algoritma Fisher-Yates baris 6-7, dengan menggunakan seed hasil penjumlahan kunci baris 5. Tahap kedua adalah menyisipkan metadata. Metadata memiliki arti suatu data yang memberikan informasi tentang data yang lain. Pada kasus ini, metadata berisi informasi: panjang byte data yang akan disisipkan. Tahap terakhir adalah menyisipkan data itu sendiri. Sebelum data disisipkan, data diubah kedalam bentuk binerbaris 25. Data berisi pesan yang dimasukkan oleh pengguna. Kode Program 6 Perintah Untuk Proses Ekstraksi 1. byte[] pixels = ExtractPixelsstego; 2. int[] indeks = GenerateIndex0, pixels.Length; 3. if shuffled 4. { 5. Int seed = Toolkey.SumKeykey 6. indeks = FisherYates.Shuffleintindeks, seed; 7. } 8. int i; 9. int p = 0; 10. 11. region . EXTRACT METADATA . 12. char[] biner = new char[32]; 13. for i = 0; i 32; i++ 14. { 15. biner[i] = RetrieveLSBpixels[indeks[p]]; 16. LastLogData.Appendindeks[p] + ; 17. p++; 18. } 19. byte[] blength = GetBytesArraynew stringbiner; 20. int length = BitConverter.ToInt32blength, 0; 21. endregion 22. 23. region . EXTRACT DATA . 24. biner = new char[length 8]; 25. for i = 0; i biner.Length; i++ 26. { 27. biner[i] = RetrieveLSBpixels[indeks[p]] 28. LastLogData.Appendindeks[p] + ; 29. p++; 30. } 31. endregion 32. 15 33. return GetBytesArraynew stringbiner.ToArray; Kode Program 6 merupakan potongan perintah untuk proses ekstraksi dari dalam gambar. Proses terdiri dari 3 tahap utama. Tahap pertama yaitu proses shuffle indeks-indeks warna pada gambar. Proses ini dilakukan dengan algoritma Fisher-Yates baris 3-4, dengan menggunakan seed hasil penjumlahan kunci baris 2. Tahap kedua adalah ekstraksi metadata. Metadata diekstrak terlebih dahulu, untuk mengetahui berapa banyak bit data yang akan diekstrak selanjutnya. Tahap terakhir adalah ekstraksi data itu sendiri atau membaca LSB pada warna yang disisipkan baris 27. Sistem yang dikembangkan pada penelitian ini didasarkan pada latar belakang masalah yaitu bagaimana menyisipkan informasi pada gambar secara acak. Berdasarkan hal tersebut, maka dilakukan beberapa pengujian. Pengujian pertama yaitu pengujian keberhasilan penyisipan pesan uji integritas. Pengujian kedua adalah pengujian perbandingan perbedaan warna. Pengujian-pengujian tersebut dilakukan dengan menggunakan standart test images [17] yang biasa digunakan pada pengujian algoritma pengolahan gambar. Pengujian pertama yaitu pengujian integritas pesan. Pengujian ini bertujuan untuk membuktikan bahwa proses penyisipan berhasil dilakukan, dan pesan yang diproses embed dan extract, tidak mengalami perubahan. Tabel 8 Hasil Pengujian Integritas pesan No Gambar Pesan Masuk Pesan Keluar Sama 1 Halo FTI UKSW Halo FTI UKSW Ya 2 Ya 3 Ya 4 Ya 16 1 Universitas Kristen Satya Wacana Universitas Kristen Satya Wacana Ya 2 Ya 3 Ya 4 Ya 1 Jl. Diponegoro No. 52-60, Salatiga, Jawa Tengah 50711 0298 321212 Jl. Diponegoro No. 52-60, Salatiga, Jawa Tengah 50711 0298 321212 Ya 2 Ya 3 Ya 4 Ya Berdasarkan hasil pengujian integritas pesan, disimpulkan bahwa pesan yang telah melalui proses embed dan extract, tidak mengalami perubahan. Karena 17 metadata yang digunakan memiliki ukuran 32 bit, maka panjang maksimal pesan yang dapat disisipkan adalah 2 32 = 4.294.967.296 byte 4 milyar karakter. Selain dibatasi oleh metadata, ukuran gambar mempengaruhi panjang pesan yang dapat disisipkan. Pengujian kedua adalah pengujian perbandingan perbedaan warna. Pengujian ini dilakukan dengan menyisipkan data pada 8 gambar berbeda. Kemudian dibandingkan perbedaan piksel yang diakibatkan oleh proses penyisipan. Proses penyisipan dilakukan antara steganografi dengan Fisher-Yates, dan steganografi tanpa Fisher-Yates. Kunci yang digunakan untuk Fisher-Yates adalah “fti.uksw”, dan pesan yang disisipkan adalah: “Satya Wacana, Satya Wacana, hiduplah garba ilmiah kita. Mengabdi Tuhan, gereja dan bangsa, proklamasikan Kerajaan Sorga. Bela k’adilan, bela keb’naran, pantang mundur maju perkasa. Bina negara, hamba Allahnya, amalkan hikmat Pancasila. ” Tabel 9 Hasil Pengujian Perbandingan Perbedaan Warna No Gambar Asli Stego dengan Fisher-Yates Perbedaan Warna dengan gambar asli Stego Tanpa Fisher-Yates Perbedaan Warna dengan gambar asli 1. 965 977 2. 958 958 3. 968 970 4. 967 1020 18 5. 989 992 6. 989 1004 7. 975 975 8. 960 993 9. 920 1046 Hasil pengujian perbandingan perbedaan piksel menunjukkan bahwa dengan menyisipkan secara acak, akan memberikan kemungkinan perubahan piksel yang lebih sedikit. Kemungkinan ini juga dipengaruhi oleh kunci yang digunakan, mengingat kunci digunakan untuk membuat nilai SEED, dan digunakan untuk membuat urutan penyisipan acak. Pengujian ketiga, yaitu pengujian pengaruh kunci, dilakukan untuk membuktikan bahwa kunci dapat mempengaruhi perbedaan warna yang dihasilkan. Pada pengujian ini dilakukan pengisipan pesan yang sama, pada gambar yang sama, namun dengan kunci yang berbeda-beda. Tabel 3 Hasil Pengujian Pengaruh Kunci No Kunci 8-12 karakter SEED Gambar Asli Stego dengan Fisher-Yates Perbedaan warna 1. fti.uksw 827 967 19 2. FTI.uksw 731 989 3. satya.wacana 1211 970 4. satya.WACANA 1019 1010 5. 12bc 494 1000 6. 9987aXUyf5 907 982 7. 998799871234 652 1006 8. ABCDEFGHIJKL 846 1940 9. abcdefghijkl 1230 1908 20 10. aaaabbbbcccc 1176 1888 11. xxxx1234xxxx 1162 1880 12. 777777777777 660 1905 13. HelloworlD 1020 1889 14. worldhello 1084 1885 15. 1234abcd 596 1920 Hasil pengujian pengaruh kunci, memberikan hasil yaitu kunci yang berbeda akan memberikan hasil penyisipan yang berbeda. Tidak ada aturan khusus dalam pemilihan kunci yang terbaik. Untuk meminimalkan perubahan warna, yang dapat dilakukan adalah dengan melakukan penyisipan beberapa kali dengan beberapa pilihan kunci, dan dipilih kunci yang akhirnya memberikan nilai perbedaan warna terkecil. Pada Tabel 3, kunci “fti.uksw” memberikan perubahan yang paling minimal pada stego image. Analisis dari hasil pengembangan aplikasi dan pengujian adalah, dengan menggunakan .NET Framework, aplikasi steganografi lebih mudah dikembangkan, terutama dalam hal pengolahan piksel gambar, dan penggunakan class random. Class Bitmap pada .NET Framework menyediakan fungsionalitas untuk membaca dan mengubah nilai warna pada piksel gambar. Class random 21 menyediakan fungsionalitas untuk membangkitkan bilangan acak, yang digunakan pada proses shuffle. Penggunaan Fisher-Yates memberikan keuntungan yaitu pesan yang disisipkan, dilakukan dalam posisi yang acak, tersebar dalam piksel-piksel warna. Pesan yang disisipkan dengan cara demikian, memiliki potensi keamanan lebih tinggi daripada pesan yang disisipkan dengan berurutan. Kelemahan yang muncul yaitu adanya tambahan proses selain proses embedding dan extracting, yaitu proses shuffle. Karena proses shuffle bekerja dengan cara mengacak posisi indeks warna pada gambar, maka semakin banyak warna semakin besar gambar, maka semakin lama pula proses shuffle yang dilalui.

5. Simpulan