Konsep Message Authentication Code (MAC)
Di dalam proses pengiriman data dari satu komputer ke komputer lain, baik itu dari internet maupun di jaringan lokal, diperlukan sebuah cara untuk memastikan bahwa data yang diterima oleh receiver merupakan data yang valid (benar adanya / absah). Ada dua hal yang perlu dipastikan dalam menentukan keabsahan data yang diterima:
- Data yang diterima benar-benar berasal dari pengirim yang tertera (alamat pengirim tidak dipalsukan) yang kita sebut sebagai Authenticity.
- Data yang diterima persis sama bentuknya dengan apa yang dikirim (tidak ada perubahan data di tengah jalan) yang kita sebut sebagai Integrity.
Sebagai contoh, anggaplah kita hidup di masa telepon belum ditemukan. Semua pengiriman pesan dilakukan melalui surat menyurat via pos. Di masa ini, biasanya seseorang yang menerima surat dari petugas pos tidak memiliki cara untuk memastikan bahwa surat tersebut valid. Katakanlah Joffrey menerima surat dari petugas pos. Di surat tersebut tertera bahwa pengirim adalah Sansa, dengan pesan berisi “aku merindukanmu, datanglah kemari musim panas ini, aku tunggu”.
Joffrey, sebagai penerima surat tidak memiliki cara untuk memastikan bahwa surat ini benar-benar berasal dari Sansa. Sekalipun ini benar dari Sansa, Joffrey tidak memiliki cara untuk memastikan bahwa tidak ada yang mengubah isi suratnya di tengah jalan.
Salah satu cara yang bisa dilakukan untuk memastikan pengirim surat pada jaman itu adalah dengan menyepakati ‘kata sandi’ dari kedua belah pihak pengirim dan pemohon. Sebagai contoh, sepasang kekasih bisa saja bersepakat untuk membubuhkan kata sandi di akhir surat untuk memastikan bahwa surat tersebut berasal dari kekasihnya. Sebelum berpisah Joffrey dan Sansa bersepakat untuk menambahkan kalimat “Burung merpati berteduh di pohon kapas” di akhir surat. Jika kalimat tersebut ada di dalam surat, maka bisa dipastikan bahwa surat tersebut benar berasal dari salah satu di antara mereka. Pastinya mereka merahasiakan hal ini dari siapa pun agar tidak ada orang lain yang mengirim surat berpura-pura sebagai salah satu dari mereka. Kata sandi dalam hal ini menjadi mekanisme untuk memastikan Authenticity dari surat yang diterima.
Namun agak sulit untuk memastikan bahwa surat tersebut tidak berubah isinya di tengah jalan. Meskipun Joffrey bisa memastikan pengirim suratnya benar adalah Sansa. Dia tidak bisa memastikan bahwa tidak ada yang menghapus atau menambahkan kalimat di tengah-tengah suratnya saat surat itu berada dalam perjalanan. Maka kata sandi saja tidak cukup untuk memastikan Integrity dari surat yang diterima.
Di jaman sekarang dimana komputer merupakan alat penghitung yang super cepat dan menjadi media utama dalam pengiriman data / pesan, Authenticity dan Integrity dapat dengan mudah dilakukan. Data yang diterima dapat dipastikan Integrity – nya dengan menggunakan hash function.
Hash Function adalah sebuah algoritma yang dapat mengubah suatu data ke dalam suatu kode dengan panjang tertentu menggunakan key (yang mana key tersebut dapat disepakati oleh pengirim dan penerima). Artikel ini tidak membahas bagaimana hash function bekerja, silahkan dicari dan dipelajari sendiri di Google ya. Intinya, Hash Function bisa menjadi sebuah solusi untuk memastikan tidak hanya Authenticity tapi juga Integrity dari data / pesan yang diterima.