Enkripsi Blowfish
Blowfish alias “OpenPGP.Cipher.4″
merupakan enkripsi yang termasuk dalam golongan Symmetric Cryptosystem , metoda
enkripsinya mirip dengan DES (DES-like Cipher) 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 dikembangkan untuk memenuhi kriteria desain yang cepat dalam
implementasinya dimana pada keadaan optimal dapat mencapai 26 clock cycle per
byte, kompak dimana dapat berjalan pada memori kurang dari 5 KB, sederhana
dalam algoritmanya sehingga mudah diketahui kesalahannya, dan keamanan yang
variabel dimana panjang kunci bervariasi (minimum 32 bit, maksimum 448 bit,
Multiple 8 bit, default 128 bit).Blowfish dioptimasikan untuk berbagai aplikasi
dimana kunci tidak sering berubah, seperti pada jaringan komunikasi atau
enkripsi file secara otomatis. Dalam pengimplementasiannya dalam komputer
bermicroprosesor 32-bit dengan cache data yang besar (Pentium dan Power PC)
Blowfish terbukti jauh lebih cepat dari DES. Tetapi Blowfish tidak cocok dengan
aplikasi dengan perubahan kunci yang sering atau sebagai fungsi hast satu arah
seperti pada aplikasi packet switching. Blowfish pun tidak dapat digunakan pada
aplikasi kartu pintar (smart card) karena memerlukan memori yang besar.
Blowfish termasuk dalam enkripsi block Cipher 64-bit dangan panjang kunci yang
bervariasi antara 32-bit sampai 448-bit.Algoritma Blowfish terdiri atas dua
bagian :
Key-Expansion
Berfungsi merubah kunci (Minimum
32-bit, Maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total
4168 byte.
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.
Algoritma Blowfish
Blowfish menggunakan subkunci yang
besar. Kunci tersebut harus dihitung sebelum enkripsi atau dekripsi data.
Blowfish adalah algoritma yang menerapkan jaringan Feistel (Feistel Network)
yang terdiri dari 16 putaran. Input adalah elemen 64-bit,X.Untuk alur algoritma
enkripsi dengan metoda Blowfish dijelaskan sebagai berikut :
1. Bentuk inisial P-array sebanyak
18 buah (P1,P2,…………..P18) 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. 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 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.
Subkunci dihitung menggunakan algoritma
Blowfish, metodanya adalah sebagai berikut :
- Pertama-tama inilialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri atas digit hexadesimal dari Pi.
- 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.
- Enkrip semua string nol dengan algoritma Blowfish dengan menggunakan subkunci seperti dijelaskan pada langkah (1) dan (2).
- Ganti P1 dan P2 dengan keluaran dari langkah (3).
- Enkrip keluaran dari langkah (3) dengan algoritma Blowfish dengan subkunci yang sudah dimodifikasi.
- Ganti P3 dan P4 dengan keluaran dari langkah (5).
- Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, kemudian seluruh keempat S-box berurutan, dengan keluaran yang berubah secara kontiyu dari algoritma Blowfish.
Total yang diperlukan adalah 521
iterasi untuk menghasilkan semua subkunci yang dibutuhkan. Aplikasi kemudian
dapat menyimpan subkunci ini dan tidak membutuhkan langkah-langkah proses
penurunan berulang kali, kecuali kunci yang digunakan berubah.
Untuk deskripsi sama persis dengan
enkripsi, kecuali pada P-array (P1,P2,……..,P18) digunakan dengan urutan
terbalik atau di inverskan.
Keamanan 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 Cryptanalysis yang dapat membongkar pesan tanpa kunci yang enkripsi oleh
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.
Tidak ada komentar:
Posting Komentar