🔐 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.importKeyとcrypto.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 ビット未満の鍵は避けてください。