まず結論:機密性は「鍵交換+認証+暗号化」で守る
Diffie-Hellman鍵交換は、双方が同じ「共有鍵」を得るための代表的な方法です。共有鍵が作れれば、その後のデータを共通鍵暗号で保護しやすくなります。一方で、鍵交換そのものに「相手が本当に誰か」を確認する仕組みが含まれない場合、攻撃者が途中に入る状況(中間者攻撃)では機密性が十分に守れないことがあります。したがって、機密性の確保を考えるときは、Diffie-Hellman“単体”ではなく、認証や暗号化の組み合わせとして理解するのが重要です。
Diffie-Hellman鍵交換の仕組み(全体像)
Diffie-Hellmanは、インターネットで使われる通信のように、ネットワーク上に第三者が存在しても成り立つことを狙った鍵共有の考え方です。基本的な発想は次の通りです。
- 双方がそれぞれ秘密の値(秘密鍵)を持つ
- それぞれが秘密鍵から計算した公開情報を交換する
- 交換した公開情報と自分の秘密鍵を組み合わせて、同じ共有鍵を導出する
ここで重要なのは、「公開情報を見ても共有鍵を直接求めるのが難しい」ように設計されている点です。つまり、通信路に盗聴者がいて公開情報が見えたとしても、共有鍵が漏れにくいことを目標にしています。
ただし、共有鍵が同じになることと、それが「正しい相手との合意」になっていることは別問題です。中間者が鍵交換のやり取りを横取りして、攻撃者自身が別の共有鍵を両側と作ってしまうと、双方は安全な相手と通信しているように見えてしまう可能性があります。このギャップを埋めるのが認証の役割です。
関連概念:鍵交換・認証・暗号化の違い
Diffie-Hellman鍵交換を理解するうえで、次の区別が役立ちます。
- 鍵交換(Key exchange):共有鍵を作る段階。盗聴者が公開情報を見ても共有鍵を求めにくいことを狙う。
- 認証(Authentication):相手が本物かを確認する段階。なりすましや中間者を検出することが目的。
- 暗号化(Encryption):共有鍵を使ってデータ内容を読めないようにする段階。機密性はここにも依存する。
このため、「Diffie-Hellmanを使っている=必ず安全」とは言い切れません。認証が適切に行われ、暗号化が適切な設定で行われてはじめて、機密性が現実的に高まります。
主要な制限と例外:認証なし・不適切な条件
Diffie-Hellmanで機密性を高める際、変わり得る重要な条件があります。
認証がない場合のリスク
鍵交換の途中で、相手が誰かを検証する仕組みがない構成では、中間者が通信を分断して別々の共有鍵を作る状況を作れてしまうことがあります。結果として、双方は同じ相手と通信しているつもりでも、実際には攻撃者が復号・再暗号して内容を覗ける可能性が残ります。
