Block Cipher Kriptografi
Electronic code book (ECB) Cipher Block Chaining (CBC)
Pendahuluan Electronic code book & cipher block chaining termasuk algoritma Block Cipher . Block Cipher adalah algoritma enkripsi yang akan membagi-bagi plaintext yang akan dikirimkan dengan ukuran tertentu (disebut blok) dengan panjang t, dan setiap blok dienkripsi dengan menggunakan kunci yang sama.
Block Cipher Pada umumnya, block cipher memproses plaintext dengan blok yang relatif panjang lebih dari 64 bit. Penggunaan enkripsi dengan panjang lebih dari 64 bit ini digunakan untuk mempersulit penggunaan pola-pola serangan yang ada untuk membongkar kunci.
Block Cipher Algoritma block cipher merupakan skema algoritma sandi dimana plaintext dibagi-bagi dengan ukuran tertentu (blok) dengan panjang t. Setiap blok dienkripsi dengan menggunakan kunci yang sama.
Block Cipher Untuk menambah kehandalan algoritma ini, dikembangkan pula beberapa tipe proses enkripsi, yaitu : ECB (Electronic Code Book) CBC (Cipher Block Chaining) CFB (Cipher Feed Back) OFB (Output Feed Back)
Electronic Code Book Pada mode ini, setiap blok plainteks (pi), dienkripsi secara individual dan independen menjadi blok cipherteks (ci). Enkripsi ECB dinyatakan sebagai : Ci = Ek ( Pi ) Dan dekripsi sebagai : Pi = Dk ( Ci )
Electronic Code Book 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 dari cipherteks yang berkoresponden. Pada mode operasi Electonic Code Book sebuah blok input plaintext dipetakan secara statis ke sebuah blok output ciphertext. Sehingga tiap plaintext yang sama akan menghasilkan ciphertext yang selalu sama pula.
Electronic Code Book Sifat- sifat dari mode operasi ECB : Sederhana dan efisien Memungkinkan implementasi parallel Tidak menyembunyikan pola plaintext
Electronic Code Book Skema dari mode operasi ECB dapat digambarkan sebagai berikut :
Skema ECB
Electronic Code Book Semakin besar ukuran blok, semakin besar pula ukuran buku kodenya. Misalkan jika blok berukuran 64 bit, maka buku kode terdiri dari 264 – 1 buah kode (entry). Setiap kunci mempunyai buku kode yang berbeda.
Electronic Code Book Contoh Proses Enkripsi: Plainteks dalam biner : 10100010001110101001 Misalkan kunci (K) yang digunakan adalah (panjangnya juga 4 bit) yaitu : 1011 atau dalam HEX adalah B Penyelesaian: Karena Key yang digunakan terdiri dari 4 bit, maka terlebih dahulu bagi plainteks menjadi beberapa blok berukuran 4 bit: 1010 0010 0011 1010 1001 Atau dalam notasi HEX adalah A23A9.
Electronic Code Book Cara mengkipsi adalah dengan XOR-kan blok plainteks Pi dengan K, kemudian geser secara wraping bit-bit dari pi K satu posisi ke kiri.
Electronic Code Book Keuntungan Mode ECB ini adalah : Setiap blok plainteks dienkripsi secara independen, maka kita tidak perlu mengenkripsi file secara linier. Jika satu atau lebih bit pada blok cipherteks mengalami kesalahan, maka kesalahan ini hanya mempengaruhi cipherteks yang besangkutan pada waktu deskripsi.
Electronic Code Book Kelemahan ECB : Karena bagian plainteks sering berulang, maka hasil enkripsinya menghasilkan blok cipherteks yang sama. Pihak lawan dapat memanipulasi cipherteks untuk “membodohi atau mengelabui” penerima pesan.
Electronic Code Book Untuk mengatasi kelemahan ECB digunakan cara-cara sebagai berikut : Menggunakan ukuran blok yang besar, misalnya 64 bit, sebab ukuran blok yang besar dapat menghilangkan kemungkinan menghasilkan blok-blok yang identik. Mengatur enkripsi tiap blok individual bergantung pada semua blok-blok sebelumnya sehingga blok plainteks yang identik akan menghasilkan blok cipherteks yang berbeda, dan manipulasi cipherteks mungkin menghasilkan pesan dekripsi yang tidak mempunyai makna.
Cipher Block Chaining
Cipher Block Chaining Pada cipher blok chaining (CBC), setiap blok plaintext adalah XOR dengan blok cipherteks sebelumnya sebelum dienkripsi. Setiap blok ciphertext bergantung pada semua blok plaintext yang diproses
Cipher Block Chaining Pada mode operasi ini hasil enkripsi dari blok sebelumnya mempengaruhi hasil enkripsi selanjutnya, atau enkripsi sebelumnya menjadi feedback pada enkripsi blok saat itu. Jadi, setiap blok ciphertext bergantung bukan hanya pada blok plaintext-nya tapi bergantung pula pada blok-blok plaintext sebelumnya. Sehingga untuk plaintext yang sama, belum tentu menghasilkan ciphertext yang sama pula.
Cipher Block Chaining Skema dari mode operasi CBC dapat digambarkan sebagai berikut :
Skema CBC
Cipher Block Chaining Penjelasan skema enkripsi : 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.
Cipher Block Chaining Pada enkripsi blok pertama C0 = IV (initialization vector). IV diberikan oleh pengguna atau dibangkitkan secara acak oleh program. IV tidak bersifat rahasia. Jadi untuk menghasilkan blok cipherteks pertama (Ci), IV digunakan untuk menggantikan blok cipherteks sebelumnya C0. Sebaliknya pada dekripsi, blok plainteks pertama dieroleh den cara meng-XOR-kan IV dengan hasil dekripsi terhadap blok cipherteks pertama.
Cipher Block Chaining Sifat-sifat dari mode operasi CBC : Lebih aman dari active attacks dibandingkan mode operasi ECB Error pada satu ciphertext dapat berakibat parah Menutupi pola plaintext
Cipher Block Chaining Secara matematis enkripsi dan dekripsi dengan mode CBC dinyatakan sebagai : Ci = EK ( Pi Ci-1) enkripsi Pi = DK ( Ci Ci-1) dekripsi
Cipher Block Chaining Contoh Proses Enkripsi: Plainteks : 10100010001110101001 IV yang digunakan seluruhnya bit 0 (Jadi, C0 = 0000). Penyelesaian: Step 1 Bagi plainteks menjadi blok-blok yang berukuran 4 bit : 1010 0010 0011 1010 1001 Atau dalam notasi HEX adalah A23A9.
Cipher Block Chaining Step 2 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 kekiri = 0010 Jadi C1 = 0010 (atau “2” dalam HEX)
Cipher Block Chaining Step 3 C2 diperoleh dari : P2 C1 = 0010 0010 = 0000 Enkripsi hasilnya dengan fungsi E adalah : C2 K = 0000 K = 0000 1011 = 1011 Geser hasilnya satu bit kekiri = 0111 Jadi C2 = 0111 (atau “7” dalam HEX)
Cipher Block Chaining Step 4 C3 diperoleh dari : P3 C2 = 0011 0111 = 0100 Enkripsi hasilnya dengan fungsi E adalah : C3 K = 0100 K = 0100 1011 = 1111 Geser hasilnya satu bit kekiri = 1111 Jadi C3 = 1111 (atau “F” dalam HEX) Step 5 dan Step 6 dilakukan dengan cara yang sama
Cipher Block Chaining Sehingga untuk Plainteks : A23A9 Cipehrteks (mode ECB) : 23124 Cipherteks (mode CBC) : 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”
Cipher Block Chaining Keuntungan Mode CBC : Karena blok-blok plainteks yang sama tidak menghasilkan blok-blok cipherteks yang sama, maka menyebabkan kriptanalis menjadi lebih sulit untuk mendekripsinya.
Cipher Block Chaining Kelemahan Mode CBC Karena blok cipherteks yang dihasikan selama proses enkripsi bergantung pada blok –blok cipherteks sebelumnya, maka kesalahan satu bit pada sebuah blok plainteks akan merambat pada blok cipherteks yang berkoresponden dan semua blok cipherteks berikutnya. Kesalahan bit cipheteks biasanya terjadi karena adanya gangguan saluran komunikasi data selama transmisi atau malfunction pada media penyimpanan.
Cipher Block Chaining Persoalan Keamanan Yang Muncul Pada Mode CBC Karena blok cipher mempengaruhi blok-blok berikutnya, pihak lawan dapat menambahkan blok cipherteks tambahan pada akhir pesan terenkripsi tanpa terdeteksi. Pihak lawan dapat mengubah cipherteks, misalnya mengubah sebuah bit pada suatu blok cipherteks.
Next CFB (Cipher Feed Back) OFB (Output Feed Back)
Cipher-Feedback (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 (jadi seperti cipher aliran), 2 bit, 3-bit, dan seterusnya. Bila unit yang dienkripsikan satu karakter setiap kalinya, maka mode CFB-nya disebut CFB 8-bit.
CFB n-bit mengenkripsi plainteks sebanyak n bit setiap kalinya, n m (m = ukuran blok). Dengan kata lain, CFB mengenkripsikan cipher blok seperti pada Stream Cipher. Mode CFB membutuhkan sebuah antrian (queue) yang berukuran sama dengan ukuran blok masukan. Tinjau mode CFB 8-bit yang bekerja pada blok berukuran 64-bit (setara dengan 8 byte) pada gambar berikut
Skema CFB
Jika m = n, maka mode CFB n-bit adalah sbb:
Dari Gambar di atas dapat dilihat bahwa: Ci = Pi Ek (Ci – 1 ) Pi = Ci Dk (Ci – 1 ) yang dalam hal ini, C0 = 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 kebalikan terjadi pada proses dekripsi.
Output-Feedback (OFB) 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 berikut adalah mode OFB 8-bit yang bekerja pada blok berukuran 64-bit (setara dengan 8 byte).
Skema OFB
Jika m = n, maka mode OFB n-bit adalah seperti pada Gambar berikut
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 blok plainteks 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.
Prinsip-prinsip Perancangan Cipher Blok Next Prinsip-prinsip Perancangan Cipher Blok
Prinsip-prinsip Perancangan Cipher Blok Prinsip Confusion dan Diffusion dari Shannon. Cipher berulang (iterated cipher) Jaringan Feistel (Feistel Network) Kunci lemah (weak key) Kotak-S (S-box)
Prinsip Confusion dan Diffusion dari Shannon. - Tujuan: menyembunyikan hubungan apapun yang ada antara plainteks, cipherteks, dan kunci. - Prinsip confusion membuat 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.
Diffusion - Prinsip ini menyebarkan pengaruh satu bit plainteks atau kunci ke sebanyak mungkin cipherteks. - Sebagai contoh, pengubahan kecil pada plainteks sebanyak satu atau dua bit menghasilkan perubahan pada cipherteks yang tidak dapat diprediksi. - Mode CBC dan CFB menggunakan prinsip ini
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.
Cipher berulang dinyatakan sebagai Ci = f(Ci – 1, Ki) i = 1, 2, …, r (r adalah jumlah putaran). Ki = upa-kunci (subkey) pada putaran ke-i f = fungsi transformasi (di dalamnya terdapat operasi substitusi, permutasi, dan/atau ekspansi, kompresi). Plainteks dinyatakan dengan C0 dan cipherteks dinyatakan dengan Cr.
Jaringan Feistel (Feistel Network) Li = Ri – 1 Ri = Li – 1 f(Ri – 1, Ki)
Jaringan Feistel banyak dipakai pada algoritma kriptografi DES, LOKI, GOST, FEAL, Lucifer, Blowfish, dan lain-lain karena model ini bersifat reversible untuk proses enkripsi dan dekripsi. Sifat reversible ini membuat kita tidak perlu membuat algoritma baru untuk mendekripsi cipherteks menjadi plainteks. Contoh: Li – 1 f(Ri – 1, Ki) f(Ri – 1, Ki) = Li – 1 Sifat reversible tidak bergantung pada fungsi f sehingga fungsi f dapat dibuat serumit mungkin.
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.
Persamaan berikut menunjukan fenomena kunci lemah: EKL(P) = C DKL(C) = EKL(C ) = P Cipher blok yang bagus tidak mempunyai kunci lemah.
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.
Misalkan masukan adalah 110100 Nomor baris tabel = 10 (baris 2) Nomor kolom tabel = 1010 (kolom 10) Jadi, substitusi untuk 110100 adalah entry padabaris 2 dan kolom 10, yaitu 0100 (atau 4 desimal).
Skema Enkripsi Varian Block Cipher
Skema ECB
Skema CBC
Skema CFB
Skema OFB
Daftar Pustaka www.ajaib.us/dl/Kriptografi.pdf http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Electronic_codebook_.28ECB.29 http://www.cert.or.id/~budi/courses/ec5010/projects/wihartantyo-report.doc http://www.cert.or.id/~budi/courses/ec7010/dikmenjur-2004/denny-report.doc http://202.91.15.14/upload/files/6181_bab-5.doc http://www.cs.ui.ac.id/WebKuliah/infosec/kuliah/Transparan%20Digital%20Security.doc http://bwahyudi.staff.gunadarma.ac.id/Downloads/files/13543/kriptografi-01.doc
SELESAI