echopediaboy tips dan trik blogspot

Minggu, 30 Oktober 2011

“APLIKASI KRIPTOGRAFI PADA IMPLEMENTASI ALGORITMA BLOWFISH DENGAN KUNCI SIMETRIK UNTUK ENKRIPSI DAN DEKRIPSI FILE”

Latar Belakang
Kriptografi telah menjadi bagian penting dalam dunia teknologi informasi saat ini. Hampir semua penerapan teknologi informasi menggunakan kriptografi sebagai alat untuk menjamin keamanan dan kerahasiaan informasi. Karena itu pulalah, kriptografi menjadi ilmu yang berkembang pesat. Dalam waktu singkat, amat banyak bermunculan algoritma-algoritma baru yang dianggap lebih unggul daripada pendahulunya. Namun, tetap saja cipher yang digunakan tidak lepas dari penemuan lama. Algoritma kunci simetri termasuk algoritma yang masih sering digunakan dalam pembuatan algoritma kriptografi. Pada saat ini, algoritma enkripsi kunci simetri yang banyak digunakan adalah algoritma blok, yang beroperasi pada suatu potongan pesan (blok) yang berukuran sama (biasanya 64 bit) pada suatu saat.
Selain algoritma blok, ada juga algoritma aliran yang beroperasi pada potongan data yang bervariasi. Dibandingkan dengan cipher aliran, baik dalam desain dan penerapan, cipher blok dianggap lebih rumit.
Pada saat Blowfish dirancang, diharapkan mempunyai kriteria perancangan sebagai berikut :
a. Cepat, Blowfish melakukan enkripsi data pada microprocessors 32-bit. dengan rate 26 clock cycles per byte.
b. Compact, Blowfish dapat dijalankan pada memori kurang dari 5K.
c. Sederhana, Blowfish hanya menggunakan operasi-operasi Sederhana, Blowfish hanya menggunakan operasi-operasi sederhana: penambahan, XOR, dan lookup tabel pada operan 32-bit.
d. Memiliki tingkat keamanan yang bervariasi, panjang kunci yang digunakan oleh Blowfish dapat bervariasi dan bisa sampai sepanjang 448 bit [2].
Proposal ini bertujuan dapat mempelajari algoritma Blowfish secara keseluruhan agar dapat memahami cara kerja dan struktur algoritmanya, kemudian menerapkan strategi perancangan Blowfish sehingga algoritma ini dapat berjalan secara optimal. Atau paling tidak dapat melakukan enkripsi dengan baik pada aplikasi yang akan dibuat.
Aplikasi yang akan dibuat diharapkan dapat menggambarkan penggunaan algoritma Blowfish pada proses enkripsi teks sehingga lebih mudah memahami cara kerja dan struktur algoritma Blowfish.

4. Perumusan Masalah
Permasalahan utama berdasarkan latar belakang adalah :
1. Bagaimana pengaplikasian enkripsi dan dekripsi algoritma Blowfish
2. Bagaimana perangkat lunak mengenkripsi dan dekripsi file / folder.

5. Tujuan
Adapun tujuan berdasarkan rumusan masalah di atas adalah :
  1. Mengetahui enkripsi dan dekripsi algoritma Blowfish
  2. Perangkat lunak mampu mengenkripsi dan dekripsi file / folder.
6. Batasan Masalah
Pada penyelesaian proyek ini, permasalahan dibatasi hanya untuk enkripsi dan dekripsi file / folder.

