🍋
Menu
Security

HMAC

HMAC (Hash-Based Message Authentication Code)

Kriptografik hash fonksiyonu ile gizli bir anahtarı birleştirerek mesaj doğrulama kodu oluşturmak için kullanılan, hem veri bütünlüğünü hem de mesajın özgünlüğünü doğrulayan belirli bir yapıdır.

Teknik Detay

HMAC (RFC 2104) şunu hesaplar: HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m)), burada H bir hash fonksiyonu (SHA-256), K' blok boyutuna kadar doldurulmuş anahtar, ipad tekrarlanan 0x36 ve opad tekrarlanan 0x5c'dir. Bu çift hash yapısı, düz hash(key || message)'ı etkileyen uzunluk uzatma saldırılarını önler. HMAC-SHA256, JWT imzaları, API kimlik doğrulama (AWS Signature V4), webhook doğrulama (Stripe, GitHub) ve anahtar türetme (HKDF) için kullanılır. Web Crypto API, HMAC'ı subtle.sign() ve subtle.verify() aracılığıyla destekler. HMAC'ları doğrularken zamanlama güvenli karşılaştırma, zamanlama yan kanal saldırılarını önlemek için kritik öneme sahiptir.

Ornek

```javascript
// HMAC — Web Crypto API example
const data = new TextEncoder().encode('sensitive data');
const hash = await crypto.subtle.digest('SHA-256', data);
const hex = Array.from(new Uint8Array(hash))
  .map(b => b.toString(16).padStart(2, '0')).join('');
```

Ilgili Araclar

Ilgili Terimler