HMACとディジタル署名の違いとは?

HMACとは、共通鍵とデータをハッシュ関数にいれた、メッセージ認証符号のことです。

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



  • エンティティ認証:情報の発信元の実体が正しいことを確認する
  • メッセージ認証:データが改ざんされていないことを確認する