7. Tinjauan Pustaka
Teknik pengamanan data menggunakan enkripsi dan dekripsi dikenal dengan nama kriptografi, sebagai sebuah ilmu atau seni untuk mengamankan pesan atau data dengan cara menyamarkan pesan tersebut sehingga hanya dapat dibaca oleh pengirim dan penerima pesan. Penerapan kriptografi pada komputer dapat menyamarkan pesan yang berupa file teks, gambar, suara, gambar bergerak dan lain-lain.
Secara global teknik enkripsi dan dekripsi data terdiri dari dua metoda, yaitu metoda kunci publik dan metoda kunci simetri. Metoda kunci simetri menggunakan password atau kata kunci yang sama untuk melakukan enkripsi dan juga dekripsi. Karena itu metoda ini sering juga disebut dengan metoda secret key Criptography. Contoh-contoh metoda ini adalah: DES (Data Encryption Standard), IDEA (International Data Encryption Algoritm), RC5, Blowfish, dan FEAL. Cara kerja metoda enkripsi ini terlihat seperti gambar 1.
Gambar 1. Kriptografi kunci simetris

Masalah utama bagi metoda pengamanan data dengan kunci simetris adalah bagaimana mengirimkan kunci simetris tersebut dari pengirim kepada penerima. Tentunya akan metoda pengamanan ini tak akan berguna bila kunci sampai jatuh ke tangan orang yang tidak berhak. Untuk itu dikembangkan metoda kunci asimetris yang dikenal juga kunci publik. Metoda kunci publik ini pertama kali ditemukan oleh Whitfield Diffie dan Martin Hellman, serta Ralph Merkle secara independent. RSA, El Gamal, dan Rabin adalah contoh-contoh kriptografi kunci simetris. Metoda ini menggunakan kunci yang berbeda untuk enkripsi dan dekripsi. Melalui metoda yang ada maka kunci enkripsi dapat dipublikasikan pada pengirim tanpa khawatir jatuh ke tangan orang yang tidak berhak, karena hanya dapat digunakan untuk mengenkripsi dan tidak bisa digunakan untuk mengdekripsi. Kunci untuk mengenkripsi tersebut kemudian dikenal dengan nama kunci publik sedangkan kunci untuk mendekripsi dikenal dengan nama kunci privat. Cara kerjanya dapat dilihat pada gambar 2, K1 adalah kunci publik sedangkan K2 adalah kunci privat.
Gambar 2. Kriptografi kunci asimetris

Algoritma-algoritma dalam proses enkripsi dan dekripsi sebenarnya terbagi menjadi dua macam, yaitu yang bersifat stream cipher dan block cipher. Stream cipher mengenkripsi plaintext atau mendekripsi ciphertext secara bit per bit, yaitu satu bit dienkripsi atau didekripsi per satuan waktu. Sedangkan algoritma tipe block cipher mengenkripsi plaintext dan mendekripsi ciphertext secara blok per blok (blok adalah kumpulan bit), yaitu satu blok dienkripsi atau didekripsi per satuan waktu. Tentu saja proses enkripsi dan dekripsi menggunakan metoda block cipher memiliki kecepatan yang lebih baik dibandingkan metoda stream cipher [1].

I. Kriptografi Simetris
A. Pengertian Kriptografi Simetris
Kriptografi Simetris adalah : Kode Hill atau lebih dikenal dengan Hill cipher merupakan salah satu algoritma kriptografi kunci simetris dan merupakan salah satu kripto polyalphabetic. Hill cipher diciptakan oleh Lester S. Hill pada tahun 1929 .
Teknik kriptografi ini diciptakan dengan maksud untuk dapat menciptakan cipher yang tidak dapat dipecahkan menggunakanteknik analisis frekuensi. Berbeda dengan caesar cipher, hill cipher tidak mengganti setiap abjad yang sama pada plainteks dengan abjad lainnya yang sama pada cipherteks karena menggunakan perkalian matriks pada dasar enkripsi dan dekripsinya.
Hill cipher merupakan penerapan aritmatika modulo pada kriptografi. Teknik kriptografi ini enggunakan sebuah matriks persegi sebagai kunci berukuran m x m sebagai kunci untuk melakukan enkripsi dan dekripsi. Dasar teori matriks yang digunakan dalam Hill cipher antara lain adalah perkalian antar matriks dan melakukan invers pada matriks.
Karena menggunakan matriks sebagai kunci, Hill cipher merupakan algoritma kriptografi kunci simetris yang sulit dipecahkan, karena teknik kriptanalisis seperti analisis frekuensi tidak dapat diterapkan dengan mudah untuk memecahkan algoritma ini. Hill cipher sangat sulit dipecahkan jika kriptanalis hanya memiliki ciphertext saja (chipertext-only), namun dapat dipecahkan dengan mudah jika kriptanalis memiliki ciphertext dan potongan dari plaintext-nya (known-plaintext).


