PENERAPAN ENKRIPSI ALGORITMA BLOWFISH PADA PROSES STEGANOGRAFI METODE EOF Paskalis Andrianus Nani Program Studi Teknik Informatika Universitas Katolik Widya Mandira Email: paskalisnani@gmail.com Abstrak Steganografi adalah proses penyembunyian pesan dalam sebuah gambar. Steganografi bisa dikatakan lebih aman karena sifatnya yang tidak mengacak, sehingga file yang disisipi tidak mencurigakan, walaupun hampir setiap metode memiliki kelebihan dan kekurangan masing-masing. Steganography adalah cara yang menarik dan efektif dalam menyembunyikan pesan rahasia dan telah digunakan selama berabad-abad. Metode-metode untuk memperlihatkan pesan yang disembunyikan (disebut steganalysis) sudah cukup banyak. Oleh karena itu, pesan yang akan disisipkan perlu dienkripsi terlebih dahulu. Tujuan dari penelitian ini adalah mencoba memadukan kelebihan algoritma Blowfish (kriptografi) dan metode End Of File (steganografi); dimana pesan rahasia dienkripsi terlebih dahulu menggunakan algoritma Blowfish, lalu setelah itu disisipkan pada cita digital menggunaan metode End Of File. Kata Kunci : End Of File (EOF), Steganografi, Blowfish. 1. Pendahuluan Seiring dengan perkembangan teknologi, ancaman terhadap keamanan informasi yang dibutuhkan semakin besar, terutama untuk informasi yang dirahasiakan tersebut. Berbagai ancaman di dunia maya seperti hacker, cracker, carder membuat orang khawatir akan keamanan informasi yang dikirimnya. Kekhawatiran inilah yang membuat pengiriman informasi sedikit terhambat, sedangkan informasi tersebut sangat penting orang-orang tertentu [1]. Banyak cara yang dapat dilakukan untuk menyembunyikan informasi yang akan dikirim. Pertama, menggunakan teknik kriptografi, yakni dengan menyandikan informasi menggunakan algoritma tertentu. Tetapi, dengan menyandikan pesan, maka pesan akan nampak sebagai kodekode aneh yang justru akan membuat penasaran bagi orang yang membacanya, yang akhirnya akan berusaha untuk mengetahui kode-kode aneh tersebut. Teknik lain adalah dengan menyisipkan pesan yang akan dikirimkan ke media lain, sehingga pesan tersebut akan tersembunyi dan yang akan nampak adalah media lain yang digunakan untuk menyisipkan pesan. Teknik penyembunyian informasi yang cukup terkenal adalah steganografi. Teknik mengurangi kekurangan dari kriptografi yang dapat dengan mudah menimbulkan kecurigaan. Steganografi menyembunyikan informasi rahasia di dalam informasi lain sehingga informasi tersebut tidak dapat diketahui oleh orang lain yang tidak bersangkutan. Teknik ini mempunyai beberapa metode yang digunakan untuk mengenkripsinya, salah satunya adalah End Of File (EOF) [5]. Banyak penelitian yang telah dilakukan dalam bidang steganografi seperti yang dilakukan oleh Aditya [1], yang membandingkan beberapa teknik steganografi, Anggraini [4], menganalisa penyisipan data pada citra bitmap tanpa mengubah karakteristik citra tersebut, serta Krisnawati [5] yang membahas lebih mendalam mengenai perbandingan metode LSB dan EOF dalam tulisannya. Penelitian ini ingin mengimplementasikan algoritma Blowfish untuk mengenkripsi informasi yang akan dikirim lalu memproses informasi tersebut menggunakan teknik steganografi dengan metode End Of File untuk menyamarkan informasi tersebut. 2. Tinjauan Pustaka Kriptografi Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integrasi data, serta autentifikasi. Tidak semua aspek keamanan informasi ditangani oleh kriptografi.
Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu: [11] 1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas ataukunci rahasia untuk membuka/mengupas informasi yang telah disandi. 2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihakpihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya. 3. Autentifikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain. 4. Non-reoudiasi, atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat. Steganografi Steganografi (steganography) adalah teknik menyembunyikan data rahasia di dalam wadah (media) digital sehingga keberadaan data rahasia tersebut tidak diketahui oleh orang [7]. Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas citra tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah: [12] 1. Fidelity. Mutu citra penampung tidak jauh berubah. Setelah penambahan data rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak mengetahui kalau di dalam citra tersebut terdapat data rahasia. 2. Robustness. Data yang disembunyikan harus tahan terhadap manipulasi yang dilakukan pada citra penampung (seperti pengubahan kontras, penajaman, pemampatan, rotasi, perbesaran gambar, pemotongan (cropping), enkripsi, dan sebagainya). Bila pada citra dilakukan operasi pengolahan citra, maka data yang disembunyikan tidak rusak. 3. Recovery. Data yang disembunyikan harus dapat diungkapkan kembali (recovery). Karena tujuan steganografi adalah data hiding, maka sewaktu-waktu data rahasia di dalam citra penampung harus dapat diambil kembali untuk digunakan lebih lanjut. cover emb key f E f E -1 sender stego key recipient Gambar 1. Steganographic System cover* emb* Gambar di atas menunjukkan sebuah sistem steganografi umum dimana di bagian pengirim pesan(sender) dilakukan proses embedding(f E ) pesan yang hendak dikirim secara rahasia(emb) ke dalam data cover sebagai tempat menyimpannya(cover), dengan menggunakan kunci tertentu(key), sehingga dihasilkan data dengan pesan tersembunyi di dalamnya(stego). Di bagian penerima pesan(recipient), dilakukan proses extracting(f E -1 ) pada stego untuk memisahkan pesan rahasia(emb*) dan data penyimpan(cover*) tadi menggunakan kunci(key) yang sama seperti pada proses embedding. Algoritma Blowfish Blowfish merupakan metoda enkripsi yang mirip dengan DES (DES-like cipher) dan diciptakan oleh Bruce Schneier yang ditujukan untuk mikroposesor besar (32 bit ke atas dengan cache data yang besar). Blowfish dikembangkan untuk memenuhi kriteria disain sebagai berikut: [11] 1. Cepat, pada implementasi yang optimal Blowfish dapat mencapai kecepatan 26 clock cycle per byte. 2. Kompak, Blowfish dapat berjalan pada memori kurang dari 5 KB. 3. Sederhana, Blowfish hanya menggunakan operasi yang simpel: penambahan (addition), XOR, dan penelusuran tabel (table lookup) pada operand 32 bit. Desainnya mudah untuk dianalisa yang membuatnya resisten terhadap kesalahan implementasi. 4. Keamanan yang variabel, panjang kunci Blowfish dapat bervariasi dan dapat mencapai 448 bit (56 byte). Blowfish dioptimasikan untuk aplikasi dimana kunci tidak sering berubah, seperti jalur komunikasi atau enkripsi file otomatis. Blowfish jauh lebih cepat dari DES bila diimplementasikan pada 32 bit mikroprosesor dengan cache data yang besar, seperti Pentium dan Power PC, Blowfish tidak cocok untuk aplikasi seperti packet switching, dengan perubahan kunci yang sering, atau sebagai fungsi hash satu arah. Kebutuhan memorinya yang besar tidak memungkinkan untuk aplikasi kartu pintar (smart card).
Blowfish merupakan blok cipher 64-bit dengan panjang kunci variabel. Algoritma ini terdiri dari dua bagian: key expansion dan enkripsi data. Key expansion merubah kunci yang dapat mencapai 448 bit menjadi beberapa array subkunci (subkey) dengan total 4168 byte. Enkripsi data terdiri dari iterasi fungsi sederhana sebanyak 16 kali. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci- dan data-dependent. Semua operasi adalah penambahan dan XOR pada variable 32-bit. Tambahan operasi lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran. Blowfish menggunakan subkunci yang besar. Kunci ini harus dihitung sebelum enkripsi atau dekripsi data. Blowfish merupakan algoritma yang menerapkan jaringan Feistel (Feistel network) yang terdiri dari 16 putaran. Input merupakan elemen 64 bit, X. Berikut adalah pseudo-code algoritma enkripsinya: [10] Bagi X menjadi dua 32-bit: X L, X R untuk i = 1 sampai 16 X L = X L xor P i X R = F(X L) xor X R Tukar X L dan X R Tukar X L dan X R /*untuk membatalkan penukaran terakhir*/ X R = X R xor P 17 X L = X L xor P 18 Kombinasikan kembali X L dan X R /*hasil cipherteks dari blok plainteks X*/ Agar lebih mudah dipahami silahkan lihat ilustrasi berikut: [6] Gambar 2. Struktur Blowfish Cipher Adapun F-function untuk Blowfish seperti pada gambar berikut: [6] Gambar 3. Struktur F-function Blowfish Cipher F-function terdiri dari 4 buah S-box yang masingmasing menerima input 8-bit dan menghasilkan output 32-bit. Jadi 32 ketika bit hasil XOR P1 dan subblok kiri memasuki F-function, akan dipecah menjadi 4 buah bagian yang masing-masing 8-bit. Masing-masing akan mengalami substitusi dan hasil dari sebuah S-box ialah 32-bit. Hasil dari S-box 1 akan dijumlahkan modular dengan hasil dari S-box 2, kemudian di XOR dengan hasil dari S-box 3, dan terakhir dijumlahkan modular dengan hasil dari S-box 4. Secara matematis F-function dapat ditulis sebagai berikut: Bagi X L, menjadi empat bagian 8-bit: a, b, c dan d. [10] F 32 32 xl S S mod 2 XOR S S mod 1, a 2, b 3, c 4, d 2 Hasil dari F-function ini akan di XOR dengan subblok kanan (R) dari blok pertama. Hasilnya akan menjadi subblok kiri untuk kemudian di XOR lagi dengan P2, dan seterusnya. Setelah diulang sebanyak 16 kali, subblok kiri terakhir di XOR dengan P17, dan subblok kanan terakhir di XOR dengan P18. Hasil inilah yang merupakan ciphertext dari blok pertama. Selanjutnya dienkripsi blok kedua dan seterusnya dari plainteks dengan algoritma enkripsi yang sama. Dekripsi sama persis dengan enkripsi, kecuali P1, P2,., P18 digunakan pada urutan yang terbalik. Subkunci dihitung menggunakan algoritma Blowfish, metodanya adalah sebagai berikut: [10] 1. Pertama-tama inisialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri digit hexadesimal dari pi. 2. XOR P 1 dengan 32 bit pertama kunci, XOR P 2 dengan 32 bit kedua dari kunci dan seterusnya untuk setiap bit dari kunci (sampai P 18 ). Ulangi terhadap bit kunci sampai seluruh P-array di XOR dengan bit kunci. 3. Enkrip semua string nol dengan algoritma Blowfish dengan menggunakan subkunci seperti dijelaskan pada langkah (1) dan (2). 4. Ganti P 1 dan P 2 dengan keluaran dari langkah (3) 5. Enkrip keluaran dari langkah (3) dengan algoritma Blowfish dengan subkunci yang sudah dimodifikasi. 6. Ganti P 3 dan P 4 dengan keluaran dari langkah (5). 7. Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, dan kemudian seluruh keempat S-box (1)
berurutan, dengan keluaran yang berubah secara kontinyu dari algoritma Blowfish. Total diperlukan 521 iterasi untuk menghasilkan semua subkunci yang dibutuhkan. Aplikasi kemudian dapat menyimpan subkunci ini dan tidak dibutuhkan langkah-langkah proses penurunan ini berulang kali, kecuali kunci yang digunakan berubah. Start Pesan yang akan disisipkan Enkripsi pesan dengan algorima blowfish PassPhrase End Of File Pesan yang telah dienkripsi Citra penampung Metode ini meyembunyikan pesan rahasia dengan cara manambahkan bit-bit pesan yang akan disembunyikan ke akhir file citra penampung [1]. Proses penyisipan pesan dengan metode End Of File dapat dituliskan dalam algoritma sebagai berikut: [5] 1. Inputkan pesan yang akan disisipkan 2. Ubah pesan menjadi kode-kode desimal. 3. Inputkan citra grayscale yang akan disisipi pesan. 4. Dapatkan nilai derajat keabuan masingmasing piksel. 5. Tambahkan kode desimal pesan sebagai nilai derajat keabuan diakhir citra. 6. Petakan menjadi citra baru Steganografi dengan metode EOF Stego End Gambar 4. Diagram Alir proses enkripsi pesan dan penyisipan Proses ekstraksi pesan dilakukan sebaliknya. Pesan diekstraksi dari citra penampung lalu didekripsi dengan algoritma blowfish menggunakan passphrase yang sama saat proses enkripsi. Berikut diagram alurnya: 3. Metode Penelitian Start Penelitian ini akan mengimplementasikan perpaduan antara algoritma blowfish dan metode end of file dalam proses steganografi pada citra grayscale menggunakan software Borland Delphi 7. Proses perpaduan kedua metode tersebut dapat digambarkan pada diagram alur di bawah ini: Stego Ekstraksi pesan dari citra penampung Pesan hasil ekstraksi PassPhrase Dekripsi pesan Pesan End Gambar 5. Diagram Alir proses ekstraksi dan dekripsi pesan
4. Hasil Dan Pembahasan Pada tahapan ini, terdapat tiga buah file text yang akan dienkripsi dan masing-masing akan disisipkan ke dalam sebuah citra berformat bitmap(*.bmp). Tabel 1. File yang digunakan dalam percobaan No Nama File Ukuran 1 Saya.txt 438 byte 2 Belajar.txt 106.846 byte 3 Pemrograman.txt 338.486 byte 4 Unwira.bmp (1000 x 936 piksel) 2.808.056 byte Enkripsi Pesan Rahasia Proses enkripsi pesan dilakukan terhadap 3 buah file yang disebutkan di atas dengan passphrase berupa kata andi. Perubahan ukuran file setelah enkripsi dapat dilihat pada tabel di bawah ini: Gambar 8. citra unwira.bmp Berikut adalah tampilan aplikasi steganografi menggunakan metode EOF: Tabel 2. Perubahan ukuran file setelah enkripsi No Nama File Sebelum Sesudah 1 Saya.txt 438 byte 454 byte 2 Belajar.txt 106.846 byte 106.862 byte 3 Pemrograman.txt 338.486 byte 338.502 byte Berdasarkan tabel di atas, dapat dilihat bahwa hasil enkripsi ketiga file tersebut mengalami pembengkakan sebesar 16 bytes. Berikut tampilan aplikasinya: Gambar 9. Form steganografi dengan metode LSB Ukuran citra stego setelah steganografi tidak sama seperti ukuran awal citra sebelum steganografi. Resolusi citra stego bertambah banyak sebanding dengan besar file yang disipkan. Perbandingan lama proses steganografi terhadap ketiga buah file yang telah dienkripsi dapat dilihat pada tabel di bawah ini: Tabel 3. Perbandingan lama proses penyisipan Gambar 6. Form enkripsi data Jika proses enkripsi sukses, maka akan muncul tampilan berikut: No Nama File Lama Proses 1 Saya.txt 0.090 det 2 Belajar.txt 0.631 det 3 Pemrograman.txt 1.153 det Berdasarkan tabel perbandingan di atas, dapat dilihat bahwa ukuran file yang akan disisipkan berbanding lurus dengan waktu yang dibutuhkan dalam proses steganografi. Ekstaksi Pesan Rahasia Gambar 7. Pemberitahuan jika enkripsi sukses Penyisipan Pesan Rahasia Yang dienkripsi Proses penyisipan pesan dilakukan terhadap ketiga buah file yang telah dienkripsi. Citra penampung adalah citra unwira.bmp grayscale dengan resolusi 1000 x 936 piksel. Proses ekstraksi pesan rahasia relatif lebih lama dibandingkan dengan proses penyisipan. Lama proses dapat dlihat pada tabel di bawah ini: Tabel 4. Perbandingan lama proses ekstraksi No Nama File Lama Proses 1 Saya.txt 0.245 det 2 Belajar.txt 1.872 det 3 Pemrograman.txt 2.651 det
Berikut disajikan tampilan form ekstraksi pesan: Gambar 10. Form ekstraksi dan dekripsi pesan 5. Kesimpulan Steganografi menggunakan metode EOF merupakan teknik yang relatif mudah dimengerti, walaupun pesan yang terdapat dalam stego dapat dengan mudah diekstrak oleh orangorang yang tidak bertanggungjawab menggunakan software steganalysis yang beredar luas di dunia maya saat ini. Selain itu, ukuran file penampung akan semakin besar tergantung ukuran pesan yang akan disisipkan. Tetapi, dengan melakukan enkripsi tehadap pesan yang ingin disisipkan, keamanan pesan dapat semakin dijaga. [6] Marcel, Jonathan, -, Studi Perbandingan Cipher Blok Algoritma Blowfish Dan Algoritma Camellia, Bandung, STEI ITB. [7] Munir, Rinaldi, 2004, Pengolahan Citra Digital Dengan Pendekatan Algoritmik, Bandung, INFORMATIKA. [8] Pitas, Ioannis, 1993, Digital Image Processing Algorithms. UK, Prentice-Hall. [9] Putra, Dharma, 2010, Pengolahan Citra Digital, Yogyakarta, ANDI. [10] Sukmawan, Budi, 2000, Metoda Enkripsi Blowfish, http://www.bimacipta.com/blowfish.htm, Diakses tanggal 16 Oktober 2011. [11] Sutanto, Candra Alim, -, Penggunaan Algoritma Blowfish Dalam Kriptografi, Bandung, STEI ITB. [12] Sutoyo, dkk. 2009, Teori Pengolahan Citra Digital, Yogyakarta, ANDI. Daftar Pustaka [1] Aditya, Yogie, dkk, 2010, Studi Pustaka Untuk Steganografi Dengan beberapa Metode, Prosiding Seminar Nasional Aplikasi Teknologi Informasi Yogyakarta 9 Juni 2010. [2] Alatas, Putri, 2009, Implementasi Teknik Steganografi Dengan Metode LSB Pada Citra Digital, Jakarta, Universitas Gunadarma. [3] Anggaraini, Ema Utami, 2007, Analisis Penyisipan Data pada Citra Bitmap Menggunakan Metode Bit Plane Complexity Segmentation, Prosiding Seminar Nasional Teknologi Yogyakarta 24 November 2007. [4] Hakim, Muhammad, -, Studi Dan Implementasi Steganografi Metode LSB Dengan Preprocessing Kompresi Data Dan Ekspansi Wadah, Bandung, STEI ITB. [5] Krisnawati, 2008, Metode Least Significant Bit (LSB) dan End Of File (EOF) Untuk Menyisipkan Teks ke Dalam Citra Grayscale, Prosiding Seminar Nasional Informatika @ UPN Veteran Yogyakarta 24 Mei 2008.