HMAC
HMAC(Hash-based Message Authentication Code)はハッシュ関数と秘密鍵を組み合わせたメッセージ認証コードであり、完全性と真正性を提供する。
目的
既存のハッシュ関数から安全な MAC を構成する。専用設計を必要としない。
メカニズム
HMAC(K, m) = H((K ⊕ opad) || H((K ⊕ ipad) || m))。ipad/opad は固定パディングである。ハッシュブロックより長い鍵は先にハッシュされる。安全なハッシュ(SHA-256)と併用しなければならない。MD5/SHA-1 はハッシュとして破られているが、HMAC-MD5/SHA1 は比較的安全なままである。
ユースケース
- API リクエスト署名(AWS SigV4 など)
- JWT HS256 の署名
- TLS レコード MAC
- Cookie の改ざん防止
例
- 入力
key + messageOutputHMAC-SHA256 tag32-byte authentication tag
よくあるエラー
- Using the bare hash H(key||msg) as a MAC (vulnerable to length-extension attacks)
- Always use the HMAC construction
関連用語
SHA-256
SHA-256 は SHA-2 ファミリーの 256 ビット出力版である。TLS、ブロックチェーン、暗号応用で広く使われ、現実的な攻撃は知られていない。 用語集
SHA-512
SHA-512 は SHA-2 ファミリーの 512 ビット出力版である。64 ビットプラットフォームでは SHA-256 より高速で、より高いセキュリティ余裕を提供する。 用語集
MD5
MD5 は Ronald Rivest が設計した 128 ビットの暗号学的ハッシュ関数である。衝突攻撃により安全性が崩れており、現在はチェックサムなどセキュリティを要しない用途に限られる。 用語集
JWT
JWT(JSON Web Token)は、クレームを JSON オブジェクトとして安全に伝えるコンパクトで自己完結型のトークンである。ステートレス認証と情報交換に広く使われる。 用語集