B. Gambar Kriptografi Simetris :
C. Contoh Kriptografi Simetris :
Perhitungan Matematis Dasar dari teknik hill cipher adalah aritmatika modulo terhadap matriks. Dalam penerapannya, Hill cipher menggunakan teknik perkalian matriks dan teknik invers terhadap matriks. Kunci pada hill cipher adalah matriks n x n dengan n merupakan ukuran blok. Jika matriks kunci kita sebut dengan K, maka matriks K adalah sebagai berikut :






Matriks K yang menjadi kunci ini harus merupakan matriks yang invertible, yaitu memiliki multiplicative inverse K-1 sehingga :
K.K-1 = 1
Ingat ! Kunci harus memiliki invers karena matriks K-1 tersebut adalah kunci yang digunakan untuk melakukan dekripsi.
Cara Enkripsi
Dengan mengkodekan atau mengubah setiap huruf abjad dengan integer sebagai berikut: A = 0, B = 1, …, Z = 25




maka secara matematis, proses enkripsi pada hill cipher adalah:
C = K . P mod 26
C = Cipherteks | K = Kunci | P = Plainteks
Proses enkripsi pada hill cipher dilakukan per blok plainteks. Ukuran blok tersebut sama dengan ukuran matriks kuncinya. Perhatikan contoh dibawah ini!
P = D O D I S P U T R A ,dikodekan/diintegerkan menjadi
P = 3 14 3 8 18 15 20 19 17 0




Karena matriks kunci K berukuran 2, maka plainteks dibagi menjadi blok yang masing-masing bloknya berukuran 2 karakter. Blok pertama dari plainteks P1,2 =[3;14] kemudian dienkripsi dengan kunci K dengan persamaan C = K . P mod 26. Karena perkalian tersebut menghasilkan lebih dari angka 25 maka dilakukan modulo 26 pada hasil yang lebih dari 25.




Karakter yang berkorespondensi dengan 21 dan 9 adalah V dan J. Setelah melakukan enkripsi semua blok pada plainteks P maka dihasilkan cipherteks C sebagai berikut:
P = D O D I S P U T R A
C = V J R N P W L U R X
Cipherteks yang dihasilkan oleh enkripsi hill chiper atau kode hill menghasilkan cipherteks yang tidak memiliki pola yang mirip dengan plainteks atau pesan aslinya.
Mancari K Invers dan Teknik Dekripsi
Perhitungan matematis dekripsi pada hill chiper atau kode hill ini sama halnya dengan enkripsi. Namun matriks kunci harus dibalik (invers) terlebih dahulu dan kunci invers harus memenuhi persamaan K . K-1 = 1.
P=K-1.Cm26
Sebelum mendekripsi kita akan menginvers kunci K terlebih dahulu, untuk menginvers kita akan menggunakan persamaan [K | I] = K-1, proses invers ini kita akan kita lakukan dengan operasi baris/ row operation.




















Dari perhitungan diatas didapatkan K invers :




K invers ini sudah memenuhi persamaan K . K-1 = I, berdasarkan perkalian K dengan K-1 kemudian dimodulasi dengan 26 menghasilkan I = [1 0;0 1]. Setelah itu kita akan melakukan dekripsi terhadap chiperteks, kemudian dirubah menjadi integer terlebih dahulu. Dengan kunci dekripsi yang dimiliki, kriptanalis hanya perlu menerapkan persamaan (P = K-1 . C mod 26) pada cipherteks dan kunci, sehingga menghasilkan plainteks/ pesan asli (P = D O D I S P U T R A).
Hill cipher/ kode hill merupakan algoritma kriptografi klasik yang sangat kuat dilihat dari segi keamanannya dnegan matriks kunci hill cipher harus merupakan matriks yang invertible, karena disitulah letak keunikan sekaligus kesulitan kode hill tersebut.

