ディフィー・ヘルマン鍵共有(ディフィー・ヘルマンかぎきょうゆう、Diffie?Hellman key exchange、DH)、あるいはディフィー・ヘルマン鍵交換(かぎこうかん)とは、事前の秘密の共有無しに、盗聴の可能性のある通信路を使って、暗号鍵の共有を可能にする、公開鍵暗号方式の暗号プロトコルである。この鍵は、共通鍵暗号の鍵として使用可能である。 1976年にスタンフォード大学の2名の研究員ホイットフィールド・ディフィーとマーティン・ヘルマンは、公開鍵暗号の概念を提案し、その具体的な方式の一つとして、ディフィー・ヘルマン鍵共有(DH鍵共有)プロトコルを提案した。この鍵共有方式は共通鍵暗号方式における鍵の受け渡しを安全に行うために提案された方式である。 このプロトコルは、通信を行いたい2者が各々公開鍵と秘密鍵(私有鍵ともいう)を用意し、公開鍵のみを相手に送信し、各自、自分の秘密鍵と受信した公開鍵から共通鍵を作成できる方法である。たとえ送受信されるデータ(すなわち、二人の公開鍵)を第三者がすべて盗聴していてもそれからでは(計算量的に)私有鍵も共通鍵も生成することができない所に特徴がある。 アメリカ合衆国とカナダで特許が取得された。両国でのアルゴリズムの特許期限は既に1997年4月29日に切れたので、現在では誰でも自由に利用ができる。 この方式は以下のように行われる。まず大きな素数 p {\displaystyle p} と、 p − 1 {\displaystyle p-1} を割り切る大きな素数 q {\displaystyle q} を用意する。また、 g {\displaystyle g} を ( Z / p Z ) ∗ {\displaystyle ({\mathbb {Z} }/p{\mathbb {Z} })^{\ast }} の元であり、位数が q {\displaystyle q} である値とする。この p , q , g {\displaystyle p,q,g} の値は公開されているものとする[1]。 いまアリスとボブが通信を行うとする。このときアリスとボブはお互い自分だけの知る秘密の値 a, b を選択する、この値は 0 以上 q?1 以下の中からランダムに選ぶ。(ここで、ゼロや小さな値(ga < p となる a 等)を選択すると安全性が損なわれるが、そのような確率は無視できるほど小さい。) アリスは以下の値 A を計算してそれをボブに送信する。 A = g a mod p {\displaystyle A=g^{a}{\bmod {p}}} ボブも同様に以下の値 B を計算してそれをアリスに送信する。 B = g b mod p {\displaystyle B=g^{b}{\bmod {p}}} アリスは自分だけの知る秘密の値 a とボブから送られてきて受信した値 B から以下の値を計算する。 K A = B a mod p {\displaystyle K_{A}=B^{a}{\bmod {p}}} ボブも自分だけの知る秘密の値 b とアリスから送られてきて受信した値 A から以下の値を計算する。 K B = A b mod p {\displaystyle K_{B}=A^{b}{\bmod {p}}} このときアリスとボブが計算した K A {\displaystyle K_{A}} と K B {\displaystyle K_{B}} は K A = K B = g a b mod p {\displaystyle K_{A}=K_{B}=g^{ab}{\bmod {p}}} となっていて一致するので、以後この値を共通鍵暗号方式の鍵 K {\displaystyle K} として使用する。 ここで第三者イブがこの二人の通信を傍受していて A と B の値を入手できたとしても、 A = g a mod p {\displaystyle A=g^{a}{\bmod {p}}} と B = g b mod p {\displaystyle B=g^{b}{\bmod {p}}} から K = g a b mod p {\displaystyle K=g^{ab}{\bmod {p}}} を多項式時間で計算できる方法はいまのところ存在しないので、第三者イブが秘密の共通鍵 K {\displaystyle K} を生成することは困難である。このためアリスとボブが安全に通信を行うことが可能になる。 しかしながらたとえば、イブがボブになりすましをしていて、そうとは知らずに上記の手順でアリスが(相手がボブだと思ってだまされて)相互に通信をして共通鍵 K {\displaystyle K} を作ったとすると、それ以降のアリスからボブを相手として想定して送った K {\displaystyle K} を共通鍵として暗号化された通信の内容すべては,イブによって容易に内容が解読されてしまうことに注意が必要である。
概要
プロトコルの内容