Anda di halaman 1dari 13

Teknik Block Chiper

- 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

P = (p1, p2, …, pm)

• yang dalam hal ini pi adalah 0 atau 1 untuk i = 1, 2, …, m, dan blok cipherteks (C) adalah

C = (c1, c2, …, cm)

• yang dalam hal ini ci adalah 0 atau 1 untuk i = 1, 2, …, m.

• Bila plainteks dibagi menjadi n buah blok, barisan blok-blok plainteks dinyatakan sebagai

(P1, P2, …, Pn)

• Untuk setiap blok plainteks Pi, bit-bit penyusunnya dapat dinyatakan sebagai vektor

Pi = (pi1, pi2, …, pim)

• Enkripsi dan dekripsi dengan kunci K dinyatakan berturut-turut dengan persamaan

EK(P) = C

• untuk enkripsi, dan

DK(C) = P

• Fungsi E haruslah fungsi yang berkoresponden satu-ke-satu, sehingga

E-1 = D

-Implementasi Teknik Kriptografi Klasik pada Block Cipher


• Algoritma blok cipher menggabungkan beberapa teknik kriptografi klasik dalam proses enkripsi.
Dengan kata lain, cipher blok dapat diacu sebagai super-enkripsi.

• Teknik kriptografi klasik yang digunakan adalah:

1. Substitusi

Teknik ini mengganti satu atau sekumpulan bit pada blok plainteks tanpa mengubah urutannya.
Secara matematis, teknik substitusi ini ditulis sebagai

ci = E(pi), i = 1, 2, … (urutan bit)

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.

-Jenis jenis Metode :

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.

1. Electronic Code Book (ECB)


Metode standar dari Block Cipher, yaitu masing – masing blok plainteks dienkripsi dengan kunci yang
sama secara independen. Kelemahan utama dari metode ini adalah mudahnya pendeteksian, terutama jika
ada blok – blok data yang sama dan dienkripsi dengan kunci yang sama maka akan menghasilkan
cipherteks yang sama pula. Hal inilah yang menyebabkan mengapa disebut Electronic Code Book,karena
seolah kita dapat mengetahui dan membuat sebuah kamus atau ensiklopedi dari plainteks dan cipherteks
dengan kunci yang sama.

Pada mode ini, setiap blok plainteks dienkripsi secara individual dan independen;

Secara matematis, enkripsi dengan mode ECB dinyatakan sebagai

Ci = EK(Pi)

dan dekripsi sebagai

Pi = DK(Ci)

Dimana Pi dan Ci masing –masing blok plaintext dari ciphertext ke-i.

Enkripsi ECB
Penghitungan dengan operator XOR

1. E= Pi  K

2. Hasil E= Pi  K geser ke kiri

Dekripsi Electronic Block Cipher

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.

• Secara matematis, enkripsi dengan mode CBC dinyatakan sebagai

Ci = EK(Pi  Ci – 1)

• dan dekripsi sebagai

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.

Enkripsi Cipher Block Chaining

Algoritma Cipher Block Chaining

1. XOR kan blok plaintext P i dengan IV

Ci= P  C i-1

2. Enkripsikan hasil dengan Key yang ditentukan

3. Hasil digeser satu bit ke kiri

Contoh Cipher Block Chaining


Plaintext : 10100010001110101001

Bagi plainteks menjadi blok-blok yang berukuran 4 bit:

1010 0010 0011 1010 1001(HEX = A23A9)

kunci (K) : 1011 (HEX = B)

Initizlization Vector (IV) : 0000  C0

Diketahui:

P : 1010 0010 0011 1010 1001

K : 1011

C0 : 0000  IV

ENKRIPSI:

Ci = EK(Pi  Ci – 1)

Mekanisme Proses Enskripsi:

• C1 diperoleh sebagai berikut:

P1  C0 = 1010  0000 = 1010

• Enkripsikan hasil ini dengan fungsi E sbb:

1010  K = 1010  1011 = 0001

• Geser (wrapping) hasil ini satu bit ke kiri: 0010

• Jadi, C1 = 0010 (atau 2 dalam HEX)

• Demikian seterusnya, sehingga plainteks dan cipherteks hasilnya adalah Cipherteks : 27FDF

Perbandingan Hasil Ciphertext


Ada banyak contoh block cipher, misalnya AES (yang jadi standar saat ini), DES (standar
sebelumnya), TEA (block cipher yang sangat sederhana), Blowfish, dsb. Salah satu alasan
enkripsi dilakukan per blok adalah: ada operasi permutasi yang bisa dilakukan dalam tiap blok.
Contohnya jika ukuran blok hanya 4 byte dan kita memiliki data dengan urutan 1 2 3 4, maka
bisa dilakukan permutas sehingga urutannya (misalnya) menjadi 2 3 1 4.

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.

Algoritma Enkripsi CFB

• 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.

Algoritma Dekripsi CFB

• Antrian diisi dengan IV (initialization vector).

• 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:

• Proses Enkripsi: Ci = Pi  MSBm(EK (Xi))

Xi+1 = LSBm – n(Xi) || Ci

• Proses Dekripsi: Pi = Ci  MSBm(DK (Xi))

Xi+1 = LSBm – n(Xi) || Ci

yang dalam hal ini,

• Xi = isi antrian dengan X1 adalah 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


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
berkoesponden dan blok-blok cipherteks selanjutnya pada proses enkripsi.

Hal yang kebalikan juga terjadi pada proses dekripsi.

4. Output Feedback cipher

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.

Algoritma Enkripsi OFB

 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.

Algoritma Dekripsi OFB


 Antrian diisi dengan IV (initialization vector).
 Dekripsikan antrian dengan kunci K. n bit paling kiri dari hasil dekripsi 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
dekripsi juga berlaku sebagai keystream (ki) yang kemudian di-XOR-kan dengan n-bit dari
cipherteks menjadi n-bit pertama dari plainteks.
 m-n bit cipherteks berikutnya dienkripsikan dengan cara yang sama seperti pada langkah 2.

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

Anda mungkin juga menyukai