Anda di halaman 1dari 24

Hanifudin Sukri - 30000414410004

Fikra Fahma Ihdina 30000414410027


Setiawan Widiyanto -
Sejarah
Algoritma pertama kali dikembangkan untuk
mengijinkan organisasi tertentu untuk mengakses
suatu informasi.
Algoritma kriptografi mengalami perkembangan
sehingga hasil lebih memuaskan.
Algoritma contohnya, RSA, BLOWFISH,IDEA, DES,
AES, dan lainya.
BLOWFISH
Blowfish merupakan algoritma kunci simetrik cipher
blok yang dirancang pada tahun 1993 oleh Bruce
Schneier untuk menggantikanDES.
Schneier menyatakan bahwa blowfish bebas paten dan
akan berada pada domain publik
Keberhasilan blowfish dalam menembus pasar telah
terbukti dengan diadopsinya blowfish sebagai Open
Cryptography Interface(OCI) pada kernel linux versi
2.5 keatas.
Flowchart
algoritma
blowfish
Kriteria Algortima Blowfish
Blowfish adalah algoritma kriftografi kunci simetri.
Blowfish juga merupakan cipher blok
Blowfish akan membagi pesan menjadi blok-blok
dengan ukuran yang sama panjang
Panjang blok untuk algoritmaBlowfish adalah 64-bit.
Blowfish menerapkan teknik kunci berukuran
sembarang.
Ukuran kunci yang dapat diterima
oleh Blowfish adalah antara 32 bit hingga 448 bit,
dengan ukuran default sebedar 128 bit
Lanjutan.
Algoritma utama terbagi menjadi dua subalgoritma
utama,yaitu bagian ekspansi kunci dan bagian
enkripsi-dekripsi data.
Blowfish memanfaatkan teknik pemanipulasian bit
dan teknik pemutaran ulang dan pergiliran kunci yang
dilakukan sebanyak 16 kali
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

Alur Enkripsi Algoritma Blowfish
Sebelum Melakukan enkripsi harus menghitung subkey yang
akan digunakan
Bentuk inisial P-array sebanyak 18 buah (P1,P2,..............P18)
masing-msing bernilai 32-bit, dengan string yang sudah pasti
yang terdiri dari digit hexa decimal Pi, Array P terdiri dari
delapan belas kunci 32-bit subkunci : P
1
,P
2
,.......,P
18

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 :

Alur Enkripsi Algoritma
Blowfish(cont)
Setelah inisialisasi, XOR P1 dengan 32 bit Kunci pertama,
XOR P2 dengan 32 bit kunci ke-2
Berikut Langkah-langkahnya :
Kunci = K1, K2, K3 K14
Subkey =P1, P2, P3 P18
P1 = P1 XOR K1
P2 = P2 XOR K2
|
P14 = P14 XOR K14
P15 = P15 XOR K1
P16 = P16 XOR K2
P17 = P17 XOR K3
P18 = P18 XOR K4



Alur Enkripsi Algoritma
Blowfish(cont)
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 P-array da S-
array (S-box)
P1 dan P2 yang sudah diganti dengan hasil dari langkah (3)
dienkripsi dengan algoritma blowfish
Ganti P3 dan P4 dengan keluaran dari langkah (5). Hasil
dari langkah (5) digunakan untuk menggantikan P3 dan
P4
Lanjutkan proses tersebut , ganti seluruh elemen dari P-
array, Kemudian seluruh keempat S-Box
Alur Enkripsi Algoritma
Blowfish(cont)
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.

Alur Enkripsi Algoritma
Blowfish(cont)
Hasil pengambilan tadi dibagi 2, 32-bit pertama
disebut XL, 32-bit yang kedua disebut XR.
Selanjutnya lakukan operasi XL = XL xor Pi dan XR =
F(XL) xor XR
Hasil dari operrasi diatas ditukar XL menjadi XR dan
XR menjadi XL
Lakukan sebanyak 16 kali, perulangan yang ke-16
lakukan lagi proses penukaran XL dan XR.
Pada proses ke-17 lakukan operasi untuk XR = XR xor
P17 dan XL = XL xor P18.
Proses terakhir satukan kembali XL dan XR sehingga
menjadi 64-bit kembali.

Flowchart Blowfish

Gambar Alur Algoritma Blowfish

Gambar fungsi Feistel dalam
Blowfish
Proses yang terjadi pada Fungsi Feistel tidak lain
merupakan proses S-box
Pada proses ini terjadi penelusuran tabel (table
lookup)
Gambar fungsi Feistel dalam
Blowfish
Proses yang terjadi pada Fungsi Feistel tidak lain
merupakan proses S-box
Pada proses ini terjadi penelusuran tabel (table
lookup)
Dalam proses S-box terjadi proses perhitungan bit,
dimana hasil penelusuran tabel pada S-box pertama
akan ditambahkan dg hasil S-box yg ke-2, kemudian
hasil penjumlahannya di Xor-kan dg hasil S-box yg ke-
3 hasilnya kemudian ditambahkan kembali dg S-box
yg ke-4, maka menghasilkan output berukuran 32 bit
Gambar fungsi Feistel dalam
Blowfish
Proses yang terjadi pada Fungsi Feistel tidak lain
merupakan proses S-box
Pada proses ini terjadi penelusuran tabel (table
lookup)
Dalam proses S-box terjadi proses perhitungan bit,
dimana hasil penelusuran tabel pada S-box pertama
akan ditambahkan dg hasil S-box yg ke-2, kemudian
hasil penjumlahannya di Xor-kan dg hasil S-box yg ke-
3 hasilnya kemudian ditambahkan kembali dg S-box
yg ke-4, maka menghasilkan output berukuran 32 bit
Dekripsi
Proses dekripsi sama dengan proses enkripsi hanya
saja subkey-nya dibalik
P18 diproses terlebih dahulu. P18 xor XL kemudian
F(XL) xor XR lalu ditukar tempat, begitu seterusnya.
Dan diakhiri pada P1 dan P2 tidak dilakukan
penukaran melainkan penyatuan untuk mendapatkan
plainteks
Dekripsi

Menghilangkan Padding
Setelah menghasilkan plainteks, maka selanjutnya
ialah memeriksa apakah plainteks yang dihasilkan
terjadi penambahan bit (padding) sebelum dienkripsi
atau tidak
Jika terjadi penambahan bit maka bit tersebut harus
dilepaskan untuk mengembalikan plainteks utuh
seperti sebelum di enkripsi
Menghilangkan Padding

Kelemahan Blowfish
Kebutuhan memorinya yang besar tidak
memungkinkan untuk aplikasi kartu pintar (smart
card).
Blowfish tidak cocok untuk aplikasi seperti packet
switching, dengan perubahan kunci yang sering, atau
sebagai fungsi hash satu arah.
Referensi
http://www.schneier.com
http://www.codeproject/KB/security/blowfish/Blowfis
h.zip
http://www.design-
reuse.com/articles/5922/encrypting-data-with-the-
blowfish-algorithm



Terima kasih.

Anda mungkin juga menyukai