定義と目的
ディフィー–ヘルマン鍵交換(Diffie–Hellman key exchange)は、通信相手と直接秘密情報を共有せずに、双方が同じ「合意鍵(共通鍵)」を作れるようにする方式です。合意鍵は、その後の暗号通信(対称暗号など)で使うための素材として扱われます。
仕組み(簡単なモデル)
基本は「乗法(または冪乗)を行う数学的な計算」にあります。まず、公開にできる共通のパラメータ(例:大きな位数をもつグループや基になる値)を通信双方が共有します。その上で、各当事者は次を行います。
- 自分だけが知る秘密の値(秘密鍵に相当)を選ぶ
- その秘密を使って計算した公開値を相手に送る
- 相手から受け取った公開値と自分の秘密を使って、共通鍵につながる値を計算する
ポイントは、数学的性質により「相手の公開値を使って計算した結果」が、両者で同じになることです。相手は相手の秘密鍵を知らなくても、公開値から合意鍵の計算自体はできない(少なくとも通常の脅威モデルでは困難とされる)ため、秘密性の根拠は「逆算の難しさ」に置かれます。
安全性の制限と注意点
ディフィー–ヘルマン鍵交換の安全性は万能ではありません。代表的な注意点は次の通りです。
- 中間者攻撃(Man-in-the-Middle)への耐性が別途必要 誰と通信しているかを確かめないまま公開値を受け渡すと、第三者がそれぞれ別の鍵交換を成立させ、通信内容を覗き見できる可能性があります。つまり鍵交換だけでは「相手が本物か」を保証できません。
- 安全性はパラメータと実装に依存 逆算が難しいこと(離散対数などの難題に相当)に期待するため、数学的な選択や計算方法が適切でない場合は脅威が増えます。
- 合意鍵そのものの使い方(鍵導出や同一性)に注意 鍵交換で得た値を、そのまま暗号の鍵に見なすのではなく、鍵導出(KDF)や用途に合わせた処理を行う運用が重要になります。どの処理が適切かは前提や設計に依存し、誤ると安全性が落ちます。
