この3つは「中身が正しいことを確かめる」点で似ていますが、守れる範囲が段階的に違います。ハッシュは改ざんの検知だけ、MACは改ざん検知+相手が本物か、デジタル署名はそれに加えて『後から知らないと言わせない』(否認防止)まで。混同の元は鍵の使い方なので、そこで分けると一気に見通せます。
先に押さえる
ハッシュは鍵を使いません(誰でも同じ値を計算できる=内容の指紋)。MACは共通鍵(送り手と受け手が同じ鍵を持つ)。デジタル署名は秘密鍵で作り、対の公開鍵で検証(本人しか作れず、誰でも確かめられる)。この「鍵の持ち方」の差が、そのまま守れる範囲の差になります。
何を守れるか ― 3段階
ハッシュ
- 守る:改ざん検知
- 鍵:なし
- 弱点:改ざん者がハッシュも付け替えられる
MAC
- 守る:改ざん検知+相手確認
- 鍵:共通鍵(両者で共有)
- 限界:鍵を両者が持つので「どちらが作ったか」は決められない
デジタル署名
- 守る:改ざん検知+相手確認+否認防止
- 鍵:秘密鍵で作成/公開鍵で検証
- 強み:作れるのは本人だけ=後から否認できない
なぜ「ハッシュだけ」では足りないのか
つまずきやすい
ハッシュは鍵がないので、途中で中身を書き換えた人がハッシュも計算しなおして差し替えられます。だから「ハッシュを付けたから安全」ではありません。鍵を混ぜて、鍵を持つ人しか正しい値を作れないようにしたのがMAC。さらに作成鍵(秘密鍵)と検証鍵(公開鍵)を分けて、本人しか作れないようにしたのが署名です。
デジタル署名が「本人が作った」と言える流れ
1送り手:ハッシュを秘密鍵で署名
送り手秘密鍵を持つ本人
↓本文のハッシュ+署名(秘密鍵で作成)を送る
受け手
2受け手:公開鍵で検証
受け手
↓公開鍵で署名を検証+本文から計算したハッシュと一致するか照合
判定一致=本人が作り、改ざんなし
公開鍵で検証が通るのは、対の秘密鍵で作られたときだけ。秘密鍵を持つのは本人だけなので、「本人が作った・後から否認できない」まで言えます。ここがMACとの決定的な差です。
設問での選び方
見抜きどころ
問われるのは「何を守りたいか」です。改ざんだけ見抜きたいならハッシュ/MAC。誰が作ったかを第三者にも証明したい、後で否認させたくないならデジタル署名。「共通鍵か、秘密鍵と公開鍵か」を本文から拾えば、どれを答えるかが決まります。