Anda di halaman 1dari 19

BAB IV

ALGORITMA KRIPTOGRAFI MODERN

4.1 Operasi Rangkaian Bit

Algoritma kriptografi modern memproses data dalam bentuk blok-blok bit.


Rangkaian bit yang dipecah menjadi blok-blok bit dapat dinyatakan dalam beberapa
cara bergantung pada panjang blok.

Contoh sebuah plainteks 001110001111 dibagi menjadi blok-blok yang panjangnya 3


bit menjadi : 001 110 001 111

Setiap blok menyatakan bilangan 0 sampai 7, yaitu : 1 6 1 7

Jika plainteks dibagi menjadi blok-blok yang panjangnya 4 bit menjadi : 0011 1000
1111

Setiap blok menyatakan bilangan 0 smapai 15, yaitu 3 8 15

Jika panjang rangkaian bit tidak habis dibagi dengan ukuran blok yang ditetapkan
maka blok yang terakhir ditambah dengan padding bit atau bit-bit semu.

Jika plainteks dibagi menjadi 5 blok maka : 00111 00011 00011

Padding bits dapat mengakibatkan ukuran cipherteks hasil enkripsi menjadi lebih
panjang daripada ukuran plainteks semula.

Selain itu rangkain bit dapat dinyatakan dalam notsi HEX (hexadecimal) seperti
dibawah ini:

0000 = 0 0100=4 1000=8 1100=C


0001 = 1 0101=5 1001=9 1101=D

0010 = 2 0011=6 1010=A 1110=E

0011 = 3 0111=7 1011=B 1111=F

Contoh plainteks 001110001111 dibagi menjadi blok bit yang panjangnya 4 bit :
0011 1000 1111

Dalam notasi HEX = 38F

Operator biner yang sering digunakan dalam cipher yang beroperasi dalam mode bit
adalah XOR, notasinya  . Operator XOR dioperasikan pada dua bit dengan aturan
sebagai berikut:

00= 0

0 1=1

1 0=1

1 1=0

Jika dua rangkain dioperasikan dengan XOR maka operasinya dengan cara meng-
XOR-kan setiap bit yang berkoresponden dari kedua rangkaian tersebut.

Contoh 4.1

000111  101000 = 101111

Atau

0 0 0 1 1 1

1 0 1 0 0 0 

1 0 1 1 1 1
Untuk algoritma enkripsi palaing sederhana yang menggunakan XOR adlah dengan
meng-XOR-kan plainteks (P) dengan kunci (K) yang akan menghasilkan cipherteks
( C ):

C = P  K...............................................................................................(4.1)

Proses dekripsi untuk mendapatkan kembali plainteks adalah :

P = C  K...............................................................................................(4.2)

4.2 Stream Cipher

Stream Cipher atau cipher aliran adalah algoritma kriptografi yang beroperasi dalam
bentuk bit tunggal, Cipher aliran mengenkripsi plainteks menjadi cipherteks bit per
bit atau byte per byte. Contoh cipher aliran yang memproses data byte per byte adalah
Vigenere Cipher dan One-time pad cipher.

Stream Cipher cocok untuk mengenkripsikan aliran data yang terus menerus melalui
saluran komunikasi karena jika bit cipherteks yang diterima mengandung kesalahan,
maka hal ini hanya menghasilkan satu bit kesalahan pada waktu dekripsi karena tiap
bit plainteks ditentukan hanya oleh satu bit cipherteks.

Contoh mengenkripsi data pada saluran yang menghubungkan 2 komputer,


mengenkripsi suara pada jaringan telepon mobile GSM.

Cipher aliran pertama kali dipekenalkan oleh Vernam melalui algoritmanya yang
dikenal dengan nama Vernam cipher. Vernam cipher diadopsi dari one time pad
cipher dengan karakter diganti dengan bit (0 atau 1). Cipherteks diperoleh dengan
melakukan penjumlahan modulo 2 satu bit plainteks dengan satu bit kunci:

ci = (pi + ki) mod 2.......................................................................................(4.3)

Keterangan : pi : bit plainteks


ki: bit kunci

ci : bit cipherteks

Plainteks diperoleh dengan melakukan penjumlahan modulo 2 satu bit cipherteks

dengan satu but kunci :

pi = (ci + ki) mod 2......................................................................................(4.4)

