Pada Kriptografi, CBC-MAC adalah teknik untuk membangun kode otentikasi pesan dari block cipher. Pesan dienkripsi dengan beberapa algoritma block cipher dalam mode CBC untuk membuat rantai blok sehingga setiap blok bergantung pada enkripsi yang tepat dari blok sebelumnya. Interpendensi(hubungan yang saling ketergantungan) ini memastikan bahwa perubahan ke salah satu bit plaintext akan menyebabkan blok terenkripsi terakhir berubah dengan cara yang tidak dapat diprediksi atau dilawan tanpa mengetahui kunci ke block cipher. (Wikipedia)
Message Authentication Code (MAC) adalah potongan informasi berupa kode yang digunakan untuk otentikasi bagian informasi lain berupa pesan. MAC merupakan sebuah fungsi satu arah yang menggunakan kunci privat dalam penghitungan nilai MAC dari pesan tersebut. Sistem MAC ini berbeda dengan fungsi hash semisal SHA ataupun MD5 yang tidak menggunakan kunci privat apapun untuk menghitung nilai hash dari pesan. Nilai hash yang dihasilkan adalah selalu berukuran tetap berapapun panjang dari pesan yang diotentikasi. Selanjutny, MAC dilekatkan pada pesan (atau bisa juga menggunakan file luar) yang nantinya akan digunakan untuk otentikasi keaslian pesan. Perbedaan antara MAC dan algoritma enkripsi adalah MAC digunakan tanpa perlu merahasiakan isi pesan. MAC juga bukan tanda tangan digital, MAC hanya menyediakan otentikasi pengirim dan integritas pesan saja. Algoritma MAC adalah algoritma yang melakukan penghitungan nilai hash file dengan menerima masukan pesan beserta kunci privat tertentu. Selanjutnya, MAC akan menghasilkan tag file <MAC> pada pesan sebagi penanda bahwa bagian itu adalah nilai hash dari pesan tersebut. Apabila dituangkan secara matematis, bentuk umum dari algoritma MAC adalah sebagai berikut :
Message Authentication Code (MAC) adalah potongan informasi berupa kode yang digunakan untuk otentikasi bagian informasi lain berupa pesan. MAC merupakan sebuah fungsi satu arah yang menggunakan kunci privat dalam penghitungan nilai MAC dari pesan tersebut. Sistem MAC ini berbeda dengan fungsi hash semisal SHA ataupun MD5 yang tidak menggunakan kunci privat apapun untuk menghitung nilai hash dari pesan. Nilai hash yang dihasilkan adalah selalu berukuran tetap berapapun panjang dari pesan yang diotentikasi. Selanjutny, MAC dilekatkan pada pesan (atau bisa juga menggunakan file luar) yang nantinya akan digunakan untuk otentikasi keaslian pesan. Perbedaan antara MAC dan algoritma enkripsi adalah MAC digunakan tanpa perlu merahasiakan isi pesan. MAC juga bukan tanda tangan digital, MAC hanya menyediakan otentikasi pengirim dan integritas pesan saja. Algoritma MAC adalah algoritma yang melakukan penghitungan nilai hash file dengan menerima masukan pesan beserta kunci privat tertentu. Selanjutnya, MAC akan menghasilkan tag file <MAC> pada pesan sebagi penanda bahwa bagian itu adalah nilai hash dari pesan tersebut. Apabila dituangkan secara matematis, bentuk umum dari algoritma MAC adalah sebagai berikut :
MAC = CK(M)
dengan MAC menunjukkan nilai hash, C adalah fungsi hash yang digunakna dalam penghitungan MAC (atau algoritma MAC), dan K merupakan kunci rahasia atau kunci privat yang digunakan. Fungsi MAC ini tidak hanya menjaga integritas dari data namun juga dapat mendeteksi setiap perubahan yang terjadi pada isi pesan.
Untuk menghitung CBC-MAC pesan m satu meng enkripsi m dalam mode CBC dengan inisiasi nol vektor. Gambar beikut merupakan sketsa perhitungan blok menggunakan kunci rahasia k dan cipher blok E :
Note : tidak ada yang salah dengan CBC-MAC, ketika diterapkan dengan benar. Dan itu tidak sulit untuk diterapkan dengan benar. Masalahnya adalah bahwa banyak orang yang menggunakan CBC-MAC (daripada HMAC atau mode AEAD yang tepat) tampaknya tidak mampu melakukan hal ini.
Jika block cipher yang digunakan aman (artinya itu adalah permutasi pseudorandom ), maka CBC-MAC aman untuk pesan-pesan panjang. [1] Namun, dengan sendirinya, itu tidak aman untuk pesan-pesan panjang-variabel. Dengan demikian, kunci apa pun hanya boleh digunakan untuk pesan dengan panjang tetap dan dikenal. Ini karena penyerang yang tahu tag pesan-benar (yaitu CBC-MAC) untuk dua pesan dan dapat menghasilkan pesan ketiga yang CBC-MAC-nya juga akan . Ini hanya dilakukan oleh XORing blok pertama dengan t dan kemudian menggabungkan m dengan modifikasi ini ; yaitu dengan membuat . Saat menghitung MAC untuk pesan Oleh karena itu, kami menghitung MAC untuk m dengan cara biasa seperti t , tetapi ketika nilai ini dirantai ke depan ke tahap komputasi kami akan melakukan operasi OR eksklusif dengan nilai yang diturunkan untuk MAC dari pesan pertama. Kehadiran tag itu di pesan baru berarti itu akan dibatalkan, tanpa menyisakan kontribusi ke MAC dari blok-blok teks biasa di pesan pertama m : dan dengan demikian tag untuk aku s
.
Masalah ini tidak dapat diselesaikan dengan menambahkan blok ukuran pesan ke bagian akhir. [2] Ada tiga cara utama untuk memodifikasi CBC-MAC sehingga aman untuk pesan panjang variabel: 1) Pemisahan kunci panjang input; 2) Panjang-prepending; 3) Enkripsikan blok terakhir. [2] Dalam kasus seperti itu, mungkin juga disarankan untuk menggunakan mode operasi yang berbeda, misalnya CMAC atau HMAC untuk melindungi integritas pesan dengan panjang variabel.
disini kita sama-sama berdiskusi terutama mengenai CBC-MAC. oleh karena itu jika masih ada yang salah ataupun ada tambahan bisa tulis dikolom komentar. terima kasih sudah membaca blog ini.
