🍋
Menu
Security

HMAC

HMAC(Hash-Based Message Authentication Code)

暗号学的ハッシュ関数と秘密鍵を組み合わせてメッセージ認証コードを作成する特定の構成法で、データの完全性と真正性の両方を検証します。

技術的詳細

HMACRFC 2104)は次のように計算します:HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m))。ここでHはハッシュ関数(SHA-256)、K'はブロックサイズにパディングされた鍵、ipadは0x36の繰り返し、opadは0x5cの繰り返しです。この二重ハッシュ構成は、単純なhash(key || message)に影響する長さ拡張攻撃を防止します。HMAC-SHA256はJWT署名、API認証(AWS Signature V4)、Webhook検証(Stripe、GitHub)、鍵導出(HKDF)で使用されています。Web Crypto APIはsubtle.sign()とsubtle.verify()を通じてHMACをサポートしています。タイミングサイドチャネル攻撃を防止するため、HMAC検証時のタイミングセーフな比較が重要です。

```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('');
```

関連ツール

関連用語