Karena operasi penjumlahan modulo 2 identik dengan operasi bit dengan operator

XOR, maka persamaan 4.3 dapat ditulis sebagai :

ci = (pi  ki).............................................................................................(4.5)

dan proses dekripsi menggunakan persamaan :

pi = (ci  ki)...............................................................................................(4.6)

Pada cipher aliran, bit hanya mempunyai dua buah nilai, sehingga proses enkripsi

hanya menyebabkan dua keadaan pada bit tersebut barubah atau tidak berubah. Dua

keadaan tersebut ditentukan oleh kunci enkripsi yang disebut aliran kunci

(keystream). Aliran kunci dibangkitkan dari sebuah pembangkit yang dinamakan

pembangkit aliran kunci (keysream generator). Aliran kunci (running key) di XOR-

kan dengan aliran bit-bit plainteks p1,p2,…pi. Untuk menghasilkan aliran bit-bit

cipherteks:

ci = pi  ki
Untuk menghasilkan plainteks kembali bit-bit cipherteks di-XOR-kan dengan aliran

kunci yang sama:

pi = ci  ki

Gambar 4.1 memperlihatkan konsep cipher aliran

Pengirim Penerima

Keystream Keystream
Generator Generator
key
stream ki keys tream ki
Pi
Ci Pi
Plainteks Plainteks
Cipherteks Dekripsi
Enkripsi

Gambar 4,1 Konsep cipher aliran

4.3 Serangan terhadap Stream Cipher

Beberapa serangan yang dapat dilakukan oleh kriptanalis tehadap cipher aliran
adalah:

1. Known plaintext attack

Kriptanalis memiliki potongan cipherteks (C) dan plainteks (P) yang


berkoresponden, maka kriptanalis dapat menemukan bagian aliran kunci (K)
yang berkoresponden dengan meng-XOR-kan bit-bit plainteks dan cipherteks
:

P  C = P  (P  K)

= (P  P )  K
=0K

=K

Contoh 4.2

Misalkan potongan plainteks 01000010 dienkripsi dengan potongan aliran


kunci 00111001

Plainteks : 01000010 (karakter ‘B’)

Key : 00110010  (karakter’2’)

Cipherteks: 01110000 (karakter’p)

Misalkan kriptanalis menemukan potongan plainteks : 01000010 dan


cipherteks yang berkoresponden : 01110000.

Kriptanalis dapat mededuksi kunci dari dua buah informasi tersebut:

Cipherteks : : 01110000 (karakter’p)

Plainteks : 01000010  (karakter ‘B’)

Kunci : 00110010 (karakter ‘ 2’)

Jadi kunci yang dideduksi sama dengan kunci enkripsi semula yaitu :
00110010

2. Ciphertext only attack

Serangan ini terjadi jika keystream yang sama digunakan dua kali terhadap
potongan plainteks yang berbeda. Misalkan kriptanalis memiliki dua potongan
cipherteks berbeda (C1 dan C2) yang dienkripsi dengan bit-bit kunci yang
sama.
C1  C2 = (P1  K)  (P2  K)

= (P1  P2)  (K  K)

= (P1  P2)  0

= (P1  P2)

Jika P1 atau P2 tidak tidak diketahui, dua buah plainteks yang ter-XOR satu
sama lain ini dapat diketahui dengan menggunakan nilai statistic dari pesan.
Jika salah satu dari P1 atau P2 diketahui atau dapat diterka, maka XOR-kan
salah satu plainteks tersebut dengan cipherteks untuk memperoleh bit-bit
kunci K yang berkoresponden:

P1  C1 = P1  (P1  K) = K

Kemudian P2 dapat diketahui dengan kunci K ini.

Contoh 4.3

Sebuah plainteks 1 (P1) = 01000010 dan P2 = 01100101 dienkripsi dengan


kunci aliran yang sama yaitu 00110010.

Plainteks (P1): 01000010 (karakter ‘B’)

Key : 00110010  (karakter’2’)

Cipherteks: (C1) 01110000 (karakter’p)

Plainteks (P2): 0110 0101 (karakter ‘e’)

Key : 0011 0010  (karakter’2’)

Cipherteks (C2) 0101 0111 (karakter W’)

P1  P2 = 0100 0010  0110 0101 = 0010 0111


