Skip to the content.

まず結論

MACとデジタル署名は、どちらもメッセージが改ざんされていないかを確認する仕組みです。

ただし、試験では次の違いで切り分けます。

  • MAC:共通鍵を使う。改ざん検知と送信者確認に使う
  • デジタル署名:秘密鍵と公開鍵を使う。改ざん検知、本人確認、否認防止に使う

一番大事な判断基準は、否認防止が必要ならデジタル署名という点です。

MACも改ざん検知はできますが、送信者と受信者が同じ鍵を持つため、第三者に対して「誰が作ったか」を強く証明する用途には向きません。


直感的な説明

MACは、合い鍵で押す封印スタンプのようなものです。

送信者と受信者が同じ鍵を持っていて、その鍵を使ってメッセージに確認用の値を付けます。受信者は同じ鍵で確認し、一致すれば「途中で変えられていない」と判断できます。

一方、デジタル署名は、本人だけが押せる印鑑と、誰でも確認できる印鑑証明のようなものです。

本人だけが持つ秘密鍵で署名し、公開鍵で誰でも検証できます。そのため、あとから「自分は送っていない」と言いにくくなります。


定義・仕組み

MACの仕組み

MAC(Message Authentication Code:メッセージ認証コード)は、メッセージと共通鍵から認証用の値を作る仕組みです。

基本的な流れは次のとおりです。

  1. 送信者がメッセージと共通鍵からMAC値を作る
  2. メッセージとMAC値を送る
  3. 受信者も同じ共通鍵でMAC値を計算する
  4. 送られてきたMAC値と一致するか確認する

一致すれば、メッセージが途中で改ざんされていない可能性が高いと判断できます。

ただし、送信者と受信者が同じ共通鍵を持っているため、どちらがMAC値を作ったかを第三者に証明しにくいという特徴があります。


デジタル署名の仕組み

デジタル署名は、送信者の秘密鍵で署名し、公開鍵で検証する仕組みです。

基本的な流れは次のとおりです。

  1. 送信者がメッセージからハッシュ値を作る
  2. 送信者の秘密鍵で署名を作る
  3. 受信者は送信者の公開鍵で署名を検証する
  4. 検証できれば、改ざんされていないことと、署名者の正当性を確認できる

秘密鍵は本人だけが持つ前提なので、デジタル署名は否認防止に使えます。


どんな場面で使う?

MACを使う場面

MACは、送信者と受信者が共通鍵を安全に共有できる場面で使われます。

たとえば、次のような場面です。

  • API通信で、リクエストが改ざんされていないか確認する
  • システム間通信で、相手が共通鍵を持つ正当な相手か確認する
  • 通信データの完全性を確認する

ポイントは、共通鍵を共有している相手同士で使うことです。


デジタル署名を使う場面

デジタル署名は、第三者にも検証してもらいたい場面や、あとから否認されたくない場面で使われます。

たとえば、次のような場面です。

  • 電子契約で、本人が署名したことを示す
  • ソフトウェア配布で、配布元と改ざんの有無を確認する
  • 電子文書で、作成者と改ざんの有無を確認する
  • タイムスタンプと組み合わせて、ある時点で存在していたことを示す

ポイントは、公開鍵で第三者も検証できることです。


よくある誤解・混同

誤解1:改ざん検知なら全部デジタル署名である

これは誤解です。

改ざん検知は、MACでもデジタル署名でも行えます。

  • 共通鍵で確認するなら、MAC
  • 秘密鍵で署名し、公開鍵で検証するなら、デジタル署名

問題文に「共通鍵」「メッセージ認証コード」とあれば、MACを選びます。


誤解2:MACでも否認防止ができる

MACでは、否認防止は弱いです。

なぜなら、送信者と受信者が同じ共通鍵を持っているからです。

第三者から見ると、MAC値を作ったのが送信者なのか、受信者なのかを区別しにくくなります。

そのため、否認防止が問われたらデジタル署名を選ぶのが基本です。


誤解3:デジタル署名は暗号化と同じである

デジタル署名は、メッセージの内容を読めなくする仕組みではありません。

  • 暗号化:内容を読めなくする
  • デジタル署名:改ざん検知、本人確認、否認防止を行う

問題文に「盗聴を防ぐ」「内容を秘匿する」とあれば、デジタル署名ではなく暗号化の話です。


誤解4:ハッシュだけで送信者確認ができる

ハッシュは、データから固定長の値を作る仕組みです。

しかし、通常のハッシュ値は誰でも計算できます。そのため、ハッシュだけでは「誰が作ったか」の確認には不十分です。

  • ハッシュ:データの要約値を作る
  • MAC:共通鍵を使ってメッセージ認証を行う
  • デジタル署名:秘密鍵で署名し、公開鍵で検証する

ハッシュは、MACやデジタル署名の中で使われることがありますが、役割は同じではありません。


MACとデジタル署名の比較

項目 MAC デジタル署名
鍵の種類 共通鍵 秘密鍵・公開鍵
検証する人 共通鍵を持つ相手 公開鍵を持つ人
改ざん検知 できる できる
送信者確認 できる できる
否認防止 弱い できる
主な用途 システム間通信、メッセージ認証 電子文書、電子契約、ソフトウェア署名
試験でのキーワード 共通鍵、メッセージ認証コード、MAC値 秘密鍵、公開鍵、署名、否認防止

SG試験での判断ポイント

問題文では、次の言葉に注目します。

問題文のキーワード 判断
共通鍵、MAC値、メッセージ認証 MAC
秘密鍵で署名、公開鍵で検証 デジタル署名
否認防止 デジタル署名
改ざん検知だけ MACもデジタル署名も候補になる
内容を秘匿、盗聴防止 暗号化
固定長の要約値 ハッシュ

特に、改ざん検知だけで判断しないことが大切です。

改ざん検知はどちらにも関係するため、鍵の種類と否認防止の有無で切り分けましょう。


確認問題

確認問題:MACとデジタル署名の違いとして最も適切なものはどれか MACとデジタル署名の違いとして、最も適切なものはどれか。 - ア:MACは公開鍵で検証し、デジタル署名は共通鍵で検証する。 - イ:MACは共通鍵を使い、デジタル署名は秘密鍵と公開鍵を使う。 - ウ:MACは盗聴防止のために使い、デジタル署名はデータ圧縮のために使う。 - エ:MACは情報の存在を隠し、デジタル署名は画像に情報を埋め込む。 **正解:イ** MACは共通鍵を使って、メッセージの改ざん検知や送信者確認を行います。 デジタル署名は、秘密鍵で署名し、公開鍵で検証する仕組みです。 アは鍵の説明が逆です。 ウは暗号化や圧縮との混同です。 エはステガノグラフィとの混同です。

まとめ(試験直前用)

  • MACは、共通鍵で改ざん検知とメッセージ認証を行う
  • デジタル署名は、秘密鍵と公開鍵で改ざん検知・本人確認・否認防止を行う
  • 「否認防止」が出たら、MACではなくデジタル署名を選ぶ

MACとデジタル署名は、どちらも改ざん検知に関係します。
SG試験では、鍵の種類否認防止の有無を見て切り分けましょう。