Nama
: Yunita Rahmayanti Mustofa
NIM
: A11.2009.04770
Kelompok
: A11.4803
Mata Kuliah
: Kriptografi
RINGKASAN MATERI BLOCK CIPHER A. Block Cipher – bagi plaintext yang Block Cipher adalah algoritma enkripsi yang akan membagi – bagi akan dikirimkan dengan ukuran tertentu (disebut blok) dengan panjang t , dan setiap blok dienkripsi dengan menggunakan kunci yang sama. Pada cipher block, rangkaian bit – bit plainteks dibagi menjadi blok – blok – blok bit dengan panjang sama, biasanya 64bit (bisa juga lebih). Penggunaan enkripsi yang panjang ini untuk mempersulit penggunaan pola – pola serangan yang ada untuk membongkar kunci.Enkripsi dilakukan terhadap blok bit plainteks menggunakan menggunakan bit – bit kunci yang ukurannya sama dengan ukuran blok plainteks. Algoritma enkripsi menghasilkan blok cipherteks yang berukuran sama dengan blok plainteks. B. Electronic Code Book Pada mode ini, setiap blok plainteks P i dienkripsi secara individual dan independen menjadi blok cipherteks C i. Secara matematis, enkripsi dengan mode ECB dinyatakan sebagai : Ci = Ek(Pi)
Dan dekripsi sebagai : Pi = Dk(Ci)
Istilah “Code Book ” di dalam ECB muncul dari fakta bahwa karena blok plainteks yang sama selalu dienkripsi menjadi blok cipherteks yang sama, maka secara teoritis dimungkinkan membuat buku kode plainteks dan cipherteks yang berkoresponden. Sifat – Sifat – sifat sifat dari mode operasi ECB : 1. Sederhana dan efisien 2. Memungkinkan Memungkinkan implementasi parallel 3. Tidak menyembunyikan pola plaintext Skema dari mode operasi ECB dapat digambarkan sebagai berikut :
Sedangkan skema enkripsi ECB :
Lalu skema dekripsi ECB :
Pada ECB, semakin besar ukuran blok , semakin besar pula ukuran buku 64 kodenya. Misalkan jika blok berukuran 64bit, maka buku kode terdiri dari 2 - 1 buah kode (entry), yang berarti terlalu besar untuk disimpan. Lagipula setiap kunci mempunyai buku kode yang berbeda. Contoh : Misalkan plainteks dalam biner adalah : 10100010001110101001 – blok yang berukuran 4bit : Bagi plainteks menjadi blok – blok 1010 0010 0011 1010 1001
Atau dalam notasi HEX adalah A23A9. Misalkan kunci (K) yang digunakan adalah panjangnya juga 4bit yaitu 1011 atau dalam notasi HEX adalah B. Cara mengenkripsi adalah dengan meng-XOR-kan blok plainteks P i dengan K, kemudian geser secara wrapping bit-bit dari P i K satu posisi ke kiri. Proses enkripsi untuk setiap blok digambarkan sebagai berikut :
Keuntungan dari mode ECB ini adalah : 1. Setiap blok plainteks dienkripsi secara independen sehingga tidak perlu mengenkripsi file secara linier. 2. Jika satu atau lebih bit pada blok cipherteks mengalami kesalahan, maka kesalahan ini hanya mempengaruhi cipherteks yang bersangkutan pada waktu dekripsi. Kelemahan dari mode ECB ini adalah : 1. Karena bagian plainteks sering berulang, maka hasil enkripsinya menghasilkan menghasilkan blok cipherteks yang sama. 2. Pihak lawan dapat memanipulasi cipherteks untuk “membodohi atau mengelabui” penerima pesan. Kelemahan ECB di atas dapat diatasi dengan mengatur enkripsi tiap blok individual bergantung pada semua blok – blok sebelumnya. Dengan ini , blok plainteks yang identik akan menghasilkan blok cipherteks yang berbeda, dan manipulasi cipherteks mungkin menghasilkan pesan hasil dekripsi yang tidak mempunyai makna. Prinsip inilah yang mendasari mode operasi cipher blok yang kedua , yaitu Cipher Block Chaining. C. Cipher Block Chaining Mode ini menerapkan mekanisme umpan balik (feedback) pada sebuah blok, yang dalam hal ini hasil enkripsi blok sebelumnya di-umpan-balikkan ke dalam enkripsi blok yang current. Caranya blok painteks yang current di-XOR-kan terlebih dahulu dengan blok cipherteks hasil enkripsi sebelumnya, selanjutnya hasil pengXOR-an ini masuk ke dalam fungsi enkripsi. Dengan mode CBC, setiap blok cipherteks bergantung tidak hanya pada blok plainteksnya tetapi juga pada seluruh blok plainteks sebelumnya. Skema dari mode operasi CBC dapat digambarkan sebagai berikut :
Skema Enkripsi CBC :
Skema Dekripsi CBC :
Mula-mula sebelum si pengirim hendak mengirimkan pesannya kepada si penerima, dia terlebih dahulu harus meng-XOR plaintext dengan IV (initialization vector) baru kemudian dienkripsi, setelah itu baru dikirimkan ciphertext pertamanya kepada si penerima. Untuk plaintext ke-2 dan seterusnya, sebelum dienkripsi, dia harus di-XOR terlebih dahulu dengan ciphertext sebelumnya. Setelah dienkripsi, baru pesan tersebut dapat dikirimkan ke si penerima sebagai ciphertext 2 dan seterusnya. Pada enkripsi blok pertama C 0 = IV (initialization vector). IV diberikan oleh pengguna atau dibangkitkan secara acak oleh program. IV tidak bersifat rahasia. Jadi untuk menghasilkan blok cipherteks pertama (C i), IV digunakan untuk menggantikan blok cipherteks sebelumnya C 0. Sebaliknya pada dekripsi, blok plainteks pertama diperoleh dengan cara meng-XOR-kan IV dengan hasil dekripsi terhadap blok cipherteks pertama. Sifat – Sifat – sifat sifat dari mode operasi CBC : 1. Lebih aman dari active attacks dibandingkan mode operasi ECB. 2. Error pada satu ciphertext dapat berakibat parah. 3. Menutupi pola plaintext. Secara matematis enkripsi dan dekripsi dengan mode CBC dinyatakan sebagai :
Ci = EK ( Pi Ci-1) Pi = DK ( Ci Ci-1)
enkripsi dekripsi
Contoh : Plainteks : 101000100011101011001 101000100011101011001 IV yang digunakan bit 0 sehingga C 0 = 0000
Cara penyelesaian : Bagi plainteks menjadi blok-blok yang berukuran 4 bit : 1010 0010 0011 1010 1001 atau dalam notasi HEX adalah A23A9. Lalu C1 diperoleh dari : P1 C0 = 1010 0000 = 1010 Enkripsi hasil tersebut (C1) dengan fungsi E sebagai berikut : C1 K = 1010 K = 1010 1011 = 0001 Geser hasilnya satu bit ke kiri 0010 sehingga C1 = 0010 (Dalam HEX = 2) Lalu C2 diperoleh dari : P2 C1 = 0010 0010 = 0000 Enkripsi hasilnya dengan fungsi E : C2 K = 0000 K = 0000 1011 = 1011 Geser hasilnya satu bit ke kiri 0111 sehingga C2 = 0111 (Dalam HEX = 7) Langkah untuk mencari C3, C4, C5 dilakukan dengan cara yang sama seperti di atas. Sehingga : Plainteks : A23A9 Cipherteks (mode ECB) : 23124 Cipherteks (mode CBC) : 27FBF 27FBF Terlihat pada mode CBC, enkripsi terhadap plainteks “A” menghasilkan cipher yang berbeda yaitu 2 dan B. Sedangkan pada mode ECB, plaintext “A” menghasilkan nilai yang sama yaitu “2”. Keuntungan dari mode CBC adalah karena blok-blok plainteks yang sama tidak menghasilkan blok-blok cipherteks yang sama maka menyebabkan kriptanalis menjadi lebih sulit untuk mendekripsinya. Kelemahan Mode CBC adalah : 1. Karena blok cipherteks yang dihasilkan selama proses enkripsi bergantung – blok cipherteks sebelumnya, maka kesalahan satu bit pada sebuah pada blok – blok blok plainteks akan merambat pada nblok cipherteks yang berkoresponden dan semua blok cipherteks berikutnya. 2. Kesalahan bit cipherteks biasanya terjadi karena adanya gangguan saluran komunikasi data selama transmisi atau malfunction pada media penyimpanan. Persoalan keamanan yang muncul pada mode CBC : 1. Karena blok cipher mempengaruhi blok – blok – blok blok berikutnya, pihak lawan dapat menambahkan blok cipherteks tambahan pada akhir pesan terenkripsi tanpa terdeteksi. 2. Pihak lawan dapat mengubah cipherteks, misalnya mengubah sebuah bit pada suatu blok cipherteks.
D. Cipher Feed Back Mode CFB mengatasi kelemahan pada mode CBC jika diterapkan pada komunikasi data (ukuran blok yang belum lengkap). Data dienkripsikan dalam unit yang lebih kecil daripada ukuran blok. Unit yang dienkripsikan dapat berupa bit per bit (sama seperti cipher alliran), 2bit , 3bit dan seterusnya. Bila unit yang dienkripsikan satu karakter setiap kalinya, maka mode CFB-nya disebut CFB 8bit. CFB n-bit mengenkripsi plainteks sebanyak n bit setiap kalinya, n <= m (m ukuran blok). Dengan kata lain, CFB mengenkripsikan cipher blok seperti pada cipher aliran. Mode CFB membutuhkan sebuah antrian (queue) yang berukuran sama dengan ukuran blok masukan. Skema Mode CFB 8bit yang bekerja pada blok berukuran 64bit (setara dengan 8byte) seperti pada gambar berikut : Antrian (shift register ) 8-byte
K
E
Antrian (shift register ) 8-byte
K
Left-most byte Left-most byte
D
Left-most byte Left-most byte k i
p i
k i
c i
(a) Enkripsi
c i
(b) Dekripsi
Secara matematis, mode CFB n-bit dapat dinyatakan din yatakan sebagai sebagai : Proses Enkripsi:
C i = Pi MSBm( E E k X i)) k ( X X i+1 = LSBm – n( X X i) || C i
Proses Dekripsi:
Pi = C i MSBm( E E k X i)) k ( X X i+1 = LSBm – n( X X i) || C i
yang dalam hal ini, X i = isi antrian dengan X 1adalah IV E = fungsi enkripsi dengan algoritma cipher blok. K = kunci m = panjang blok enkripsi n = panjang unit enkripsi || = operator penyambungan (concatenation) MSB = Most Significant Byte LSB = Least Significant Byte Jika m = n, maka mode CFB n-bit adalah sebagai berikut :
p i
Pi – 1
Pi
E k k
C i – 1
Pi+1
E k k
C i
C i+1
Enkripsi CFB
C i – 1
C i
Dk
Pi – 1
Pi
C i+1
Dk
Pi+1
Dekripsi CFB Dari gambar di atas dapat kita lihat bahwa : C i = Pi E k k (C i – 1 ) Pi = C i Dk (C i – 1 ) yang dalam hal ini, C 0 = IV .
Kesalahan 1-bit pada blok plainteks akan merambat pada blok-blok cipherteks yang berkoresponden dan blok-blok ciphereks selanjutnya pada proses enkripsi. Hal yang berkebalikan terjadi pada proses dekripsi. E. Output Feed Back Mode OFB mirip dengan mode CFB, kecuali n-bit dari hasil enkripsi terhadap antrian disalin menjadi elemen posisi paling kanan di antrian.Dekripsi dilakukan sebagai kebalikan dari proses enkripsi.Gambar di bawah ini adalah mose OFB 8-bit yang bekerja pada blok berukuran 64-bit (setara dengan 8 b yte).
Antrian (shift register ) 8-byte
K
Antrian (shift regist
E
K
Left-most byte
D
Left-most byte k i
k i
p i
c i
c i
(a) Enkripsi
(b) Dekripsi
Jika m = n. Maka mode OFB n-bit adalah :
Pi – 1
Pi
Pi+1
E k k
C i – 1
E k k
C i
C i+1
Enkripsi OFB Gambar
Enkripsi mode OFB n-bit untuk blok n-bit
Kesalahan 1 bit pada blok plainteks hanya mempengaruhi blok cipherteks yang berkoresponden saja.Begitu pula pada proses dekripsi, kesalahan 1 bit pada blok cipherteks hanya mempengaruhi blokplainteks yang bersangkutan saja. Karakteristik kesalahan semacam ini cocok untuk transmisi analog yang di-digitisasi, seperti suara atau video, yang dalam hal ini kesalahan 1 bit dapat ditolerir, tetapi penjalaran kesalahan tidak dibolehkan.
F. Prinsip – Prinsip Perancangan Block Cipher Perancangan algoritma kriptografi yang berbasi blok mempertimbangkan beberapa prinsip berikut : 1. Prinsip Confusion dan Diffusion dari Shannon. a. Confusion Bertujuan menyembunyikan hubungan apapun yang ada antar plainteks, cipherteks, dan kunci. Prinsip : memebuat kriptanalis frustasi untuk mencari pola – pola statistik yang muncul pada cipherteks. Confusion yang bagus membuat hubungan statistik antara plainteks, cipherteks, dan kunci menjadi sangat rumit. b. Diffusion Prinsip : menyebarkan pengaruh satu bit plainteks atau kunci ke sebanyak mungki cipherteks. Sebagai contoh, pengubahan pengubahan kecil pada plainteks sebanyak satu atau dua bit menghasilkan perubahan pada cipherteks yang tidak dapat diprediksi.Mode CBC dan CFB menggunakan menggunakan prinsip ini. i ni. 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 matematis, cipher berulang dinyatakan sebagai : Ci = f (C (Ci – 1 – 1 , Ki) Yang dalam hal ini , i = 1, 2, …, r (r adalah jumlah putaran). K i = upa-kunci ( subkey) pada putaran ke- i f = fungsi transformasi (di dalamnya dalamnya terdapat operasi operasi substitusi, permutasi, dan/atau ekspansi, kompresi). Plainteks dinyatakan dengan C 0 dan Cipherteks dinyatakan sebagai C r 3. Jaringan Feistel (Feistel Network) Hampir semua algoritma cipher blok bekerja dalam model jaringan Feistel. Model jaringan Feistel adalah sebagai berikut : a. Bagi blok yang panjangnya n bit menjadi dua bagian, kiri (L) dan kanan (R), yang masing – masing – masing masing panjangnya n/2 (mensyaratkan n harus genap). b. Definisikan cipher blok brulang dimana hasil dari putaran ke-i ditentukan dari hasil putaran sebelumnya, yaitu : Li = Ri – 1 – 1 Ri = Li – 1 Ri – 1, – 1 f ( R – 1, K i)
Yang dalam hal ini : i = 1, 2, …, r (r adalah jumlah putaran). K i = upa-kunci ( subkey) pada putaran ke- i f = fungsi transformasi (di dalamnya dalamnya terdapat operasi operasi permutasi, dan/atau ekspansi, kompresi).
substitusi,
Li – 1
K i
Ri – 1
f
Li
Ri
Gambar 8.10
Jaringan Feistel
4. Kunci Lemah (Weak Key) Kunci lemah adalah kunci yang menyebabkan tidak adanya perbedaan antara enkripsi dan dekripsi. Dekripsi terhadap cipherteks tetap menghasilkan – turut terhadap plainteks plainteks semula, namun enkripsi dua kali berturut – turut akan menghasilkan kembali plainteksnya. Persamaan berikut menunjukkan fenomena kunci lemah : E KL(P)
= C
DKL(C ) = E KL KL(C ) = P
Cipher blok yang bagus tidak mempunyai kunci lemah. 5. Kotak S (S-Box) Kotak S adalah matriks yang berisi substitusi sederhana yang menyatakan 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 m x 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 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 10 9 4
1 15 14 3
10 4 15 2
15 2 5 12
9 7 2 9
2 12 8 5
6 9 12 15
8 5 3 10
0 6 7 11
13 1 0 14
3 13 4 1
4 14 10 7
14 0 1 6
7 11 13 0
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 (baris 2) Nomor kolom tabel = 1010 (kolom 10) Jadi substitusi untuk 110100 adalah entry pada baris 2 dan kolom 10 yaitu 0100 (atau 4 desimal).
5 3 11 8
11 8 6 13