Prinsip-prinsip Perancangan Cipher Blok



1. Prinsip Confusion dan Diffusion dari Shannon

·       Kedua prinsip Shannon ini sudah dibicarakan pada kuliah yang lalu.



2. Cipher Berulang (Iterated Cipher)

·       Fungsi transformasi sederhana yang mengubah plainteks menjadi cipherteks diulang sejumlah kali. Pada setiap putaran digunakan upa-kunci (subkey) atau kunci putaran (round key) yang dikombinasikan dengan plainteks.

·       Secara formal, cipher berulang dinyatakan sebagai

          Ci = f(Ci – 1, Ki)                                                   (1)

 

yang dalam hal ini,

i = 1, 2, …, r (r adalah jumlah putaran).
                   Ki = upa-kunci (subkey) pada putaran ke-i
                   f = fungsi transformasi (di dalamnya terdapat fungsi
                         substitusi, permutasi, dan/atau ekspansi, kompresi).

Plainteks  dinyatakan dengan C0 dan cipherteks dinyatakan dengan Cr.

 

3. Jaringan Feistel (Feistel Network)


·       Hampir semua algoritma cipher blok bekerja dalam model jaringan Feistel. Jaringan  Feistel ditemukan oleh Horst Feistel tahun 1970.

·       Model jaringan Feistel adalah sebagai berikut:
1.    Bagi blok yang panjangnya n bit menjadi dua bagian, kiri (L) dan kanan (R), yang masing-masing panjangnya n/2 (hal ini mensyaratkan n harus genap).
2.    Definisikan cipher blok berulang dimana hasil dari putaran ke-i ditentukan dari hasil putaran sebelumnya (lihat Gambar 1), yaitu

Li = Ri+1                                                               (2)
                   Ri = Li – 1 Ã… f(Ri – 1, Ki)                                       (3)

     yang dalam hal ini,
i = 1, 2, …, r (r adalah jumlah putaran).
                   Ki = upa-kunci (subkey) pada putaran ke-i
                   f = fungsi transformasi (di dalamnya terdapat fungsi
                         substitusi, permutasi, dan/atau ekspansi, kompresi).








 
                   Li – 1                               Ki                        Ri – 1












 


                      Ã…                                f                           


 




                   Li – 1                                                          Ri – 1

 

Gambar 1. Jaringan Feistel


·       Plainteks adalah gabungan L dan R awal, atau secara formal dinyatakan dengan (L0, R0), sedangkan cipherteks didapatkan dari L dan R hasil dari putaran terakhir setelah terlebih dauhulu dipertukarkan, atau secara formal dinyatakan sebagai (Rr, Lr).
·       Jaringan Feistel banyak dipakai pada algoritma kriptografi DES (Data Encryption Standard), LOKI, GOST, FEAL, Lucifer, Blowfish, Khufu, Khafre, dan lain-lain karena model ini bersifat reversible untuk proses enkripsi dan dekripsi. Sifat reversible ini membuat kita tidak perlu membuat algoritma baru unruk mendekripsi cipherteks menjadi plainteks. Karena operator XOR mengkombinasikan setengah bagian kiri dengan hasil dari fungsi transformasi f, maka kesamaan berikut pasti benar:

Li – 1 Ã… f(Ri – 1, Ki) Ã… f(Ri – 1, Ki) = Li – 1             (4)    

Sifat reversible tidak bergantung pada fungsi f sehingga fungsi f dapat dibuat serumit mungkin.


4. 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 terhadap plainteks akan menghasilkan kembali plainteksnya.

·       Misalkan KL adalah kunci lemah, E adalah fungsi enkripsi, D adalah fungsi dekripsi, P adalah plainteks, dan C adalah cipherteks, maka persamaan berikut menunjukan fenomena kunci lemah:

EKL(P) = C                                                 (5)
DKL(C) = EKL(C ) =  P                              (6)

·       Cipher blok yang bagus tidak mempunyai kunci lemah. Meskipun demikian, algoritma yang mempunyai sedikit kunci lemah seperti DES tidak begitu masalah, karena jumlah kunci lemah itu relatif sangat kecil dibandingkan jumlah kunci keseluruhan.


5.  Kotak-S (S-box)

·       Kotak-S adalah matriks yang berisi substitusi sederhana yang memetakan satu atau lebih bit dengan satu atau lebih bit yang lain.

·       Pada kebanyakan algoritma cipher blok, kotak-S memetakan m bit masukan menjadi  n bit keluaran, sehingga kotak-S tersebut dinamakan kotak m ´ n S-box. 

·       Kotak-S merupakan satu-satunya langkah nirlanjar di dalam algoritma, karena operasinya adalah look-up table. Masukan dari operasi look-up table dijadikan sebagai indeks kotak-S, dan keluarannya adalah entry di dalam kotak-S.

Contoh: Kotak-S di dalam algoritma DES adalah 6 ´ 4 S-box yang berarti memetakan 6 bit masukan menjadi 4 bit keluaran. Salah satu kotak-S yang ada di dalam algoritma DES adalah sebagai berikut:

12
1
10
15
9
2
6
8
0
13
3
4
14
7
5
11
10
15
4
2
7
12
9
5
6
1
13
14
0
11
3
8
9
14
15
5
2
8
12
3
7
0
4
10
1
13
11
6
4
3
2
12
9
5
15
10
11
14
1
7
6
0
8
13

          Baris diberi nomor dari 0 sampai 3
          Kolom diberi nomor dari 0 sampai 15

          Masukan untuk proses substitusi adalah 6 bit,

                             b1b2b3b4b5b6
          Nomor baris dari tabel ditunjukkan oleh string bit b1b6 
          (menyatakan 0 sampai 3 desimal)

Nomor kolom ditunjukkan oleh string bit  b2b3b4b5
(menyatakan 0 sampai 15)

Misalkan masukan adalah 110100
Nomor baris tabel = 10 (artinya baris 2 desimal)
Nomor kolom tabel = 1010 (artinya kolom 10 desimal)

Jadi, substitusi untuk 110100 adalah entry pada baris 2 dan kolom 10, yaitu 0100 (atau 4 desimal).

Perancangan kotak-S menjadi isu penting karena kotak-S harus dirancang sedemikian sehingga kekuatan kriptografinya bagus dan mudah diimplementasikan.

·       Ada empat cara (pendekatan) yang dapat digunakan dalam mengisi  kotak-S:
1. Dipilih secara acak
Untuk kotak-S yang kecil, cara pengisian secara acak tidak aman, namun untuk kotak-S yang besar cara ini cukup bagus.
              2.    Dipilih secara acak lalu diuji
Sama seperti cara nomor 1, namun nilai acak yang dibangkitkan diuji apakah memenuhi sifat tertentu.

3.    Dibuat oleh orang (man-made)
Entry di dalam kotak-S dibangkitkan dengan teknik yang lebih intuitif.

4.    Dihitung secara matematis (math-made)
Entry di dalam kotak-S dibangkitkan berdasarkan prinsip
Previous
Next Post »