HMAC
Hash-based Message Authentication Code
HMAC(ハッシュベースのメッセージ認証コード)とは
ひとことで
共通鍵とハッシュ関数を組み合わせ、メッセージの完全性と送信者の真正性を検証する仕組み。
たとえると
取引先と2人だけで決めた「合言葉」を混ぜて作る封印です。第三者は合言葉を知らないので、中身を書き換えても正しい封印を作り直せません。封印が合えば「合言葉を知っている相手から、書き換えられずに届いた」とわかります。
現場ではこう使う
決済サービスは、加盟店のサーバーへ「支払い完了」の通知を送るとき、事前に共有した秘密鍵で通知内容のHMACを計算して添付します。加盟店側は同じ鍵で計算し直して値が一致するかを確認し、途中で金額が書き換えられた通知や、第三者が偽造した通知を受け付けないようにしています。
試験のポイント
EXAM POINT「ハッシュ関数+共通鍵(共有する秘密)」で「完全性と送信元の真正性」を確認するならHMAC。鍵を使わないただのハッシュでは、攻撃者が中身とハッシュ値を両方作り直すと見抜けません。デジタル署名と違い、双方が同じ鍵を持つため、否認防止(送った事実を否定させない)は提供できない点が見分けのポイントです。
混同しやすい用語との違い
- SHA鍵を使わないハッシュ関数。改ざんの有無はわかるが、誰が作ったかは保証しない
- デジタル署名秘密鍵と公開鍵のペアを使い、否認防止まで提供する