Kriptografi modern merupakan suatu perbaikan yang mengacu pada kriptografi klasik. Pada kriptografi modern terdapat berbagai macam algoritma yang dimaksudkan untuk mengamankan informasi yang dikirim melalui jaringan komputer.
Algoritma kriptografi modern umumnya beroperasi dalam mode bit. Berbeda dengan kriptografi klasik yang beroperasi dalam 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.
Berikut ini adalah tabel bit biner. (klik untuk lihat lebih jelas)
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 (blok 4-bit) menjadi :
1001 1101 0110
maka, Setiap blok menyatakan bilangan bulat dari 0 sampai 15, yaitu :
9 13 6
Bila plainteks dibagi menjadi blok-blok yang berukuran 3 bit (blok 3-bit), maka rangkaian bit di atas menjadi:
100 111 010 110
maka, 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 warna merah 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 operator XOR adalah(dalam Bahas C, operator XOR dilambangkan dengan ^).
Operator XOR dioperasikan pada dua bit dengan aturan sebagai berikut: (Penting)
Operator XOR identik dengan penjumlahan modulo 2.
0 ⊕ 0 = 0 <=> 0 + 0 (mod 2) = 0
0 ⊕ 1 = 1 <=> 0 + 1 (mod 2) = 1
1 ⊕ 0 = 1 <=> 0 + 1 (mod 2) = 1
1 ⊕ 1 = 0 <=> 1 + 1 (mod 2) = 0
Misalkan a, b, dan c adalah peubah Boolean. Hukum-hukum yang terkait dengan operator XOR:
Jika dua rangkaian dioperasikan dengan XOR, maka operasinya dilakukan dengan meng-XOR-kan setiap bit yang berkoresponden dari kedua rangkaian bit tersebut.
Contoh :
yang dalam hal ini, hasilnya diperoleh sebagai berikut:
Enkripsi dengan XOR
Algoritma enkripsi sederhana yang menggunakan XOR adalah dengan meng-XOR-kan plainteks (P) dengan kunci (K) menghasilkan cipherteks :
Karena meng-XOR-kan nilai yang sama dua kali menghasilkan nilai semula, maka proses dekripsi menggunakan persamaan :
Untuk penyelesaian contoh dibawah ini, gunakan aturan operator XOR yang ada diatas (lihat yang ada tulisan Penting nya) dan juga lihat tabel ASCII nya.
Contoh :
Berikut ini adalah ASCII Table :
Kategori Algoritma (Cipher) Berbasis Bit
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, yaitu:
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.
Plainteks -> cipherteks -> bit per bit (1 bit setiap kali transformasi) atau byte per byte (1 byte setiap kali transformasi) dengan aliran-kunci (keystream). Cipher aliran pertama kali diperkenalkan oleh Vernam melalui algoritmanya yang dikenal dengan nama Vernam Cipher.
Pada cipher aliran, bit hanya mempunyai dua buah nilai, sehingga proses enkripsi hanya menyebabkan dua keadaan pada bit tersebut: berubah atau tidak berubah. Dua keadaan tersebut ditentukan oleh kunci enkripsi disebut aliran-bit-kunci (keystream). Aliran-bit-kunci dibangkitkan dari sebuah pembangkit yang dinamakan pembangkit aliran-bit-kunci (keystream generator).
Pengirim
keystream di-XOR-kan dengan aliran bit-bit plainteks, p1, p2, …, pi, untuk menghasilkan aliran bit-bit cipherteks:
Penerima
bit-bit cipherteks di-XOR-kan dengan keystream yang sama untuk menghasilkan bit-bit plainteks:
Contoh:
plainteks : 1100101
keystream : 1000110 ⊕
cipherteks : 0100011
Keamanan sistem cipher aliran bergantung seluruhnya pada keystream generator. Jika keystream generator mengeluarkan keystream yang seluruhnya nol, maka cipherteks sama dengan plainteks, dan proses enkripsi menjadi tidak artinya.
3 kasus yang dihasilkan oleh keystream generator :
1. keystream seluruhnya 0;
2. keystream berulang secara periodik -> XOR sederhana;
3. keystream benar-benar acak.
- keystream generator -> prosedur yang sama di sisi pengirim dan penerima pesan
- keystream generator dapat membangkitkan keystream berbasis bit per bit/ blok per blok.
- Prosedur algoritmik tersebut menerima masukan sebuah kunci U. Keluaran dari prosedur merupakan fungsi dari U. Keystream generator harus menghasilkan keystream yang kuat secara kriptografi.
Contoh : Misalkan U adalah kunci empat-bit yang dipilih sembarang, kecuali 0000. Bit-aliran-kunci yang dibangkitkan akan berulang setiap 15 bit. Misalkan :
U = 1111
Cara sederhana memperoleh keystream dengan meng-XOR-kan bit pertama dengan bit terakhir dari empat bit sebelumnya, sehingga menghasilkan :
111101011001000
dan akan berulang setiap 15 bit.
Secara umum, jika panjang kunci U adalah n bit, maka keystream tidak akan berulang sampai 2n – 1 bit.
2. Cipher blok (block cipher)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit enkripsi/dekripsi dibagi menjadi blok per blok bit yang panjangnya sudah ditentukan sebelumnya. Misalnya panjang blok adalah 64 bit, yang berarti algoritma enkripsi memperlakukan 8 karakter setiap kali penyandian (8-bit/blok = 1 karakter/blok dalam pengkodean ASCII).
Pada cipher blok, rangkaian bit-bit plainteks dibagi menjadi blok-blok bit dengan panjang sama, biasanya 64 bit (tapi adakalanya lebih). Panjang kunci enkripsi = panjang blok. Enkripsi dilakukan terhadap blok bit plainteks menggunakan bit-bit kunci. Algoritma enkripsi menghasilkan blok cipherteks yang panjangnya = blok plainteks.
Blok plainteks berukuran m bit :
P = (p1,
p2,...,pm), pi ∈ {0, 1}
Blok cipherteks (C) berukuran m bit :
C = (c1, c2,...,cm), ci ∈ {0, 1}
Tidak ada komentar:
Posting Komentar