II. Kriptografi Asimetris
A. Pengertian Kriptografi Asimetris
Algoritma asimetris, sering juga disebut dengan algoritma kunci publik atausandi kunci publik, menggunakan dua jenis kunci, yaitu kunci publik (public key) dan kunci rahasia (secret key). Kunci publik merupakan kunci yang digunakan untuk mengenkripsi pesan. Sedangkan kunci rahasia digunakan untuk mendekripsi pesan.
Kunci publik bersifat umum, artinya kunci ini tidak dirahasiakan sehingga dapat dilihat oleh siapa saja. Sedangkan kunci rahasia adalah kunci yang dirahasiakan dan hanya orang-orang tertentu saja yang boleh mengetahuinya. Keuntungan utama dari algoritma ini adalah memberikan jaminan keamanan kepada siapa saja yang melakukan pertukaran informasi meskipun di antara mereka tidak ada kesepakatan mengenai keamanan pesan terlebih dahulu maupun saling tidak mengenal satu sama lainnya.
B. Gambar Kriptografi Asimetris


C. Contoh Kriptografi Asimetris
Contoh RSA:
• Kunci Publik:
– Pilih bil. prima p = 7 dan q = 11, n = 7.11 =77
– F(n)=(p-1).(q-1)=6.10= 60 artinya
F(n)={1,2,3,4,6,8,..,76}={x|gcd(x, n)=1}
– Pilih e dalam {x|gcd(x, 60)=1}, misalnya e=17
– Hapus p dan q dan Kunci Publik n=77, e=17


• Kunci Rahasia:
– d = e-1 mod F(n), d .e = 1 mod 60, d =53
– 53 . 17 mod 60 = 901 mod 60 = 1 mod 60

7.1 Algoritma Kunci
Algoritma sandi berdasarkan kesamaan kunci dibagi menjadi dua, yaitu kunci asimetris dan kunci simetris. Pada sistem kunci-asimentris digunakan sepasang kunci yang berbeda, umumnya disebut kunci public (public key) dan kunci pribadi (private key), digunakan untuk proses enkripsi dan proses dekripsinya. Jadi kunci untuk membuat pesan yang disandikan berbeda dengan kunci untuk membuka pesan yang disandikan itu. Beberapa contoh algoritma yang menggunakan kunci-asimetris : Knapsack, RSA (Rivert-Shamir-Adelman), Diffie-Hellman.
Sedangkan pada skema kunci-simetris, digunakan sebuah kunci rahasia yang sama untuk melakukan proses enkripsi dan dekripsinya. Algoritma sandi kunci simetris adalah jenis kriptografi yang paling umum dipergunakan. Kunci untuk membuat pesan yang disandikan sama dengan kunci untuk membuka pesan yang disandikan itu. Siapapun yang memiliki kunci tersebut, dapat membuat dan membongkar rahasia ciphertext. Problem yang paling jelas disini terkadang bukanlah masalah pengiriman ciphertext-nya, melainkan masalah bagaimana menyampaikan kunci simetris tersebut kepada pihak yang diinginkan. Beberapa contoh algoritma yang menggunakan kunci-simetris : DES (Data Encryption Standard), Blowfish, Twofish, MARS, IDES, 3DES - DES diaplikasikan 3 kali, AES (Advanced Encryption Standard).
Gambar 3. Kriptografi kunci simetris

