用語集

HMAC とは?

HMAC(Hash-Based Message Authentication Code)は、暗号ハッシュ関数と秘密鍵を組み合わせて固定サイズの認証コードを生成する暗号メカニズムで、受信者がメッセージの完全性と真正性の両方を検証できるようにします。

別名: Hash-Based Message Authentication Code, HMAC-SHA256

SHA-256 のような単純なハッシュ関数はデータの完全性を検証できます。ハッシュが一致すれば、データは変更されていません。しかし、ハッシュだけでは真正性を検証できません。誰でもハッシュを計算できるからです。HMAC は秘密鍵をハッシュ化プロセスに組み込むことでこれを解決します。鍵を持つ当事者のみが正しい HMAC 値を生成または検証でき、1 回の操作で完全性と認証が提供されます。

RFC 2104 で定義された HMAC 構成は、鍵が特定の段階で混合されてハッシュ関数を 2 回適用します。この二重パス構造は、鍵とメッセージをハッシュ化前に単純に連結した場合に生じる長さ拡張攻撃や他の脆弱性から保護します。HMAC-SHA256(基礎となるハッシュとして SHA-256 を使用する HMAC)は最も一般的なバリアントで、256 ビットの認証コードを生成します。

HMAC はセキュリティプロトコル全体で広く使用されています。JWT 署名、API 認証、Webhook 検証、TLS レコード保護、OAuth はすべて HMAC に依存しています。その効率性により、非対称署名方式では許容できないレイテンシが生じるネットワークパケットや API リクエストなど高ボリュームデータの認証に実用的です。

Sign a message with HMAC-SHA256

Edit either the key or the message and watch the signature change completely — the avalanche effect that makes HMAC forgery-resistant.

HMAC-SHA256 signature (256 bits, hex)
computing…

A verifier with the same key recomputes the HMAC over the received message; if it matches, the message was authored by someone who knows the key andwasn't modified in transit. Vaulted uses this exact construction to issue tamper-proof status-page tokens.

Vaulted における HMAC の使われ方

Vaulted はシークレットのステータスページ用のセキュアなトークンを生成するために HMAC-SHA256 を使用します。シークレットが作成されると、サーバー側の鍵を使ってシークレット ID に対して HMAC が計算されます。この HMAC トークンはステータスページの URL に含まれ、シークレット作成者が閲覧されたか有効期限が切れたかを確認できるようにします。ステータスエンドポイントが閲覧を消費したり暗号化されたコンテンツにアクセスしたりする手段を持たせることなく。HMAC はまた、パスフレーズから鍵を導出する際の擬似ランダム関数として PBKDF2 によって内部的にも使用されています。