C1  C2 = 01110000  0101 0111 = 0010 0111

Dari hasil di atas P1  P2 = C1  C2 dan apabila kriptanalis mempunyai C1 dan


C2 maka hasil peng-XOR-an keduanya sama dengan dua buah potongan
plainteks ter-XOR satu sama lain. Jika P 1 atau P2 telah diketahui maka XOR-
kan plainteks tersebut dengan cipherteks yang berkoresponden untuk
memperoleh K.

4.4 Block Cipher

Plainteks dibagi menjadi beberapa blok bit dengan panjang yang sama.Proses
enkripsi menggunakan kunci yang ukurannya sama dengan plainteks dan
menghasilkan cipherteks dengan ukuran yang sama.

Enkripsi dan dekripsi dengan kunci K dinyatakan dengan persamaan berikut ini:

EK(P) = C.............................................................................................(4.7)

DK(C) = P............................................................................................(4.8)

Skema enkripsi dan dekripsi dapat dilihat pada gambar 4.2.

Blok plainteks P1 Blok Cipherteks C1

p1 p2 ... pn c1 c2 ... cn

K K
EnkripEsi (E) DekripDsi (D)

c1 c2 ... cn p1 p2 ... pn

Blok Cipherteks C1 Blok plainteks P1

Gambar 4.2 Skema Proses Enkripsi dan Dekripsi Cipher Blok


4.5 Mode Operasi Block Cipher

Plainteks dibagi menjadi beberapa blok dengan panjang tetap. Empat mode operasi
yang lazim diterapkan pada sistem blok cipher adalah:

1. ECB (Electronic Code Book)

Mode Operasi ECB membagi plainteks Pi menjadi beberapa blok, setiap blok
dienkripsi secara individual dan independen menjadi blok cipherteks .
Ci

Secara matematis enkripsi mode ECB dinyatakan sabagai :

Ci = Ek (Pi)..............................................................................(4.9)

Dan dekripsi sebagai

Pi = Dk (Ci).............................................................................(4.10)

Gambar 4.2 dan 4.3 memperlihatkan enkripsi m buah blok plainteks, P1…Pm
dan dekripsi m buah blok cipherteks C1..Cm dengan mode ECB.

Padding

Padding adalah menambahkan blok terakhir dengan pola bit yang teratur agar

panjangnya sama dengan ukuran blok yang telah ditetapkan. Misalkan dengan

menambahkan bit 0 atau 1 atau selang seling 0 dan 1.

Contoh 4.4

Plainteks (dalam biner) adalah : 010110110011001010101011

Bagi plainteks menjadi blok blok 4 bit : 0101 1011 0011 0010 1010 1011

Dalam notasi HEX : 5B32AB

Kunci : C = 1100 ( panjangnya 4 bit)


Proses enkripsi dengan meng=XOR kan blok plainteks Pi dengan kunci K,
kemudian geser secara wrapping bit bit dari Pi  K satu posisi ke kiri.
Sehingga proses enkripsi untuk setiap blok seperti berikut ini:

0101 1011 0011 0010 1010 1011

1100 1100 1100 1100 1100 1100 

Hasil XOR 1001 0111 1111 1110 0110 0111


Geser 1 bit ke 0011 1110 1111 1101 1100 1110
kiri
Notasi HEX 3 E F D C E

Jadi hasil enkripsi : 001111101111110111001110 ( 3EFDCE )

Terlihat bahwa blok plainteks yang sama akan selalu dienkripsi menjadi blok
copherteks yang sama. Pada contoh ini blok 1011 (B) muncul 2 kali dan selalu
dienkripsi menjadi 1100 (E)

Blok plainteks P1 Blok plainteks P2 Blok plainteks Pm

p1 p2 pn p1 p2 pn
p1 p2 pn ... ...
...

K K E E
E …. K

c1 c2 ... cn c1 c2 ... cn c1 c2 ... cn

Blok Cipherteks
Blok Cipherteks C2 Blok Cipherteks Cm
C1

Gambar 4.2 Enkripsi Mode ECB


Blok Cipherteks C1
Blok Cipherteks C2 Blok Cipherteks Cm

c1 c2 ... cn c1 c2 ... cn
c1 c2 ... cn

K K D D
D …. K

p1 p2 ... pn p1 p2 ... pn p1 p2 ... pn