Sebuah skema algoritma sandi akan disebut kunci-simetris apabila untuk setiap proses enkripsi maupun dekripsi data secara keseluruhan digunakan kunci yang sama. Skema ini berdasarkan jumlah data per proses dan alur pengolahan data didalamnya dibedakan menjadi dua kelas, yaitu stream-cipher dan block-cipher.
Stream-cipher merupakan sebuah algoritma sandi yang mengenkripsi data persatuan data, seperti bit, byte, nible atau per lima bit (saat data yang di enkripsi berupa data Boudout). Setiap mengenkripsi satu satuan data di gunakan kunci yang merupakan hasil pembangkitan dari kunci sebelum. Block-cipher adalah skema algoritma sandi yang akan membagi-bagi teks terang yang akan dikirimkan dengan ukuran tertentu (disebut blok) dengan panjang t, dan setiap blok dienkripsi dengan menggunakan kunci yang sama.
Semenjak pertama kali ditemukan, telah banyak penemuan-penemuan baru dalam penerapan cipher blok. Salah satunya adalah algoritma Blowfish yang dirancang oleh Bruce Schneier pada tahun 1993. Sejak saat itu, telah dilakukan berbagai macam analisis, dan perlahan-lahan mulai mendapat penerimaan sebagai algoritma enkripsi yang kuat [2].
Algoritma Kunci Simetrik
Algoritma kunci simetrik adalah algoritma kriptografi yang memiliki kunci yang sama untuk proses enkripsi dan dekripsinya. Kunci tersebut merupakan satu-satunya jalan untuk proses dekripsi (kecuali mencoba membobol algoritma tersebut), sehingga kerahasiaan kunci menjadi nomor satu. Untuk mengirimkan kunci tersebut ke suatu pihak tanpa diketahui pihak yang lain merupakan masalah awal dari algoritma kunci simetrik. Algoritma kunci simetrik terbagi menjadi dua buah bergantung pada datanya. Keduanya adalah: cipher aliran (stream cipher) dan cipher blok (block cipher). Cipher aliran memproses satu bit pesan sekali dalam satu waktu, sedangkan cipher blok memproses sekumpulan bit sekaligus sebagai satu unit. Ukuran blok yang umu dipakai adalah 64 bit.
Algoritma kunci simetrik terbagi menjadi dua buah bergantung pada datanya. Keduanya adalah: cipher aliran (stream cipher) dan
cipher blok (block cipher) [3].

Deskripsi cipher blok
Cipher blok merupakan salah satu pendekatan dalam algoritma kriptografi kunci simetrik. Pendekatan lain adalah cipher aliran. Perbedaan mendasar keduanya adalah jika cipher blok memproses dalam suatu kumpulan bit sekaligus sebagai suatu unit dan cipher aliran memproses bit per bit. Panjang blok yang biasa diimplementasikan oleh perancang algoritma kriptografi adalah kelipatan 64 bit. Pada awal tahun 1990-an, panjang blok yang paling umum adalah 64 bit. Masayrakat merasa dengan panjang kunci 64 bit telah cukup aman dan tidak mungkin ada komputer yang mampu menyerang dengan metode brute force. Namun dengan berlalunya waktu, ternyata mungkin untuk menyerang algoritma dengan kunci 64 bit menggunakan metode brute force. Oleh karena itu panjang blok umum berkembang menjadi 128 bit pada awal 2000-an, atau bahkan akhir-akhir ini [3].

