Materi Pembelajaran Algoritma Kriptografi Modern

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}


Related Post


"SHARING IS CARING"

Show comments
Hide comments

Tidak ada komentar:

Posting Komentar