IMPLEMENTASI ALGORITMA BLOWFISH UNTUK ENKRPSI DAN DEKRIPSI BERBASIS JAVA SWING Rafsanjani 1412120081, Muhammad Purwanto 1412120076, Rachmad Martyanto 1412120018 Fakultas Teknik Program Studi Teknik Informatika Universitas PGRI Ronggolawe Tuban 2016 Abstraksi Tingginya kebutuhan informasi saat ini mendorong tumbuhnya metode pengamanan informasi. Seni penyandian dan pengamanan pesan yang disebut kriptografi ini berkembang sangat cepat saat ini. Penggunaan komputer dijital saat ini mendorong tumbuhnya algoritma kriptografi modern yang beroperasi dalam mode bit. Kriptografi modern terbagi menjadi algoritma kunci simetri dan kunci publik. Algoritma kunci simetri pun terbagi ke dalam cipher aliran dan cipher blok. Semua jenis algoritma ini digunakan dalam berbagai bidang aplikasi. Blowfish merupakan algoritma cipher blok yang sangat luas dan banyak penggunaannya saat ini. Algoritma ini dikembangkan oleh Bruce Scheneier. Penggunaannya yang luas disebabkan algoritma ini kuat terhadap serangan. Penggunaan algoritma Blowfish ini dibuat untuk mengetahui hasil enkripsi suatu kata atau kalimat menjadi ciphertext dan di dekripsi kembali menjadi kata atau kalimat semula atau plantext. Kata Kunci : Blowfish, keamanan, enkripsi, dekripsi 1. PENDAHULUAN 1.1 Latar Belakang Algoritma penyandian data saat ini telah semakin banyak jumlahnya, sejalan dengan berkembangnya ilmu yang mempelajari penyandian data tersebut. Ilmu ini biasa disebut Kriptografi. Dalam kriptografi terdapat beberapa metode yang cukup penting dalam pengamanan data, untuk menjaga kerahasiaan data salah satunya adalah enkripsi (encryption). Enkripsi adalah suatu proses yang dilakukan untuk mengubah pesan asli menjadi chipertext. Sedangkan suatu proses yang dilakukan untuk mengubah pesan tersembunyi menjadi pesan asli disebut dekripsi. Pesan biasa atau 1
pesan asli disebut plaintex sedangkan pesan yang telah diubah atau disandikan supaya tidak mudah dibaca disebut dengan chipertext. Untuk mengatasi masalah keamanan dokumen ini, penulis melakukan pendekatan teknologi enkripsi data menggunakan algoritma Blowfish. Enkripsi data merupakan teknologi untuk memastikan bahwa informasi yang mengalir pada suatu sesi tidak disadap atau diubah orang lain. Blowfish merupakan enkripsi yang termasuk dalam golongan Symmetric Cryptosystem (Schneier, 1993), yaitu menggunakan kunci yang sama untuk enkripsi dan dekripsinya. 2. DASAR TEORI 2.1 Kriptografi Kriptografi (cryptographi) berasal dari BahasaYunani: cryptos artinya secret (rahasia), sedangkan graphein artinya writing (tulisan). Sehingga kriptografi berarti secret writing (tulisan rahasia). Jadi kriptografi didefinisikan sebagai ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya kebentuk yang tidak dapat dimengerti lagi maknanya. Secara umum kriptografi merupakan teknik pengamanan informasi yang dilakukan dengan cara mengolah informasi awal (plainteks) dengan suatu kunci tertentu menggunakan suatu metode enkripsi tertentu sehingga menghasilkan informasi baru (chipertext) yang tidak dapat dibaca secara langsung. Chipertext tersebut dapat dikembalikan menjadi informasi awal (plainteks) melalui proses deskripsi. 2.2 Algoritma Blowfish Blowfish diciptakan oleh seorang Cryptanalyst bernama Bruce Schneier, Presiden perusahaan Counterpane Internet Security, Inc (Perusahaan konsultan tentang kriptografi dan keamanan komputer) dan dipublikasikan tahun 1994. Dibuat untuk digunakan pada komputer yang mempunyai microposesor besar (32-bit keatas dengan cache data yang besar). Blowfish merupakan algoritma yang tidak dipatenkan dan licensefree, dan tersedia secara gratis untuk berbagai macam kegunaan (Syafari, 2007). 2
2.3 Enkripsi dan Dekripsi Proses penyandian pesan dari plaintext ke ciphertext dinamakan enkripsi / enchipering. Sedangkan proses mengembalikan pesan dari chipertext ke plaintext dinamakan deskripsi / dechipering. Proses enkripsi dan deskripsi ini dapat diterapkan pada pesan yang dikirim ataupun pesan yang disimpan. 2.4 Java Swing Java Swing adalah librari java yang digunkan untuk menciptakan Grafik User Interface (GUI). Dengan Java Swing kita dapat membuat user interface yang cross platform atau OS independent. Artinya user interface yang kita buat dapat dijalankan pada system operasi apa saja (OS yang suport Java) dengan tampilan yang relative sama. Bahkan kita dapat membuat user interface yang menyerupai Windows XP, Mac OS atau Linux tanpa tergantung dari OS yang kita gunakan. SWING, adalah salah satu bagian dari Java Foundation Classes (JFC). Pada JFC ini juga terdapat fasilitas untuk menambahkan Rich Graphic Functionality. Package dari Swing menyediakan banyak kelas untuk membuat aplikasi GUI. Package tersebut dapat ditemukan di javax.swing. Komponen Swing ditulis menyeluruh menggunakan Java. Kesimpulannya, program GUI ditulis menggunakan banyak kelas dari package Swing yang mempunyai tampilan look and feel yang sama meski dijalankan pada beda paltform. Lebih dari itu, Swing menyediakan komponen yang lebih menarik seperti color chooser dan option pane 3. ANALISA DAN PERANCANGAN 3.1 Cara Kerja Algorima Blowfish Blowfish menggunakan subkunci besar yang harus dihitung sebelum enkripsi dan dekripsi data. Algoritma Blowfish menerapkan jaringan Feistel (Feistel Network) yang terdiri dari 16 putaran. Input adalah elemen 64-bit, X untuk alur algoritma enkripsi dengan metode Blowfish dijelaskan sebagai berikut [Schneier, 1993]: 1. Bentuk inisial P-array sebanyak 18 buah (P1,P2,...P18) masing-masing bernilai 32-bit. Array P terdiri dari delapan belas kunci 32-bit subkunci : P1,P2,...,P18 2. Bentuk S-box sebanyak 4 buah masing-masing bernilai 32-bit yang memiliki masukan 256. Empat 32-bit S-box masing-masing mempunyai 256 entri : 3
S1,0,S1,1,...,S1,255 S2,0,S2,1,...,S2,255 S3,0,S3,1,...,S3,255 S4,0,S4,1,...,S4,255 3. Plaintext yang akan dienkripsi diasumsikan sebagai masukan, Plaintext tersebut diambil sebanyak 64-bit, dan apabila kurang dari 64-bit maka kita tambahkan bitnya, supaya dalam operasi nanti sesuai dengan datanya. 4. Hasil pengambilan tadi dibagi 2, 32-bit pertama disebut XL, 32-bit yang kedua disebut XR. 5. Selanjutnya lakukan operasi XL = XL xor Pi dan XR = F(XL) xor XR. 6. Hasil dari operasi diatas ditukar XL menjadi XR dan XR menjadi XL. 7. Lakukan sebanyak 16 kali, perulangan yang ke-16 lakukan lagi proses penukaran XL dan XR. 8. Pada proses ke-17 lakukan operasi untuk XR = XR xor P17 dan XL = XL xor P18. 9. Proses terakhir satukan kembali XL dan XR sehingga menjadi 64-bit kembali. 4
4. IMPLEMENTASI Memasukkan kata kunci : Memasukkan initial vector / hashing : Output enkripsi dan deskripsi : 5. PENUTUP 5.1 Kesimpulan Berdasarkan keseluruhan proses yang dilakukan untuk membangun Aplikasi Kriptografi menggunakan Algoritma Blowfish Berbasis Java Swing ini dapat disimpulkan bahwa aplikasi ini telah berhasil dibangun dan dapat berfungsi sesuai tujuan, yaitu mengamankan data ataupun informasi yang berupa text (plaintext) dengan mengacak text tersebut sehingga tidak dapat dibaca atau dimengerti. Aplikasi ini juga telah berhasil mengembalikan text yang telah diacak tersebut (cipherteks) seperti semula dengan menggunakan kunci yang sama sewaktu enkripsi. 5
6. DAFTAR PUSTAKA http://nefisigulo.blogspot.co.id/2013/01/pengertian-java-swing.html Bruce Schneier. The blowfish encryption algorithm. In One Year Later. Dr. Dobb s Journal., 1995. W Stalling. Cryptography and Network Security, Principle and Practice 2rd Edition,. Pearson Education, Inc., 1998. http://nefisigulo.blogspot.co.id/2013/01/pengertian-java-swing.html 6