sg cryptography authentication integrity non_repudiation security_measures
まず結論
MACとデジタル署名は、どちらもメッセージが改ざんされていないかを確認する仕組みです。
ただし、試験では次の違いで切り分けます。
- MAC:共通鍵を使う。改ざん検知と送信者確認に使う
- デジタル署名:秘密鍵と公開鍵を使う。改ざん検知、本人確認、否認防止に使う
一番大事な判断基準は、否認防止が必要ならデジタル署名という点です。
MACも改ざん検知はできますが、送信者と受信者が同じ鍵を持つため、第三者に対して「誰が作ったか」を強く証明する用途には向きません。
直感的な説明
MACは、合い鍵で押す封印スタンプのようなものです。
送信者と受信者が同じ鍵を持っていて、その鍵を使ってメッセージに確認用の値を付けます。受信者は同じ鍵で確認し、一致すれば「途中で変えられていない」と判断できます。
一方、デジタル署名は、本人だけが押せる印鑑と、誰でも確認できる印鑑証明のようなものです。
本人だけが持つ秘密鍵で署名し、公開鍵で誰でも検証できます。そのため、あとから「自分は送っていない」と言いにくくなります。
定義・仕組み
MACの仕組み
MAC(Message Authentication Code:メッセージ認証コード)は、メッセージと共通鍵から認証用の値を作る仕組みです。
基本的な流れは次のとおりです。
- 送信者がメッセージと共通鍵からMAC値を作る
- メッセージとMAC値を送る
- 受信者も同じ共通鍵でMAC値を計算する
- 送られてきたMAC値と一致するか確認する
一致すれば、メッセージが途中で改ざんされていない可能性が高いと判断できます。
ただし、送信者と受信者が同じ共通鍵を持っているため、どちらがMAC値を作ったかを第三者に証明しにくいという特徴があります。
デジタル署名の仕組み
デジタル署名は、送信者の秘密鍵で署名し、公開鍵で検証する仕組みです。
基本的な流れは次のとおりです。
- 送信者がメッセージからハッシュ値を作る
- 送信者の秘密鍵で署名を作る
- 受信者は送信者の公開鍵で署名を検証する
- 検証できれば、改ざんされていないことと、署名者の正当性を確認できる
秘密鍵は本人だけが持つ前提なので、デジタル署名は否認防止に使えます。
どんな場面で使う?
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試験では、鍵の種類と否認防止の有無を見て切り分けましょう。