Sözlük

HMAC

hash tabanlı ileti kimlik doğrulama koduanahtarlı hash

HMAC, kriptografik bir özet fonksiyonundan oluşturulan anahtarlı ileti kimlik doğrulama kodudur.

Tanım

HMAC, Hash-based Message Authentication Code anlamına gelir. Gizli bir anahtarı kriptografik özet fonksiyonuyla birleştirerek mesaj için sabit boyutlu bir kimlik doğrulama etiketi üretir.

Aynı gizli anahtara sahip doğrulayıcı, etiketi mesajın tam baytları üzerinden yeniden hesaplar ve alınan etiketle karşılaştırır. Eşleşme, mesajın değişmediğini ve etiketin paylaşılan anahtarı bilen biri tarafından oluşturulduğunu gösterir.

Nasıl çalışır

HMAC, anahtarı ve mesajı farklı dolgu sabitleriyle iki iç içe adımda hashler. Bu yapı, bazı özet fonksiyonlarında savunmasız olabilen basit hash(key || message) hesabından daha güvenlidir.

Seçilen özet fonksiyonu etiket boyutunu belirler: HMAC-SHA256, genellikle 64 on altılık karakter olarak yazılan 32 bayt üretir. HMAC-SHA512 ve HMAC-SHA384 daha uzun etiketler üretir; HMAC-SHA1 ise çoğunlukla uyumluluk için kalmıştır.

Kullanım ve sınırlar

HMAC, iki tarafın zaten bir sırrı paylaştığı API imzaları, webhook'lar, oturum verileri, JWT HS256 ve protokol mesajlarında kullanılır. Bütünlük ve kimlik doğrulama sağlar, gizlilik sağlamaz: mesajın kendisi saklanmaz.

Rastgele bir gizli anahtar kullanın, imzalanan tam baytları koruyun ve uygulama kodunda etiketleri sabit zamanlı karşılaştırmayla kıyaslayın. Paylaşılan sır olmadan herkese açık doğrulama için dijital imza kullanın.

Sık sorulan sorular

Hayır. HMAC bir mesajı doğrular ama gizlemez. Mesajın gizli kalması gerekiyorsa ayrıca şifreleme kullanın.

Düz hash gizli anahtar içermez; bu yüzden herkes mesajı değiştirip yeni hash hesaplayabilir. HMAC geçerli etiket oluşturmak için paylaşılan sırrı gerektirir.

Hayır. Doğrulama etiketi özgün mesaj ve gizli anahtardan yeniden hesaplar; etiketten bu değerleri geri çıkarmaz.

Ayrıca bakınız