7.2 Algoritma Blowfish
Blowfish atau yang disebut juga “OpenPGP.Cipher.4″ adalah algoritma kunci simetrik cipher blok yang dirancang pada tahun 1993 oleh Bruce Schneider untuk menggantikan DES (Data Encryption Standard). Algoritma Blowfish dibuat untuk digunakan pada komputer yang mempunyai microposesor besar (32-bit keatas dengan cache data yang besar).
Pada saat itu banyak sekali rancangan algoritma yang ditawarkan, namun hampir semua terhalang oleh paten atau kerahasiaan pemerintah Amerika. Schneier menyatakan bahwa blowfish bebas paten dan akan berada pada domain publik. Dengan pernyataan Schneier tersebut blowfish telah mendapatkan tempat di dunia kriptografi, khususnya bagi masyarakat yang membutuhkan algoritma kriptografi yang cepat, kuat, dan tidak terhalang oleh lisensi.
Blowfish dirancang dan diharapkan mempunyai kriteria perancangan yang diiginkan sebagai berikut :
a. Cepat, Blowfish melakukan enkripsi data pada microprocessor 32-bit dengan rate 26 clock cycles per byte.
b. Compact,Blowfish dapat dijalankan pada memory kurang dari 5K.
c. Sederhana, Blowfish hanya menggunakan operasi – operasi operasi sederhana, seperti : penambahan, XOR, dan lookup tabel pada operan32-bit.
d. Memiliki tingkat keamanan yang bervariasi, panjang kunci yang digunakan oleh Blowfish dapat bervariasi dan bisa sampai sepanjang minimal 32-bit, maksimal 448 -bit, Multiple 8 bit, default 128 bit [2].

