ディフィー・ヘルマン鍵共有
ディフィー・ヘルマン鍵共有(ディフィー・ヘルマンかぎきょうゆう、Diffie–Hellman key exchange、DH)、あるいはディフィー・ヘルマン鍵交換(かぎこうかん)とは、事前の秘密の共有無しに、盗聴の可能性のある通信路を使って、暗号鍵の共有を可能にする、公開鍵暗号方式の暗号プロトコルである。この鍵は、共通鍵暗号の鍵として使用可能である。
ディフィー・ヘルマン鍵共有自体は認証手段を提供するものではないため、単独では中間者攻撃に対して脆弱である。
ここではディフィー・ヘルマン鍵共有における中間者攻撃の具体的な手順について示す。
DNS偽装・ARPスプーフィング・その他の手段により攻撃者イブがこの二人の通信を中継して A と B の値を(本来の宛先には送らずに)盗み取ったとする。
このとき攻撃者イブはそれらに対して秘密の値 c と d を選択する。この値は a や b と同じ基準で選択される。
攻撃者イブは c を用いて次の値を計算して(アリスになりすまして)ボブに送信する。
A E = g c mod p {\displaystyle A_{E}=g^{c}{\bmod {p}}}
また d を用いて次の値を計算して(ボブになりすまして)アリスに送信する。
B E = g d mod p {\displaystyle B_{E}=g^{d}{\bmod {p}}}
ボブは自身の秘密の値 b と(アリスからだと思って,実際には攻撃者イブから)受信した値 A E {\displaystyle A_{E}} から以下の値を計算する。
K B E = A E b mod p {\displaystyle K_{BE}=A_{E}^{b}{\bmod {p}}}
アリスは自身の秘密の値 a と(ボブからだと思って,実際には攻撃者イブから)受信した値 B E {\displaystyle B_{E}} から以下の値を計算する。
K A E = B E a mod p {\displaystyle K_{AE}=B_{E}^{a}{\bmod {p}}}