楕円曲線ディフィー・ヘルマン鍵共有

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

楕円曲線ディフィー・ヘルマン鍵共有: Elliptic curve Diffie–Hellman key exchange, ECDH)は、楕円曲線暗号公開鍵・秘密鍵ペアを用いて、安全でない通信経路で匿名鍵共有を行うアルゴリズムである[1][2][3]。両者で共有した秘密の値はそのまま、あるいは何かしらの変換をかけて、共通鍵暗号の鍵として用いることができる。この方式は、以前から存在したディフィー・ヘルマン鍵共有について、楕円曲線暗号を使うようにした変種である。

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

アリスがボブとの間に秘密鍵を構築したいが、2人の通信には第三者に盗聴される危険がある回線しかないものとする。まず、2人の間でどんな楕円曲線を使うか決めておく必要がある。そして、両者はこの楕円曲線上で、秘密鍵のd[1, n-1]からランダムに選んだ整数)と公開鍵のQQ = d G、つまり楕円曲線上での掛け算を行う)からなる鍵対を生成しておく。ここで、アリスの鍵対を(d_A, Q_A)、ボブのものを(d_B, Q_B)とする。それから、公開鍵を互いに交換する。

アリスは(x_k, y_k) = d_A Q_Bという計算を、ボブは(x_k, y_k) = d_B Q_Aという計算を行い、両者ともx_k(楕円曲線上のx座標)が得られるので、これを共有する秘密とする。ECDHを元にしたほとんどのプロトコルでは、この秘密を元にして、ハッシュ関数などに通して共通鍵を生成する手順までが標準化されている。d_A Q_B = d_A d_B G = d_B d_A G = d_B Q_Aであるので、アリスもボブも同じx_kを得ることができる。

鍵交換の過程で通信路上にアリスが流す情報は自身の公開鍵のみなので、(楕円曲線上の離散対数問題を解けない限り)本人以外がアリスの秘密鍵を知ることはできない。ボブについても同じく秘密鍵が第三者に知れることはない。この状況下では、ディフィー・ヘルマン問題英語版が解けない限り、アリスとボブ以外の第三者には共有したx_kを計算することはできない。

公開鍵は(何かしらの証明を付けた)静的なものであっても、一時的なもの(ephemeral、この場合特にECDHEと略記される)であってもかまわない。一時的な鍵を使用した場合、鍵そのものには認証がないため、別な方法で認証を行うこととなる。もし認証がなければ、通常のディフィー・ヘルマン鍵共有と同様、中間者攻撃に対して脆弱となる(ディフィー・ヘルマン鍵共有#中間者攻撃)。どちらか一方の鍵が静的なものであった場合、中間者攻撃を受けることはなくなるが、Forward secrecyのような、その他の高度なセキュリティに与ることはできなくなる。静的な鍵を持つ側では、自身の秘密鍵漏洩を防ぐため、相手の公開鍵を確認して、安全な共通鍵生成関数を利用する必要がある。

共有した秘密をそのまま鍵として使うこともできなくはないが、ディフィー・ヘルマン鍵共有で生成したことによってできる弱いビットの影響を除去するため、秘密をハッシュに通すことが推奨される。[4]

脚注[編集]

  1. ^ NIST, Special Publication 800-56A, Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography, March, 2006.
  2. ^ Certicom Research, Standards for efficient cryptography, SEC 1: Elliptic Curve Cryptography, Version 1.0, September 20, 2000.
  3. ^ NSA Suite B Cryptography, Suite B Implementers' Guide to NIST SP 800-56A, July 28, 2009.
  4. ^ Law, Laurie; Menezes, Alfred; Qu, Minghua; Solinas, Jerry; Vanstone, Scott (August 28, 1998). An Efficient Protocol for Authenticated Key Agreement. Certicom. http://download.certicom.com/pdfs/corr98-05.pdf 2012年1月19日閲覧。.