Pembuat HMAC
Tanda tangani pesan dengan kunci rahasia. Tidak ada yang dikirim.
- Berjalan di browser Anda — teks Anda tidak pernah dikirim ke mana pun
- Tanpa pendaftaran, tanpa kuota, gratis dipakai sesering yang Anda mau
Cara kerjanya
HMAC membuktikan dua hal sekaligus: bahwa pesan belum diubah, dan bahwa pembuatnya memegang rahasia bersama. Inilah yang menandatangani webhook, permintaan API, dan tautan unduhan di sebagian besar web.
Berbeda dari hash biasa, dalam hal yang penting
Siapa pun bisa menghitung SHA-256 dari sebuah pesan, jadi hash polos tidak membuktikan apa pun tentang siapa yang membuatnya — ubah pesannya, hitung ulang hash-nya, dan tak seorang pun bisa membedakan. HMAC memasukkan kunci rahasia ke dalam perhitungan, sehingga tidak bisa dihitung ulang tanpa kunci itu. Itulah inti seluruhnya, dan itulah sebabnya tanda tangan webhook memakai HMAC, bukan hash.
Memverifikasi dengan aman
Saat memeriksa HMAC di server, bandingkan dengan fungsi berwaktu konstan — crypto.timingSafeEqual di Node, hash_equals di PHP. Operator == biasa langsung selesai begitu dua byte berbeda, dan waktu yang dibutuhkannya membocorkan seberapa banyak tanda tangan yang benar, yang cukup untuk memalsukannya dengan kesabaran. Ini serangan yang nyata, bukan sekadar teori.
Algoritma mana
SHA-256, kecuali ada yang menentukan lain. SHA-1 disertakan karena banyak API lama masih mewajibkan HMAC-SHA-1, dan HMAC-SHA-1 belum terbobol seperti SHA-1 polos — tetapi tidak ada alasan untuk memilihnya bagi hal baru.
Hex atau Base64
Murni soal apa yang diharapkan pihak lain. Hex dua kali lebih panjang dan lebih mudah dibaca; Base64 lebih ringkas dan umum di header HTTP. Tanda tangan yang sama ditampilkan dalam keduanya.
Kunci Anda tetap di sini
Dibuat dengan Web Crypto API bawaan browser. Kunci dan pesan tidak pernah dikirim ke mana pun, dan itulah satu-satunya cara yang bertanggung jawab untuk menawarkan alat ini — alat tanda tangan yang mengunggah rahasia Anda telah menyerahkan hal yang justru dilindungi oleh rahasia itu.
Pembuat HMAC — pertanyaan
Apa bedanya HMAC dengan hash?
Hash bisa dihitung ulang oleh siapa pun. HMAC membutuhkan kunci rahasia, sehingga membuktikan siapa yang membuatnya.
Algoritma mana yang sebaiknya saya gunakan?
SHA-256, kecuali API menentukan lain. SHA-1 tersedia untuk sistem lama yang masih membutuhkannya.
Sebaiknya pakai hex atau Base64?
Mana pun yang diharapkan pihak lain. Keduanya ditampilkan untuk tanda tangan yang sama.
Mengapa perbandingan harus berwaktu konstan?
Perbandingan biasa berhenti lebih awal pada ketidakcocokan pertama, dan selisih waktunya membocorkan seberapa banyak yang sudah benar — cukup untuk memalsukan tanda tangan.
Apakah kunci rahasia saya dikirim ke suatu tempat?
Tidak. Semuanya berjalan di browser Anda melalui Web Crypto API.