Cipher Block Chaining Message Authentication Code (CBC-MAC)

https://it.proxsisgroup.com/pentingnya-kebijakan-keamanan-informasi-security-policy/

Definisi 
Blok cipher adalah suatu algoritma kriptografi simetrik yang mengenkripsi satu blok plaintext dengan jumlah bit tertentu dan menghasilkan blok ciphertext dengan jumlah bit yang sama. Misalkan ukuran blok plaintext yang dienkripsi adalah 64 bit, maka akan menghasilkan ciphertext yang berukuran 64 bit. Pada umumnya, setiap blok plaintext yang diproses berukuran 64 bit. Namun, seiring dengan kemajuan teknologi, ukuran blok plaintext berkembang menjadi 128 bit, 256 bit bahkan menjadi 512 bit. Dalam proses enkripsinya, block cipher menggunakan beberapa fungsi matematika, diantaranya fungsi permutasi dan fungsi substitusi, sehingga konfusi (confussion) dan difusi (diffusion) pada block cipher terpenuhi.
 
Istilah konfusi dan difusi diperkenalkan oleh Claude Shannon pada tahun 1949. Menurutnya, konfusi dan difusi merupakan hal yang harus diperhatikan dalam sistem kriptografi, karena dapat mencegah cyptanalysis, khususnya yang berbasis analisis statistik (Cryptography and Network Security-William Stalling). Konfusi adalah mengaburkan/membuat hubungan antara ciphertext dan kunci enkripsi sekompleks mungkin sehingga tidak ada hubungan statistik antara keduanya. Hal ini dapat mencegah attacker untuk mendapatkan kunci enkripsi. Konfusi dapat diusahakan dengan menggunakan fungsi substitusi. Sedangkan difusi adalah menyebarkan struktur plaintext pada ciphertext, sehingga tidak ada hubungan statistik antara keduanya. Setiap digit plaintext mempengaruhi sejumlah digit ciphertext, atau dengan kata lain, setiap digit ciphertext dipengaruhi oleh sejumlah digit plaintext. Difusi dapat diusahakan dengan menggunakan fungsi permutasi pada proses enkripsi. 

Penjelasan Mode Operasi
Seperti telah dibahas sebelumnya bahwa block cipher beroperasi pada blok plaintext dan ciphertext. Biasanya ukuran bloknya adalah 64 bit. Operasi pada blok dengan 64 bit (8 byte) ini tidak selalu aman dan rentan terhadap cryptanalysis, misalnya plaintext yang sama selalu menghasilkan ciphertext yang sama dan teknik ini sangat rentan terhadap replay attack. Untuk menghindari hal tersebut, maka pada block cipher digunakan mode operasi. Mode Operasi yang biasa digunakan adalah Mode operasi Cipher Block Chaining (CBC) merupakan salah satu mode operasi block cipher yang menggunakan vektor inisialisasi (initialitation vector/IV) dengan ukuran tertentu (ukurannya sama dengan satu blok plaintext). Pada mode operasi ini plaintext dibagi menjadi beberapa blok, kemudian masing-masing blok dienkripsi dengan ketentuan blok plaintext pertama dienkripsi lebih dahulu. Sebelum dienkripsi, plaintext di-XOR dengan IV. Lalu, hasil XOR tersebut dienkripsi hingga menghasilkan ciphertext. Selanjutnya, ciphertext tersebut digunakan sebagai IV untuk proses penyandian blok plaintext selanjutnya.
Mode operasi CBC menutupi kelemahan dari mode operasi ECB, karena pada CBC dapat menyembunyikan  pola dari plaintext. Mengapa demikian? Karena sebelum dienkripsi, plaintext di-XOR dengan IV atau ciphertext sebelumnya, sehingga plaintext yang sama belum tentu menghasilkan ciphertext yang sama, kecuali jika memiliki IV/ciphertext sebelumnya yang sama.
Kelemahan dari CBC adalah untuk mendekripsi ciphertext, dipengaruhi oleh ciphertext sebelumnya. Jika ada kesalahan pada ciphertext sebelumnya, maka ciphertext selanjutnya pun akan salah.

Cara Kerja
 

Penjelasan
  • Pesan  dienkripsi hingga menjadi sebuah rantai blok, sehingga setiap blok tergantung pada enkripsi yang tepat dari blok sebelumnya.
  • Blok pertama pesan akan di XOR kan dengan IV terdiri atas kumpulan bit 0.
  • Blok pertama pesan kemudian akan dienkripsi dengan fungsi enkripsi tertentu dengan kunci K. 
  • Hasil dari enkripsi  ini kemudian di XOR lagi dengan blok pesan kedua.
  • Langkah ini diulangi berkali-kali sampai blok pesan terakhir. Hasil enkripsi pada blok pesan terakhir merupakan nilai MAC yang diperoleh dengan algoritma ini.
  • Output dari blok terakhir dari teks cipher digunakan sebagai MAC lalu MAC yang menjadi satu dengan plaintext pesan dikirim.
  • Penerima menerima pesan plaintext dan mengenkripsinya dengan cipher blok simetrik yang sama dalam mode CBC dan menghitung nilai MAC independen.
  • Pada enkripsi CBC-MAC tidak menggunakan algoritma hashing. 
Keunggulan dari penggunaan CBC - MAC adalah algoritma ini cocok digunakan untuk pesan dengan panjang pesan yang tetap. Namun, penggunaan CBC sebagai algoritma penghitungan MAC masih memiliki kelemahan untuk pesan dengan panjang yang tidak tetap (arbitrary).
 
(sumber: https://en.wikipedia.org/wiki/CBC-MAC)

Comments