Prinsip Perancangan Block Cipher
Kriptografi
Beberapa teknik yang digunakan dalam block cipher antara lain:
1)Cipher Berulang
Pada teknik cipher berulang (iterated cipher), blok plaintext mengalami pengulangan fungsi transformasi beberapa kali untuk mendapatkan blok ciphertext. Fungsi transformasi pada umumnya merupakan gabungan proses substitusi, permutasi, kompresi, atau ekspansi terhadap blok plaintext. Sebuah kunci pada setiap putaran (round key) akan dikombinasikan dengan plaintext. Parameter dalam cipher ini adalah jumlah putaran r, besar blok n, dan besar kunci k. Sub-kunci Ki pada setiap putaran diperoleh dari penurunan kunci input K.
2)Fiestel Cipher
Fiestel cipher beroperasi terhadap panjang blok data tetap sepanjang n (genap), kemudian membagi 2 blok tersebut dengan panjang masing-masing n/2, yang dinotasikan dengan L dan R. Fiestel cipher menerapkan metode cipher berulang dengan masukan pada putaran ke-i yang didapat dari keluaran sebelumnya. Secara matematis dapat dinyatakan sebagai berikut:
Li = Ri – 1
Ri = Li – 1 XOR f(Ri – 1, Ki) ; i = 1,2,3,…r
Ki adalah kunci untuk putaran ke-I dan f adalah fungsi transformasi.
Blok plaintext adalah gabungan L dan R awal atau secara formal plaintext dinyatakan dengan (Lo,Ro). Sedangkan blok ciphertext didapatkan dari L dan R hasil putaran terakhir setelah terlebih dahulu dipertukarkan atau secara formal ciphertext dinyatakan dengan (Rr,Lr).
3)Avalanche
Pada blok cipher, perubahan satu buah bit dapat menghasilkan perubahan lebih dari satu bit setelah satu putaran, lebih banyak lagi bit berubah untuk putaran berikutnya. Hasil perubahan tersebut dinamakan sebagai avalanche effect. Sebuah algoritma kriptografi memenuhi kriteria avalanche effect apabila satu buah bit input mengalami perubahan, maka probabiltas semua bit berubah adalah setengahnya. Avalanche effect merupakan salah satu karakteristik yang menjadi acuan untuk menentukan baik atau tidaknya sebuah algoritma kriptografi.
Perancangan algoritma kriptografi simetri cipher blok dapat mempertimbangkan beberapa prinsip berikut ini:
1.Confussion
Prinsip ini menyembunyikan hubungan apapun yang ada antara plainteks, cipherteks, dan kunci. Hal ini akan membuat kriptanalis frustasi untuk mencari pola-pola statistik yang muncul pada cipherteks.
2.Diffusion
Prinsip ini menyebarkan pengaruh satu bit plainteks atau kunci ke sebanyak mungkin cipherteks. Hal ini juga akan menyembunyikan hubungan statistic antara plainteks, cipherteks, dan kunci.
3.Iterated Cipher
Fungsi transformasi sederhana yang mengubah plainteks menjadi cipherteks diulang beberapa kali. Pada setiap putaran digunakan sub-kunci atau kunci putaran yang dikombinasikan dengan plainteks.
4.Feistel Network
Prinsip ini merupakan model jaringan yang membuat algoritma kriptografi menjadi reversible. Hal ini akan membuat kriptografer tidak perlu membuat algoritma baru untuk mendekripsi cipherteks menjadi plainteks.
5.Weak Key
Cipher blok yang bagus tidak memiliki kunci lemah (weak key). Kunci lemah adalah kunci yang menyebabkan tidak adanya perbedaan antara enkripsi dan dekripsi. Dekripsi terhadap cipherteks tetap menghasilkan plainteks semula, namun enkripsi dua kali berturut-turut pada plainteks akan menghasilkan kembali plainteksnya.
6.S-Box
Kotak-S (S-Box) adalah matriks yang berisi subtitusi sederhana yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain. Perancangan kotak-S menjadi isu penting dalam perancangan cipher blok karena kotak-S harus dirancang sedemikian rupa sehingga kekuatan kriptografinya bagus dan mudah untuk diimplementasikan.
Deskripsi mengenai Catfish…
Ide dasar dari algoritma Catfish ini adalah Blowfish, hanya saja input plaintext yang diperlukan lebih panjang dua kali yaitu 128-bit. Catfish terdiri dari Double Leght Encryption dengan enkripsi yang digunakan adalah blowfish dan fungsi Whitening. Diharapkan dengan menggunakan kedua teknik ini tidak hanya memudahkan menyandi plaintext yang besar tapi juga aman, khususnya untuk meet-in-the-middle-attack. Secara umum Catfish menggunakan 3 kunci. Kunci 1 dan 2 yang digunakan dalam fungsi Whitening dan kunci 3 yang digunakan dalam semua penyandian mengunkan algoritma blowfish. Complier yang digunakan unutk algorima ini adalah Dev C++. Untuk source code dari catfish dapat didapat pada catfish.c yang akan dilampirkan. Berikut penjelasan lebih jauh mengenai Catfish.
1.Blowfish
Blowfish merupakan algoritma yang dirancang oleh Bruce Scneier. Blowfish merupakan 64-bit block cipher dengan panjang kunci yang bervariasi. Terdiri dari 2 bagian, yaitu:
a.Key Expansion = mengkonversi kunci sampai 448 bit menjadi beberapa subkey yang terdiri dari 4168 byte
b.Data Encryption = terdiri dari fungsi sederhana yang diiterasi sebanyak 16 kali. Setiap round mempunyai permutasi key-dependent dan subtitusi key-and-data-dependent. Semua operasi merupakan penambahan dan XOR pada 32-bit word. Operasi tambahan lainnya adalah empat data lookup array yang berindeks.
P-array terdiri dari 18 32-bit subkey. P_array orginal adalah nilai P yang pertama kali dipakai. S-Box sebanyak 4 buah, yang masing-masing mempunyai masukan 256 dengan panjang 32-bit word. S-Box original merupakan inisialisasi pertama dari semua S-Box yang digunakan dalam blowfish. Baik nilai pada P-array dan S-Box didapatkan dari digit hexadesimal π.
Blowfish merupakan Feistel Network yang terdiri dari 16 round. Fungsi F: Bagi Xl ( setengah bagian kiri ) menjadi 4 sehingga masing-masing terdiri dari 8-bit: a, b, c, d. F (Xl) = ((S1.a + S2.b mod 232) XOR S3.c ) + S4.d mod 2^32. Dekripsi Blowfish sama seperti enkripsinya, kecuali P-array digunakan mulai dari P18 sampai P1.
2.Key Schedule
Keseluruhan kunci yang digunakan adalah 3 buah, K1,K2 dan K3. K1 dan K2 digunakan dalam proses Whitening yang akan dijelaskan kemudian, sedangkan K3 digunakan sebagai kunci pada enkripsi dan dekripsi blowfish.
3.Whitening
Proses Whitening adalah teknik untuk meng-XOR-kan material kunci denngan input yang akan dimasukkan dalam algoritma blok cipher. Whitening digunakan untuk mencegah kripanalisis untuk mendapatkan pasangan plaintext dan ciphertext terhadap algoritma yang digunakan. Whitening tidak hanya memaksa kripanalisis untuk menebak kunci pada algoritma tersebut tapi juga nilai dari whitenignya. Sangat disarankan nilai yang digunakan harus random, sehingga kripanalis makin susah untuk menebak keseluruhan kunci yang digunakan.
C = K1 XOR EK3 (P XOR K2)
P = K2 XOR EK3 (C XOR K1)
Jika K1=K2 maka dengan brute force attack membutuhkan operasi sebanyak 2n+m/p, dengan n adalah panjang kunci, m panjang blok dan p adalah banyaknya plaintext yang diketahui. Jika K1 tidak sama dengan K2 dengan brute force attack membutuhkan 2n+m+1 operasi dengan 3 plaintext yang diketahui.
4.Double Length Blowfish
Double Length Blowfish adalah blowfish yang dimodifikasi dengan teknik doubling block Length. Teknik ini tidak hanya meperbesar ukuran suatu blok namun juga dapat digunakan sebagai Triple Encryption. Walaupun rancangan seperti ini memungkinkan adanya kelemahan yang tersembunyi, sama seperti Triple Encryption.
Untuk plaintext yang besar, dengan menggunakan 64-bit memang mempunyai difusi tang baik, namun sulit untuk menyembunyikan pola dari algoritma yang digunakan. Karena itulah ide dari teknik ini muncul yaitu menggandakan panjang blok dengan menggunakan enkripsi secara berkali-kali. Pada Catfish untuk doble Length sendiri hanya menggunakan 3 round. Banyak round yang digunakan dapat lebih banyak namun semakin banyak round maka waktu untuk mengenkripsipun semakin panjang.
5.Encryption-Decryption Function
Plaintext, K1, K2, ciphertext semuanya sepanjang 128-bit. K3 panjangnya bervariasi (sama seperti blowfish). Untuk enkripsi XOR plaintext dengan K2, kemudian masukkan dalam fungsi enkripsi double Length blowfish dan yang terakhir XOR dengan K1. Untuk dekripsi dapat dilakukan dengan XOR K1 dengan ciphertext, masukkan hasilnya ke fungsi dekripsi double Length blowfish, kemudian XOR dengan K2.
Analisanya…
Pada algoritma Catfish ini digunakan prinsip confuse dan diffusion sehingga diperoleh teks sandi yang tidak mempunyai korelasi antara teks terang, teks sandi, maupun pada kunci yang digunakan. Hal ini terlihat dengan digunakannya Blowfish sebagai pusat dari algoritma ini. Pada algoritma ini juga digunakan suatu iterated cipher dengan menggunakan jaringan feistel. Penggunaan sistem Feistel menyebabkan algoritma ini tidak memerlukan fungsi invers untuk melakukan dekripsi teks sandi.
Selama algoritma ini dibuat, penulis belum menemukan adanya weak key, sehingga masih diperlukan pengkajian ulang mengenai algoritma ini. Sebagai contoh dengan plaintext 0 semua dan K1 dan K2 0 semua juga, K3 AAAAAAA dihasilkan:
whitening+enkripsi=6B49B1BB 380B8EB9 4F4A7C97 3CBE2DF4
Kecepatan Catfish dengan K3 sepanjang 7 karakter, K1 = 0x1234567812345678 dan K3 = 0x8765432187654321 dengan plaintext bernilai 0 semua (dalam hexa) sebanyak 10.000 kali dan dapat dilihat dibawah ini:
Waktu Proses baris pertama tiap nomor
Kecepatan Proses baris kedua tiap nomor
1)0.046000000 detik
13914434.782608695 bit/detik
2)0.046000000 detik
13914434.782608695 bit/detik
3)0.046000000 detik
13914434.782608695 bit/detik
4)0.062000000 detik
10323612.903225806 bit/detik
5)0.062000000 detik
10323612.903225806 bit/detik
6)0.046000000 detik
13914434.782608695 bit/detik
7)0.062000000 detik
10323612.903225806 bit/detik
8)0.046000000 detik
13914434.782608695 bit/detik
9)0.046000000 detik
13914434.782608695 bit/detik
10)0.046000000 detik
13914434.782608695 bit/detik
sumber:https:https://onlinelearning.uhamka.ac.id/my/
Komentar
Posting Komentar