Apa itu Message Authentication Code (MAC)?
Message Authentication Code (MAC) adalah sebuah checksum kriptografis yang diterapkan pada sebuah pesan dalam komunikasi jaringan untuk menjamin integritas dan keaslian pesan tersebut. MAC memastikan bahwa pesan yang dikirim memang berasal dari pengirim yang sah dan tidak dimodifikasi selama proses pengiriman, baik secara tidak sengaja maupun dengan sengaja. MAC kadang juga disebut sebagai tag karena bentuknya yang ditambahkan ke pesan yang ingin diverifikasi.
Penerapan MAC untuk verifikasi pesan
Teknik kriptografi kunci simetris digunakan untuk menghasilkan MAC dari masing-masing pesan. Proses ini memerlukan algoritma MAC standar yang membutuhkan dua input: pesan asli dan sebuah kunci rahasia yang hanya diketahui oleh pengirim dan penerima pesan. Gambar berikut menunjukkan bagaimana pengirim membuat MAC dan bagaimana penerima memverifikasinya.

Verifikasi pesan berbasis MAC membutuhkan langkah-langkah tertentu yang dilakukan oleh pengirim dan penerima untuk menjamin kredibilitas pesan tersebut:
- Pengirim dan penerima berbagi sebuah kunci simetris rahasia.
- Pengirim menjalankan algoritma standar untuk membuat MAC, dengan input berupa pesan asli dan kunci rahasia.
- Algoritma tersebut menggabungkan pesan dan kunci rahasia, lalu menghasilkan checksum berdimensi tetap yang dipakai untuk membentuk MAC.
- Pengirim menambahkan MAC ke pesan dan mengirimkannya secara bersamaan ke penerima.
- Setelah menerima pesan dan MAC, penerima menjalankan algoritma MAC dengan memasukkan pesan yang diterima dan kunci rahasia bersama sebagai input.
- Algoritma membuat checksum baru dari pesan dan kunci tersebut untuk menghasilkan MAC versi penerima.
- Penerima membandingkan MAC dari pengirim dengan MAC miliknya. Jika cocok, pesan diterima. Jika tidak cocok, pesan ditolak.
Kalau MAC dari pengirim dan penerima cocok, berarti pesan itu benar-benar datang dari pengirim yang sah dan tidak mengalami perubahan saat dalam perjalanan. Tapi kalau kunci rahasia atau isi pesan tidak cocok, maka nilai MAC akan beda dan pesan pun akan ditolak oleh penerima.
Walaupun MAC menjamin keaslian dan integritas, dia tidak melindungi isi pesan itu sendiri. Perlindungan data memerlukan proses enkripsi terpisah. Selain itu, MAC juga tidak mendukung fitur non-repudiasi seperti tanda tangan digital yang bisa membuktikan asal-usul dokumen. Dengan MAC, kita tidak bisa membuktikan siapa sebenarnya pembuat pesan asli tersebut.

Algoritma MAC
Pembuatan MAC membutuhkan algoritma general-purpose yang mampu menghasilkan checksum kriptografis dengan aman. Ada beberapa algoritma yang tersedia, tetapi National Institute of Standards and Technology (NIST) hanya menyetujui tiga algoritma berikut ini:
- Keyed-Hash-based Message Authentication Code (HMAC). Merupakan teknik autentikasi kriptografis yang menggunakan kunci rahasia bersama dengan fungsi hash yang disetujui oleh FIPS (Federal Information Processing Standards). Karena fungsi hash-nya bisa berbeda, HMAC punya beberapa versi seperti HMAC-SHA256 dan HMAC-SHA3-256. HMAC digunakan dalam berbagai protokol komunikasi dan transfer data seperti HTTPS, FTPS, dan SFTP.
- Keccak Message Authentication Code (KMAC). Adalah fungsi hash ber-kunci yang berbasis algoritma Keccak. KMAC bisa digunakan untuk autentikasi, enkripsi, maupun pembangkitan angka acak (pseudo-random). KMAC punya dua varian: KMAC128 dan KMAC256, dan dijelaskan dalam FIPS 202 sebagai bagian dari standar SHA-3.
- CMAC Mode for Authentication. Merupakan algoritma MAC berbasis block cipher yang dirancang untuk menjamin keaslian dan integritas. NIST menyebut CMAC sebagai mode operasi dari cipher simetris yang mengubah data secara kriptografis.
NIST juga menyebutkan bahwa algoritma MAC yang disetujui harus memenuhi properti berikut ini: “Harus tidak mungkin secara komputasional untuk menebak MAC dari sebuah pesan yang belum pernah dilihat tanpa mengetahui kunci, bahkan jika MAC dari pesan lain dengan kunci yang sama telah diketahui.”
NIST juga menyediakan panduan pengujian serta daftar validasi untuk algoritma-algoritma yang disetujui tersebut melalui program Cryptographic Algorithm Validation Program (CAVP).