Penjana HMAC
Tandatangani mesej dengan kunci rahsia. Tiada apa-apa dihantar.
- Berjalan dalam pelayar anda — teks anda tidak pernah dihantar ke mana-mana
- Tanpa pendaftaran, tanpa kuota, percuma digunakan sebanyak mana yang anda suka
Cara ia berfungsi
HMAC membuktikan dua perkara sekali gus: bahawa mesej tidak diubah, dan bahawa pihak yang menghasilkannya memegang rahsia kongsi. Itulah yang menandatangani webhook, permintaan API dan pautan muat turun di kebanyakan web.
Berbeza daripada hash biasa, dengan cara yang penting
Sesiapa sahaja boleh mengira SHA-256 bagi sesuatu mesej, jadi hash kosong tidak membuktikan apa-apa tentang siapa yang membuatnya — ubah mesej, kira semula hash, dan tiada siapa dapat membezakannya. HMAC memasukkan kunci rahsia ke dalam pengiraan, jadi ia tidak boleh dikira semula tanpa kunci itu. Itulah keseluruhan tujuannya, dan sebab tandatangan webhook menggunakan HMAC dan bukannya hash.
Mengesahkan dengan selamat
Apabila anda menyemak HMAC pada pelayan, bandingkan dengan fungsi masa malar — crypto.timingSafeEqual dalam Node, hash_equals dalam PHP. == biasa kembali sebaik sahaja dua bait berbeza, dan masa yang diambil membocorkan sejauh mana tandatangan itu betul, yang mencukupi untuk memalsukannya jika ada kesabaran. Ia serangan sebenar, bukan sekadar teori.
Algoritma yang mana
SHA-256 melainkan ada yang menetapkan sebaliknya. SHA-1 disertakan kerana banyak API lama masih memerlukan HMAC-SHA-1, dan HMAC-SHA-1 belum dipecahkan seperti SHA-1 biasa — tetapi tiada sebab untuk memilihnya bagi sesuatu yang baharu.
Hex atau Base64
Semata-mata bergantung pada apa yang dijangka oleh pihak satu lagi. Hex dua kali ganda lebih panjang dan lebih mudah dibaca; Base64 lebih padat dan lazim dalam pengepala HTTP. Tandatangan yang sama dipaparkan dalam kedua-duanya.
Kunci anda kekal di sini
Dijana dengan Web Crypto API milik pelayar sendiri. Kunci dan mesej tidak pernah dihantar ke mana-mana, iaitu satu-satunya cara yang bertanggungjawab untuk menawarkan alat ini — alat penandatanganan yang memuat naik rahsia anda telah menyerahkan perkara yang dilindungi oleh rahsia itu.
Penjana HMAC — soalan lazim
Apakah perbezaan HMAC daripada hash?
Hash boleh dikira semula oleh sesiapa sahaja. HMAC memerlukan kunci rahsia, jadi ia membuktikan siapa yang menghasilkannya.
Algoritma mana yang patut saya gunakan?
SHA-256 melainkan API menetapkan sebaliknya. SHA-1 disediakan untuk sistem lama yang masih memerlukannya.
Patutkah saya gunakan hex atau Base64?
Mana-mana yang dijangka oleh pihak satu lagi. Kedua-duanya dipaparkan untuk tandatangan yang sama.
Mengapakah perbandingan mesti dilakukan dalam masa malar?
Perbandingan biasa berhenti awal pada ketidakpadanan pertama, dan perbezaan masa itu membocorkan sejauh mana bahagian yang betul — cukup untuk memalsukan tandatangan.
Adakah kunci rahsia saya dihantar ke mana-mana?
Tidak. Semuanya berjalan dalam pelayar anda melalui Web Crypto API.