結論から言うと:
受信側は「秘密鍵なし」で同じハッシュ値を出せる。
でも「署名を作ること」はできない。
順番にいこう。
疑問:
受信側が受け取ったメーセージを複合して送信側と同じハッシュ値を出すには秘密鍵が必要じゃないの?
結論:
👉 違う。
ハッシュを出すのに秘密鍵は使わない。
ハッシュはただの:
だから誰でも計算できる。
少し正確に書くとこうなる:
① メール本文をハッシュ化
② そのハッシュ値を「秘密鍵で署名」する
③ S を DKIM-Signature に入れる
④ DNSから公開鍵を取得
⑤ 署名を公開鍵で検証する
ここがポイント。
Gmailは:
H1 = RSA検証(公開鍵, S)
をやる。
これで「送信側が署名したハッシュ値」が取り出せる。
⑥ 受信メールを自分でもハッシュ化する
⑦ 比較
一致すればOK。
| 処理 | 秘密鍵いる? |
|---|---|
| ハッシュ計算 | ❌ |
| 署名作成 | ✅ |
| 署名検証 | ❌(公開鍵でOK) |