HMACとは、共通鍵とデータをハッシュ関数にいれた、メッセージ認証符号のことです。
HMAC | ディジタル署名 | |
認証機能 | メッセージ認証 | メッセージ認証 エンティティ認証 |
生成に使う鍵 | 共通鍵 | 秘密鍵(ハッシュ値を秘密鍵で暗号化する) |
認証の流れ | 受信者も共通鍵とハッシュ関数を入れて、HMACを作成。 送信者から送られてきたHMACと比較して、一致していれば第三者が通信経路で改ざんしていないことがわかる。 | 受信者は、送信者の公開鍵で署名を復号し、ハッシュ値を取得する。自身でもハッシュ関数を使ってハッシュ値を生成し、比較することで改ざんされていないことを確認する。 |
保証できること | 本人以外が署名していないという保証ができない (自分と相手が知っている共通鍵を使うMACは、自分も相手もどちらでも生成可能。) | 署名者が本人であることを保証できる。 (署名者本人のみが知っている秘密鍵を使うため、本人しか生成できない。) |
- エンティティ認証:情報の発信元の実体が正しいことを確認する
- メッセージ認証:データが改ざんされていないことを確認する