Algoritma Kriptografi Modern
·
Algoritma kriptografi modern umumnya beroperasi dalam mode bit
ketimbang mode karakter (seperti yang dilakukan pada cipher substitusi
atau cipher transposisi dari algoritma kriptografi klasik).
·
Operasi dalam mode bit berarti semua data dan informasi (baik kunci,
plainteks, maupun cipherteks) dinyatakan dalam rangkaian (string) bit
biner, 0 dan 1. Algoritma enkripsi dan dekripsi memproses semua data dan
informasi dalam bentuk rangkaian bit. Rangkaian
bit yang menyatakan plainteks dienkripsi menjadi cipherteks dalam bentuk
rangkaian bit, demikian sebaliknya.
·
Perkembangan algoritma kriptografi modern berbasis bit didorong oleh
penggunaan komputer digital yang merepresentasikan data dalam bentuk biner.
·
Algoritma kriptografi yang beroperasi dalam mode bit dapat
dikelompokkan menjadi dua kategori:
1. Cipher aliran (stream
cipher)
Algoritma kriptografi beroperasi
pada plainteks/cipherteks dalam bentuk bit tunggal, yang dalam hal ini
rangkaian bit dienkripsikan/didekripsikan bit per bit.
2. Cipher blok (block cipher)
Algoritma kriptografi beroperasi
pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian
bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya.
Misalnya panjang blok adalah 64
bit, maka itu berarti algoritma enkripsi memperlakukan 8 karakter setiap kali
penyandian (1 karakter = 8 bit dalam pengkodean ASCII).
Rangkaian bit
·
Rangkaian bit yang dipecah menjadi blok-blok bit dapat ditulis dalam
sejumlah cara bergantung pada panjang blok.
Contoh: Plainteks 100111010110 dibagi menjadi blok
bit yang panjangnya 4 menjadi
1001 1101
0110
Setiap blok menyatakan bilangan bulat dari 0 sampai
15, yaitu
9 13 6
Bila plainteks dibagi menjadi blok-blok yang
berukuran 3 bit, maka rangkaian bit di atas menjadi:
100 111
010 110
Setiap blok menyatakan bilangan bulat
dari 0 sampai 7, yaitu
4 7 2 6
Bila panjang rangkaian bit tidak habis dibagi dengan
ukuran blok
yang ditetapkan, maka blok yang terakhir ditambah dengan
bit-bit semu yang disebut padding
bits.
Misalnya rangkaian bit di atas dibagi menjadi blok
5-bit menjadi
10011 10101 00010
Blok yang terakhir telah ditambahkan 3 bit 0 di
bagian awal (dicetak tebal) agar ukurannya menjadi 5 bit. Padding bits
dapat mengakibatkan ukuran plainteks hasil dekripsi lebih besar daripada ukuran
plainteks semula.
·
Cara lain untuk menyatakan rangkaian bit adalah
dengan notasi heksadesimal (HEX). Rangkaian bit dibagi menjadi blok yang
berukuran 4 bit dengan representasi dalam HEX adalah:
0000 = 0 0001 = 1 0010
= 2 0011 = 3
0100 = 4 0101 = 5 0011
= 6 0111 = 7
1000 = 8 1011 = 9 1010
= A 1011 = B
1100 = C 1101 = D 1101
= E 1111 = F
Misalnya, plainteks 100111010110 dibagi menjadi blok
bit yang panjangnya 4 menjadi
1001 1101
0110
yang
dalam notasi HEX adalah
9 D 6
Operator XOR
·
Operator biner yang sering digunakan dalam cipher
yang yang beroperasi dalam mode bit adalah XOR atau exclusive-or.
·
Notasi matematis untuk opeartor XOR adalah Å
(dalam Bahas C, operator XOR dilambangkan dengan ^).
·
Operator XOR diperasikan pada dua bit dengan
aturan sebagai berikut:
0 Å 0 = 0
0 Å 1 = 1
1 Å 0 = 1
1 Å 1 = 0
Operator
XOR identik dengan penjumlahan modulo 2.
·
Misalkan a, b, dan c adalah
peubah Boolean. Hukum-hukum yang terkait dengan operator XOR:
(i) a
Å
a = 0
(ii) a Å b = b Å a
(Hukum
komutatif)
(iii) a Å (b
Å
c) = (a Å b) Å c (Hukum
asosiatif)
·
Jika dua rangkaian dioperasikan dengan XOR, maka
operasinya dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari
kedua ramngkaian bit tersebut.
Contoh:
10011 Å
11001 = 01010
yang dalam hal ini, hasilnya diperoleh
sebagai berikut:
1 0 0 1 1
1
1 0 0 1
Å
1 Å 1 0 Å
1 0 Å 0 1Å 0 1 Å 1
0 1 0 1 0
·
Algoritma enkripsi sederhana yang menggunakan
XOR adalah dengan meng-XOR-kan plainteks (P) dengan kunci (K)
menghasilkan cipherteks:
C = P Å K (6.1)
Karena meng-XOR-kan nilai yang sama dua kali
menghasilkan nilai semula, maka proses dekripsi menggunakan persamaan:
P
= C Å
K (6.2)
Contoh: plainteks 01100101 (karakter ‘e’)
kunci 00110101 Å (karakter
‘5’)
cipherteks 01010000 (karakter ‘P’)
kunci 00110101 Å (karakter
‘5’)
plainteks 01100101 (karakter ‘e’)
·
Program komersil yang berbasis DOS atau
Macintosh menggunakan algoritma XOR sederhana ini. Sayangnya, algoritma XOR
sederhana tidak aman karena cipherteksnya mudah dipecahkan.
Cara memecahkannya adalah
sebagai berikut (asumsi: panjang kunci adalah sejumlah kecil byte):
1.
Cari panjang kunci dengan prosedur counting
coincidence sbb: XOR-kan cipherteks terhadap dirinya sendiri setelah
digeser sejumlah byte, dan hitung jumlah byte yang sama. Jika
pergeseran itu kelipatan dari panjang kunci (yang tidak diketahui), maka 6%
dari byte akan sama. Jika tidak, maka 0.4% akan sama. Angka persentase
ini disebut index of coincidence. Pergeseran terkecil mengindikasikan
panjang kunci yang dicari.
2.
Geser cipherteks sejauh panjang kunci dan XOR-kan
dengan dirinya sendiri. Operasi ini menghasilkan plainteks yang ter-XOR dengan
plainteks yang digeser sejauh panjang kunci tersebut.
0 comments:
Post a Comment