- Pengertian
Definisi :
Block cipher adalah suatu jenis algoritma kriptografi yang mengenkripsi data dalam bentuk blok-blok
tetap dengan panjang tertentu. Setiap blok data yang dienkripsi memiliki ukuran yang tetap dan diolah
secara terpisah. Block cipher menggunakan kunci enkripsi untuk mengubah setiap blok data input
menjadi blok data output yang terenkripsi. Enkripsi dan dekripsi dilakukan pada blok-blok data ini secara
berulang sampai seluruh data terproses. Salah satu contoh block cipher yang terkenal adalah AES
(Advanced Encryption Standard).
Baik cipher blok maupun stream adalah cipher kunci simetris (seperti DES, RCx, Blowfish, dan Rijndael
AES). Block cipher mengkonversi plaintext menjadi ciphertext blok demi blok, sedangkan stream cipher
mengkonversi satu byte pada satu waktu. Kebanyakan algoritma simetris modern adalah cipher blok,
meskipun ukuran bloknya bervariasi (seperti DES (64 bit), AES (128, 192, dan 256 bit), dan seterusnya).
- Sejarah
Teknik block cipher memiliki sejarah panjang yang berkembang seiring waktu. Salah satu peristiwa
penting adalah pengembangan DES (Data Encryption Standard) oleh IBM pada tahun 1970-an. DES
kemudian diadopsi sebagai standar enkripsi oleh pemerintah Amerika Serikat.
Pada tahun 1997, DES digantikan oleh AES (Advanced Encryption Standard) setelah melalui proses
seleksi yang ketat. AES memberikan tingkat keamanan yang lebih tinggi dan dapat digunakan secara luas
di berbagai aplikasi.
Selama perkembangannya, teknik block cipher mengalami variasi dan penyempurnaan, termasuk mode
operasi seperti ECB, CBC, dan GCM, untuk meningkatkan keamanan dan fleksibilitas enkripsi pada
berbagai skenario penggunaan. Block cipher terus menjadi bagian integral dari sistem keamanan
informasi modern.
Block cipher atau cipher blok digolongkan sebagai kriptografi moderen. Input dan output dari algoritma
block cipher berupa blok dan setiap blok terdiri dari beberapa bit (1 blok terdiri dari 64-bit atau 128-bit)
[6]. Block cipher juga merupakan algoritma kunci simetri atau kriptografi kunci privat, dimana kunci
untuk enkripsi sama dengan kunci untuk dekripsi [1]. Secara umum block cipher dapat ditunjukkan pada
Gambar 1.
• Pada cipher blok, rangkaian bit-bit plainteks dibagi menjadi blok-blok bit dengan panjang sama,
biasanya 64 bit (tapi adakalanya lebih).
• Algoritma enkripsi menghasilkan blok cipherteks yang – pada kebanyakan sistem kriptografi
simetri – berukuran sama dengan blok plainteks.
• Dengan blok cipher, blok plainteks yang sama akan dienkripsi menjadi blok cipherteks yang
sama bila digunakan kunci yang sama pula.
• Misalkan blok plainteks (P) yang berukuran m bit dinyatakan sebagai vector
• yang dalam hal ini pi adalah 0 atau 1 untuk i = 1, 2, …, m, dan blok cipherteks (C) adalah
• Bila plainteks dibagi menjadi n buah blok, barisan blok-blok plainteks dinyatakan sebagai
• Untuk setiap blok plainteks Pi, bit-bit penyusunnya dapat dinyatakan sebagai vektor
EK(P) = C
DK(C) = P
E-1 = D
1. Substitusi
Teknik ini mengganti satu atau sekumpulan bit pada blok plainteks tanpa mengubah urutannya.
Secara matematis, teknik substitusi ini ditulis sebagai
yang dalam hal ini ci adalah bit cipherteks, pi adalah bit plainteks, dan f adalah fungsi substitusi.
2. Transposisi
Teknik ini memindahkan posisi bit pada blok plainteks berdasarkan aturan tertentu. Secara
matematis, teknik transposisi ini ditulis sebagai
C = PM
yang dalam hal ini C adalah blok cipherteks, P adalah blok plainteks, dan M adalah fungsi
transposisi.
- Fungsi
Block Cipher adalah teknik kriptografi yang membagi bit-bit plainteks menjadi blok-blok bit dengan
panjang yang sama. Block Cipher digunakan untuk meningkatkan keamanan pesan dengan
menggabungkan perhitungan atau operasi sederhana seperti XOR atau substitusi yang dilakukan dalam
beberapa putaran.
-Keunggulan :
Block cipher memiliki beberapa keuntungan, yaitu mudahnya implementasi algoritma Block Cipher ke
dalam software – software. Error Propagation yang terjadi pun tidak merambat ke ciphertext lainnya
karena enkripsi masing – masing bloknya independen.
-Kekurangan :
Block Cipher sangat mudah dianalisis karena blok – blok yang dienkripsi saling independen dan kuncinya
sama, maka hal ini memudahkan kriptanalis untuk mengetahui kunci yang digunakan.
Ada 5 method dalam pengenkripsian, yaitu metode Electronic Code Book, Cipher Block Chaining,
Cipher Feedback, Outer Feedback, dan Counter. Untuk kali ini akan dibahas metode Electronic Code
Book dan Cipher Block Chaining.
Pada mode ini, setiap blok plainteks dienkripsi secara individual dan independen;
Ci = EK(Pi)
Pi = DK(Ci)
Enkripsi ECB
Penghitungan dengan operator XOR
1. E= Pi K
2. Pi= Ci K
2. Cipher Block Chaining (CBC)
Untuk mengatasi kekurangan yang dimiliki oleh ECB, maka dibentuklah metode Cipher Block Chaining
Ini. Pada dasarnya, konsep enkripsinya sama dengan ECB, namun ada perbedaan disini, bahwa plaintext
yang akan dienkripsi, terlebih dahulu dilakukan XOR dengan ciphertext fase sebelumnya. Untuk fase
pertama digunakanlah Initialization Vector sebagai nilai awal, yang kemudian di XOR dengan blok
plaintext yang selanjutnya dilakukan enkripsi dengan kunci yang telah disepakati. Selanjutnya, blok
ciphertext yang dihasilkan, selain dikeluarkan melalui output, blok ciphertext tersebut dilakukan XOR
lagi dengan blok plaintext yang selanjutnya.
Pada metode dekripsi, yang dilakukan terlebih dahulu adalah mendekripsi blok ciphertext yang kemudian
dilakukan XOR dengan ciphertext sebelumnya, dimana untuk fase awal digunakan Initialization Vector
yang sama dengan pada saat enkripsi. Selanjutnya, blok ciphertext ini diXOR dengan blok ciphertext
selanjutnya setelah dilakukan proses dekripsi.
Ci = EK(Pi Ci – 1)
Pi = DK(Ci) Ci – 1
Blok plainteks pertama menggunakan C0 sebagai vektor awal (initialization vector atau IV). IV tidak
perlu rahasia
Blok-blok plainteks yang identik dienkripsi menjadi blok-blok cipherteks yang berbeda hanya jika blok-
blok plainteksnya sebelumnya berbeda.
Jika blok-blok plainteks sebelumnya ada yang sama, maka ada kemungkinan cipherteksnya sama. Untuk
mencegah hal ini, maka digunakan Initialization Vector (IV) yang merupakan data acak sebagai blok
pertama. IV atau C0 tidak mempunyai makna, ia hanya diguanakan untuk membuat tiap blok cipherteks
menjadi unik.
Untuk tiap block cipher, kita bisa menggunakannya dalam berbagai mode. Mode paling sederhana adalah
Electronic Codebook (ECB): ambil satu blok, enkrip blok itu saja, lupakan semua, jika ada blok baru
maka enkrip blok itu saja, dst. Ini jadi mirip dengan stream cipher hanya saja ukurannya per blok. Di
dalam mode ini tidak ada IV (initialization vector).
Mode ECB tidak aman karena blok yang sama akan dienkrip jadi ciphertext yang sama. Agar lebih aman
kita ingin agar sebuah blok tergantung pada hasil enkripsi sebelumnya. Salah satu caranya adalah cipher
block chaining (CBC): hasil enkripsi di block pertama akan dixorkan dengan block plaintext berikutnya.
Khusus untuk blok pertama, ini akan di-xor-kan dengan IV.
Ci= P C i-1
Diketahui:
K : 1011
C0 : 0000 IV
ENKRIPSI:
Ci = EK(Pi Ci – 1)
• Demikian seterusnya, sehingga plainteks dan cipherteks hasilnya adalah Cipherteks : 27FDF
Tentunya tidak hanya permutasi saja yang dilakukan, biasanya ada banyak langkah yang diulang
beberapa kali (iterated block cipher). Setiap langkah bisa berupa substitusi (menggunakan yang
namanya S-BOX), permutasi, pemecahan blok menjadi beberapa bagian, dan penggabungan
kembali bagian tersebut.
3. Cipher Feedback
Metode Cipher Feedback menggunakan sistem Shift Register, dimana yang diproses terlebih dahulu
adalah Initialization Vector dalam algoritma Enkripsi dengan Kunci. Setelah diproses, bit yang dihasilkan
akan melalui proses seleksi bit, biasanya bit – bit yang paling kiri, untuk selanjutnya dienkripsi dengan
Plaintext untuk menghasilkan Ciphertext. Bit hasil seleksi yang digunakan tergantung besarnya bit blok
plaintext yang diinput. Selanjutnya, setelah mendapatkan blok ciphertext, selain di output, blok ciphertext
tersebut dimasukkan ke IV yang sebelumnya, dan IV digeser sebanyak bit blok ciphertext sebelumnya,
yang selanjutnya IV yang telah digeser bersama blok ciphertext yang digabung bersama IV tersebut
diproses kembali oleh algoritma Enkripsi tersebut.
• Pada mode CFB, data dienkripsikan dalam unit yang lebih kecil daripada ukuran blok. Unit yang
dienkripsikan dapat berupa bit per bit, 2 bit, 3 bit, dan seterusnya.
• Bila unit yang dienkripsikan satu karakter setiap kalinya, maka mode CFBnya disebut CFB 8-bit.
• Secara umum CFB n-bit mengenkripsi plainteks sebanyak n bit setiap kalinya, yang mana n ≤ m
(m = ukuran blok). Mode CFB membutuhkan sebuah antrian (queue) yang berukuran sama
dengan ukuran blok masukan.
• Enkripsikan antrian dengan kunci K. n bit paling kiri dari hasil enkripsi dimasukkan ke dalam
antrian (menempati n posisi bit paling kanan antrian), dan m-n bit lainnya di dalam antrian
digeser ke kiri menggantikan n bit pertama yang sudah digunakan. n bit paling kiri dari hasil
enkripsi juga berlaku sebagai keystream (ki) yang kemudian di-XOR-kan dengan n-bit dari
plainteks menjadi n-bit pertama dari cipherteks.
• m-n bit plainteks berikutnya dienkripsikan dengan cara yang sama seperti pada langkah 2
Secara formal, mode CFB n-bit dapat dinyatakan sebagai:
• Ci = Pi Ek (Ci – 1 )
• Pi = Ci Dk (Ci – 1 )
• Kesalahan 1-bit pada blok plainteks akan merambat pada blok-blok cipherteks yang
berkoesponden dan blok-blok cipherteks selanjutnya pada proses enkripsi.
Perbedaan mendasar OFB, yang membedakannya dengan CFB adalah input yang digunakan dalam proses
enkripsi. Kalau dalam CFB, input yang digunakan adalah ciphertext yang selanjutnya dishift bersama IV,
dalam OFB yang digunakan adalah output bit hasil dari proses seleksi yang kemudian dishift bersama IV
yang sebelumnya. Hasil Seleksi tetap digunakan dalam proses enkripsi Plaintext untuk mendapatkan
Ciphertext.
• Pada mode OFB, data dienkripsikan dalam unit yang lebih kecil daripada ukuran blok. Unit yang
dienkripsikan dapat berupa bit per bit, 2 bit, 3 bit, dan seterusnya.
• Bila unit yang dienkripsikan satu karakter setiap kalinya, maka mode OFBnya disebut OFB 8-bit.
Secara umum OFB n-bit mengenkripsi plainteks sebanyak n bit setiap kalinya, yang mana n ≤ m
(m = ukuran blok).
• Mode OFB membutuhkan sebuah antrian (queue) yang berukuran sama dengan ukuran blok
masukan.
• Tinjau mode OFB n-bit yang bekerja pada blok berukuran m-bit.
Pada mode OFB, data dienkripsikan dalam unit yang lebih kecil daripada ukuran blok. Unit yang
dienkripsikan dapat berupa bit per bit, 2 bit, 3 bit, dan seterusnya.
Bila unit yang dienkripsikan satu karakter setiap kalinya, maka mode OFBnya disebut OFB 8-bit.
Secara umum OFB n-bit mengenkripsi plainteks sebanyak n bit setiap kalinya, yang mana n ≤ m
(m = ukuran blok).
Mode OFB membutuhkan sebuah antrian (queue) yang berukuran sama dengan ukuran blok
masukan.
Tinjau mode OFB n-bit yang bekerja pada blok berukuran m-bit.
5. Counter
Counter atau CTR adalah implementasi block cipher berbasis counter yang sederhana. Setiap kali nilai
counter-initiated dienkripsi dan diberikan sebagai masukan ke XOR dengan teks biasa yang menghasilkan
blok teks tersandi. Mode CTR tidak bergantung pada penggunaan umpan balik dan karenanya dapat
diterapkan secara paralel.
(a) Enkripsi
(b) Dekripsi