Diffie-Hellman鍵共有

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Diffie-Hellman鍵共有(デフィー・ヘルマンかぎきょうゆう)、あるいはDiffie-Hellman鍵交換(-かぎこうかん)とは、事前の秘密の共有無しに、盗聴の可能性のある通信路を使って、暗号鍵の共有を可能にする暗号プロトコルである。この鍵は、共通鍵暗号方式の鍵として使用可能である。

目次

[編集] 概要

1976年にスタンフォード大学の2名の研究員ウィットフィールド・デフィーとマーティン・ヘルマンは、公開鍵暗号の概念を提案し、その具体的な方式の一つとして、Diffie-Hellman鍵共有(DH鍵共有)プロトコルを提案した。この鍵共有方式は共通鍵暗号方式における鍵の受け渡しを安全に行うために提案された方式である。

このプロトコルは通信を行いたい2者が、各々公開鍵と秘密鍵を用意し、公開鍵のみを公開する。そして、お互いに秘密の値から作成されるデータを相手に送信し、各自、自分の秘密鍵と受信したデータから共通鍵を作成できる方法である。第三者が送受信されるデータを盗聴しても鍵を生成することができない所に特徴がある。

1997年にアルゴリズムの特許期限が切れたため、現在では誰でも自由に利用できる。

[編集] プロトコルの内容

この方式は以下のように行われる。まず値の大きな素数 p を用意する。 また g{\Bbb Z}_p の原始とする。この gp は公開されているものとする。

いま X と Y が通信を行うとする。このとき X と Y はお互い秘密の値 a , b を選択する、この値は 0 以上 p-2 以下の中からランダムに選ぶ。但し、ここで本当にゼロや小さな値(ga < p となるa等)を選択すると安全性が損なわれる。

X は次の値 A を計算してこれを Y に送信する。

 A = g^a \mod p

Y も同様に B を計算してこれを X に送信する。

 B = g^b \mod p

X は自身の秘密の値 a と受信した B から以下の値を計算する。

 K_A = B^a \mod p

Y も自身の秘密の値 b と受信した A から以下の値を計算する。

 K_B = A^b \mod p

このとき X と Y が計算した K は共に

 K_A = K_B = g^{ab} \mod p

になっているため、以後この値を共通鍵暗号方式の鍵として使用する。

ここで第三者 Z がこの二人の通信を盗聴して AB を入手しても、  A = g^a \mod p B = g^b \mod p から  K = g^{ab} \mod p多項式時間で計算する方法は現在の所、存在しないので Z は鍵 K を生成することが困難である。このため X と Y が安全に通信を行うことが可能になる。

[編集] 参考文献

  • W. Diffie and M. E. Hellman, "New Directions in Cryptography", IEEE Transactions on Information Theory, vol.IT-22, No.6, pp.644-654, Nov, 1976.

[編集] 関連項目