STUDI DAN PERBANDINGAN ALGORITMA IDEA DAN ALGORITMA BLOWFISH Tri Andriyanto ( 51402021 ), Dra. D. L. Crispina Pardede, DEA *.
Fakultas Teknologi Industri
UNIVERSITAS GUNADARMA E-mail :
[email protected],
[email protected]
ABSTRAKSI Algoritma kriptografi saat ini sudah banyak berkembang, khususnya algoritma kriptografi simetris dengan kategori block cipher. Algoritma kriptografi simetris block cipher yang sudah dikenal saat ini diantaranya yaitu International Data Encryption Algorithm (IDEA) dan Algoritma Blowfish. Kedua algoritma ini beroperasi dalam bentuk blok bit, dengan ukuran blok sebesar 64 bit. Kedua algoritma ini juga dikenal sangat tangguh dalam mengamankan informasi. Studi dan perbandingan antara algoritma IDEA dan algoritma Blowfish dilakukan untuk membandingkan kinerja algoritma IDEA dan Blowfish dalam hal kecepatan proses dan penggunaan memori pada saat proses enkripsi dan dekripsi suatu file. Untuk dapat membandingkan kinerja algoritma IDEA dan algoritma Blowfish, maka penulis membuat program aplikasi enkripsi dan dekripsi file dengan menggunakan bahasa pemrograman JAVA. Dari hasil uji coba program terhadap sampel file teks, file dokumen, file image, file audio, dan file video, terlihat bahwa algoritma IDEA lebih cepat dari algoritma Blowfish dan pemakaian memori kedua algoritma relatif sama. Kata Kunci : Kriptografi, block cipher, IDEA, Blowfish
1. Pendahuluan Perkembangan teknologi informasi yang sangat pesat turut memajukan media komunikasi sebagai media penyampaian informasi dari suatu tempat ke tempat lainnya, sehingga memudahkan orang dalam mengakses media komunikasi. Kemudahan pengaksesan media komunikasi oleh semua orang, tentunya akan memberikan dampak bagi keamanan informasi atau pesan yang menggunakan media komunikasi tersebut. Informasi menjadi sangat rentan untuk diketahui, diambil dan dimanipulasi oleh pihakpihak yang tidak bertanggung jawab. Oleh sebab itu dibutuhkan suatu metode yang dapat menjaga kerahasiaan informasi ini, yang salah satunya dikenal dengan sebutan kriptografi. Algoritma kriptografi dapat dibagi ke dalam kelompok algoritma simetris dan algoritma asimetris. Algoritma simetris merupakan algoritma kriptografi yang menggunakan kunci yang sama baik untuk proses enkripsi maupun dekripsi. Algoritma simetris dapat dikelompokkan menjadi dua kategori, yaitu cipher aliran dan cipher blok. Cipher aliran merupakan algoritma kriptografi yang beroperasi dalam bentuk bit tunggal. Sedangkan algoritma kriptografi kategori cipher blok beroperasi dalam bentuk blok bit. Saat ini sudah banyak berkembang algoritma kriptografi simetris baik untuk kategori cipher aliran maupun cipher blok. Di dalam dunia informatika dikenal International Data Encryption Algorithm (IDEA) dan Blowfish. Kedua algoritma ini beroperasi dalam bentuk blok bit (cipher blok), dengan ukuran blok sebesar 64 bit. Kunci yang digunakan dalam algoritma Blowfish sepanjang 32 sampai 488 bit. Sedangkan algoritma IDEA dapat bekerja dengan menerima panjang kunci 128 bit. Kedua algoritma ini dikenal cukup tangguh dalam mengamankan informasi karena sampai saat ini belum ada yang berhasil
menembus keamanan kedua algoritma ini (Andi, 2003). Oleh karena itu penulis tertarik untuk mengimplementasikan algoritma IDEA dan Blowfish dalam suatu program aplikasi enkripsi dan dekripsi dan kemudian membandingkan kinerja kedua algoritma pada program aplikasi tersebut. Pada makalah ini dibahas mengenai cara kerja algoritma IDEA dan algoritma Blowfish dan penerapannya dalam suatu program aplikasi enkripsi dan dekripsi, di mana panjang kunci yang digunakan masing-masing algoritma pada aplikasi ini berukuran 128 bit dan mode operasi enkripsi yang digunakan adalah Electronic Code Book (ECB). Makalah ini bertujuan untuk membandingkan kinerja algoritma IDEA dan Blowfish dalam hal kecepatan proses dan penggunaan memori pada saat proses enkripsi dan dekripsi suatu file. Tahap-tahap yang dilakukan untuk dapat membandingkan kinerja algoritma IDEA dan algoritma Blowfish antara lain : tahap pembangunan program enkripsi dan dekripsi file dengan menggunakan algoritma IDEA dan Blowfish dengan panjang kunci berukuran 128 bit. Tahap kedua yaitu tahap implementasi di mana penulis melakukan pembuatan program dengan menggunakan bahasa pemrograman JAVA, di mana komponen JAVA Swing digunakan untuk membuat tampilan berbasiskan Graphical User Interface (GUI), dan Windows XP sebagai sistem operasi. Dalam pembuatan program ini penulis juga menggunakan paket kriptografi dari provider cryptix. Paket kriptografi ini bersumber dari http://cryptix.org/cryptix-jce-20050328-snap. Tahapan yang terakhir yaitu uji coba program terhadap file teks (.txt), dokumen (.doc), image (.jpg), audio (.mp3) dan video (.avi). Pada tahap uji coba ini digunakan fasilitas TASK MANAGER yang disediakan sistem operasi windows untuk mengetahui kecepatan proses dan penggunaan memori kedua algoritma pada saat proses enkripsi dan dekripsi file.
2. Algoritma IDEA IDEA (International Data Encryption Algorithm) merupakan algoritma simetris yang beroperasi pada sebuah blok pesan terbuka dengan lebar 64 bit dan panjang kunci berukuran 128 bit. Algoritma IDEA menggunakan algoritma yang sama untuk proses enkripsi dan dekripsi. Dan pesan rahasia yang dihasilkan oleh algoritma ini berupa blok pesan rahasia dengan lebar atau ukuran 64 bit. Algoritma IDEA menggunakan operasi campuran dari tiga operasi aljabar yang berbeda, yaitu : - Operasi XOR, operasi ini disimbolkan dengan tanda . 16 - Operasi penjumlahan modulo 2 , operasi ini disimbolkan dengan tanda . 16 - Operasi perkalian modulo ( 2 + 1 ), disimbolkan dengan tanda . •
Semua operasi ini dilakukan pada subblok 16 bit. Algoritma IDEA melakukan iterasi sebanyak 8 iterasi dan terdapat transformasi keluaran setelah melakukan 8 iterasi.
2.1 Proses Enkripsi IDEA Langkah awal dalam pemrosesan enkripsi dengan algoritma IDEA ini yaitu blok pesan terbuka dengan lebar 64 bit (diperumpamakan dengan X), dibagi menjadi 4 subblok 16 bit, X , X , X , X , sehingga X = (X , X , X , X ). Keempat subblok 16 bit itu 1 2 3 4 1 2 3 4 ditransformasikan menjadi subblok 16 bit, Y , Y , Y , Y sebagai pesan rahasia 64 bit Y = 1 2 3 4, (Y , Y , Y , Y ) yang berada di bawah kendali 52 subkunci 16 bit yang dibentuk dari blok 1 2 3 4 kunci 128 bit. Proses enkripsi IDEA dapat dilihat pada Gambar 1.
Gambar 1 Proses Enkripsi IDEA Dari Gambar 1 dapat dilihat keempat subblok 16 bit, X , X , X , X , digunakan 1 2 3 4 sebagai masukan untuk iterasi pertama dari algoritma IDEA. Dalam setiap iterasi 16 16 dilakukan operasi XOR, penjumlahan modulasi 2 dan perkalian modulasi (2 + 1) antara dua subblok 16 bit. Tahapan-tahapan yang dilakukan pada setiap iterasi yaitu : 1) Perkalian X dengan subkunci pertama (K1) 1 2) Penjumlahan X dengan subkunci kedua (K2) 2 3) Pejumlahan X dengan subkunci ketiga (K3) 3 4) Perkalian X dengan subkunci keempat (K4) 4 5) Operasi XOR hasil langkah 1) dan 3) 6) Operasi XOR hasil langkah 2) dan 4) 7) Perkalian hasil langkah 5) dengan subkunci kelima (K5) 8) Penjumlahan hasil langkah 6) dengan langkah 7) 9) Perkalian hasil langkah 8) dengan subkunci keenam (K6) 10) Penjumlahan hasil langah 7) dengan 9) 11) Operasi XOR hasil langkah 1) dan 9) 12) Operasi XOR hasil langkah 3) dan 9) 13) Operasi XOR hasil langkah 2) dan 10) 14) Operasi XOR hasil langkah 4) dan 10) Keluaran setiap putaran adalah 4 subblok yang dihasilkan pada langkah 11), 12), 13), dan 14) dan menjadi masukan putaran berikutnya. Sebelum masuk ke iterasi selanjutnya,
dilakukan terlebih dahulu pertukaran subblok dalam yaitu subblok yang dihasilkan pada langkah 12) dan 13), namun untuk iterasi kedelapan (iterasi terakhir) pertukaran subblok dalam tidak dilakukan lagi. Setelah iterasi kedelapan akan dilakukan transformasi keluaran yang dikendalikan oleh 4 subkunci 16 bit terakhir (K K K K ). 49 50 51 52
Transformasi keluaran akhir yang digunakan setelah iterasi 8 yaitu : 1) Perkalian X dengan K 1
49
2) Penjumlahan X dengan K 2
50
3) Penjumlahan X dengan K 3
4) Perkalian X dengan K 4
51
52
Langkah terakhir dari proses enkripsi IDEA ini yaitu keempat subblok 16 bit yang merupakan hasil operasi 1), 2), 3), dan 4) digabung kembali menjadi blok pesan rahasia 64 bit.
2.2 Proses Dekripsi IDEA Proses dekripsi menggunakan algoritma yang sama dengan proses enkripsi. Perbedaannya hanya pada 52 buah subkunci yang digunakan masing-masing merupakan hasil turunan 52 buah subkunci enkripsi.
2.3 Pembentukan Subkunci IDEA Sebanyak 52 subkunci 16 bit untuk proses enkripsi diperoleh dari sebuah kunci 128 bit. Pembentukan subkunci untuk proses enkripsi dapat dilihat pada Gambar 2.
Gambar 2 Pembentukan Subkunci IDEA Dari Gambar 2 dapat dilihat blok kunci 128 bit dipartisi menjadi 8 subkunci 16 bit yang langsung dipakai sebagai 8 subkunci pertama, dimana 6 subkunci digunakan untuk tahap pertama dan 2 subkunci berikutnya untuk iterasi ke-2. Jadi pada tahap ke-2 ini, terdapat kekurangan 4 subkunci. Kemudian blok kunci 128 bit digeser kekiri 25 bit secara memutar (rotasi) untuk dipartisi lagi menjadi 8 subkunci 16 bit berikutnya. Empat subkunci pertama digunakan untuk iterasi ke-2, melengkapi kekurangan sebelumnya. Empat subkunci berikutnya untuk iterasi ke-3. Kemudian kunci 128 bit dirotasi lagi ke kiri sebanyak 25 bit untuk mendapatkan 8 subkunci berikutnya. Proses rotasi dan partisi itu diulangi lagi sampai diperoleh 52 subkunci 16 bit. Subkunci yang digunakan untuk proses enkripsi pada algoritma IDEA dapat dilihat pada Tabel 1.
Tabel 1 Subkunci Enkripsi IDEA
Untuk pembentukan kunci dekripsi didasarkan pada kunci enkripsi yang telah dibentuk sebelumnya. Subkunci yang digunakan untuk dekripsi dapat dilihat pada Tabel 2. Tabel 2 Subkunci Dekripsi IDEA
Keterangan : -1 16 • K merupakan invers perkalian modulo (2 +1) dari K : -1 16 K * K mod (2 +1) = 1 16 • -K merupakan invers penjumlahan modulo 2 dari K : 16 K + (-K) mod 2 = 0 Dari Tabel 2 dapat dilihat perbedaan subkunci yang digunakan untuk enkripsi dengan
subkunci untuk dekripsi. Perbedaan yang pertama, yaitu pada urutan penggunaan subkunci. Perbedaan yang kedua, pembentukan subkunci dekripsi menggunakan operasi invers perkalian modulo 216 + 1 pada subkunci K49, K52, K43, K46, K37, K40, K31, K34, K25, K28, K19, K22, K13, K16, K7, K10, K1, K4 dan menggunakan operasi invers penjumlahan modulo 216 untuk subkunci K50, K51, K45, K44, K39, K38, K33, K32, K27, K26, K21, K20, K15, K14, K9, K8, K2, K3.
3. Algoritma Blowfish Blowfish merupakan metoda enkripsi yang mirip dengan DES dan dikembangkan untuk memenuhi kriteria desain sebagai berikut : - Cepat, pada implementasi yang optimal Blowfish dapat mencapai kecepatan 26 clock cycle per byte. - Kompak, Blowfish dapat berjalan pada memori kurang dari 5 KB. - Sederhana, Blowfish dirancang hanya menggunakan operasi-operasi sederhana. - Keamanan yang variabel, panjang kunci Blowfish dapat bervariasi dari 32 bit hingga mencapai 448 bit (56 byte). Blowfish merupakan blok cipher 64 bit dengan panjang kunci variabel. Algoritma ini terdiri dari dua bagian, yaitu : key expansion dan enkripsi data. Key expansion mengubah 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. Operasi-operasi yang digunakan dalam Blowfish adalah : - Operasi XOR, operasi ini disimbolkan dengan tanda . 32 - Operasi penjumlahan modulo 2 , operasi ini disimbolkan dengan tanda . - Tablelookup terhadap array dengan empat indeks yang dilakukan setiap putaran, yaitu penggunaan S-box. Empat 32 bit S-box masing-masing mempunyai 256 entri : 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.1 Proses Enkripsi Blowfish Blowfish adalah sebuah jaringan Feistel yang mempunyai 16 round. Inputnya adalah X elemen data 64 bit. Untuk mengenkripsi X yaitu : Bagi X dalam dua bagian 32 bit menghasil XL dan XR . Untuk i = 1 sampai 16 maka : XL = XL
Pi
XR = F(XL) XR Tukar XL dan XR Tukar XL dan XR (batalkan penukaran terakhir) XR = XR
P17
XL = XL P18 Gabungkan kembali XL dan XR Algoritma Blowfish untuk proses enkripsi dapat divisualisasikan pada Gambar 3.
Gambar 3 Proses Enkripsi Blowfish Fungsi F adalah sebagai berikut : Bagi XL dalam empat bagian 8-bit yaitu a, b, c dan d F(XL) = ((S1,a + S2,b mod 232 )
S3,c ) + S4,d mod 232
Fungsi F dapat divisualisasikan pada Gambar 4.
Gambar 4 Fungsi F
3.2 Proses Dekripsi Blowfish Proses dekripsi Blowfish sama persis dengan proses enkripsi Blowfish. Perbedaan terletak pada urutan pengggunaan subkunci P1, P2,…, P18 . Pada proses dekripsi
Blowfish urutan pengggunaan subkunci P1, P2,…, P18 dibalik menjadi P18, P17,…, P1.
3.3 Pembangkitan Subkunci Subkunci dihitung menggunakan algoritma Blowfish, dengan langkah-langkah sebagai berikut : 1) Pertama inisialisasi P-array dan kemudian empat S-box secara berurutan dengan string tetap. String ini terdiri dari digit hexadesimal dari pi. Dimana P-array terdiri dari 18 subkunci dengan ukuran 32 bit: P1, P2, ..., P18 P1, P2, ..., P18 2) XOR P1 dengan 32 bit pertama kunci , XOR P2 dengan 32 bit kedua dari kunci dan seterusnya untuk setiap bit dari kunci (sampai P18). Ulangi terhadap bit kunci sampai seluruh P-array di XOR dengan bit kunci. 3) Enkripsikan semua string nol dengan algoritma Blowfish menggunakan subkunci seperti yang dijelaskan pada langkah 1 dan langkah 2. 4) Gantikan P1 dan P2 dengan keluaran dari langkah 3. 5) Enkripsikan keluaran langkah 3 dengan algoritma Blowfish dengan subkunci yang sudah termodifikasi. 6) Gantikan P3 dan P4 dengan keluaran dari langkah 5. 7) Teruskan proses tersebut, gantikan seluruh elemen dari P-array, dan kemudian seluruh keempat S-box berurutan, dengan keluaran yang berubah secara kontinyu dari algoritma Blowfish. Secara keseluruhan diperlukan 521 iterasi untuk membangkitkan semua subkunci yang dibutuhkan. Pembangkitan subkunci dapat dilihat pada Gambar 5.
Gambar 5 Pembangkitan Subkunci Blowfish
4. Perancangan Program 4.1 Konsep Program Program yang akan dibuat ini adalah aplikasi enkripsi dan dekripsi IDEA dan Blowfish. Program ini digunakan untuk mengenkripsikan dan mendekripsikan sebuah file untuk semua tipe file dengan menggunakan algoritma IDEA dan Blowfish. Langkah awal untuk dapat melakukan enkripsi file, yaitu menginput nama file yang akan dienkripsi pada kotak input yang telah tersedia. Setelah nama file diinput, pengguna dapat memilih algoritma IDEA atau Blowfish yang akan digunakan untuk proses enkripsi. Setelah proses enkripsi selesai dan berhasil, maka akan dihasilkan dua file baru, yaitu file yang sudah terenkripsi dengan nama ‘namafile.tipefile.enbl’ dan file kunci dengan nama ‘namafile.tipefile.enbl.key’ untuk algoritma Blowfish. Jika algoritma IDEA yang dipilih, file baru yang dihasilkan diberi nama ‘namafile.tipefile.enid’ dan file kuncinya diberi nama ‘namafile.tipefile.enid.key’. File baru dan file kunci yang dihasilkan tersebut akan disimpan didirektori yang sama dengan file aslinya. Untuk melakukan dekripsi file proses yang dilakukan sama seperti ketika melakukan enkripsi file, namun nama file yang dijadikan input adalah file yang sudah terenkripsi, dan algoritma dekripsi yang dipilih harus sesuai dengan algoritma enkripsi yang digunakan pada file terenkripsi tersebut. Setelah proses dekripsi file selesai, maka file terenkripsi tersebut akan kembali menjadi file awal sebelum dienkripsi. Konsep program aplikasi enkripsi dan dekripsi IDEA dan Blowfish dapat divisualisasikan pada Gambar 6.
Gambar 6 Blok Program Aplikasi Enkripsi Dekripsi IDEA dan Blowfish
4.2 Alur Program Program enkripsi dan dekripsi IDEA dan Blowfish ini dimulai dengan penginputan nama file yang akan dienkripsi atau didekripsi, kemudian memilih algoritma IDEA atau Blowfish yang akan digunakan untuk proses enkripsi atau dekripsi. Setelah memilih algoritma kemudian memilih proses enkripsi atau proses dekripsi yang ingin dilakukan. Apabila memilih proses enkripsi, maka enkripsi file akan diproses. Namun apabila memilih proses dekripsi, maka dekripsi file yang akan diproses. Pada program enkripsi dan dekripsi IDEA dan Blowfish ini juga terdapat menu About untuk menampilkan informasi pembuat program dan menu Petunjuk untuk menampilkan informasi petunjuk penggunaan program. Apabila selesai menggunakan program, terdapat menu Keluar untuk keluar dari program enkripsi dan dekripsi IDEA dan Blowfish. Alur program dari program enkripsi dan dekripsi IDEA dan Blowfish dapat dilihat pada Gambar 7.
Gambar 7 Diagram Alur Program
4.3 Tampilan Program Setelah program enkripsi dan dekripsi IDEA dan Blowfish dijalankan, maka akan tampil jendela menu utama yang merupakan tampilan utama dari program ini (Gambar 8). Pada tampilan utama ini terdapat beberapa menu diantaranya : menu Cari File untuk pencarian file yang akan diinput, menu untuk memilih algoritma, menu Enkripsi untuk melakukan proses enkripsi file, menu Dekripsi untuk melakukan proses dekripsi file, menu About untuk menampilkan informasi pembuat program, menu Petunjuk untuk menampilkan informasi petunjuk penggunaan program dan menu Keluar untuk keluar dari program enkripsi dan dekripsi IDEA dan Blowfish.
Gambar 8 Tampilan Jendela Menu Utama Apabila menginput nama file dengan menggunakan menu Cari File, maka akan menghubungkan program enkripsi dan dekripsi IDEA dan Blowfish dengan Windows Explorer untuk mencari file yang akan diinput, dimana tampilannya dapat dilihat pada Gambar 9.
Gambar 9 Tampilan Jendela Dialog File Untuk Menu CariFile Apabila saat menjalankan proses enkripsi atau proses dekripsi terjadi suatu kesalahan, maka akan tampil kotak dialog error. Gambar 10 merupakan salah satu tampilan kotak dialog error untuk kesalahan file yang dipilih tidak ditemukan.
Gambar 10 Tampilan Kotak Dialog Error Apabila proses enkripsi atau dekripsi berhasil dilakukan, maka akan tampil kotak dialog information untuk memberikan informasi bahwa proses enkripsi atau proses dekripsi telah berhasil dilakukan. Gambar 11 merupakan tampilan kotak dialog information untuk proses enkripsi file yang berhasil.
Gambar 11 Tampilan Kotak Dialog Information Gambar 12 merupakan salah satu tampilan kotak dialog plain. Gambar 12 merupakan tampilan menu About untuk menampilkan informasi pembuat program.
Gambar 12 Tampilan Kotak Dialog Plain untuk menu About
4.4 Perancangan Input dan Output 4.4.1 Perancangan Input dan Output User Tabel 3 Input Enkripsi User Nama Input Nama Variabel Input Tipe data Nama File strEnc string Pada saat melakukan enkripsi, pengguna aplikasi menginput nama file yang akan dienkripsi. Nama file yang diinput memiliki nama variabel strEnc dengan tipe data string (Tabel 3). Tabel 4 Output Enkripsi User Nama Output Nama Variabel Output Tipe Data Nama File Terenkripsi outFileEnc string Nama File Key keyfileEnkrip string Hasil output yang didapatkan setelah proses enkripsi yaitu nama file yang sudah terenkripsi dan nama file key. Nama file yang sudah terenkripsi memiliki nama variabel outFileEnc dengan tipe data string, sedangkan nama file key memiliki nama variabel keyfileEnkrip dengan tipe data string (Tabel 4). Tabel 5 Input Dekripsi User Nama Input Nama Variabel Input Tipe Data Nama File Terenkripsi str string Nama File Key kStr string Pada saat melakukan dekripsi file, pengguna menginput nama file terenkripsi yang akan di dekripsi, serta secara tidak langsung juga menginput file key. Nama file yang di input pada saat dekripsi memiliki nama variabel str dengan tipe data string, sedangkan nama file key memiliki nama variabel kStr dengan tipe data string (Tabel 5). Tabel 6 Output Dekripsi User Nama Output Nama Variabel Output Tipe data Nama File strDec string Dari Tabel 6 dapat dilihat hasil output dari dekripsi file yaitu nama file dengan nama variabel strDec yang memiliki tipe data string.
4.4.2 Perancangan Input dan Output Program Tabel 7 Input Enkripsi Program Nama Input Nama Variabel Input Tipe Data filename inputFile string algorithm alg string amode alg string padding alg string key secretKey Key prov provider string Dari Tabel 7 input filename dideklarasikan pada class EnkripsiFile dengan nama variabel inputfile dengan tipe data string. Input algorithm, amode, dan padding dideklarasikan pada class EnkripsiFile dengan nama variabel alg dengan tipe data string.
Input key dideklarasikan pada class EnkripsiFile dengan nama variabel secretKey dengan tipe class Key. Input prov dideklarasikan pada class EnkripsiFile dengan nama variabel provider dengan tipe data string. Tabel 8 Output Enkripsi Program Nama Output Nama Variabel output ofe outputFile outputFile+"."+"key" keyfileEnkrip
Tipe Data string string
Tabel 8 output ofe dideklarasikan pada class EnkripsiFile dengan nama variabel outputFile dengan tipe data string. Nama output outputFile+"."+"key" dideklarasikan pada class EnkripsiFile dengan nama variabel keyfileEnkrip. Tabel 9 Input Dekripsi Program Nama Input Nama Variabel Input Tipe Data filename inputFile string algorithm alg string amode alg string padding alg string key secretKey Key prov provider string inputFile+"."+"key" keyfileDekrip string Dari Tabel 9 input filename dideklarasikan pada class EnkripsiFile dengan nama variabel inputfile dengan tipe data string. Input algorithm, amode, dan padding dideklarasikan pada class EnkripsiFile dengan nama variabel alg dengan tipe data string. Input key dideklarasikan pada class EnkripsiFile dengan nama variabel secretKey dengan tipe class Key. Input prov dideklarasikan pada class EnkripsiFile dengan nama variabel provider dengan tipe data string. Nama input inputFile+"."+"key" dideklarasikan pada class EnkripsiFile dengan nama variabel keyfileDekrip. Tabel 10 Output Dekripsi Program Nama Output Nama Variabel Tipe Data output ofe outputFile string Tabel 10 output ofe dideklarasikan pada class EnkripsiFile dengan nama variabel outputFile dengan tipe data string.
5. Uji Coba dan Analisa 5.1 Uji Coba Untuk dapat mengetahui perbandingan kinerja algoritma IDEA dan Blowfish dalam hal waktu proses dan pemakaian memori pada saat proses enkripsi dan dekripsi file maka dilakukan pengujian terhadap file teks (.txt), dokumen (.doc), image (.jpg), audio (.mp3) dan video (.avi) masing-masing digunakan lima sampel. Pada proses pengujian, untuk pengukuran waktu proses dan pemakaian memori, penulis menggunakan fasilitas Task Manager yang terdapat pada sistem operasi Windows dengan satuan detik (seconds) untuk kecepatan proses dan satuan kilobytes (KB) untuk pemakaian memori. Langkah-langkah untuk melakukan uji coba, yaitu : 1) Menjalankan program enkripsi dan dekripsi IDEA dan Blowfish, serta menjalankan Task Manager. 2) Menginput file yang akan dienkripsi atau didekripsi serta memilih algoritma yang akan digunakan untuk enkripsi atau dekripsi file.
3) Jalankan proses enkripsi dan dekripsi file serta memperhatikan dan mencatat waktu dan penggunaan memori yang terdapat pada Task Manager. 5.1.1 Spesifikasi Pengujian Pengujian dilakukan pada komputer dengan spesifikasi berikut : Spesifikasi Perangkat Keras : - Processor Intel Pentium 4 CPU 2.40GHz - 768 MB (pc 2700 DDRAM) - VGA dan Soundcard onboard - Harddisk Seagate Gb 7200rpm - Mouse orient optical dan keyboard Logitech - Monitor AOC 17 inch Spesifikasi Perangkat Lunak : - Sistem operasi Windows XP Services Pack 2 - Java 2 SDK 1.4.0
5.2 Hasil Uji Coba Setelah program dijalankan dan dilakukan pengujian terhadap beberapa file sample, maka didapatkan hasil-hasil uji coba yang dikelompokkan berdasarkan tipe file nya. 1) Kecepatan Proses Pengukuran kecepatan proses berdasarkan pada waktu cpu (cpu time) pada Task Manager. Tabel 11 Hasil Uji Coba File Teks Untuk Kecepatan Proses
Dari Tabel 11, dapat dilihat waktu yang diperoleh untuk proses enkripsi dan dekripsi pada file teks dengan menggunakan algoritma IDEA relatif sama dengan waktu proses enkripsi dan dekripsi menggunakan algoritma Blowfish. Tabel 12 Hasil Uji Coba File Dokumen Untuk Kecepatan Proses
Dari Tabel 12, waktu proses enkripsi dan dekripsi pada file dokumen dengan algoritma IDEA dan Blowfish hanya terdapat sedikit perbedaan.
Tabel 13 Hasil Uji Coba File Image Untuk Kecepatan Proses
Waktu enkripsi dan dekripsi yang diperoleh pada file image dengan menggunakan algoritma IDEA lebih lama 1 seconds dibanding dengan waktu enkripsi dan dekripsi algoritma Blowfish. (Tabel 13). Tabel 14 Hasil Uji Coba File Audio Untuk Kecepatan Proses
Dari Tabel 14, dapat dilihat waktu enkripsi dan dekripsi algoritma IDEA dan Blowfish pada file audio lebih panjang dibanding waktu enkripsi dan dekripsi pada file teks, dokumen dan image. Waktu enkripsi untuk algoritma IDEA sama dengan waktu enkripsi untuk algoritma Blowfish. Sedangkan untuk waktu dekripsi, algoritma IDEA lebih lama 1 second dibandingkan dengan waktu dekripsi algoritma Blowfish. Tabel 15 Hasil Uji Coba File Video Untuk Kecepatan Proses
Dari Tabel 15, dapat dilihat terdapat perbedaan yang cukup signifikan antara waktu enkripsi dan dekripsi algoritma IDEA dengan waktu enkripsi dan dekripsi algoritma Blowfish. Dari tabel 15 dapat dilihat juga perbedaan yang cukup besar antara waktu enkripsi dan waktu dekripsi untuk masing-masing algoritma. 2) Pemakaian Memori Pengukuran pemakaian memori berdasarkan pada memory usage pada Task Manager. Kemudian dihitung persentase pemakaian memori yang telah diperoleh. Persentase pemakaian memori = memory usage x 100 % physical memory Tabel 16 Hasil Uji Coba File Teks Untuk Pemakaian Memori
Dari Tabel 16, pemakaian memori untuk setiap file teks dengan menggunakan algoritma IDEA relatif sama dengan algoritma Blowfish. Tabel 17 Hasil Uji Coba File Dokumen Untuk Pemakaian Memori
Pada file dokumen, pemakaian memori untuk algoritma IDEA juga relatif sama dengan algoritma Blowfish. (Tabel 17). Tabel 18 Hasil Uji Coba File Image Untuk Pemakaian Memori
Dari Tabel 18, jumlah memori yang digunakan saat enkripsi dan dekripsi oleh algoritma IDEA relatif sama dengan algoritma Blowfish. Tabel 19 Hasil Uji Coba File Audio Untuk Pemakaian Memori
Pada file audio, pemakaian memori untuk algoritma IDEA juga relatif sama dengan algoritma Blowfish. (Tabel 19). Tabel 4.10 Hasil Uji Coba File Video Untuk Pemakaian Memori
Dari Tabel 4.10, pemakaian memori untuk setiap file video dengan menggunakan algoritma IDEA juga relatif sama dengan algoritma Blowfish.
5.3 Analisa Berdasarkan hasil-hasil pengujian pada kecepatan proses enkripsi dan dekripsi secara keseluruhan, semakin besar ukuran file yang akan dienkripsi atau didekripsi maka semakin lama waktu yang diperlukan untuk mengenkripsikan atau mendekripsikan file. Untuk file dengan ukuran kecil kecepatan proses antara algoritma IDEA relatif sama dengan algoritma Blowfish. Sedangkan untuk file yang berukuran besar, algoritma Blowfish lebih cepat dibandingkan dengan algoritma IDEA. Dari hasil uji coba dalam hal pemakaian memori, diperoleh hasil yang relatif sama antara algoritma IDEA dengan algoritma Blowfish untuk semua tipe file dan semua ukuran file. Tingkat keamanan suatu algoritma kunci simetris tipe cipher blok dapat diukur dari tingkat kerumitan algoritma, panjang blok yang digunakan dan panjang kunci yang digunakan. Semakin tinggi tingkat kerumitan suatu algoritma maka algoritma tersebut semakin sulit dipecahkan. Semakin besar ukuran blok yang digunakan akan mengakibatkan semakin jarangnya terdapat ciphertext berulang yang berasal dari plaintext yang sama. Ukuran panjang suatu kunci juga berpengaruh pada kekuatan algoritma. Biasanya semakin panjang dan acak suatu kunci akan mempersulit penyerangan algoritma kriptografi. Untuk kerumitan algoritma, algoritma IDEA sedikit lebih rumit dibandingkan dengan algoritma Blowfish. Hal ini dikarenakan operasi-operasi yang dilakukan oleh algoritma Blowfish untuk setiap iterasinya, yaitu penjumlahan mod 232, XOR, dan tablelookup lebih sederhana dibandingkan dengan operasi-operasi yang dilakukan oleh algoritma IDEA untuk setiap iterasi, yaitu penjumlahan mod 216, XOR, dan perkalian mod 216. Dalam hal panjang blok yang digunakan, kedua algoritma menggunakan panjang blok yang sama dan cukup panjang, yaitu 64 bit. Sedangkan dalam hal panjang kunci yang digunakan, algoritma Blowfish menggunakan kunci dengan panjang 32 sampai 448 bit, sedangkan pada algoritma IDEA panjang kunci yang digunakan 128 bit. Jadi, secara keseluruhan kedua algoritma memiliki keunggulan, di mana algoritma IDEA lebih unggul dalam hal kerumitan algoritma, sedangkan algoritma Blowfish lebih unggul dalam hal panjang kunci. Sehingga kedua algoritma memiliki tingkat keamanan yang sama-sama tangguh dalam hal mengamankan data atau informasi.
6. Kesimpulan Berdasarkan hasil studi dan percobaan dapat disimpulkan bahwa: 1) Algoritma IDEA dan Blowfish beroperasi pada panjang blok yang sama, yaitu 64 bit. Namun panjang kunci yang digunakan algoritma IDEA hanya 128 bit, sedangkan panjang kunci yang digunakan algoritma Blowfish 32 sampai 448 bit. 2) Pada pemrosesannya, algoritma IDEA melakukan iterasi sebanyak 8 iterasi dan terdapat transformasi keluaran akhir setelah melakukan 8 iterasi. Sedangkan iterasi yang dilakukan algoritma Blowfish sebanyak 16 iterasi. Dalam pengoperasiannya algoritma IDEA menggunakan operasi campuran yang berbeda, yaitu : operasi XOR, operasi penjumlahan modulo 216, dan operasi perkalian (216 +1). Sedangkan Algoritma Blowfish dalam pengoperasiannya menggunakan operasi-operasi penjumlahan mod 232, XOR, dan tablelookup. 3) Kecepatan proses algoritma Blowfish lebih cepat dibanding dengan algoritma IDEA untuk ukuran file yang besar, sedangkan untuk file dengan ukuran yang kecil, kecepatan proses algoritma Blowfish sama dengan algoritma IDEA. Sedangkan dalam pemakaian memori, kedua algoritma memakai memori dengan kapasitas yang relatif sama. 4) Dalam hal tingkat keamanan, kedua algoritma memiliki tingkat keamanan yang sama-sama tangguh dalam hal mengamankan data atau informasi. 5) Program enkripsi dan dekripsi algoritma IDEA dan Blowfish ini dapat berjalan dengan baik dan dapat digunakan untuk enkripsi dan dekripsi file dengan berbagai jenis ekstensi, seperti .txt, .doc, .mp3, .bmp, .3gp, .exe, .html, .zip, dan lain-lain.
7. Daftar Pustaka [1]
Abdul Kadir, Dasar Pemrograman Java 2, Andi, Yogyakarta, 2004.
[2]
Adhitya Randy, Studi dan Perbandingan Algoritma Blowfish dan Twofish, http://informatika.org/~rinaldi/Kriptografi/2006-2007/Makalah1/Makalah1-038.pdf, 9 Maret 2008.
[3]
Ady Wicaksono, Dasar-dasar Pemrograman Java 2, PT Elex Media Komputindo, Jakarta, 2002.
[4]
Anonim, The International Data Encryption Algorithm, http://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm, 11 April 2006.
[5]
Anonim, JavaTM 2 SDK, Standard Edition http://java.sun.com/j2se/1.4.2/download.html, 9 Juli 2005.
[6]
Deris Stiawan, Sistem Keamanan Komputer, PT Elex Media Komputindo Kelompok Gramedia, Jakarta, 2005.
[7]
Didik Dwi Prasetyo, Tip dan Trik Pemrograman Java 2, PT Elex Media Komputindo, Jakarta, 2004.
[8]
Fauzan Mirza, Howto: International Data Encryption Algorithm, http://www.ussrback.com/crypto/libraries/idea/idea_algorithm.txt, 11 April 2006.
[9]
Indrajani, Pemrograman Berorientasi Objek dengan JAVA, PT Elex Media Komputindo, Jakarta, 2004
Documentation,
[10] Rangsang Purnama, Tuntunan Pemrograman Java, Jilid 2, PT. Prestasi Pustaka Publisher, Surabaya, 2003. [11] Ratih, STUDI DAN IMPLEMENTASI ALGORITMA BLOWFISH UNTUK APLIKASI ENKRIPSI DAN DEKRIPSI FILE, http://informatika.org/~rinaldi/Kriptografi/2006 2007/Makalah1/Makalah1-077.pdf, 9 Maret 2008. [12] Rijalul Fikri, Pemrograman Java, Andi, Yogyakarta, 2005. [13] Taufik Hidayat, Sistem Kriptografi IDEA, http://budi.insan.co.id/courses/ec7010/dikmenjur/taufik-report.pdf, 13 Januari 2006. [14] Wahana Komputer, Memahami Model Enkripsi & Security Data, Andi, Yogyakarta, 2003. [15] Yusuf Kurniawan, Kriptografi Keamanan Internet dan Jaringan Telekomunikasi, Informatika, Bandung, 2004. [16] http://cryptix.org/cryptix-jce-20050328-snap, 11 April 2006. [17] http://www.geocities.com/herong_yang/crypto/cipher_blowfish.html, 9 Maret 2008. [18] http://www.us.design-reuse.com/articles/article5922.html, 9 Maret 2008.