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)
関連する用語
JWT
JSON Web TokenJWT (JSON Web Token) は、ヘッダー・ペイロード・署名の3パートをドット区切りで連結したトークン形式で、認証情報を改ざん検知付きで伝達できます...
TOTP
Time-based One-Time PasswordTOTP (Time-based One-Time Password) は、共有鍵と現在時刻から HMAC で6桁ワンタイムコードを生成する方式です。RFC 6...
AES-256
Advanced Encryption Standard 256-bitAES-256 は、米国NISTが標準化した共通鍵暗号 AES で鍵長256bitのバリアントです。AES-GCM等の認証付き暗号モードと組み合わせて利用するの...
パスワードハッシュ
Password Hashingパスワードハッシュは、平文パスワードを不可逆関数で変換し保管する技術で、Argon2id・bcrypt・scrypt が推奨されます。SHA-256 等の一般ハ...
HMACを、実際に活用する
用語の意味は分かった。次は実装。EXBANK の無料診断で、貴社で具体的にどう活用できるかをご提案します。
営業時間 平日10-18時 / 通常24時間以内に返信
