Perhitungan Manual Algoritma Cipher Block Chaining Untuk Kriptografi Teks

Table of Contents
Beberapa waktu lalu, ada seorang kawan blogger yang menghubungi via email agar dibuatkan aplikasi kriptografi menggunakan kombinasi algoritma hill chiper dan chiper block chaining menggunakan java. Tentu ini merupakan tantangan yang menarik bagi saya. Kalau algoritma hill chiper, saya sudah menyelesaikan tulisan perhitungan manualnya, mulai enkripsi hingga deskripsi, bahkan sudah lengkap beserta contoh aplikasi java, silakan cari artikelnya pada label "Kriptografi". Sekarang saatnya menuliskan perhitungan manual untuk algoritma kriptografi yang lain, yakni algoritma chiper block chaining, meliputi perhitungan manual enkripsi dan deskripsi. Setelah menuliskan artikel ini, saya  berjanji pada diri sendiri untuk menuliskan artikel khusus tentang:
  1. Implementasi Algoritma Chiper Block Chaining untuk Kriptografi Teks Menggunakan Java
  2. Kombinasi Algoritma Hill Chiper dan Chiper Block Chaining untuk Kriptografi Dokumen Menggunakan Java    
Semoga terelasisasi, insyaAllah. Agar teman-teman memiliki referensi lebih untuk mendalami kriptografi, terutama untuk menyelesaikan tugas mata kuliah maupun skripsi teknik informatika.

Baiklah, langsung saja. Algoritma Chiper Block Chaining (saya singkat menjadi CBC) adalah salah satu mode operasi dari Algoritma Block Chiper, yang berfungsi untuk merahasiakan data dan autentikasi data. Algoritma ini mensyaratkan inisialisasi vektor (IV) sebagai variabel pertama untuk dilakukan XOR dengan plainteks ke-1. IV dapat ditentukan oleh user maupun didapatkan secara random oleh sistem. Contoh Algoritma Block Chiper yang lain adalah  Electronic Code Block (ECB) dan Chiper Feedback (CFB). 

Prosedur Enkripsi CBC

Gambar 1. Prosedur Enkripsi CBC

Sudah umum diketahui bahwa data input untuk proses enkripsi teks adalah plaintext. Namun, plaintext pada enkripsi CBC mensyaratkan plaintext dalam bentuk bilangan biner. Sehingga plaintext dalam bentuk teks harus dikonversi terlebih dulu ke bentuk HEXA DECIMAL, untuk selanjutnya dikonversi lagi ke bentuk bilangan biner. Contoh yang saya sajikan berikut menggunakan input plaintext berupa biner 8 bit (hasil konversi HEXA DECIMAL). Plaintext 8 bit didapatkan dari konversi text ke HEX tiap karakter. Misal, text "D" dikonversi HEX menjadi 44, lalu diubah ke biner 8 bit menjadi 01000100.

Gambar 1 menunjukkan prosedur enkripsi CBC. Plaintext pertama (P1) dilakukan proses XOR dengan Initialization Vector (IV) menghasilkan kode biner baru yang di-XOR-kan kembali dengan Kunci K hingga menghasilkan C1, yang sebelumnya telah dilakukan proses penggeseran 1 bit ke kiri. Pada proses P2, IV tidak lagi digunakan, karena sudah digantikan oleh C1. Lebih jelasnya, simak contoh berikut:

Plainteks: DaNiS4
Plainteks Hex: 44 61 4e 69 53 34
Plainteks Biner: 
44: 01000100
61: 01100001
4e: 01001110
69: 01101001
53: 01010011
34: 00110100
Kunci K: 01000100
IV (Initialitation Vector): 01001110

C1 =
  1. P1 ⊕ C0 = 01000100 ⊕ 01001110 = 00001010
  2. (1) ⊕ K = 00001010 ⊕ 01000100 = 01001110
  3. Geser 1 bit ke kiri = 10011100 (4E)

C2 =
  1. P2 ⊕ C1 = 01100001 ⊕ 10011100 = 11111101
  2. (1) ⊕ K = 11111101 ⊕ 01000100 = 10111001
  3. Geser 1 bit ke kiri = 01110011 (73)

