メインコンテンツへスキップ
EXBANK
用語集一覧へ
— Glossary

HMACHash-based Message Authentication Code

読み: エイチマック
短い定義

HMAC は、共通鍵とハッシュ関数 (SHA-256等) を組み合わせメッセージ認証コードを生成する仕組みで、データの完全性と送信元検証を提供します。RFC 2104で規定されています。

詳細解説

HMAC (Hash-based Message Authentication Code) は、共有鍵 K とメッセージ M に対して H(K ⊕ opad || H(K ⊕ ipad || M)) を計算してMACを生成する仕組みで、RFC 2104 で標準化されています。タイミング攻撃や Length Extension Attack に耐性があり、シンプルなハッシュ + ソルト方式より堅牢です。主な用途は (1) JWT の HS256 (HMAC-SHA256) 署名 (2) Webhook の真正性検証 (Stripe / GitHub / Slack 等) (3) AWS の Signature V4 (4) TOTP の HOTP/RFC 4226 計算 (5) API 署名 などです。鍵はハッシュ出力長以上のランダム値が望ましく、SHA-256 なら32バイト以上、SHA-512 なら64バイト以上が推奨です。検証時は constant-time 比較 (crypto.timingSafeEqual 等) でタイミング攻撃を防ぐ必要があります。

実装例 / 使い方

  • 01Stripe Webhook の Stripe-Signature を HMAC-SHA256 で検証
  • 02JWT の alg=HS256 は HMAC-SHA256 ベース
  • 03constant-time 比較で署名検証 (Node.js crypto.timingSafeEqual)
IMPLEMENT

HMACを、実際に活用する

用語の意味は分かった。次は実装。EXBANK の無料診断で、貴社で具体的にどう活用できるかをご提案します。

営業時間 平日10-18時 / 通常24時間以内に返信