🔐 HMAC 生成器

SHA-1、SHA-256、SHA-384、SHA-512 で HMAC メッセージ認証コードを生成。すべての計算は Web Crypto API でローカルに行われます。

HMAC 生成器について

HMAC(ハッシュベースのメッセージ認証コード)は、メッセージの完全性と真正性を同時に検証する技術です。暗号学的ハッシュ関数と秘密鍵を組み合わせ、同じ鍵を持つ者だけが再現できるダイジェストを生成します。本ツールは HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 を同時に生成し、すべて Web Crypto API でブラウザ内にローカル計算します——アップロードは一切ありません。

仕組み

  • キー付きハッシュ —— HMAC は秘密鍵を特定の方法(内側と外側のパディング)でメッセージに混ぜ、ダイジェストがメッセージと鍵の両方に依存するようにします。
  • 数式 —— HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m))。K' はブロックサイズにパディング/ハッシュされた鍵、ipad は 0x36 の繰り返し、opad は 0x5C の繰り返し。
  • 検証 —— 受信者は共有鍵でメッセージの HMAC を再計算し、受信したダイジェストと比較します。不一致は改ざんまたは鍵の誤りを示します。
  • Web Crypto API(crypto.subtle.importKeycrypto.subtle.sign)が実際の計算をネイティブに安全に行います。

ユースケース

  • API リクエスト署名 —— 多くの Web API(AWS、GitHub Webhook、Stripe)は、リクエストが認証された当事者から来たことを検証するため HMAC 署名を要求します。
  • Webhook 検証 —— X-Hub-Signature-256 ヘッダーを検証し、Webhook ペイロードが主張するサービスから実際に送信されたことを確認します。
  • トークン派生 —— HMAC は HOTP/TOTP ワンタイムパスワードや JWT 署名アルゴリズム(HS256、HS384、HS512)の基礎です。
  • 整合性チェック —— 双方が秘密を共有する場面で改ざんを検出。通常のハッシュでは不十分です。

よくある質問

ハッシュと HMAC の違いは? 通常のハッシュには鍵がなく、誰でも計算できます。HMAC は秘密鍵を必要とするため、データの完全性と真正性(送信者が鍵を知っていること)を同時に証明できます。

どのアルゴリズムを使うべきですか? 新規アプリには HMAC-SHA256 または HMAC-SHA512 を推奨。HMAC-SHA1 はレガシーシステム(HOTP など)で依然として一般的ですが、新規のセキュリティ敏感な用途には推奨されません。

秘密鍵はどこかに送信されますか? いいえ。メッセージと鍵はどちらも Web Crypto API でブラウザ内にローカル処理され、アップロードされません。

鍵はどのくらいの長さが良いですか? 目安としてハッシュ出力と同等以上(例:SHA-256 なら 256 ビット / 32 バイト)。128 ビット未満の鍵は避けてください。