Menilai Keaslian Pengiriman Data Request dengan HMAC
Siapa yang belum mengenal tentang HMAC? HMAC dikenal dengan kepanjangan hash-based message authentication code, sebuah pesan kunci hash yang dapat digunakan sebagai otentikasi bahkan verifikasi dari data yang dikirimkan. Pesan hash ini dihasilkan dari fungsi hash kriptografis dengan berbekal parameter input data pesannya dan sebuah kunci. Jenisnya ada banyak mengikuti algoritma hash yang digunakan, seperti MD5, SHA1, SHA256, SHA512 dan sebagainya.
Bagaimana menilai keaslian suatu data?
Pertukaran data di HTTP pada dasarnya stateless sehingga suatu node tidak akan pernah tahu apakah request data satu dengan data selanjutnya berasal dari node yang sama. Supaya tahu apakah pengirim merupakan user yang dikenal, biasanya suatu request HTTP dilampirkan suatu data otentikasi, entah di header authorization
, cookies, url query params dan lain sebagainya. Tapi, apakah data tersebut merupakan data asli atau hanya hasil tempering dari penyusup?
Makanya, kita bisa melakukan verifikasi data yang dikirimkan dengan HMAC ini. Apabila HMAC yang diberikan tidak cocok dengan HMAC hasil generate dari server, tentu itu menunjukkan bahwa request yang masuk adalah hasil tempering dari intruder.
Bagaimana teknis verifikasi data?
Saya akan memberikan contoh, cara bagaimana menggunakan HMAC ini dalam hal verifikasi data untuk keamanan Server to Server.
- Setiap server dipastikan memiliki kunci yang sama, atau setidaknya saling mengetahui kunci HMAC server yang hendak dihubungi.
- Setiap body request dilakukan generate HMAC, kemudian disematkan dalam header. Misalnya, dalam header
authorization
, ataupun custom header lainX-AUTH
. - Setiap request yang diterima, harus melalui middleware untuk pencocokan HMAC request dengan HMAC hasil dari generate server penerima.
- Jika HMAC berbeda, maka request terhalang dan pesan error diberikan.
Semoga bermanfaat