Hash-Based Message Authentication Code
Ayrıca şöyle bilinir: HMAC, keyed hash function
HMAC, saldırganların doğrulama kodlarını taklit etmesini önleyecek şekilde gizli anahtarı özet hesaplamasına özel bir yolla yerleştirerek çalışır. Anahtarı mesajla basitçe birleştirmek ve özetlemek yerine, HMAC anahtardan türetilmiş dolgu (padding) değerleri (ipad ve opad) ile iki iç içe özetleme işlemi kullanır. Bu çift özetleme tasarımı, bir saldırgan özet çakışmalarını bulabilse bile, gizli anahtarı bilmeden geçerli HMAC'leri taklit edememesini sağlar.
Tam yöntemi oku
Bu bölümü okumak için ücretsiz hesapla giriş yapın.
Yöntem haritası
İlişkili yöntemlerin komşuluğu — keşfetmek için bir düğüm seçin.
Ne zaman kullanılır
Tek bir işlemde hem mesaj bütünlüğünü hem de kimlik doğrulamayı sağlar
Güçlü yönler & sınırlılıklar
- Sayısal imzalara kıyasla minimum hesaplama yükü ile hesaplanması basit ve verimlidir
- Herhangi bir temel özet fonksiyonu ile uyumludur, algoritma seçiminde esneklik sunar
- Temel özet fonksiyonu rastgele bir oracle gibi davranırsa teorik olarak güvenli olduğu kanıtlanmıştır
- Güvenli paylaşılan anahtar yönetimi gerektirir; hem gönderici hem de alıcı aynı gizli anahtara sahip olmalıdır
- Her iki taraf da bir mesaj oluşturduğunu veya yetkilendirdiğini reddedebileceği için reddedilemezlik sağlamaz
- Temel özet fonksiyonu bozulursa veya yanlış kullanılırsa anahtar kurtarmaya karşı savunmasızdır
- HMAC karşılaştırmasındaki zamanlama saldırıları, doğrulama sabit zamanlı değilse doğru kod hakkında bilgi sızdırabilir
- Sabit zamanlı olmayan dize karşılaştırması kullanarak HMAC'leri karşılaştırmak, saldırganların geçerli kodları taklit etmesine olanak tanıyan zamanlama saldırılarına izin verir
SSS
Basit birleştirme (anahtar || mesaj), uzunluk genişletme saldırılarına karşı savunmasızdır. Bir saldırgan, orijinal HMAC'yi biliyorsa, anahtarı bilmeden HMAC(anahtar || mesaj || x)'i hesaplayabilir. HMAC'nin ayrı dolgu ile iç içe geçmiş tasarımı bu saldırıyı önler.
HMAC'leri güvenli bir şekilde nasıl karşılaştırırım?
Standart dize eşitliği yerine sabit zamanlı karşılaştırma fonksiyonları kullanın (Python'daki secrets.compare_digest gibi). Bu, saldırganların karşılaştırmanın ne kadar sürdüğünü gözlemleyerek geçerli HMAC'leri taklit etmelerine olanak tanıyan zamanlama saldırılarını önler.
Anahtar türetme için HMAC kullanabilir miyim?
HMAC tek başına güçlü bir anahtar türetme fonksiyonu değildir. Bunun yerine, kriptografik anahtarları parolalardan veya paylaşılan sırlardan oluşturmak için HMAC'yi birden çok kez ek rastgelelikle uygulayan HKDF (HMAC tabanlı Anahtar Türetme Fonksiyonu) veya PBKDF2 kullanın.
HMAC kuantum dirençli midir?
HMAC'nin güvenliği, temel özet fonksiyonuna dayanır. Özet fonksiyonu kuantum dirençli ise, HMAC de kuantum dirençlidir. SHA-3 ve diğer kuantum sonrası özet fonksiyonları, geleceğe yönelik olarak HMAC ile kullanılabilir.
HMAC ile hangi özet fonksiyonunu kullanmalıyım?
Yeni sistemler için SHA-256 veya SHA-3 kullanın. SHA-1 çoğu kullanım için eskimiştir. MD5'ten kaçının. Seçim, güvenlik gereksinimlerinize ve uyumluluk ihtiyaçlarınıza bağlıdır.
Yeni sistemler için SHA-256 veya SHA-3 kullanın. SHA-1 çoğu kullanım için eskimiştir. MD5'ten kaçının. Seçim, güvenlik gereksinimlerinize ve uyumluluk ihtiyaçlarınıza bağlıdır.
Kaynaklar
- Krawczyk, H., Bellare, M., & Crechanko, R. (1997). HMAC: Keyed-Hashing for Message Authentication. RFC 2104. link ↗
- Bellare, M., Canetti, R., & Krawczyk, H. (1996). Keying hash functions for message authentication. In Advances in Cryptology - CRYPTO 1996, LNCS 1109, pp. 1-15. DOI: 10.1007/3-540-68697-5_1 ↗
Bu sayfayı kaynak gösterin
ScholarGate. (2026, June 3). Hash-Based Message Authentication Code. ScholarGate. https://scholargate.app/tr/cryptography/hmac
Hangi yöntem?
Bu yöntemi en yakın akrabalarının yanına koyup yan yana okuyun — kütüphane kitapları masaya serer; seçim sizindir.
- AES (Rijndael)Kriptografi↔ karşılaştır
- Diferansiyel KriptanalizKriptografi↔ karşılaştır
- RSA KriptosistemiKriptografi↔ karşılaştır