C3 =
  1. P3 ⊕ C2 = 01001110 ⊕ 01110011 = 00111101
  2. (1) ⊕ K = 00111101 ⊕ 01000100 = 01111001
  3. Geser 1 bit ke kiri = 11110010 (F2)

C4 =
  1. P4 ⊕ C3 = 01101001 ⊕ 11110010 = 10011011
  2. (1) ⊕ K = 10011011 ⊕ 01000100 = 11011111
  3. Geser 1 bit ke kiri = 10111111 (BF)

C5 =
  1. P5 ⊕ C4 = 01010011 ⊕ 10111111 = 11101100
  2. (1) ⊕ K = 11101100 ⊕ 01000100 = 10101000
  3. Geser 1 bit ke kiri = 01010001 (51)

C6 =
  1. P6 ⊕ C5 = 00110100 ⊕ 01010001 = 01100101
  2. (1) ⊕ K = 01100101 ⊕ 01000100 = 00100001
  3. Geser 1 bit ke kiri = 01000010 (42)

Cipherteks Enkripsi CBC : 4E73F2BF5142



Prosedur Deskripsi CBC
Gambar 2. Prosedur Deskripsi CBC

Gambar 2 menunjukkan prosedur deskripsi CBC. Prosedur deskripsi CBC bertujuan untuk mendapatkan kembali plaintext. Hal berkebalikan dengan proses enkripsi CBC yang bertujuan untuk memperoleh chipertext. Data input deskripsi CBC adalah chipertext, output dari proses enkripsi CBC. Agar mendapatkan plaintext yang sesuai dengan harapan, patut disiapkan Kunci K dan IV yang sama sebagaimana proses enkripsi CBC. Simak contoh berikut:

Kunci K: 01000100
Initialization Vector (IV): 01001110
Cipherteks CBC : 
4E=10011100
73=01110011
F2=11110010
BF=10111111
51=01010001
42=01000010

P1 =
  1. 10011100 Geser 1 bit ke kanan = 01001110
  2. (1) ⊕ K = 01001110 ⊕ 01000100 = 00001010
  3. (2) ⊕ IV = 00001010 ⊕ 01001110 = 01000100 (44)

P2 =
  1. 01110011 Geser 1 bit ke kanan = 10111001
  2. (1) ⊕ K = 10111001 ⊕ 01000100 = 11111101
  3. (2) ⊕ C1 = 11111101 ⊕ 10011100 = 01100001 (61)

P3 =
  1. 11110010 Geser 1 bit ke kanan = 01111001
  2. (1) ⊕ K = 01111001 ⊕ 01000100 = 00111101
  3. (2) ⊕ C2 = 00111101 ⊕ 01110011 = 01001110 (4E)

P4 =
  1. 10111111 Geser 1 bit ke kanan = 11011111
  2. (1) ⊕ K = 11011111 ⊕ 01000100 = 10011011
  3. (2) ⊕ C3 = 10011011 ⊕ 11110010 = 01101001 (69)

P5 =
  1. 01010001 Geser 1 bit ke kanan = 10101000
  2. (1) ⊕ K = 10101000 ⊕ 01000100 = 11101100
  3. (2) ⊕ C4 = 11101100 ⊕ 10111111 = 01010011 (53)

P6 =
  1. 01000010 Geser 1 bit ke kanan = 00100001
  2. (1) ⊕ K = 00100001 ⊕ 01000100 = 01100101
  3. (2) ⊕ C5 = 01100101 ⊕ 01010001 = 00110100 (34)

Plainteks CBC : 44614E695334 = DaNiS4 (Konversi Hexadecimal to Teks)

Demikian artikel singkat mengenai perhitungan manual Algoritma Chiper Block Chaining untuk Kriptografi teks. Jika ada hal yang perlu didiskusikan lebih lanjut, silakan sampaikan di kolom komentar, atau bisa juga hubungi saya via email. Semoga bermanfaat. 

Post a Comment