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 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.
Berikut ini merupakan bagan yang menunjukkan contoh proses penggunaan MAC sebagai cara mengotentikasi pesan antara dua pihak yang saling memiliki kunci privat yang telah disepakati sebelumnya.
Pada konsep CBC ini, penghitungan nilai MAC bergantung pada proses enkripsi pada tiap blok. Mekanisme pencarian CBC MAC adalah dengan membagi pesan ke dalam blok-blok pesan dengan panjang tetap. 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. Hal ini diulangi berkali-kali sampai blok pesan terakhir. Hasil enkripsi pada blok pesan terakhir merupakan nilai MAC yang diperoleh dengan algoritma ini.
Berikut merupakan gambaran operasi pada CBC MAC :
Algoritma MAC adalah algoritma yang melakukan penghitungan nilai hash file dengan menerima masukan pesan beserta kunci privat tertentu. Selanjutnya, MAC akan menghasilkan tag file
Berikut ini merupakan bagan yang menunjukkan contoh proses penggunaan MAC sebagai cara mengotentikasi pesan antara dua pihak yang saling memiliki kunci privat yang telah disepakati sebelumnya.
Pada konsep CBC ini, penghitungan nilai MAC bergantung pada proses enkripsi pada tiap blok. Mekanisme pencarian CBC MAC adalah dengan membagi pesan ke dalam blok-blok pesan dengan panjang tetap. 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. Hal ini diulangi berkali-kali sampai blok pesan terakhir. Hasil enkripsi pada blok pesan terakhir merupakan nilai MAC yang diperoleh dengan algoritma ini.
Berikut merupakan gambaran operasi pada CBC MAC :
dengan m adalah pesan yang akan dicari nilai MAC-nya,
E adalah fungsi enkripsi berbasis blok, dan k adalah kunci
privat yang digunakan untuk melakukan enkripsi.
Pembagian blok pesan pada CBC MAC adalah pesan
dibagi ke dalam blok-blok pesan dengan panjang setiap
blok adalah panjang yang sudah ditetapkan, dalam hal ini
adalah panjang blok bersesuaian dengan spesifikasi fungsi
enkripsi yang dipakai.
Misalnya, DES digunakan sebagai cipher blok, maka
ukuran blok adalah 64 bit, dan kunci rahasia MAC adalah
kunci DES yang panjangnya 56 bit.
Dalam pembuatan MAC dengan konsep CBC ini, kunci
yang dilakukan untuk melakukan enkripsi untuk semua
blok adalah selalu sama. Begitu pula dengan fungsi
enkripsi yang digunakan. Yang berbeda untuk setiap blok
hanyalah masukan berupa potongan blok pesan yang
sudah di-XOR dengan hasil enkripsi pesan sebelumnya