コンテンツへスキップ
uencoder

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 + message
    Output
    HMAC-SHA256 tag

    32-byte authentication tag

よくあるエラー

Using the bare hash H(key||msg) as a MAC (vulnerable to length-extension attacks)
Always use the HMAC construction

関連用語

関連ツール

References