Algoritma Blowfish

By | 04.27 Leave a Comment

Blowfish didesain oleh Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, dan Niels Ferguson dari Laboratorium Counterpane System. Bruce Schneier juga mendesain algoritma Blowfish yang telah diimplementasi oleh lebih dari 130 aplikasi komersial. Blowfish yang resmi, yaitu dengan 16 putaran, sampai saat ini belum terpecahkan. Namun untuk 5 putaran, telah berhasil dipecahkan dengan 222,5 plainteks terpilih dan 251 usaha (effort).
Blowfish adalah block cipher 126 bit yang menerima kunci dengan panjang yang fleksibel sampai 256 bit. Cipher ini menggunakan cukup banyak metode dalam implementasinya, meliput jaringan Feistel (Feistel network), SBox, Matriks MDS, transformasi Pseudo-Hadamard, whitening, dan key schedule.
Gambar 6 memperlihatkan skema dari block cipher Blowfish. Blowfish menggunakan sebuah struktur seperti jaringan Feistel 16 putaran dengan tambahan whitening terhadap input dan output. Yang membuatnya bukan termasuk jaringan Feistel murni adalah adanya rotasi 1 bit. Sebenarnya rotasi ini dapat dimasukkan ke dalam fungsi F, agar dapat membentuk jaringan Feistel murni, namun hal ini membutuhkan rotasi tambahan terhadap word sebelum output dari tahap whitening.
Gambar 6 Skema Blowfish
Plainteks dibagi menjadi empat word 32 bit. Pada tahap whitening input, word tersebut di-XOR-kan dengan empat word kunci, kemudian masuk ke dalam 16 putaran. Pada setiap putaran, dua word sebelah kiri digunakan sebagai masukan untuk dua fungsi g (salah satu word dirotasi 8 bit terlebih dulu). Fungsi g terdiri dari empat S-Box key-dependent, dan diikuti dengan tahap pengacakan linear menggunakan matriks MDS.
Hasil dari dua fungsi g dikombinasikan menggunakan Pseudo-Hadamard Transform (PHT), dan penambahan dua word kunci. Kedua hasil ini kemudian di-XOR-kan dengan dua word plainteks sebelah kanan (salah satunya dirotasikan 1 bit ke kiri, dan yang lain dirotasikan 1 bit ke kanan terlebih dulu). Bagian kiri dan kanan ini kemudian di-swap (tukar) untuk masuk ke putaran selanjutnya. Setelah 16 putaran, proses swap terakhir dikembalikan lagi keempat word di-XOR-kan dengan word kunci untuk menghasilkan cipherteks.
Posting Lebih Baru Posting Lama Beranda

0 komentar: