(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5690465
(24)【登録日】2015年2月6日
(45)【発行日】2015年3月25日
(54)【発明の名称】カスタム静的ディフィ−ヘルマン(Diffie−Hellman)群
(51)【国際特許分類】
H04L 9/08 20060101AFI20150305BHJP
【FI】
H04L9/00 601C
H04L9/00 601E
【請求項の数】10
【全頁数】13
(21)【出願番号】特願2007-540746(P2007-540746)
(86)(22)【出願日】2005年11月11日
(65)【公表番号】特表2008-520144(P2008-520144A)
(43)【公表日】2008年6月12日
(86)【国際出願番号】IB2005003380
(87)【国際公開番号】WO2006051402
(87)【国際公開日】20060518
【審査請求日】2008年10月27日
【審判番号】不服2012-17570(P2012-17570/J1)
【審判請求日】2012年9月10日
(31)【優先権主張番号】PCT/IB2004/003699
(32)【優先日】2004年11月11日
(33)【優先権主張国】IB
(31)【優先権主張番号】60/626,883
(32)【優先日】2004年11月12日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】397071791
【氏名又は名称】サーティコム コーポレーション
(74)【代理人】
【識別番号】100107489
【弁理士】
【氏名又は名称】大塩 竹志
(72)【発明者】
【氏名】ブラウン, ダニエル アール. エル.
(72)【発明者】
【氏名】ギャラント, ロバート ピー.
(72)【発明者】
【氏名】ヴァンストーン, スコット エー.
【合議体】
【審判長】
山崎 達也
【審判官】
石井 茂和
【審判官】
小林 大介
(57)【特許請求の範囲】
【請求項1】
暗号装置および秘密鍵を備える計算装置を使用して、共有された秘密を計算する方法であって、
前記方法は、
前記計算装置が、通信者計算装置の公開鍵を取得することと、
前記計算装置が、ディフィ−ヘルマン(Diffie−Hellman)鍵共有プロトコルに従って、前記通信者計算装置の公開鍵と前記秘密鍵とを組み合わせることにより、前記共有された秘密を計算することと
を含み、
前記通信者計算装置の公開鍵および前記共有された秘密は、位数nの群の要素であり、前記nは、n=hr+1の形式であり、前記nは素数であり、前記hは整数であり、前記rは(n−1)の素因数であり、前記素因数rはn2/3より実質的に大きい、方法。
【請求項2】
前記群は、有限体上で定義された楕円曲線群である、請求項1に記載の方法。
【請求項3】
前記楕円曲線群は、有限体のサイズおよび前記位数nが前記群を定義する係数を決定する前に決定される虚数乗法を使用して決定される、請求項2に記載の方法。
【請求項4】
前記群は、有限体の乗法群である、請求項1に記載の方法。
【請求項5】
前記素因数rが最初に取得され、次に前記nが取得され、次に前記有限体のサイズが計算される、請求項4に記載の方法。
【請求項6】
前記共有された秘密が暗号化鍵を確立するのに使用される、請求項1〜5のいずれか一項に記載の方法。
【請求項7】
前記共有された秘密がFord−Kaliskiの鍵検索プロトコルにおいて使用される、請求項1〜5のいずれか一項に記載の方法。
【請求項8】
前記hが偶数であり、かつ、(9/32)(log2n)2〜(9/8)(log2n)2の範囲内にある、請求項1に記載の方法。
【請求項9】
前記hが約(9/16)(log2n)2である、請求項1または8に記載の方法。
【請求項10】
暗号装置を備えた計算装置であって、前記計算装置は、請求項1〜9のいずれか一項に記載の方法を実行するように構成されている、計算装置。
【発明の詳細な説明】
【技術分野】
【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と表記される。より一般的には、pは任意の整数であってよい。
【0006】
1からp−1までのその両者を含む整数の集合は、sとtが組み合わされてst mod pとなる、モジュラ乗法演算についての別の群を形成する。この群はZ
p*と表記され、しばしばa mod p群と呼ばれる。より一般的には、pはわずかに異なる演算を伴う、素数の任意の冪乗であってよい。これらの群の演算を記述するときは、mod pの表記は、その前後関係から明白な場合はしばしば省略される。
【0007】
群Gの部分群は、これもまたGにおける要素の部分集合であり、Gと同じ演算を有する。例えば、群Z
p*は、その要素が1とp−1である、位数2の部分群を有する。より一般的には、ある群の任意の要素gに対して、<g>と表記される最小の部分群があり、<g>要素を含む。<g>は、整数xに対する要素g
xの集合により正確に与えられ、ここでg
xは、gのx乗の積を意味する。Z
pのような加法表記についての群においては、冪乗g
xはxgと表記される。要素gは<g>に対する生成元である。群は、生成元を有していれば巡回群であり、従って、<g>は本質的に巡回的である。群Z
pとZ
p*もまた巡回群であるが、一般的には、群は巡回的である必要はない。
【0008】
群の位数は要素数である。群Z
pは位数pを有し、群Z
p*は位数p−1を有する。要素gの位数は、部分群<g>の位数である。gは位数nを有すると仮定される。
【0009】
演算が乗算で表記される群においては、離散対数問題は、「gとwが与えられたとき、w=g
xとなるような整数xを求めよ。ただし、g
xはgのx乗の積を意味する」と述べることができる。この問題は通常、そのような整数xが存在する場合、つまり、wが<g>の要素である場合に要求される。一般対数問題は、xが整数である必要はなく、群が加法性を有しており、非整数の冪乗が定義できる場合にのみ定義できる。
【0010】
いくつかの離散群において、離散対数問題(DLP)を解くのは難しい。ディフィ(Diffie)とヘルマン(Hellman)は、DLPが公開鍵暗号に対して、第1の存在可能な解を求めるのは「難しい」という事実を活用した。この場合、アリス(Alice)は任意の整数xを選択し、ボブ(Bob)に群の要素g
xを送り、ボブ(Bob)は任意の整数yを選択し、アリス(Alice)に群の要素g
yを送る。次に、アリス(Alice)はz=(g
x)
yを計算し、ボブ(Bob)はz’=(g
y)
xを計算する。明らかにz=z’=g
xy=g
yxであるので、アリス(Alice)とボブ(Bob)は同一の値を算出できる。いかなる第三者もzを算出できなければ、アリス(Alice)とボブ(Bob)は、共有された秘密について合意したことになる。共有された秘密は、アリス(Alice)とボブ(Bob)の間で通信されるメッセージを暗号化するのに使用できる。このプロトコルがディフィ−ヘルマン(Diffie-Hellman)鍵共有である。このプロトコルより以前は、アリス(Alice)とボブ(Bob)は秘密裏に、zについての合意のためにまず会う必要があった。このプロトコルにより、アリス(Alice)とボブ(Bob)はまず会うという必要がなくなる。
【0011】
これは、g
xとg
yの値が公開されるので、公開鍵暗号と呼ばれる。これらは公開鍵と呼ばれ、xとyは私有鍵と呼ばれている。対(x,g
x)は、鍵ペアと呼ばれる。敵対するイブ(Eve)は、公開鍵を見ることができたとする。イブ(Eve)がDLPを解くことができれば、彼女はgとg
xからxを求めることができる。xにより、イブ(Eve)はアリス(Alice)と同じ方法で、つまりボブ(Bob)の公開鍵g
yと、アリス(Alice)の私有鍵xを使用して、zを算出できる。従って、共有された秘密は秘密ではなくなり、イブ(Eve)はこれを使用して、アリス(Alice)とボブ(Bob)がお互いに送った暗号化メッセージを解読できる。従って、ディフィ−ヘルマン(Diffie-Hellman)鍵共有プロトコルの安全性に対する必要条件は、DLPが「難しい」問題であるということである。イブ(Eve)がDLPを解くことができてはならないのである。
【0012】
幸いなことに、暗号学者がDLPは難しいと信じている群が存在する。DLPが難しい群は、主に2つのよく知られた群のクラス、つまり、有限体の乗法群の部分群と、楕円曲線群の部分群である。楕円曲線群は他のDLP群に対して、公開鍵の通信と格納により狭い帯域幅を使用し、より迅速な演算を可能にするという優位点を有している。
【0013】
静的ディフィ−ヘルマン(Diffie-Hellman)鍵共有は、ある当事者の一方またはその両者が経時変化をしない鍵ペアを有するディフィ−ヘルマン(Diffie-Hellman)鍵共有の重要な変形である。アリス(Alice)が静的鍵ペアを有していれば、彼女の私有鍵xと公開鍵g
xは、すべての処理の間、同じであり続ける。この優位点は、アリス(Alice)が証明機関に彼女の公開鍵g
xに署名させることができ、ボブ(Bob)はその結果としての証明をアリス(Alice)から要求するのではなく、データべースから探すことができる。この1つの適用は、ボブ(Bob)が暗号化された電子メールをアリス(Alice)に送るときである。アリス(Alice)は、電子メールを暗号化する前に、ボブ(Bob)にg
xを送る必要がない。その代わりに、ボブ(Bob)は、彼の住所録でも、または他の公共住所氏名録であってもよい、あるデータベースからg
xを探す。g
xに対する証明は、アリス(Alice)が(そしてアリス(Alice)のみが)電子メールを暗号化できるということをボブ(Bob)に更に保証する。
【0014】
これらの群のいくつかにおいて、ディフィ−ヘルマン(Diffie-Hellman)鍵共有は、今日では仮想プライベートネットワーク(VPN)を保護するためのIPSecプロトコルにおいて共通して使用されている。ディフィ−ヘルマン(Diffie-Hellman)鍵共有はまた、静的変形を含めて、トランスポート層セキュリティ(TLS)(ウェブサイトを安全にするために使用される)、電子署名付き電子メール(S/MIME)(電子メールを安全にするために使用される)、またはセキュアシェル(SHH)(コンピュータへのリモートログインのために使用される)のような、共通して使用されるインターネット技術タスクフォース(IETF)セーフティプロトコルの随意の機能である。従って、ディフィ−ヘルマン(Diffie-Hellman)鍵共有を、可能な限り安全にすることは望ましいことである。
【0015】
静的ディフィ−ヘルマン(Diffie-Hellman)鍵共有の安全性は、単に離散対数が難しいということ以上のことに依存する。特に、敵対者がアリス(Alice)の静的私有鍵xを決定する方法は、アリス(Alice)に特別に選択された公開鍵g
yを送り、アリス(Alice)から結果としての共有された秘密z=g
xyを得ることである。ほとんどの群において、この能動的攻撃により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)暗号化のような、あるプロトコルにおいては、ショームとヴァン・アントワーペン(Chaum and van Antwerpen)の否認不可署名は、アリス(Alice)が暴露するzのエンティティを、プロトコルの一部とするように設計されている。従って、これらのプロトコルは攻撃に対して脆弱である。しかし、これら2つのプロトコルは、KDFの恩恵が知られる前に設計された。これらのプロトコルは、KDFを適用することにより、容易に補正できる。実際、ベレア(Bellare)とロガウェイ(Rogaway)により設計された(DHAES)は、特に、KDFを共有された秘密zに、それを鍵として使用する前に適用した、エルガマル(ElGamal)の改良として設計された。
【0021】
しかし、KDFを追加することでは、容易に修正できない他のプロトコルも存在する。そのようなプロトコルの1つは、フォード−カリスキー(Ford-Kaliski)の鍵検索プロトコルである。このプロトコルでは、基点gはクライアントのパスワードの関数であり、アリス(Alice)はサーバーである。クライアントは、任意のyを選択してg
yをアリス(Alice)に送る。プロトコルが機能するためには、アリス(Alice)は、彼女がディフィ−ヘルマン(Diffie-Hellman)鍵共有を行っているクライアントすべてに対して、結果としての共有された秘密zを暴露しなければならない。クライアントは、zからクライアントのパスワードとサーバーの私有鍵x両者の関数である静的値g
xを導出する。静的値g
xは、通常のパスワードよりも推測するのが困難なので、検索鍵、または堅牢パスワードと称せられる。鍵検索、またはパスワードの堅牢化は、フォード−カリスキー(Ford-Kaliski)プロトコルの主要な目的である。クライアントはこれを、z
u=g
xyuを計算することで行い、ここでuは、yuが指数空間で1に等しくなるような値である。プロトコルは、アリス(Alice)がKDFをzに適用していると、クライアントは静的値を復旧できないので機能しない。敵対者は、悪意のあるクライアントがzの値を使用してアリス(Alice)の私有鍵xを導出するように仕向けることができる。敵対者は、今はxを知っているので、g
xを推測することは、パスワードgを推測する程度に容易である。特に、敵対者は、辞書的検索を行って、堅牢化パスワードを非常に迅速に決定できる。従って、この攻撃は、フォード−カリスキー(Ford-Kaliski)プロトコルの主要な目的を打ち破る。
【0022】
まったく異なる様相は、静的ディフィ−ヘルマン(Diffie-Hellman)問題は難しいということである。より正確に述べれば、私有鍵xを知らずにwからw
xを計算することは難しいということである。w=g
yとすることは、静的ディフィ−ヘルマン(Diffie-Hellman)プロトコルを破ることが、xを見出すことと同じ程度に難しいことを示している。これは、上記の攻撃を考慮するとパラドックスのように見えるが、実際はそうではない。上記の攻撃においては、敵対者は行動的である。敵対者は、被害者を利用してディフィ−ヘルマン(Diffie-Hellman)問題を解いてg
yを求めようとする。これは、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を生成するステップ含む。
【発明を実施するための最良の形態】
【0029】
図1を参照すると、1組の通信者A、Bは、データ通信リンク12により接続されている。各通信者A、Bは、暗号装置14を有しており、この暗号装置は、リンク1上での確実な通信を可能にするために確立されたプロトコルに従って、公開鍵暗号操作を行う。暗号装置14は、他のエンティティと共有されているパラメータの暗号領域内で作動する。
【0030】
通信者A、Bに共有された領域パラメータは、群Gと、群Gの位数pと、位数nの群の生成元gを含む。
【0031】
本発明は、楕円曲線群と、有限体の乗法的部分群、より一般的にはmod p群として知られている、この両者に適用される。mod p群はより理解し易いので、mod pの実施形態20をまず説明して、その概略を
図2に示す。両者の場合に共通する本発明の態様は、このように更に容易に理解できる。それにも拘わらず、本発明の好適な実施形態は、楕円曲線群についてであるが、これは性能特性においていくつかの優位点を有するからである。
【0032】
(mod pの実施形態)
説明を簡単にするために、Z
p*におけるディフィ−ヘルマン(Diffie-Hellman)基点または生成元gは素数の位数nを有すると仮定する。当業者にとっては、これはgが素数でない位数を有する場合にも拡張できることは明白であろう。
【0033】
領域名パラメータの安全性は、n−1の整数因子uのサイズに依存する。ある既知の因数uがn
1/3に近いときは、上記の攻撃10は、約3n
1/3の代償を必要とする。これは、約n
1/2の代償を必要とする一般的DLP攻撃よりかなり小さい。任意のnは、一般的にn
1/3に近い因数uを有することは知られているので、nをランダムに選択することは、上記の攻撃10を回避することにはならない。従来技術においては、nは一般的にはハッシュ関数の出力として選択されたが、これはnを効果的に任意の数にするが、攻撃を回避しない。nを適切に選択することにより、n
1/3に近い因数を有することを回避できることが判明した。パラメータの選択とテストは、必要な計算を実行するようにプログラムされた計算装置を使用して行えることは理解されよう。そのような計算の結果は、装置14上で暗号機能を実践するために使用できる領域パラメータの集合である。
【0034】
第1実施形態において、そのような因子は、n=hr+1を選択することにより回避され、ここでrは素数で、hはrと比較して相対的に小さな整数であり、n
1/3よりは十分に小さい整数である。n−1の因子は、fまたはfrの形式であり、ここでfはhの因子である。hがn
1/3よりかなり小さい場合は、因子fもそうであり、これはfが高々hであることによる。hがn
1/3よりかなり小さい場合は、rはn
2/3よりかなり大きく、因子frもn
1/3よりかなり大きい。従って、n−1のすべての因子は、n
1/3よりかなり小さいか、または大きい。従って、静的ディフィ−ヘルマン(Diffie-Hellman)への攻撃は回避される。
【0035】
nをhr+1の形式で選択したので、pを選択することも必要となる。群論の標準理論では、要素の位数はその群の位数を割ることができる。gはZ
p*の要素なので、その位数nはZ
p*の位数を割ることができなければならず、それはp−1である。従って、ある整数tに対しては、p=tn+1となる。
【0036】
群Z
p*は、DLPを解くための指標計算アルゴリズムを有しているので、共通の実践は、nよりかなり大きなpを選択することである。その考えは、位数nの群<g>における一般的DLP解法アルゴリズムに、Z
p*における指標計算アルゴリズムとほぼ同じ代償を持たせようということである。例えば、nが約2
160の場合、pは約2
1024であり、従って、これら両者のDLP解法アルゴリズムは、2
80の群演算とほとんど等価の代償を有することになる。nに対する他の共通選択は約2
256であり、pに対しては2
3072であり、ここにおいて両者のDLP解法アルゴリズムは約2
128の演算をすることになる。そのような小さなnを選択する主な優位点は、群<g>における冪乗は、指数がより小さいのではるかに高速であるということである。
【0037】
上記に関連するサイズのpとnを得るためには、ほぼ同じサイズのtを選択しさえすればよい。第1例においては、tを約2
1024−160=2
864として選択し、第2例ではtを約2
2816として選択する。pとnは奇数なので、tを偶数として選択する必要がある。値t mod 3、t mod 5、・・・、についての類似の観測もまた行うことができる。
【0038】
一般的なプロセスは、まずnを所望の形式で選択し、tのいくつかの値を、pを素数にするのを見つけるまで数回試みる。小さな確率内では、pが素数であることを判定する高速テストが存在する。これらのテストは、素数でないtに対する候補値を即座に削除する。従って、好適なtを見出すことが非常に迅速である。実際、nから開始して、これがpを見出す最良の既知の方法である。
【0039】
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は偶数でなければならないことに留意されたい。
【0040】
hに対する近似サイズまたは値を選択するときにある注意が必要である。もっとも小さい数の選択はh=2である。しかし、この選択は、小さ過ぎて、h=2は上記の攻撃を回避するが、本技術の適用において、証明可能安全性の結果をも回避してしまう。
【0041】
hに対しては範囲があり、その範囲においては、上記の攻撃は証明可能安全性の結果が有効である間は阻止される。この範囲はスカラー乗法を行うのに必要な群演算の数に依存する。hの最適値は、この値の0.5倍から2倍の範囲のhの値を使用できるが、(9/16)(log
2n)
2となる。約このサイズのhに対して、静的ディフィ−ヘルマン(Diffie-Hellman)の問題は、容認できる因子内で、静的ディフィ−ヘルマン(Diffie-Hellman)私有鍵を見出すのとほとんど同じくらい難しい。この因子は、hのすべての選択に対して最適化される。更に、hのこの選択により、上記の攻撃は約n
1/2の群演算と等価の代償を必要とする。これは、攻撃がもはや、xを見出す一般的DLP解法アルゴリズムより優れたものではないことを意味する。従って、そのような状況ではこの攻撃は適切ではない。
【0042】
要約すると、まず約(9/16)(log
2n)
2の
オーダーの偶数hを選択し、rとnに対して、nが素数として選択されるかどうかのふるいおよび素数性テストを使用してrとnを検索する。最終的に、p=tn+1が素数となるようなtを検索する。
【0043】
本方法の追加的な効率改善もまた可能である。本方法においては、pを法とする還元をより効率的にする形式をpが有するようなnとtを検索する。例えば、pが小さなハミング重みを有している場合、pを法とする還元はより効率的になる。これによりモジュラ乗法と、Z
p*の群演算がより効率的になる。
【0044】
本方法の追加的な安全性改善もまた可能である。rの値は、検証可能に任意に選択できる。rの値はハッシュ関数の出力として選択できる。
【0045】
これら2つの追加的な改善は、ランダムに検証可能にrを選択し、pに効率的なモジュラ還元を持たせる値tを検索することにより組み合わせることができる。
【0046】
そのような敵対者は、特別なプロトコルの特別な実践に対しては非現実的という理由で、上記の攻撃に関心がなければ、ディフィ−ヘルマン(Diffie-Hellman)群を異なるように選択できる。n
1/3に近いサイズの因数uを回避することは不要であるかもしれないが、静的ディフィ−ヘルマン(Diffie-Hellman)問題と、一般的ディフィ−ヘルマン(Diffie-Hellman)問題の両者が難しいということが依然として望まれる。静的ディフィ−ヘルマン(Diffie-Hellman)問題を難しくするためには、約(9/16)(log
2n)
2のサイズのn−1の因子が必要となる。既存の数論の知識では、任意のnがそのようなサイズの因数を有するかどうかは明確ではない。従って、任意のnを選択して、そのような因数を探すか、そのようなサイズの因数hでnを構築することができる。後者は、hを選択し、任意のr(素数である必要はない)を選択し、n=hr+1について素数性をテストすることで行われる。
【0047】
短命的、または両側ディフィ−ヘルマン(Diffie-Hellman)問題が難しいことを確実にするために、既存の証明可能安全性の結果を使用できる。モーラー(Maurer)とウルフ(Wolf)の結果は、通常はサイズnの有限体上で定義された楕円曲線である補助群を見つけることを要求する。補助群は、滑らかな位数(大きくない素数因子)を有しなければならない。そのような補助群を探すことは、相当な労力を必要とし、nのより大きな値に対しては、手が届かない範囲にある。実際、そのような群を見つけることは、nと同じサイズの因数の整数とほぼ同じ程度に難しいことが知られている。
【0048】
デン・ボア(den Boer)のより以前の結果は、n−1は滑らかであり、(短命的)ディフィ−ヘルマン(Diffie-Hellman)問題は、ほとんどDLPと同程度に難しいと述べている。
【0049】
本技術の更なる改良は、従って、sが滑らかな整数である、n=1+sを選択する方法を含むことになる。このsは、正確なサイズが得られるような、小さな素数の積として見出せる。そしてnに対して素数性がテストされる。sのいくつかの値が試される。nをこのように選択する利点は一般的には、n−1が(9/16)(log
2n)
2に十分に近いサイズの因数を有することを意味し、それによりディフィ−ヘルマン(Diffie-Hellman)問題が単なる短命的ディフィ−ヘルマン(Diffie-Hellman)問題ではなく、難しいということを確実にすることである。
【0050】
そのようなnにより、素数p=tn+1は上記のように見出せる。更に、この方法により、小さなハミング(Hamming)重みのような、特別構造のnとpを求めることもできる。
【0051】
(楕円曲線実施形態)
原理的に、上述した技術は、楕円曲線群の場合にも機能する。より正確にいえば、nに対する望ましい基準は同一である。しかしこの場合は、位数nの生成元gはZ
p*の要素ではなく、楕円曲線群Eの要素である。mod pの場合、いったんnが決定されると、群Z
p*を見出すことは比較的に単純である。このことは、楕円曲線についてはいえない。決定されたnに対して、楕円曲線群Eを見出すことは依然として非常に困難である。
【0052】
楕円曲線は、ユーザー演算を、群Z
p*に対するよりも、より効率的にするので、楕円曲線の場合は、本発明の好適な実施形態である。この実施形態の本方法は、Z
p*の場合に対するよりもわずかに複雑であるが、それにも拘わらず価値がある。
【0053】
説明をより明確にするために、楕円曲線実施形態における、本方法の簡略化されたいくつかの形態を
図3と4に示す。
【0054】
第1簡略化形態30において、楕円曲線は、二進数体上で定義される。そのような曲線に対して、楕円曲線群の位数を決定することは非常に容易である。簡略化された方法は、任意の曲線を選択し、点の数をカウントし、点の数が、nが素数のときに2nであることを調べ、n−1が所望の基準に適合するかを調べる。好適な基準は、n−1=hrであり、ここでrは素数で、hは約(9/16)(log
2n)
2である。代替としての基準は、上記の攻撃を心配しないならば、n−1が滑らか、ということである。
【0055】
第2簡略化形態において、楕円曲線は位数qの素数体上で定義される。qの値は、nの値を決定した後に決定される。nの値はmod p群の場合のように選択される。nの値は、好適な基準または代替基準に適合できる。そして、ANSIx9.62またはIEEE13.63で記述されているような、虚数乗法が使用されてqの値と、位数nを有するq上で定義された楕円曲線Eを見出す。
【0056】
通常は、虚数乗法は、qのある値はユーザーによりよい効率性をもたらすので、まずqを選択することを含む。しかし、虚数乗法はnが最初に選択されて機能する。qとnが、虚数乗法の第1フェーズである正確な数理論関係でいったん見出されれば、第2フェーズは、楕円曲線Eを定義する係数を決定する。
【0057】
第2簡略化方法の不都合な点は、結果としてのqが、nから約n
1/2の距離内のすべての整数であるnのハッセ(Hasse)区間において、多少任意な形式を有することである。よりよいユーザーの効率のために、二進展開における小さなハミング(Hamming)重みのようなqの特別な形式が強く所望されている。
【0058】
すなわち、qとnの両者が特別形式を有することが所望されている。qに対する形式は効率のためであり、nに対する形式は安全性のためである。これを行うために、虚数乗法の第1フェーズはわずかに修正される。所望される特別形式のqとnが試され、この対をテストして、虚数乗法(CM)により要求される条件に適合するかが調べられる。この条件は、比較的簡単にテストできる。qが与えられても、条件に合うnを解くことは決して容易にはならず、その逆もいえる。
【0059】
虚数乗法の第1フェーズの修正は、所望形式のqとnのいくつかの異なる対を試し、qとnに対するCM法の条件をテストし、CM法の条件が満たされるまで繰り返し、CM法の通常のプロセスを使用して、楕円曲線Eの定義係数aとbを見出すことである。
【0060】
CM法は、既知の方法であるが、その修正形式は既知ではない。本発明の好適な実施形態で記述されたように、CM法の修正形式により、よい高効率かつより安全なディフィ−ヘルマン(Diffie-Hellman)楕円曲線群を見出すことができる。
【0061】
この方法の妥当性を示す例として、代替基準、つまり、n−1が滑らという基準を使用して、本発明の発明者は、両者が素数である、n=1+55(2
286)とq=9+55(2
288)の対を見出した。CM法の技術に精通している者は、この対に対する判別式は55であることは理解するであろう。この判別式は、クロネッカ(Kronecker)の類数(class number)が1より大きく、従って、楕円曲線の自己準同形環は、一意分解整域ではないという意味で重要である。特にこれは、楕円曲線Eの係数aとbは、所定の表からは見出せないこと、そして、位数qの有限体上のかなり大きな階数の多項方程式を解くことにより計算しなければならないことを意味する。
【0062】
上述のように、本技術は所望の特性を有する領域パラメータを生成するために使用できる。これらの特性が生成される方法はまた、それ自身、攻撃に対して脆弱ではないことを確実にするために、第三者により供給された領域パラメータの効力を調べるためにも適合している。パラメータはpとnの値が要求された形式を満足することを確実にするために調べることもできる。パラメータがこれらの基準を満たさない場合は、領域パラメータは破棄される。
【0063】
本発明は、ある特別な実施形態を参照して記述されてきたが、その種々の変形は、ここに添付された請求項で概要を記載される本発明の精神と範囲を逸脱することなく可能であることは当業者には明白であろう。上記に引用したすべての参考にした開示内容は、参考文献として本明細書に組み込まれている。
【図面の簡単な説明】
【0064】
【
図2】mod pの実施形態におけるステップを示すフローチャートである。
【
図3】第1単純化楕円曲線の実施形態におけるステップを示すフローチャートである。
【
図4】第2単純化楕円曲線の実施形態におけるステップを示すフローチャートである。
【0065】
A 通信者
B 通信者
12 データ通信リンク
14 暗号装置