定義と目的

ディフィー–ヘルマン鍵交換(Diffie–Hellman key exchange)は、通信相手と直接秘密情報を共有せずに、双方が同じ「合意鍵(共通鍵)」を作れるようにする方式です。合意鍵は、その後の暗号通信(対称暗号など)で使うための素材として扱われます。

仕組み(簡単なモデル)

基本は「乗法(または冪乗)を行う数学的な計算」にあります。まず、公開にできる共通のパラメータ(例:大きな位数をもつグループや基になる値)を通信双方が共有します。その上で、各当事者は次を行います。

  1. 自分だけが知る秘密の値(秘密鍵に相当)を選ぶ
  2. その秘密を使って計算した公開値を相手に送る
  3. 相手から受け取った公開値と自分の秘密を使って、共通鍵につながる値を計算する

ポイントは、数学的性質により「相手の公開値を使って計算した結果」が、両者で同じになることです。相手は相手の秘密鍵を知らなくても、公開値から合意鍵の計算自体はできない(少なくとも通常の脅威モデルでは困難とされる)ため、秘密性の根拠は「逆算の難しさ」に置かれます。

安全性の制限と注意点

ディフィー–ヘルマン鍵交換の安全性は万能ではありません。代表的な注意点は次の通りです。

  • 中間者攻撃(Man-in-the-Middle)への耐性が別途必要 誰と通信しているかを確かめないまま公開値を受け渡すと、第三者がそれぞれ別の鍵交換を成立させ、通信内容を覗き見できる可能性があります。つまり鍵交換だけでは「相手が本物か」を保証できません。
  • 安全性はパラメータと実装に依存 逆算が難しいこと(離散対数などの難題に相当)に期待するため、数学的な選択や計算方法が適切でない場合は脅威が増えます。
  • 合意鍵そのものの使い方(鍵導出や同一性)に注意 鍵交換で得た値を、そのまま暗号の鍵に見なすのではなく、鍵導出(KDF)や用途に合わせた処理を行う運用が重要になります。どの処理が適切かは前提や設計に依存し、誤ると安全性が落ちます。