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
Sign up here with your email
ConversionConversion EmoticonEmoticon