HMACジェネレーター
ハッシュベースメッセージ認証コード
💡 ヒント:
HMACはハッシュ関数とキーに基づくメッセージ認証メカニズムです。MD5、SHA1、SHA224、SHA256、SHA384、SHA512、SHA3、RIPEMD160アルゴリズムをサポート。
HMACジェネレーター - ハッシュベースメッセージ認証コード
このHMAC(ハッシュベースメッセージ認証コード)ジェネレーターは、シークレットキーとハッシュ関数を使用してメッセージの暗号署名を作成できます。HMACはデータインインテグリティと真正性の両方を提供し、API認証、Webhook検証、安全なメッセージ送信に不可欠です。
HMACとは?
HMACは、暗号学的ハッシュ関数と秘密暗号鍵を組み合わせた特定のタイプのメッセージ認証コードです。RFC 2104によると、HMACはMD5、SHA1、SHA256など、あらゆるハッシュ関数と使用できます。アルゴリズムは、メッセージ内容と秘密鍵の両方に依存する固定サイズの出力を生成し、メッセージへの不正な変更や鍵への不正アクセスを検出します。
サポートされるハッシュアルゴリズム
- 🔐 HMAC-MD5: 高速ですが暗号学的に弱い。レガシーコンパチビリティのみに使用。
- 🔐 HMAC-SHA1: 新しいアプリケーションでは非推奨ですが、一部のAPIでまだ使用されています。
- 🔐 HMAC-SHA256: ほとんどのアプリケーションで推奨。セキュリティとパフォーマンスのバランスが良い。
- 🔐 HMAC-SHA512: 最高のセキュリティレベル。機密データと高セキュリティアプリケーションに最適。
- 🔐 HMAC-SHA384/SHA224: 特定の要件向けのSHA-2代替バリアント。
- 🔐 HMAC-SHA3: 最新のSHAファミリ標準。長さ拡張攻撃に耐性。
- 🔐 HMAC-RIPEMD160: 一部のブロックチェーンアプリケーションとビットコイン関連システムで使用。
HMACの一般的な使用例
- ✓ API認証: AWS Signature v4、Twitter API、多くのREST APIがHMACを使用してリクエストを署名します。
- ✓ Webhook検証: GitHub、Stripe、SlackなどのサービスからのWebhookペイロードを検証します。
- ✓ JWT署名: JSON Web Tokensはトークン署名にHMAC(HS256、HS384、HS512)を使用します。
- ✓ メッセージインインテグリティ: 送信中にメッセージが改ざんされていないことを確認します。
- ✓ ファイル検証: シークレットキーベースのチェックサムでファイルの完全性を検証します。
- ✓ パスワードハッシュ化: 一部のシステムはパスワードストレージにキーストレッチング付きHMACを使用します(bcrypt/Argon2が推奨)。
このHMACジェネレーターの使い方
- メッセージ入力: 認証したいテキストまたはデータを入力します。
- シークレットキー提供: シークレットキーを入力します。このキーは安全に保管してください - キーを持つ人は誰でも有効なHMACを生成できます。
- アルゴリズム選択: ハッシュ関数を選択(SHA256がほとんどのユースケースで推奨)。
- 出力フォーマット選択: Hex、Base64、Base64url、またはBinaryフォーマットを選択。
- HMAC生成: ボタンをクリックして認証コードを計算します。
HMACセキュリティベストプラクティス
- ⚠ キーのセキュリティ: シークレットキーを安全に保管してください。バージョン管理にコミットしたり、公開したりしないでください。
- ⚠ キーローテーション: 生産システムにキーローテーションポリシーを実装し、キーが侵害された場合の露出を制限します。
- ⚠ アルゴリズム選択: 新しいアプリケーションにはSHA256またはそれ以上を使用。セキュリティクリティカルなシステムではMD5とSHA1を避けます。
- ⚠ メッセージ一意性: メッセージにタイムスタンプやnonceを含め、リプレイ攻撃を防ぎます。
HMACアルゴリズム特性
- 認証: メッセージが秘密鍵を知っている誰かから来たことを証明
- インインテグリティ: 送信中のメッセージの変更を検出
- 否認防止: メッセージが鍵保持者によって送信されたことを証拠として提供(但し書き付き)
- 固定出力: 基本となるハッシュ関数と同じ長さの出力を生成
🔒 セキュリティノート:
このツールはWeb Crypto APIを使用してブラウザ内で完全にHMAC計算を実行します。データはサーバーに送信されません。HMACはメッセージ認証を提供しますが、暗号化は提供しないことを覚えておいてください。機密データを保護するには、HMACと暗号化を組み合わせてください。常に強力でランダムに生成されたキーを使用し、クライアントサイドコードで公開しないでください。