> hmac | 認証 | 署名 <
// 秘密鍵でHMACメッセージ認証コードを生成
Web Crypto API
ブラウザネイティブのWeb Crypto APIを使用して安全にHMACを生成。データはブラウザから出ません。
4つのハッシュアルゴリズム
HMAC-SHA256、HMAC-SHA1、HMAC-SHA384、HMAC-SHA512に対応。用途に合ったアルゴリズムを選択。
ローカル処理
100%クライアント側処理。サーバーへの送信なし、データ収集なし、完全無料。
// HMACについて
HMACの仕組み:
HMAC(Hash-based Message Authentication Code)はRFC 2104で定義されています。暗号化ハッシュ関数と秘密鍵を組み合わせてメッセージ認証コードを生成します。内部・外部パディング(ipad/opad)を使用します。
例:
HMAC-SHA256("Hello", "secret") → 88aab3ede8d3adf94d26ab90d3bafd4a2083070c3bcce9c014ee04a443847c0b
主な用途:
- >APIリクエストの認証と署名検証
- >Webhookペイロードの検証
- >JSON Web Token(JWT)の署名
- >メッセージ整合性の検証
- >安全なセッショントークンの生成
>> よくある質問
Q: HMACとは何ですか?
A: HMAC(Hash-based Message Authentication Code)は、暗号化ハッシュ関数と秘密鍵を組み合わせてメッセージ認証コードを計算する仕組みです。
Q: HMACと通常のハッシュの違いは?
A: 通常のハッシュ(SHA-256)はデータ整合性のみ提供します。HMACは秘密鍵を追加し、鍵を知る当事者のみがコードを生成・検証できます。
Q: API署名検証でのHMACの使い方は?
A: 多くのAPI(AWS、Stripe、GitHub)がHMACを使用してリクエストに署名します。送信者は共有秘密鍵でリクエストボディのHMACを計算します。
Q: どのHMACアルゴリズムを使うべきですか?
A: HMAC-SHA256が一般的に最も推奨されています。HMAC-SHA1はレガシーシステムでまだ使われています。HMAC-SHA384とHMAC-SHA512はより高いセキュリティを提供します。
Q: 秘密鍵の長さはどのくらいが良いですか?
A: 秘密鍵はハッシュ出力以上の長さが必要です(例: HMAC-SHA256の場合は32バイト)。短い鍵はセキュリティを低下させます。