Blok plainteks P1
Blok plainteks P2 Blok plainteks Pm

Gambar 4.3 Dekripsi Mode ECB

Keuntungan Mode ECB adalah :

a. Tidak perlu mengenkripsi file secara linier karena tiap blok plainteks
dienkripsi secara independen.

b. Jika satu atau lebih bit pada blok cipherteks mengalami kesalahan, maka
kesalahan ini hanya mempengaruhi cipherteks yang bersangkutan pada
waktu dekripsi. Blok-blok cipherteks lainnya bila didekripsi tidak
terpengaruh oleh kesalahan bit cipherteks tersebut.

Kelemahan Mode ECB adalah:

a. Hasil enkripsinya menghasilkan blok cipherteks yang sama karena bagian


plainteksnya sering berulang

b. Pihak lawan dapat memanipulasi cipherteks untuk mengelabuhi penerima


pesan, misalnya dengan menghapus atau menyisipkan beberap blok
cipherteks baru.

2. CBC (Cipher Block Chaining)

Mode CBC menerapakan mekanisme umpan balik pada sebuah blok, hasil
enkripsi blok sebelumnya diumpan balikkan ke dalam enkripsi blok yang
current. Blok plainteks yang current di-XOR- kan terlebih dahulu dengan blok
cipherteks hasil enkripsi esbelumnya, selanjutnya hasil peng-XOR-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.

Proses dekripsi dilakukan dengan memasukkan blok cipherteks yang current


ke fungsi dekripsi kemudian meng-XOR-kan hasilnya dengan blok cipherteks
sebelumnya. Blok cipherteks sebelumnya berfungsi sebagai umpan-maju pada
akhir dekripsi. Gambar 3 dan 4 menjelaskan skema mode operasi CBC.

Secara matematis enkripsi dan dekripsi mode CBC dinyatakan dengan


persamaan berikut:

Ci = EK (Pi  Ci-1 )..........................................................................(4.11)

Pi = DK (Ci  Ci-1 )........................................................................(4.12)

Contoh 4.5

Plainteks (dalam biner) adalah : 010110110011001010101011

Bagi plainteks menjadi blok blok 4 bit : 0101 1011 0011 0010 1010 1011
( 5B32AB )

Kunci : C = 1100 ( panjangnya 4 bit)

Sedangkan IV yang digunakan seluruhnya bit 0 ( sehingga C0 = 0000 )

Proses enkripsi dengan meng=XOR kan blok plainteks Pi dengan kunci K,


kemudian geser secara wrapping bit bit dari Pi  K satu posisi ke kiri.
Sehingga proses enkripsi untuk setiap blok seperti berikut ini:

C1 diperoleh sebagai berikut:

P1  C0 = 0101  0000 = 0101


Enkripsikan hasil ini dengan fungsi E sbb:

0101  K = 0101  1100 = 1001


Geser (wrapping) hasil ini satu bit ke kiri : 0011
Jadi C1 = 0011 (HEX = 3)
C2 diperoleh sebagai berikut:

P2  C1 = 1011  0011 = 1000


Enkripsikan hasil ini dengan fungsi E sbb:

1000  K = 1000  1100 = 0100

Geser (wrapping) hasil ini satu bit ke kiri : 1000


Jadi C2 = 1000 (HEX = 8)
C3 diperoleh sebagai berikut:

P3  C2 = 0011  1000 = 1011


Enkripsikan hasil ini dengan fungsi E sbb:

1011  K = 1011  1100 = 0111


Geser (wrapping) hasil ini satu bit ke kiri : 1110
Jadi C3 = 1110 (HEX = E)
C4 diperoleh sebagai berikut:

P4  C3 = 0010  1110 = 1100


Enkripsikan hasil ini dengan fungsi E sbb:

1100  K = 1100  1100 = 0000


Geser (wrapping) hasil ini satu bit ke kiri : 0000
Jadi C4 = 0000 (HEX = 0)
C5 diperoleh sebagai berikut:

P5  C4 = 1010  0000 = 1010


Enkripsikan hasil ini dengan fungsi E sbb:

1010  K = 1010  1100 = 0110


Geser (wrapping) hasil ini satu bit ke kiri : 1100
Jadi C5 = 1100 (HEX = C )
C6 diperoleh sebagai berikut:

P6  C5 = 1011  1100 = 0111