7.2.1 Struktur Algoritma Blowfish
Blowfish merupakan blok cipher 64-bit dengan panjang kunci variabel. Algoritma ini terdiri dari dua bagian: key expansion atau perluasan kunci dan enkripsi data.
7.2.1.1 Key-Expansion
Berfungsi merubah kunci (Minimum 32-bit, Maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total 4168 byte.
7.2.1.2 Enkripsi Data
Terdiri dari iterasi fungsi sederhana (Feistel Network) sebanyak 16 kali putaran. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci- dan data-dependent. Semua operasi adalah penambahan (addition) dan XOR pada variabel 32-bit. Operasi tambahan lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran.
Untuk alur algoritma enkripsi dengan metoda Blowfish dijelaskan sebagai berikut :
1. Bentuk inisial array P sebanyak 18 buah (P1,P2,…………..P1 masing-msing 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:
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. Plainteks yang akan dienkripsi diasumsikan sebagai masukan, Plainteks 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 operrasi 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.

Blowfish menggunakan jaringan Feistel yang terdiri dari 16 buah putaran. Skema jaringan Feistel dapat dilihat di gambar 4.
Gambar 4. Jaringan Feistel untuk Algoritma Blowfish

Algoritma Blowfish memiliki keunikan dalam hal proses dekripsi, yaitu proses dekripsi dilakukan dengan urutan yang sama persis dengan proses enkripsi, hanya saja pada proses dekripsi P1, P2, …, P18 digunakan dalam urutan yang terbalik.
Dalam algoritma Blowfish juga terdapat fungsi f. Berikut ini gambar mengenai fungsi f tersebut.
Gambar 5. Fungsi f dalam algoritma Blowfish

Sebelumnya dijelaskan bahwa Array P terdiri dari delapan belas subkunci. Subkunci dihitung menggunakan algoritma Blowfish, metodenya adalah sebagai berikut :
1. Pertama-tama inilialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri atas digit hexadesimal dari Pi.
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. Enkrip semua string nol dengan algoritma Blowfish dengan menggunakan subkunci seperti dijelaskan pada langkah (1) dan (2).
4. Ganti P1 dan P2 dengan keluaran dari langkah (3).
5. Enkrip keluaran dari langkah (3) dengan algoritma Blowfish dengan subkunci yang sudah dimodifikasi.
6. Ganti P3 dan P4 dengan keluaran dari langkah (5).
7. Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, kemudian seluruh keempat S-box berurutan, dengan keluaran yang berubah secara kontiyu dari algoritma Blowfish.

Secara keseluruhan terdapat 521 iterasi atau putaran yang dibutuhkan untuk membangkitkan seluruh upa-kunci yang dibutuhkan. Aplikasi kemudian dapat menyimpan upa-kunci yang telah dihasilkan. Proses pembangkitan kunci ini tidak perlu selalu dilakukan setiap saat [2].

7.2.2 Keamanan Algoritma Blowfish
Sampai saat ini algoritma Blowfish belum ditemukan kelemahan yang berarti hanya adanya weak key dimana dua entri dari S-box mempunyai nilai yang sama. Belum ada cara untuk mengecek weak key sebelum melakukan key expansion, tetapi hal ini tidak berpengaruh terhadap hasil enkripsi.
Hasil enkripsi dengan algoritma Blowfish sangat tidak mungkin dan tidak praktis untuk di terjemahkan tanpa bantuan kunci. Sampai kini belum ada Cryptoanalyst yang dapat membongkar pesan tanpa kunci yang dienkripsi dengan memakai bantuan algoritma Blowfish. Agar aman dari pembongkaran pesan maka dalam algoritmanya harus menggunakan 16 putaran agar pesan tersebut tidak dapat dibongkar.
Algoritma Blowfish pun dapat digabungkan dengan algoritma-algoritma enkripsi yang lain dalam pengkripsian sebuah pesan untuk lebih menjamin isi dari pesan tersebut. Sehingga algoritma Blowfish cukup aman jika ingin digunakan untuk mengenkripsi data yang ingin di amankan [1].

7.2.3 Penggunaan Algoritma Blowfish
Blowfish adalah salah satu algoritma cipher blok yang tercepat dan digunakan secara luas di dunia, kecuali ketika pergantian kunci. Setiap kunci baru memerlukan pemrosesan awal yang sebanding dengan mengenkripsikan teks denga ukuran sekitar 4 kilobyte.
Pemrosesan awal ini sangat lambat dibandingkan dengan algoritma cipher blok lainnya. Hal ini menyebabkan Blowfish tidak mungkin digunakan dalam beberapa aplikasi, tetapi tidak menimbulkan masalah dalam banyak aplikasi lainnya.Pemrosesan awal yang lama pada Blowfish digunakan sebagai ide untuk metode password-hashing yang digunakan pada OpenBSD. Metode password-hashing ini menggunakan algoritma yang diuturnnkan dari algoritma Blowfish yang menggunakan penjadwalan kunci yang lambat. Algoritma ini digunakan dengan pertimbangan bahwa usaha komputasi ekstra yang harus dilakukan dapat memberikan proteksi lebih terhadap serangan terhadap password berbasiskan kamus (dictionary attacks).
Dalam beberapa implementasi, Blowfish memerlukan memori yang relatif besar, yaitu sekitar 4 kilobyte. Hal ini tidak menjadi masalah bahkan untuk komputer desktop dan laptop yang sudah berumur tua. Tetapi hal ini juga membuat implementasi Blowfish pada embedded system terkecil (seperti pada smartcard pada awal kemunculannya) tidak mungkin untuk dilakukan [2].

Enkripsi Blowfish
Blowfish membutuhkan 64 bit blok-blok plaintext sebagai masukannya dan menghasilkan 64 bit chipertext. Ukuran kunci untuk Blowfish dapat dipilih dalam range 32 bit sampai 448 bit yang mana semakin besar ukurannya maka semakin kuat keamanannya. Blok masukan dipecah dalam paro L0 dan R0 dimana tiap-tiap paro tersebut mengandung 32 bit. Blowfish dapat secara sederhananya digambarkan dengan algoritma berikut [4]:
j = 1
loop from j to 16
Rj = Lj-1 XoR Pj
Lj = F (Rj) XoR Rj-1
end loop
L17 = R16 XoR P18
R17 = L16 XoR P17
Dekripsi Blowfish
Dekripsi untuk Blowfish bersifat maju kedepan. Ironisnya, dekripsi bekerja dalam arah algoritma yang sama seperti halnya dengan enkripsi, namun sebagai masukannya dalah chipertext. Walaupun begitu, seperti yang diharapkan, sub-kunci yang digunakan dalam urutan terbalik. Sehingga algoritma dekripsi Blowfish sebagai berikut [4]:
j = 1
loop from j to 16
Rj = Lj-1 XoR P19-j
Lj = F (Rj) XoR Rj-1
end loop
L17 = R16 XoR P1
R17 = L16 XoR P2

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Hosted Desktops