HMAC生成ツール
使い方
- 認証したいメッセージテキストを入力します。
- HMAC計算に使用する秘密鍵を入力します。
- ハッシュアルゴリズム(SHA-1、SHA-256、SHA-384、SHA-512)を選択します。
- 入力と同時にリアルタイムでHMACが生成されます。
- コピーボタンでHMACをクリップボードにコピーできます。
HMACとは
HMAC(Hash-based Message Authentication Code)は、メッセージの整合性と信頼性を検証するための仕組みです。秘密鍵とハッシュ関数を組み合わせて一意の署名を生成します。通常のハッシュと異なり、HMACは秘密鍵の知識が必要なため、改ざんに対して耐性があります。
主な用途
- API認証:APIリクエストに署名して送信者の身元を確認(例:Webhook署名)。
- データ整合性:メッセージが送信中に改ざんされていないことを確認。
- トークン生成:セッション管理やパスワードリセットフローのための安全なトークン作成。
- デジタル署名:OAuth、JWT、TLSなどのプロトコルの構成要素として使用。
アルゴリズムの選び方
- HMAC-SHA1:160ビット出力。広くサポートされていますが、SHA-1単体のハッシュとしては脆弱とされています。HMACとしての安全性は保たれていますが、新規プロジェクトではSHA-256を推奨します。
- HMAC-SHA256:256ビット出力。最も推奨される選択肢です。AWS、Stripe、GitHub Webhookなど、ほとんどのモダンAPIで採用されています。
- HMAC-SHA384:384ビット出力。SHA-256よりも高いセキュリティマージンを提供します。政府機関や金融分野で使用されています。
- HMAC-SHA512:512ビット出力。最大のセキュリティ。64ビットシステムではネイティブの64ビット演算により、SHA-256より高速な場合もあります。
セキュリティに関する注意
- 同じ秘密鍵を異なるアプリケーションやサービス間で使い回さないでください。
- ハッシュ出力と同じ長さ以上の暗号学的にランダムな鍵を使用しましょう(例:HMAC-SHA256なら32バイト)。
- タイミング攻撃を防ぐため、HMAC値の比較には必ず定数時間比較関数を使用してください。
- 秘密鍵は厳重に管理しましょう。鍵を持つ人は誰でも有効なHMACを生成できます。
- このツールはテストやデバッグを目的としています。本番環境では各プログラミング言語の暗号ライブラリを使用してください。
プライバシー
すべてのHMAC計算はブラウザ内のWeb Crypto API(crypto.subtle)で完結します。メッセージと秘密鍵がサーバーに送信されることは一切ありません。
よくある質問
HMAC と通常のハッシュ(SHA-256 など)は何が違いますか?
通常のハッシュは入力だけから計算されるため、入力を知っていれば誰でも同じ値を再現できます。HMAC は秘密鍵も組み合わせるため、鍵を知らない第三者は正しい値を作れず、改ざん検知や送信者の認証に使えます。
入力したメッセージや秘密鍵はサーバーに送信されますか?
いいえ。HMAC の計算はすべてブラウザ内の Web Crypto API(crypto.subtle)で完結します。メッセージと秘密鍵がサーバーに送信・保存・記録されることは一切ありません。
どのハッシュアルゴリズムを選べばよいですか?
ほとんどの用途では HMAC-SHA256 が推奨で、AWS・Stripe・GitHub Webhook などでも採用されています。より高いセキュリティマージンが必要なら SHA-384/512、レガシー互換のみ SHA-1 を選んでください。
このツールで生成した HMAC を本番環境で使えますか?
本ツールはテストやデバッグ、Webhook 署名の照合などを目的としています。本番のアプリケーションでは秘密鍵をブラウザに入力せず、各言語の暗号ライブラリでサーバー側に生成・検証を実装してください。
秘密鍵はどのように扱えばよいですか?
ハッシュ出力以上の長さ(HMAC-SHA256 なら32バイト以上)の暗号学的にランダムな鍵を使い、用途ごとに使い回さないでください。鍵を持つ人は誰でも有効な HMAC を生成できるため、厳重に管理する必要があります。