Enkripsikan hasil ini dengan fungsi E sbb:

0111  K = 0111  1100 = 1011


Geser (wrapping) hasil ini satu bit ke kiri : 0111
Jadi C5 = 0111 (HEX = 7 )
Sehingga plainteks dan cipherteks dari contoh diatas :
Plainteks : 5B32AB
Cipherteks : 38E0C7
Dari hasil yang diperoleh terlihat bahwa palinteks B dienkripsi menjadi dua
blok cipherteks yang berbeda yaitu 8 dan 7.

Pi - 1 Pi

Ci - 2

K K
E E

Ci - 1 Ci

Gambar 4.4 Enkripsi Mode CBC


Ci - 1 Ci

K D K D

Ci - 2

Pi - 1
Pi

Gambar 4.5 Dekripsi Mode CBC

Keuntungan Mode CBC adalah:

Kriptanalis menjadi lebih sulit untuk memecahkan cipherteks karena blok-


blok plainteks yang sama tidak menghasilkan blok-blok cipherteks yang sama.

Kelemahan Mode CBC adalah:

Karena blok cipherteks yang dihasilkan selama proses enkripsi tergantung


pada blok-blok cipherteks sebelumnya, maka kesalahan satu bit pada sebuah
blok plainteks akan merambat pada blok cipherteks yang berkoresponden dan
semua block cipherteks berikutnya.

3. CFB (Cipher Feedback)

Mode CFB mengenkripsi cipher blok seperti pada cipher aliran. CFB p-bit
mengenkripsi plainteks sebanyak p bit setiap kalinya, dimana p ≤ n ( n=
ukuran blok). Mode ini membutuhkan sebuah antrian yang berukuran sama
dengan ukuran blok masukan. Algoritma enkripsi dan dekripsi mode CFB
lihat gambar 4.5.
Secara matematis enkripsi dan dekripsi mode CFB dinyatakan dengan
persamaan berikut ini :

Enkripsi: Ci = Pi  MSBn (EK (Xi))

Xi+1 = LSBn-p(Xi) || Ci

Dekripsi: Pi = Ci  MSBn (DK (Xi))

Xi+1 = LSBn-p(Xi) || Ci

Keterangan:
Xi = isi antrian dengn X1 adalah IV
E = fungsi enkripsi dengan algoritma cipher blok
K = kunci
N = panjang blok enkripsi
P = panjang unit enkripsi
|| = operator penyambungan
MSB = Most Significant Byte
LSB = Lost Significant Byte

Perambatan kesalahan

Kesalahan 1-bit pada blok plainteks akan merambat pada blok-blok cipherteks
yang berkoresponden dan blok-blok cipherteks selanjutnya pada proses
enkripsi. Hal yang kebalikan juga terjadi pada proses dekripsi.
Antrian(shift register) b byte Antrian(shift register) b byte

D
K E K

Left Most Byte Left Most Byte

Ki Ki

Pi Ci Ci Pi

Gambar 4.6 Enkripsi dan Dekripsi Mode CFB 8 bit

4. OFB (Output Feedback)

Mode OFB mirip dengan mode CFB, kecuali p-bit dari hasil enkripsi terhadap
antrian disalin menjadi elemen posisi paling kanan di antrian. Dekripsi
dilakukan sebagai kebalikan dari proses enkripsi. Gambar 6 adalah mode OFB
8 bit yang bekerja pada blok berukuran 64 bit. Kesalahan 1- bit pada blok
plainteks hanya akan mempengaruhi blok cipherteks yang berkoresponden
saja, begitu pula pada proses dekripsi.
Antrian(shift register) b byte Antrian(shift register) b byte

D
K E K

Left Most Byte Left Most Byte

Ki Ki

Pi Ci Ci Pi

Gambar 4.7 Enkripsi dan Dekripsi Mode OFB


SOAL LATIHAN

1. Sebutkan dan Jelaskan prinsip yang digunakan dalam perancangan cipher


blok yang kuat !

2. Sebutkan dan jelaskan teknik kriptografi klasik yang digunakan dalam proses
enkripsi pada algoritma block cipher !

3. Diketahui sebuah plainteks : 10011010001100101010

Tentukan cipherteks dengan mode ECB dan CBC, kemudian bandingkan


hasilnya!

Anda mungkin juga menyukai