ディフィー・ヘルマン鍵共有法とは
ディフィー・ヘルマン(DH, Diffie-Hellman)鍵共有法とは、共通鍵を共有する方法の一つです。
共通暗号化方式では、暗号に利用する鍵と復号に利用する鍵が同じであり、自分と相手に同じ鍵を保有することで成立します。
しかし、そもそも共通鍵を相手に安全に渡すにはどうしたらよいでしょうか。
もし、相手に渡すときに第3者に盗み見られれば、その後の暗号通信内容を読み取られてしまいます。
そこで、共通鍵を安全に渡す方法というのを考える必要があるのです。
共通鍵の渡し方
ディフィー・ヘルマン鍵共有法の特徴は、他人に知られても良い情報を共有することで共通の秘密の数を作り出すところです。
実際に共通鍵を共有しているのではなく、共通鍵を生成するための値を共有し、計算によって鍵を生成します。
鍵の作り方
初めに、素数XとYを決めます。これは通信相手に渡します。当然公開しても問題ありません。
自分と通信相手は秘密の値として、それぞれAとBを持っておきます。
自分はX^A mod Y(XをA乗した値をYで割った時の余り)を、相手はX^B mod Y(XをB乗した値をYで割った時の余り)を渡します。
X^A mod Yから、Aを求めることはできません。Bについても同様です。
自分は、(X^B mod Y)^A mod Y(XをB乗した値をYで割った時の余りをA乗してYで割った余り)を計算します。
これは、X^(A×B) mod Yと同じです。
相手方も同様に、(X^A mod Y)^B mod Yを計算します。これも、X^(A×B) mod Yと同じ値です。
つまり、素数XとYを公開することで、秘密のX^(A×B) mod Yという値を交換することができました。