2者の間で、秘密に鍵を共有する基本的な考え方です

 Diffie-Hellman鍵共有アルゴリズム
  (DH鍵共有)

ディフィー・へルマンが提案(1976年に)した鍵共有プロトコルの仕組みを以下で示します。
(1977年に開発されたRSAの公開鍵方式の基礎となる技術です。)

通信を行うAとBの両者で使う「公開用の鍵p」と 秘密鍵を用意します。
「Aの秘密鍵をa」「Bの秘密鍵をb」とします。 この時「公開用の鍵p」は、お互いに共有します。)

そして、お互いで「公開用の鍵p」と「自身の秘密鍵」から作成される データを相手に送り合います。
この受信したデータと、自分の持つ鍵とから暗号に使う共通鍵を 作成できる方法です。

これは、第三者がこのデータを盗聴しても、 鍵そのものを送信していないため、 暗号に使われる共通鍵の特定が 極めて困難になっている特徴があります。
以下で具体的に示します。
(なお以下の説明で、modは余りを意味します。 例えば 128 mod 11 は、128を11で割った余りの7です。)


AとBの間で通信するとします。
「公開用の鍵」をとします。
Aで、-2未満で小さくない乱数を、Aの秘密鍵とします。
Bで、-2未満で小さくない乱数を、Bの秘密鍵とします。

Aでmod と なるαを生成し、 それをBへを送ります。
Bでは、この受信データαより、 αmod なる を 共通鍵とします。

Bでmod と なるβを生成し、 それをAへを送ります。
Aでは、この受信データβより、 βmod なる を 共通鍵とします。

AとB双方で作られたは、次のように同じ値になるので、 それを共通鍵として暗号化に使うことになります。
(2mod p)mod p= (2mod p)mod p= 2(a×b)mod p=

  「公開用の鍵p」⇒
「Aの秘密鍵をa」「Bの秘密鍵をb」

なおこのDH鍵交換方式は、 IETFによって RFC 2539として規格化されていいます。
この方式は一般に盗聴に強いのですが、中間攻撃には弱いとされます。 よって、他の技術と併用して使われることが多いようです。