İçeriğe geç

HMAC Doğrulayıcı

HMAC doğrulaması. JavaScript çalışma ortamı sabit zaman garantisi vermez.

Constant-time Compare

Araç hakkında

HMAC nasıl doğrulanır?

Doğrulama, aynı mesaj ve anahtarla HMAC’i yeniden hesaplayıp beklenen değerle karşılaştırmaktır. Araç seçtiğiniz algoritmayla (SHA-256 veya SHA-512) hesaplama yapar ve hex değerleri büyük/küçük harf ayırt etmeden, tüm baytlar üzerinden karşılaştırır.

Sonuç yalnız “doğrulandı” veya “uyuşmuyor” olarak gösterilir. Uyuşmazlık durumunda en sık nedenler: gövdenin yeniden biçimlendirilmiş olması (boşluk, satır sonu), yanlış anahtar, sha256= gibi bir önekin beklenen değere eklenmiş olması veya algoritmanın farklı olmasıdır.

Sunucu kodunda dikkat

Kendi uygulamanızda karşılaştırmayı == ile değil, sabit zamanlı bir fonksiyonla yapın (Node.js crypto.timingSafeEqual, Python hmac.compare_digest, Go hmac.Equal). Aksi hâlde yanıt süresindeki farklardan doğru imza bayt bayt tahmin edilebilir. Bu araç tüm baytları karşılaştırır, ancak JavaScript sabit zamanlı çalışmayı garanti etmez.

Kaynaklar