Ticker

6/recent/ticker-posts

Algoritma Blowfish

Blowfish merupakan enkripsi yang menggunakan algoritma simetris yang tergolong ke dalam algoritma cipher blok. Blowfish dirancang untuk memenuhi kriteria sebagai berikut :

1. Cepat, pada implementasi yang optimal Blowfish dapat mencapai kecepatan 26 clock cycle/byte.

2. Kompak, Blowfish dapat berjalan pada memori kurang dari 5 KB.

3. Sederhana, Blowfishhanya menggunakan operasi yang sederhana, yaitu penambahan (addition), XOR, dan penelusuran tabel (table lookup) pada operand 32 bit

4. Keamanan yang variabel, panjang kunci Blowfish dapat bervariasi dan dapat mencapai 448 bit (56 Byte).

Foto: Pixabay

Algoritma Blowfish menggunakan kunci yang sama untuk proses enkripsi dan dekripsi data dengan membagi pesan ke dalam blok-blok dengan ukuran yang sama panjang. 

Blowfish termasuk dalam enkripsi block cipher64 bit dengan panjang kunci antara 32 bit sampai 448 bit. 

Algoritma Blowfish terdiri atas dua bagian, yaitu:

1. Key-ExpansionBerfungsi merubah kunci (Minimum 32-bit, Maksimum 448-bit) menjadi beberapa arraysubkunci (subkey) dengan total 4168 byte. 

2. Enkripsi DataTerdiri dari iterasi fungsi sederhana (feistel Network) sebanyak 16 kali putaran. Setiap putaran terdiri dari permutasi kunci-dependentdan substitusi kunci- dan data-dependent. Semua operasi adalah penambahan (addition) dan XORpada variabel32-bit. Operasi tambahan lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran.

Pada algoritma Blowfish, digunakan banyak subkey. Kunci-kunci ini harus dihitung atau dibangkitkan terlebih dahulu sebelum dilakukan enkripsi atau dekripsi data. Pada jaringan feistel, Blowfish memiliki 16 iterasi, masukannya adalah 64 bit elemen data atau sebut saja “X”.

Adapun alur algoritma enkripsi dengan metoda Blowfish dijelaskan sebagai berikut : 

1. Bentuk inisial P- array sebanyak 18 buah (P0,P1,..............P17) masing-masing bernilai 32-bit. Array P terdiri dari delapan belas kunci 32-bit subkunci P0,P1,.......,P17

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 masukan:
        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-bitmaka kita tambahkan bit-nya, 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 Pidan 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 = XRxor P16 dan XL = XL xor P17. 

9. Proses terakhir, satukan kembali XL dan XRsehingga menjadi 64-bit kembali.

Posting Komentar

0 Komentar