まず結論:鍵交換で「共通鍵の合意」はできるが、認証なしで完全な秘匿は成立しない

Diffie-Hellman鍵交換は、双方が同じ共通鍵を導き出すための暗号技術です。この共通鍵を使って、その後の通信を暗号化したり、完全性の検証に使ったりします。一方で、鍵交換そのものだけでは「本当に意図した相手と結んだ通信か」を保証できません。相手のなりすまし(中間者攻撃)が成立すると、安全だと思っていても同じ鍵交換の仕組みが別の相手同士で別々に行われてしまいます。したがって安全性やプライバシーは、鍵交換に加えて「認証」「署名」「プロトコル設計」「実装の質」といった要素に強く依存します。

仕組み:公開情報と秘密鍵から共通鍵を作る基本モデル

Diffie-Hellmanは、直感的には次の流れです。まず各側(たとえばAとB)は、自分だけが知る秘密値(秘密鍵)を用意します。次に、その秘密鍵から計算した公開値(公開鍵の一部に相当)を相手に渡します。相手から受け取った公開値と、自分の秘密鍵を使って共通鍵を計算します。

このとき重要なのは、次の点です。

  • 自分が計算できる共通鍵は、相手側も同様に計算できる設計になっている。
  • 公開値だけを見ても、共通鍵を直接復元しにくいように数論的な性質に依存している。
  • ただし「誰と合意しているか」を判断する情報(認証)が別途必要になる場合がある。

加えて、実運用では「そのセッションでどの鍵をどう作るか」をめぐる設計が複数あります。代表的には、毎回新しい秘密値を使うことで、過去の通信鍵が将来の情報で丸ごと再現されにくくする考え方が採られることがあります。この“新しさ”は、長期の秘密が漏れたときの影響をどう抑えるかに関係しますが、最終的な性質は使用されるプロトコルや実装に依存します。ここは確定的に断言しにくいため、見るべき指標を後半で整理します。

何が制限になる?鍵交換だけでは足りないポイント

Diffie-Hellman鍵交換の限界は、主に「鍵の合意」と「相手が正しい」という問題の切り分けにあります。

認証がない場合:中間者攻撃の入り口

認証がない(または弱い)場合、攻撃者が通信経路に入り、AにはBのふりをして鍵交換相手を置き換え、BにはAのふりをして別々に鍵交換を成立させる可能性があります。結果として、Aと攻撃者は同じように合意でき、攻撃者とBも別に合意できます。すると、暗号化されていても「通信の実相手」が意図した相手ではない状態になり得ます。

暗号化の強さは鍵交換だけで決まらない

共通鍵が作られても、それを使ってどの暗号方式で暗号化し、完全性(改ざん検知)をどう扱うかで安全性の体感は変わります。鍵交換は“土台”ですが、上に乗る暗号方式の選択、鍵の使い方、プロトコルの整合性が重要です。