説明

カスタム静的ディフィ−ヘルマン(Diffie−Hellman)群

【課題】敵対者による能動攻撃を阻止する静的ディフィ−ヘルマン(Diffie-Hellman)鍵共有プロトコルに対する群を選択する方法を提供すること。
【解決手段】mod p群において、偶数hが約(9/16)(log2n)2の値として選択され、値rとnは、rとnに対するふるいと素数性テストを使用して判定され、値tが、pが素数の場合に、p=tn+1を計算するために見出される。二進数体上で定義された楕円曲線群において、任意の曲線が選択され、曲線上の点の数がカウントされ、この数が、nが素数の場合の2nの値であるかが調べられ、n−1が好ましい基準に適合するかが調べられる。位数qの素数体上で定義された楕円曲線群において、nが素数であり、n−1が好ましい基準に適合する場合のn=hr+1の値が計算され、虚数乗法がnに適用されて値qと、q上で定義され、位数nを有する楕円曲線Eが生成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号の分野における静的群に関する。
【背景技術】
【0002】
公開鍵暗号は、1975年にディフィ(Diffie)とヘルマン(Hellman)により導入されたように、特に、予め共有された秘密なしでの機密通信と、否認防止特性を有するデジタル署名とを可能にした。
【0003】
公開鍵暗号に対するディフィ−ヘルマン(DH)プロトコルの最も独創的な側面は、ある問題、つまり離散対数問題に対処が困難である群と呼ばれる数学的構造を使用することであった。
【0004】
群は単に要素と、任意の2つの要素に作用する単一の演算の集合である。群の身近な例としては、加法演算についての整数(ゼロと負の整数を含む)、加法演算についての有理数、および乗法演算についての非ゼロ有理数がある。これらの身近な例は無限群であるが、有限群も存在する。暗号学者は一般的には、群の要素が固定数のビットと対応づけられるという部分的な理由のため、有限群により関心を見せてきた。有限群の例は一般的にこの分野においてよく知られている。
【0005】
最も身近な例は、モジュラ演算に基づく群である。pが素数でtは任意の整数の場合、t mod pは、tをpで除算したときの余りになる。従って、ある整数qに対してt=pq+rならば、rは0からp−1までのその両者を含む範囲にあり、r=t mod pが成り立つ。0からp−1までの両者を含む整数の集合は、sとtが組み合わされて、s+t mod pとなる、モジュラ加法演算についての群を形成する。この群はZと表記される。より一般的には、pは任意の整数であってよい。
【0006】
1からp−1までのその両者を含む整数の集合は、sとtが組み合わされてst mod pとなる、モジュラ乗法演算についての別の群を形成する。この群はZと表記され、しばしばa mod p群と呼ばれる。より一般的には、pはわずかに異なる演算を伴う、素数の任意の冪乗であってよい。これらの群の演算を記述するときは、mod pの表記は、その前後関係から明白な場合はしばしば省略される。
【0007】
群Gの部分群は、これもまたGにおける要素の部分集合であり、Gと同じ演算を有する。例えば、群Zは、その要素が1とp−1である、位数2の部分群を有する。より一般的には、ある群の任意の要素gに対して、<g>と表記される最小の部分群があり、<g>要素を含む。<g>は、整数xに対する要素gの集合により正確に与えられ、ここでgは、gのx乗の積を意味する。Zのような加法表記についての群においては、冪乗gはxgと表記される。要素gは<g>に対する生成元である。群は、生成元を有していれば巡回群であり、従って、<g>は本質的に巡回的である。群ZとZもまた巡回群であるが、一般的には、群は巡回的である必要はない。
【0008】
群の位数は要素数である。群Zは位数pを有し、群Zは位数p−1を有する。要素gの位数は、部分群<g>の位数である。gは位数nを有すると仮定される。
【0009】
演算が乗算で表記される群においては、離散対数問題は、「gとwが与えられたとき、w=gとなるような整数xを求めよ。ただし、gはgのx乗の積を意味する」と述べることができる。この問題は通常、そのような整数xが存在する場合、つまり、wが<g>の要素である場合に要求される。一般対数問題は、xが整数である必要はなく、群が加法性を有しており、非整数の冪乗が定義できる場合にのみ定義できる。
【0010】
いくつかの離散群において、離散対数問題(DLP)を解くのは難しい。ディフィ(Diffie)とヘルマン(Hellman)は、DLPが公開鍵暗号に対して、第1の存在可能な解を求めるのは「難しい」という事実を活用した。この場合、アリス(Alice)は任意の整数xを選択し、ボブ(Bob)に群の要素gを送り、ボブ(Bob)は任意の整数yを選択し、アリス(Alice)に群の要素gを送る。次に、アリス(Alice)はz=(gを計算し、ボブ(Bob)はz’=(gを計算する。明らかにz=z’=gxy=gyxであるので、アリス(Alice)とボブ(Bob)は同一の値を算出できる。いかなる第三者もzを算出できなければ、アリス(Alice)とボブ(Bob)は、共有された秘密について合意したことになる。共有された秘密は、アリス(Alice)とボブ(Bob)の間で通信されるメッセージを暗号化するのに使用できる。このプロトコルがディフィ−ヘルマン(Diffie-Hellman)鍵共有である。このプロトコルより以前は、アリス(Alice)とボブ(Bob)は秘密裏に、zについての合意のためにまず会う必要があった。このプロトコルにより、アリス(Alice)とボブ(Bob)はまず会うという必要がなくなる。
【0011】
これは、gとgの値が公開されるので、公開鍵暗号と呼ばれる。これらは公開鍵と呼ばれ、xとyは私有鍵と呼ばれている。対(x,g)は、鍵ペアと呼ばれる。敵対するイブ(Eve)は、公開鍵を見ることができたとする。イブ(Eve)がDLPを解くことができれば、彼女はgとgからxを求めることができる。xにより、イブ(Eve)はアリス(Alice)と同じ方法で、つまりボブ(Bob)の公開鍵gと、アリス(Alice)の私有鍵xを使用して、zを算出できる。従って、共有された秘密は秘密ではなくなり、イブ(Eve)はこれを使用して、アリス(Alice)とボブ(Bob)がお互いに送った暗号化メッセージを解読できる。従って、ディフィ−ヘルマン(Diffie-Hellman)鍵共有プロトコルの安全性に対する必要条件は、DLPが「難しい」問題であるということである。イブ(Eve)がDLPを解くことができてはならないのである。
【0012】
幸いなことに、暗号学者がDLPは難しいと信じている群が存在する。DLPが難しい群は、主に2つのよく知られた群のクラス、つまり、有限体の乗法群の部分群と、楕円曲線群の部分群である。楕円曲線群は他のDLP群に対して、公開鍵の通信と格納により狭い帯域幅を使用し、より迅速な演算を可能にするという優位点を有している。
【0013】
静的ディフィ−ヘルマン(Diffie-Hellman)鍵共有は、ある当事者の一方またはその両者が経時変化をしない鍵ペアを有するディフィ−ヘルマン(Diffie-Hellman)鍵共有の重要な変形である。アリス(Alice)が静的鍵ペアを有していれば、彼女の私有鍵xと公開鍵gは、すべての処理の間、同じであり続ける。この優位点は、アリス(Alice)が証明機関に彼女の公開鍵gに署名させることができ、ボブ(Bob)はその結果としての証明をアリス(Alice)から要求するのではなく、データべースから探すことができる。この1つの適用は、ボブ(Bob)が暗号化された電子メールをアリス(Alice)に送るときである。アリス(Alice)は、電子メールを暗号化する前に、ボブ(Bob)にgを送る必要がない。その代わりに、ボブ(Bob)は、彼の住所録でも、または他の公共住所氏名録であってもよい、あるデータベースからgを探す。gに対する証明は、アリス(Alice)が(そしてアリス(Alice)のみが)電子メールを暗号化できるということをボブ(Bob)に更に保証する。
【0014】
これらの群のいくつかにおいて、ディフィ−ヘルマン(Diffie-Hellman)鍵共有は、今日では仮想プライベートネットワーク(VPN)を保護するためのIPSecプロトコルにおいて共通して使用されている。ディフィ−ヘルマン(Diffie-Hellman)鍵共有はまた、静的変形を含めて、トランスポート層セキュリティ(TLS)(ウェブサイトを安全にするために使用される)、電子署名付き電子メール(S/MIME)(電子メールを安全にするために使用される)、またはセキュアシェル(SHH)(コンピュータへのリモートログインのために使用される)のような、共通して使用されるインターネット技術タスクフォース(IETF)セーフティプロトコルの随意の機能である。従って、ディフィ−ヘルマン(Diffie-Hellman)鍵共有を、可能な限り安全にすることは望ましいことである。
【0015】
静的ディフィ−ヘルマン(Diffie-Hellman)鍵共有の安全性は、単に離散対数が難しいということ以上のことに依存する。特に、敵対者がアリス(Alice)の静的私有鍵xを決定する方法は、アリス(Alice)に特別に選択された公開鍵gを送り、アリス(Alice)から結果としての共有された秘密z=gxyを得ることである。ほとんどの群において、この能動的攻撃によりxを見出すことは、離散対数問題を直接解くよりもはるかに易しい。
【0016】
当業者にとっては、上記の攻撃は2つの面において完全に現実的というわけではない。それにも拘わらず、この性質を有するそのような攻撃は考慮に値するほど重要であるという考えが十分に確立されている。
【0017】
まず、被害者アリス(Alice)は共有された秘密zを敵対者には明らかにしないであろう。しかし、zの目的は使用されることであり、zが使用される正確な方法の定量化は定義するのが困難である。zの任意の使用は、ある種の暴露という結果になる。従って、暗号学者は、被害者が自分の私有鍵操作の結果を暴露するような選択された暗号文攻撃を考慮することが賢明であることを見出した。更に、選択された暗号文攻撃に対する抵抗を示すことは、より弱い攻撃もまた抵抗されることを意味する。賢明なことに、暗号学者は、最も弱い攻撃だけでなく、可能性のある最も強い攻撃に抵抗することを求めた。従って、zが暴露されるということを仮定することは賢明であり、かつ、まったく非現実的というわけではない。
【0018】
二番目に、ディフィ−ヘルマン(Diffie-Hellman)鍵共有の最も標準化されたバージョンにおいては、共有された秘密zは、たった1つの目的のために、つまり鍵を導出するためにのみ使用される。この目的のため、鍵導出関数(KDF)が使用される。このように、アリス(Alice)はk=KDF(z)を計算する。鍵導出関数は通常は、一方向性関数として選択され、そのため、kからだけでは、zを再構築する既知の方法はないことを意味する。従って、上記の攻撃においては、アリス(Alice)が敵対者に、zよりもkを暴露してしまう可能性の方が高い。しかし、攻撃のためにはzを必要とする。アリス(Alice)がkしか暴露しない場合は、xを見出すために攻撃は使えない。KDFは一方向性なので、攻撃者はkの暴露された値からzを復旧することはできない。
【0019】
上記の攻撃を考慮する以前は、KDFを使用することは、多少、より重要でない安全性の恩恵を有するということは既知であった。これらの1つは、共有された秘密zはしばしばランダムに識別可能であるということであった。zはランダムに識別可能なため、鍵としての使用は理想的ではない。しかし、上記の攻撃を考慮するまでは、zがxについての何らかの情報を実際にリークしたということは知られていなかった。
【0020】
多くのプロトコルと、ディフィ−ヘルマン(Diffie-Hellman)鍵共有の実践は、KDFの使用に関してはそれほど厳格ではない。スマートカードのある実践において、スマートカードはzをスマートカードリーダーに暴露し、スマートカードリーダーはKDFを適用する。そのようなシステムにおいて、悪意のあるスマートカードリーダーは、攻撃と、スマートカードからのz値を使用して、スマートカード上の私有鍵xを推測できる。ベーシックエルガマル(ElGamal)暗号化のような、あるプロトコルにおいては、ショームとヴァン・アントワーペン(Chaumand van Antwerpen)の否認不可署名は、アリス(Alice)が暴露するzのエンティティを、プロトコルの一部とするように設計されている。従って、これらのプロトコルは攻撃に対して脆弱である。しかし、これら2つのプロトコルは、KDFの恩恵が知られる前に設計された。これらのプロトコルは、KDFを適用することにより、容易に補正できる。実際、ベレア(Bellare)とロガウェイ(Rogaway)により設計された(DHAES)は、特に、KDFを共有された秘密zに、それを鍵として使用する前に適用した、エルガマル(ElGamal)の改良として設計された。
【0021】
しかし、KDFを追加することでは、容易に修正できない他のプロトコルも存在する。そのようなプロトコルの1つは、フォード−カリスキー(Ford-Kaliski)の鍵検索プロトコルである。このプロトコルでは、基点gはクライアントのパスワードの関数であり、アリス(Alice)はサーバーである。クライアントは、任意のyを選択してgをアリス(Alice)に送る。プロトコルが機能するためには、アリス(Alice)は、彼女がディフィ−ヘルマン(Diffie-Hellman)鍵共有を行っているクライアントすべてに対して、結果としての共有された秘密zを暴露しなければならない。クライアントは、zからクライアントのパスワードとサーバーの私有鍵x両者の関数である静的値gを導出する。静的値gは、通常のパスワードよりも推測するのが困難なので、検索鍵、または堅牢パスワードと称せられる。鍵検索、またはパスワードの堅牢化は、フォード−カリスキー(Ford-Kaliski)プロトコルの主要な目的である。クライアントはこれを、z=gxyuを計算することで行い、ここでuは、yuが指数空間で1に等しくなるような値である。プロトコルは、アリス(Alice)がKDFをzに適用していると、クライアントは静的値を復旧できないので機能しない。敵対者は、悪意のあるクライアントがzの値を使用してアリス(Alice)の私有鍵xを導出するように仕向けることができる。敵対者は、今はxを知っているので、gを推測することは、パスワードgを推測する程度に容易である。特に、敵対者は、辞書的検索を行って、堅牢化パスワードを非常に迅速に決定できる。従って、この攻撃は、フォード−カリスキー(Ford-Kaliski)プロトコルの主要な目的を打ち破る。
【0022】
まったく異なる様相は、静的ディフィ−ヘルマン(Diffie-Hellman)問題は難しいということである。より正確に述べれば、私有鍵xを知らずにwからwを計算することは難しいということである。w=gとすることは、静的ディフィ−ヘルマン(Diffie-Hellman)プロトコルを破ることが、xを見出すことと同じ程度に難しいことを示している。これは、上記の攻撃を考慮するとパラドックスのように見えるが、実際はそうではない。上記の攻撃においては、敵対者は行動的である。敵対者は、被害者を利用してディフィ−ヘルマン(Diffie-Hellman)問題を解いてgを求めようとする。これは、xを見出す問題と等価である、静的ディフィ−ヘルマン(Diffie-Hellman)問題を解く能力を敵対者に与える。より正確に述べれば、静的DH問題は、ある因子内でxを見出すこととほとんど同程度に難しい。
【0023】
アリス(Alice)が攻撃を、例えばKDFにより、何とか防いだとしても、静的DH問題を解くことは、xを見出すこととほとんど同程度に難しいということは事実として変わらない。これは、誰も静的ディフィ−ヘルマン(Diffie-Hellman)問題を解くことができないということ、つまり、私有鍵yを知っている彼女とボブ(Bob)以外の誰も、共有された秘密zを計算することができないという確信をアリス(Alice)に与える。この性質の結果は、証明可能安全性として知られている。
【0024】
DH問題についての、以前の証明可能安全性の結果は、静的変形には対処しなかった。従って、以前の結果は、アリス(Alice)が私有鍵を使用することについて、同程度の確信を彼女に提供しなかった。また、以前の安全性の結果に対応する既知の攻撃もなかった。DHについての証明可能安全性の結果の有効性は、DH群の選択に依存する。従って、静的DH問題を含めて、DH問題が難しい群を使用することが望ましい。
【0025】
従って、本発明の目的は、上記の不都合な点を除去あるいは緩和することである。
【発明の概要】
【課題を解決するための手段】
【0026】
1つの態様において、本発明により、静的ディフィ−ヘルマン(Diffie-Hellman)鍵共有プロトコルが、敵対者による能動的攻撃を防ぐのための、mod p群を選択する方法が提供され、本方法は、偶数値hを選択するステップと、rとnが素数のとき、n=hr+1という関係を満たすrとnの値を探すステップと、pが素数のとき、p=tn+1を計算するためのtの値を探すステップを含む。
【0027】
別の態様において、本発明により、静的ディフィ−ヘルマン(Diffie-Hellman)鍵共有プロトコルが敵対者による能動的攻撃を防ぐための、二進数体上で定義された楕円曲線群を選択する方法が提供され、本方法は、任意の曲線を選択するステップと、曲線上の点の数をカウントするステップと、nが素数で、n−1が好適な基準を満たすとき、曲線上の点の数が2nであることを調べるステップを含む。
【0028】
更に別の態様において、本発明により、静的ディフィ−ヘルマン(Diffie-Hellman)鍵共有プロトコルが敵対者による能動的攻撃を防ぐための、位数qの素数体上で定義された楕円曲線群を選択する方法が提供され、本方法は、nが素数でn−1が好適な基準を満たすとき、n=hr+1を計算するステップと、nについての虚数乗法を実行して、値qと、位数nを有するq上で定義された楕円曲線Eを生成するステップ含む。
例えば、本発明は以下の項目を提供する。
(項目1)
素数の位数pと位数nの生成元gを有する有限群Gのパラメータを決定する方法であって、
i)hが整数で、rが素数で、hがrと比較して相対的に小さい場合に、n=hr+1の形式のnの値を選択するステップと、
ii)偶数の整数tを選択して、tが偶数の整数の場合の、tn+1を計算するステップと、
iii)p=tn+1の計算された値に対して、素数性を調べるステップと、
iv)位数p上の計算された値が素数の場合は、それを採用するステップと、
を備える方法。
(項目2)
nの近似値が選択され、hがn1/3よりもかなり小さくなるようにhが選択される請求項1に記載の方法。
(項目3)
nは素数であることが要求され、nの値は素数性がテストされる項目1に記載の方法。
(項目4)
rとnの値は、小さな素数を有する値をふるいにかけて除外することにより選択される項目1に記載の方法。
(項目5)
上記群は、楕円曲線群であり、上記方法は、曲線上の点をカウントし、点の数が2nであることを判定するステップを含む項目1に記載の方法。
(項目6)
位数pと位数nの生成元gを有する有限群Gであって、hが整数で、rが素数の場合に、n=hr+1であり、tが整数の場合に、p=tn+1である有限群G。
(項目7)
位数pと位数nを有する生成元gを有する群Gの、暗号システムにおける使用のために領域パラメータを検証する方法であって、hが整数であり、rが素数の場合にn=hr+1であることと、tが整数の場合に、p=tn+1であることを判定するステップを備える方法。
【図面の簡単な説明】
【0029】
【図1】暗号システムの模式図である。
【図2】mod pの実施形態におけるステップを示すフローチャートである。
【図3】第1単純化楕円曲線の実施形態におけるステップを示すフローチャートである。
【図4】第2単純化楕円曲線の実施形態におけるステップを示すフローチャートである。
【発明を実施するための形態】
【0030】
図1を参照すると、1組の通信者A、Bは、データ通信リンク12により接続されている。各通信者A、Bは、暗号装置14を有しており、この暗号装置は、リンク1上での確実な通信を可能にするために確立されたプロトコルに従って、公開鍵暗号操作を行う。暗号装置14は、他のエンティティと共有されているパラメータの暗号領域内で作動する。
【0031】
通信者A、Bに共有された領域パラメータは、群Gと、群Gの位数pと、位数nの群の生成元gを含む。
【0032】
本発明は、楕円曲線群と、有限体の乗法的部分群、より一般的にはmod p群として知られている、この両者に適用される。mod p群はより理解し易いので、mod pの実施形態20をまず説明して、その概略を図2に示す。両者の場合に共通する本発明の態様は、このように更に容易に理解できる。それにも拘わらず、本発明の好適な実施形態は、楕円曲線群についてであるが、これは性能特性においていくつかの優位点を有するからである。
【0033】
(mod pの実施形態)
説明を簡単にするために、Zにおけるディフィ−ヘルマン(Diffie-Hellman)基点または生成元gは素数の位数nを有すると仮定する。当業者にとっては、これはgが素数でない位数を有する場合にも拡張できることは明白であろう。
【0034】
領域名パラメータの安全性は、n−1の整数因子uのサイズに依存する。ある既知の因数uがn1/3に近いときは、上記の攻撃10は、約3n1/3の代償を必要とする。これは、約n1/2の代償を必要とする一般的DLP攻撃よりかなり小さい。任意のnは、一般的にn1/3に近い因数uを有することは知られているので、nをランダムに選択することは、上記の攻撃10を回避することにはならない。従来技術においては、nは一般的にはハッシュ関数の出力として選択されたが、これはnを効果的に任意の数にするが、攻撃を回避しない。nを適切に選択することにより、n1/3に近い因数を有することを回避できることが判明した。パラメータの選択とテストは、必要な計算を実行するようにプログラムされた計算装置を使用して行えることは理解されよう。そのような計算の結果は、装置14上で暗号機能を実践するために使用できる領域パラメータの集合である。
【0035】
第1実施形態において、そのような因子は、n=hr+1を選択することにより回避され、ここでrは素数で、hはrと比較して相対的に小さな整数であり、n1/3よりは十分に小さい整数である。n−1の因子は、fまたはfrの形式であり、ここでfはhの因子である。hがn1/3よりかなり小さい場合は、因子fもそうであり、これはfが高々hであることによる。hがn1/3よりかなり小さい場合は、rはn2/3よりかなり大きく、因子frもn1/3よりかなり大きい。従って、n−1のすべての因子は、n1/3よりかなり小さいか、または大きい。従って、静的ディフィ−ヘルマン(Diffie-Hellman)への攻撃は回避される。
【0036】
nをhr+1の形式で選択したので、pを選択することも必要となる。群論の標準理論では、要素の位数はその群の位数を割ることができる。gはZの要素なので、その位数nはZの位数を割ることができなければならず、それはp−1である。従って、ある整数tに対しては、p=tn+1となる。
【0037】
群Zは、DLPを解くための指標計算アルゴリズムを有しているので、共通の実践は、nよりかなり大きなpを選択することである。その考えは、位数nの群<g>における一般的DLP解法アルゴリズムに、Zにおける指標計算アルゴリズムとほぼ同じ代償を持たせようということである。例えば、nが約2160の場合、pは約21024であり、従って、これら両者のDLP解法アルゴリズムは、280の群演算とほとんど等価の代償を有することになる。nに対する他の共通選択は約2256であり、pに対しては23072であり、ここにおいて両者のDLP解法アルゴリズムは約2128の演算をすることになる。そのような小さなnを選択する主な優位点は、群<g>における冪乗は、指数がより小さいのではるかに高速であるということである。
【0038】
上記に関連するサイズのpとnを得るためには、ほぼ同じサイズのtを選択しさえすればよい。第1例においては、tを約21024−160=2864として選択し、第2例ではtを約22816として選択する。pとnは奇数なので、tを偶数として選択する必要がある。値t mod 3、t mod 5、・・・、についての類似の観測もまた行うことができる。
【0039】
一般的なプロセスは、まずnを所望の形式で選択し、tのいくつかの値を、pを素数にするのを見つけるまで数回試みる。小さな確率内では、pが素数であることを判定する高速テストが存在する。これらのテストは、素数でないtに対する候補値を即座に削除する。従って、好適なtを見出すことが非常に迅速である。実際、nから開始して、これがpを見出す最良の既知の方法である。
【0040】
hr+1の形式のnを構築するために、まずhに対する近似のサイズ、または正確なhの値を選択し、rの近似サイズを、nの所望の近似サイズで決定する。実際には、決定された範囲における種々のhとrを選択でき、それぞれは適合性を調べられる。rの選択された値は、その素数性が調べられ、n=hr+1が計算され、nの素数性が調べられる。ふるいの技術を使用して、2、3、または5のような小さな素数因子を有しないrとnを選択することができる。これにより、その素数性を調べなければならない値rとnの数が削減される。hを使用して、より効率的に、nとrの両者に対してふるいを適用できる。rとnの両者が素数であり、従って奇数なので、hは偶数でなければならないことに留意されたい。
【0041】
hに対する近似サイズまたは値を選択するときにある注意が必要である。もっとも小さい数の選択はh=2である。しかし、この選択は、小さ過ぎて、h=2は上記の攻撃を回避するが、本技術の適用において、証明可能安全性の結果をも回避してしまう。
【0042】
hに対しては範囲があり、その範囲においては、上記の攻撃は証明可能安全性の結果が有効である間は阻止される。この範囲はスカラー乗法を行うのに必要な群演算の数に依存する。hの最適値は、この値の0.5倍から2倍の範囲のhの値を使用できるが、(9/16)(log2n)2となる。約このサイズのhに対して、静的ディフィ−ヘルマン(Diffie-Hellman)の問題は、容認できる因子内で、静的ディフィ−ヘルマン(Diffie-Hellman)私有鍵を見出すのとほとんど同じくらい難しい。この因子は、hのすべての選択に対して最適化される。更に、hのこの選択により、上記の攻撃は約n1/2の群演算と等価の代償を必要とする。これは、攻撃がもはや、xを見出す一般的DLP解法アルゴリズムより優れたものではないことを意味する。従って、そのような状況ではこの攻撃は適切ではない。
【0043】
要約すると、まず約(9/16)(log2n)2のオーダーの偶数hを選択し、rとnに対して、nが素数として選択されるかどうかのふるいおよび素数性テストを使用してrとnを検索する。最終的に、p=tn+1が素数となるようなtを検索する。
【0044】
本方法の追加的な効率改善もまた可能である。本方法においては、pを法とする還元をより効率的にする形式をpが有するようなnとtを検索する。例えば、pが小さなハミング重みを有している場合、pを法とする還元はより効率的になる。これによりモジュラ乗法と、Zの群演算がより効率的になる。
【0045】
本方法の追加的な安全性改善もまた可能である。rの値は、検証可能に任意に選択できる。rの値はハッシュ関数の出力として選択できる。
【0046】
これら2つの追加的な改善は、ランダムに検証可能にrを選択し、pに効率的なモジュラ還元を持たせる値tを検索することにより組み合わせることができる。
【0047】
そのような敵対者は、特別なプロトコルの特別な実践に対しては非現実的という理由で、上記の攻撃に関心がなければ、ディフィ−ヘルマン(Diffie-Hellman)群を異なるように選択できる。n1/3に近いサイズの因数uを回避することは不要であるかもしれないが、静的ディフィ−ヘルマン(Diffie-Hellman)問題と、一般的ディフィ−ヘルマン(Diffie-Hellman)問題の両者が難しいということが依然として望まれる。静的ディフィ−ヘルマン(Diffie-Hellman)問題を難しくするためには、約(9/16)(log2n)2のサイズのn−1の因子が必要となる。既存の数論の知識では、任意のnがそのようなサイズの因数を有するかどうかは明確ではない。従って、任意のnを選択して、そのような因数を探すか、そのようなサイズの因数hでnを構築することができる。後者は、hを選択し、任意のr(素数である必要はない)を選択し、n=hr+1について素数性をテストすることで行われる。
【0048】
短命的、または両側ディフィ−ヘルマン(Diffie-Hellman)問題が難しいことを確実にするために、既存の証明可能安全性の結果を使用できる。モーラー(Maurer)とウルフ(Wolf)の結果は、通常はサイズnの有限体上で定義された楕円曲線である補助群を見つけることを要求する。補助群は、滑らかな位数(大きくない素数因子)を有しなければならない。そのような補助群を探すことは、相当な労力を必要とし、nのより大きな値に対しては、手が届かない範囲にある。実際、そのような群を見つけることは、nと同じサイズの因数の整数とほぼ同じ程度に難しいことが知られている。
【0049】
デン・ボア(denBoer)のより以前の結果は、n−1は滑らかであり、(短命的)ディフィ−ヘルマン(Diffie-Hellman)問題は、ほとんどDLPと同程度に難しいと述べている。
【0050】
本技術の更なる改良は、従って、sが滑らかな整数である、n=1+sを選択する方法を含むことになる。このsは、正確なサイズが得られるような、小さな素数の積として見出せる。そしてnに対して素数性がテストされる。sのいくつかの値が試される。nをこのように選択する利点は一般的には、n−1が(9/16)(log2n)2に十分に近いサイズの因数を有することを意味し、それによりディフィ−ヘルマン(Diffie-Hellman)問題が単なる短命的ディフィ−ヘルマン(Diffie-Hellman)問題ではなく、難しいということを確実にすることである。
【0051】
そのようなnにより、素数p=tn+1は上記のように見出せる。更に、この方法により、小さなハミング(Hamming)重みのような、特別構造のnとpを求めることもできる。
【0052】
(楕円曲線実施形態)
原理的に、上述した技術は、楕円曲線群の場合にも機能する。より正確にいえば、nに対する望ましい基準は同一である。しかしこの場合は、位数nの生成元gはZの要素ではなく、楕円曲線群Eの要素である。mod pの場合、いったんnが決定されると、群Zを見出すことは比較的に単純である。このことは、楕円曲線についてはいえない。決定されたnに対して、楕円曲線群Eを見出すことは依然として非常に困難である。
【0053】
楕円曲線は、ユーザー演算を、群Zに対するよりも、より効率的にするので、楕円曲線の場合は、本発明の好適な実施形態である。この実施形態の本方法は、Zの場合に対するよりもわずかに複雑であるが、それにも拘わらず価値がある。
【0054】
説明をより明確にするために、楕円曲線実施形態における、本方法の簡略化されたいくつかの形態を図3と4に示す。
【0055】
第1簡略化形態30において、楕円曲線は、二進数体上で定義される。そのような曲線に対して、楕円曲線群の位数を決定することは非常に容易である。簡略化された方法は、任意の曲線を選択し、点の数をカウントし、点の数が、nが素数のときに2nであることを調べ、n−1が所望の基準に適合するかを調べる。好適な基準は、n−1=hrであり、ここでrは素数で、hは約(9/16)(log2n)2である。代替としての基準は、上記の攻撃を心配しないならば、n−1が滑らか、ということである。
【0056】
第2簡略化形態において、楕円曲線は位数qの素数体上で定義される。qの値は、nの値を決定した後に決定される。nの値はmod p群の場合のように選択される。nの値は、好適な基準または代替基準に適合できる。そして、ANSIx9.62またはIEEE13.63で記述されているような、虚数乗法が使用されてqの値と、位数nを有するq上で定義された楕円曲線Eを見出す。
【0057】
通常は、虚数乗法は、qのある値はユーザーによりよい効率性をもたらすので、まずqを選択することを含む。しかし、虚数乗法はnが最初に選択されて機能する。qとnが、虚数乗法の第1フェーズである正確な数理論関係でいったん見出されれば、第2フェーズは、楕円曲線Eを定義する係数を決定する。
【0058】
第2簡略化方法の不都合な点は、結果としてのqが、nから約n1/2の距離内のすべての整数であるnのハッセ(Hasse)区間において、多少任意な形式を有することである。よりよいユーザーの効率のために、二進展開における小さなハミング(Hamming)重みのようなqの特別な形式が強く所望されている。
【0059】
すなわち、qとnの両者が特別形式を有することが所望されている。qに対する形式は効率のためであり、nに対する形式は安全性のためである。これを行うために、虚数乗法の第1フェーズはわずかに修正される。所望される特別形式のqとnが試され、この対をテストして、虚数乗法(CM)により要求される条件に適合するかが調べられる。この条件は、比較的簡単にテストできる。qが与えられても、条件に合うnを解くことは決して容易にはならず、その逆もいえる。
【0060】
虚数乗法の第1フェーズの修正は、所望形式のqとnのいくつかの異なる対を試し、qとnに対するCM法の条件をテストし、CM法の条件が満たされるまで繰り返し、CM法の通常のプロセスを使用して、楕円曲線Eの定義係数aとbを見出すことである。
【0061】
CM法は、既知の方法であるが、その修正形式は既知ではない。本発明の好適な実施形態で記述されたように、CM法の修正形式により、よい高効率かつより安全なディフィ−ヘルマン(Diffie-Hellman)楕円曲線群を見出すことができる。
【0062】
この方法の妥当性を示す例として、代替基準、つまり、n−1が滑らという基準を使用して、本発明の発明者は、両者が素数である、n=1+55(2286)とq=9+55(2288)の対を見出した。CM法の技術に精通している者は、この対に対する判別式は55であることは理解するであろう。この判別式は、クロネッカ(Kronecker)の類数(class number)が1より大きく、従って、楕円曲線の自己準同形環は、一意分解整域ではないという意味で重要である。特にこれは、楕円曲線Eの係数aとbは、所定の表からは見出せないこと、そして、位数qの有限体上のかなり大きな階数の多項方程式を解くことにより計算しなければならないことを意味する。
【0063】
上述のように、本技術は所望の特性を有する領域パラメータを生成するために使用できる。これらの特性が生成される方法はまた、それ自身、攻撃に対して脆弱ではないことを確実にするために、第三者により供給された領域パラメータの効力を調べるためにも適合している。パラメータはpとnの値が要求された形式を満足することを確実にするために調べることもできる。パラメータがこれらの基準を満たさない場合は、領域パラメータは破棄される。
【0064】
本発明は、ある特別な実施形態を参照して記述されてきたが、その種々の変形は、ここに添付された請求項で概要を記載される本発明の精神と範囲を逸脱することなく可能であることは当業者には明白であろう。上記に引用したすべての参考にした開示内容は、参考文献として本明細書に組み込まれている。

【特許請求の範囲】
【請求項1】
有限体Zの位数pと、前記有限体Zの乗法群Zの部分群の位数nとを確立する方法であって、前記方法は、データ通信システムにおいて通信者によって行われ、前記通信者は、暗号演算を行う暗号装置を有し、
前記方法は、
i)前記暗号装置が、n=hr+1の形式のnの値を取得するステップであって、hは整数であり、rは素数であり、rはn2/3より大きく、n−1の全ての因数は、n1/3よりかなり大きいか、または、n1/3よりかなり小さい、ステップと、
ii)前記暗号装置が、偶数の整数tを取得し、tn+1を計算して、計算された値を生成するステップと、
iii)前記暗号装置が、前記計算された値が素数であるか否かを調べるステップと、
iv)前記計算された値が素数である場合には、前記暗号装置が、前記有限体の素数の位数pとして前記計算された値を使用し、前記暗号装置が、前記乗法群の部分群の位数nとして前記nの値を使用するステップと
を包含する、方法。
【請求項2】
nが素数であることが必要とされ、前記暗号装置が、nが素数であることを調べるステップをさらに包含する、請求項1に記載の方法。
【請求項3】
rおよびnは、小さい素数を有する値を除外するためにふるいをかけることによって選択される、請求項2に記載の方法。
【請求項4】
ステップi)は、前記暗号装置が、最初にnおよびhに対する所望の値を取得して、次にn=hr+1を満たすようにrを計算することを含む、請求項2に記載の方法。
【請求項5】
hは、2(9/16)(logn)未満である、請求項1〜4のいずれかに記載の方法。
【請求項6】
hは、0.5(9/16)(logn)より大きい、請求項5に記載の方法。
【請求項7】
暗号システムにおいて使用する領域パラメータを検証する方法であって、前記方法は、前記暗号システムにおいて通信者によって行われ、
前記方法は、
(a)前記通信者の暗号装置が、n=hr+1であることを調べるステップであって、hは整数であり、rは素数であり、rはn2/3より大きく、n−1の全ての因数は、n1/3よりかなり大きいか、または、n1/3よりかなり小さい、ステップと、
(b)前記暗号装置が、p=tn+1であることを調べるステップであって、tは偶数の整数である、ステップと
を包含する、方法。
【請求項8】
請求項1〜7のいずれかに記載の方法を行うコンピュータ実行可能な命令を格納したコンピュータ読み取り可能媒体。
【請求項9】
楕円曲線群の部分群の位数を確立する方法であって、前記方法は、データ通信システムにおいて通信者によって行われ、前記通信者は、暗号演算を行う暗号装置を有し、
前記方法は、
a)前記暗号装置が、n=hr+1の形式のnの値を取得するステップであって、hは整数であり、rは素数であり、rはn2/3より大きく、n−1の全ての因数は、n1/3よりかなり大きいか、または、n1/3よりかなり小さい、ステップと、
b)前記暗号装置が、前記楕円曲線群の部分群の位数として前記nの値を使用するステップと
を包含する、方法。
【請求項10】
前記値nが素数である、請求項9に記載の方法。
【請求項11】
ステップa)は、
前記暗号装置が、ランダムな楕円曲線群を生成するステップと、
前記暗号装置が、前記楕円曲線群の位数の素因数がn=hr+1で表され得るか否かをテストするステップと、
前記素因数がn=hr+1で表され得る場合には、前記ランダムな楕円曲線群を前記楕円曲線群として使用するステップと
を含む、請求項10に記載の方法。
【請求項12】
前記暗号装置が、虚数乗法アルゴリズムにおいて前記値nを用いて、前記楕円曲線群の式を定義する係数を確立するステップをさらに含む、請求項10に記載の方法。
【請求項13】
前記暗号装置が、前記楕円曲線群が定義される素数体の位数qを生成するステップと、前記虚数乗法アルゴリズムにおいて前記位数qおよび前記値nを用いて、前記楕円曲線群の式を定義する係数を確立するステップとをさらに含む、請求項12に記載の方法。
【請求項14】
前記暗号装置が、前記qの形式を指定する、請求項13に記載の方法。
【請求項15】
rおよびnは、小さい素数を有する値を除外するためにふるいをかけることによって選択される、請求項10〜14のいずれかに記載の方法。
【請求項16】
ステップa)は、前記暗号装置が、最初にnおよびhに対する所望の値を取得して、次にn=hr+1を満たすようにrを計算することを含む、請求項10〜14のいずれかに記載の方法。
【請求項17】
hは、2(9/16)(logn)未満である、請求項9〜16のいずれかに記載の方法。
【請求項18】
hは、0.5(9/16)(logn)より大きい、請求項17に記載の方法。
【請求項19】
請求項9〜18のいずれかに記載の方法を行うコンピュータ実行可能な命令を格納したコンピュータ読み取り可能媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−19559(P2012−19559A)
【公開日】平成24年1月26日(2012.1.26)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−233823(P2011−233823)
【出願日】平成23年10月25日(2011.10.25)
【分割の表示】特願2007−540746(P2007−540746)の分割
【原出願日】平成17年11月11日(2005.11.11)
【出願人】(397071791)サーティコム コーポレーション (38)
【Fターム(参考)】