(57)【要約】【課題】  暗号に使用可能な楕円曲線パラメータを高速に生成することができる楕円曲線暗号化向けの曲線パラメータ生成方法を提供する。【解決手段】  素数ｑと楕円曲線の位数ｒを先に定めることにより、素数ｑを法とする有限体上ＧＦ（ｑ）での楕円曲線Ｅ：ｙ２＝ｘ３＋ａｘ＋ｂに対する楕円曲線パラメータ生成全体の処理を容易にし、暗号化向け曲線パラメータの生成処理を高速化する。【選択図】    図３
2005283674.tif 000002
【特許請求の範囲】
【請求項１】
楕円曲線暗号化向けの曲線パラメータの生成を行う楕円曲線暗号化向けの曲線パラメータ生成方法であって、
素数を法とする有限体上での楕円曲線の楕円曲線パラメータに対して、一定の条件を満たす有限体と位数を先に定めることにより、楕円曲線暗号に利用できるパラメータの組み合わせを高速に検索することを特徴とする楕円曲線暗号化向けの曲線パラメータ生成方法。
【請求項２】
前記素数を法とする有限体上での楕円曲線にて、底点をランダムに定め、無限遠点を計算することで素数または素数に近い位数を持つ安全な底点を高速に検索することを特徴とする請求項１に記載の楕円曲線暗号化向けの曲線パラメータ生成方法。
【請求項３】
ＣＭ法による数学的手法を利用して楕円曲線の位数と楕円曲線パラメータを関係付けることにより、パラメータ生成に必要な変数や定数を絞り込むことを特徴とする請求項１に記載の楕円曲線暗号化向けの曲線パラメータ生成方法。
【請求項４】
定められた素数をｑとし、先に選択した定数をＤとし、ランダムな変数をｃとし、Ｄに対応する定数をｊ０とする場合、
a = 3*c２*j0 / (1728 - j0) (mod q)、
b = 2*c３*j0 / (1728 - j0) (mod q)
の関係式を使用することで、ランダム性が高く柔軟性のある楕円曲線パラメータａ、ｂを出力することを特徴とする請求項１に記載の楕円曲線暗号化向けの曲線パラメータ生成方法。
【請求項５】
定数Ｄと定数ｊ０の間に１：１の関係が成り立つように、前記定数ｊ０を算出することを特徴とする請求項１に記載の楕円曲線暗号化向けの曲線パラメータ生成方法。
【請求項６】
素数をｑとし、位数をｒとし、ランダム数をＷとし、ランダム数をＶとし、定数をＤとする場合、
4q = W２ + DV２ 
r = q + 1 - W
の関係式が成り立つ場合に、パラメータを一意に定めるための定数Ｄと、ランダムな変数であるＷ、Ｖを先に定めることで、素数ｑと、位数ｒを定めることを特徴とする請求項１に記載の楕円曲線暗号化向けの曲線パラメータ生成方法。
【請求項７】
定められた楕円曲線上で無限遠点となる底点を繰り返し検索することで、底点を生成することを特徴とする請求項１に記載の楕円曲線暗号化向けの曲線パラメータ生成方法。
【請求項８】
コンピュータ装置上で実行され、楕円曲線暗号化向けの曲線パラメータの生成を行う楕円曲線暗号化向けの曲線パラメータ生成プログラムであって、
素数を法とする有限体上での楕円曲線の楕円曲線パラメータに対して、一定の条件を満たす有限体と位数を先に定めることにより、楕円曲線暗号に利用できるパラメータの組み合わせを高速に検索する機能を有することを特徴とする楕円曲線暗号化向けの曲線パラメータ生成プログラム。
【請求項９】
前記素数を法とする有限体上での楕円曲線にて、底点をランダムに定め、無限遠点を計算することで素数または素数に近い位数を持つ安全な底点を高速に検索する機能を有することを特徴とする請求項８に記載の楕円曲線暗号化向けの曲線パラメータ生成プログラム。
【請求項１０】
ＣＭ法による数学的手法を利用して楕円曲線の位数と楕円曲線パラメータを関係付けることにより、パラメータ生成に必要な変数や定数を絞り込む機能を有することを特徴とする請求項８に記載の楕円曲線暗号化向けの曲線パラメータ生成プログラム。
【請求項１１】
定められた素数をｑとし、先に選択した定数をＤとし、ランダムな変数をｃとし、Ｄに対応する定数をｊ０とする場合、
a = 3*c２*j0 / (1728 - j0) (mod q)、
b = 2*c３*j0 / (1728 - j0) (mod q)
の関係式を使用することで、ランダム性が高く柔軟性のある楕円曲線パラメータａ、ｂを出力する機能を有することを特徴とする請求項８に記載の楕円曲線暗号化向けの曲線パラメータ生成プログラム。
【請求項１２】
定数Ｄと定数ｊ０の間に１：１の関係が成り立つように、前記定数ｊ０を算出する機能を有することを特徴とする請求項８に記載の楕円曲線暗号化向けの曲線パラメータ生成プログラム。
【請求項１３】
素数をｑとし、位数をｒとし、ランダム数をＷとし、ランダム数をＶとし、定数をＤとする場合、
4q = W２ + DV２ 
r = q + 1 - W
の関係式が成り立つ場合に、パラメータを一意に定めるための定数Ｄと、ランダムな変数であるＷ、Ｖを先に定めることで、素数ｑと、位数ｒを定める機能を有することを特徴とする請求項８に記載の楕円曲線暗号化向けの曲線パラメータ生成プログラム。
【請求項１４】
定められた楕円曲線上で無限遠点となる底点を繰り返し検索することで、底点を生成する機能を有することを特徴とする請求項８に記載の楕円曲線暗号化向けの曲線パラメータ生成プログラム。
【請求項１５】
楕円曲線暗号化向けの曲線パラメータの生成を行う楕円曲線暗号化向けの曲線パラメータ生成装置であって、
素数を法とする有限体上での楕円曲線の楕円曲線パラメータに対して、一定の条件を満たす有限体と位数を先に定めることにより、楕円曲線暗号に利用できるパラメータの組み合わせを高速に検索する手段を備えることを特徴とする楕円曲線暗号化向けの曲線パラメータ生成装置。
【請求項１６】
前記素数を法とする有限体上での楕円曲線にて、底点をランダムに定め、無限遠点を計算することで素数または素数に近い位数を持つ安全な底点を高速に検索する手段を備えることを特徴とする請求項１５に記載の楕円曲線暗号化向けの曲線パラメータ生成装置。
【請求項１７】
ＣＭ法による数学的手法を利用して楕円曲線の位数と楕円曲線パラメータを関係付けることにより、パラメータ生成に必要な変数や定数を絞り込む手段を備えることを特徴とする請求項１５に記載の楕円曲線暗号化向けの曲線パラメータ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号技術分野の楕円曲線暗号で利用するための、曲線パラメータを生成する楕円曲線暗号化向け曲線パラメータ生成装置、楕円曲線パラメータ生成方法に関し、特に、暗号に使用可能な楕円曲線パラメータの高速な生成を可能とする楕円曲線暗号化向け曲線パラメータ生成装置、楕円曲線パラメータ生成方法に関する。
【背景技術】
【０００２】
従来、暗号技術分野における、安全な離散問題を構成する楕円曲線のパラメータを決定する方法は、楕円曲線のパラメータをランダムに生成することにより、パラメータを持つ楕円曲線について安全性を確かめる方法と、安全基準を満たすようにパラメータを計算する方法の２種類がある。
【０００３】
楕円曲線のパラメータを決定する方法としての例が、特開２００２−２３６３２号公報（特許文献１）、特開２０００−２８４６９０公報（特許文献２）、特開平１１−２１２４５７号公報（特許文献３）に記載されている。
【０００４】
特許文献１には、楕円曲線上の離散対数問題に対する解読であるＦＲ−帰着法に対して安全な楕円曲線をシステマティックに容易にかつ高速に構成することにより，安全な楕円曲線上の離散対数に基づく鍵共有、暗号、署名方法が提案されており、（１）正整数ｄの設定、（２）正整数ｐの設定、（３）（ｐ，ｐ−２）の素数判定、（４）Hilbelt Class polynomial Pd(X)の計算（５）Ｐｄ（Ｘ）≡０（ｍｏｄ ｐ）となる根ｊ０∈Ｆｐの決定、（６）ｊ不変数ｊ０となる楕円曲線｛Ｅｊ０｝の作成、（７）(Ej0)∋Ｅで元の個数が＃E(Fp)=p-2ことなるＥの選択（ＣＭ法）、（８）安全な楕円曲線の出力、といったプロセスにより、安全な楕円曲線の容易かつ高速な作成方法を開示する。
【０００５】
特許文献２には、少ない計算量により、楕円曲線上の点の演算ができる楕円曲線演算装置、楕円曲線の位数計算ができる楕円曲線位数計算装置及び安全性の高い楕円曲線を構成することができる楕円曲線構成装置が提案されており、乱数ｔを生成し、楕円曲線Ｅ：ｙ２＝ｘ３−３ｘ＋ｔを選択し、有理数体上の楕円曲線ＥＱを素数ｐ１、ｐ２を法として還元した楕円曲線Ｅｐ１、Ｅｐ２の位数ｍ１、ｍ２が互いに素であるか判定し、楕円曲線Ｅの位数を計算する。上記プロセスにより、計算された位数を用いて、楕円曲線Ｅの安全性を判定する。特許文献２の方法では、（１）乱数の生成Ｓ01を行い、Y２=X３-3X+Tの式のTを乱数により決定、（２）Y２=X３-3X+Tの式を生成、（３）以下の式１による位数m1、m2の算出、
【０００６】
【数１】
2005283674.tif 000003
（４）ここで出力されるm1、m2は、n個ずつ存在し、まだ固定化されていないため位数m1、m2の素数であるかの判定、（５）SEAアルゴリズムによる位数の算出（ＳＥＡ法）、（６）t mod(L^n)  (ただしn=1,2,3 …)によりm1、m2の固定化、（７）ユーザよりの楕円曲線の棄却情報があるかを判定、（８）位数m1、m2が素数でありかつ位数m1、m2 not= qである条件を満たす判定、（９）楕円曲線によるパラメータを出力、といったプロセスにより安全な楕円曲線の容易かつ高速な作成方法を開示する。
【０００７】
特許文献３は、楕円曲線上の離散問題としてのパラメータの安全性の高速判定装置および記録媒体に関し、楕円曲線上の離散問題としてのパラメータの安全性において、スクープ法に沿って最適な計算方式を選択し計算を行い、楕円曲線のパラメータの安全性を高速に判定することを目的とする。特許文献３の方法では、（１）パラメータの入力、（２）位数条件の入力、（３）MulMAX、SchoofMAXの計算（スクープ法）、（４）それまでの位数に関する情報を得た素数ｌまたは素数の巾ｌkの積の計算、（５）4√ｑ＜Πｌikiにより判定、（６）上記の条件が該る場合では、計算方法の選択（S、AE、I、VA、VIより）して位数を算出、（７）候補からの位数の決定、（８）ユーザ条件に、素数判定の有無、（９）Miller-Rabin法、Jacobi和法、小さな素数の試し割、（１０）その他の判定条件（有限体の位数ｑと異なる方が良いため、その条件を付加するなど。）、（１１）安全な[a1,a2,a3,a4,a5,a6]の決定、といったプロセスにより、安全な楕円曲線の容易かつ高速な作成方法を開示する。
【０００８】
安全性を満たすように楕円曲線を作成する特許文献１のように、ＣＭ法（虚数乗法）をベースとして曲線の安全性を満たすような位数を先に決定してパラメータを導出し、高速に安全な楕円曲線を生成する。
【０００９】
後に安全性を確認する、特許文献２、特許文献３のように先にランダムなパラメータを持つ楕円曲線を作成し、スクープ法やそれを改良したＳＥＡ法によって曲線の位数を計算することで、安全な楕円曲線を生成する。
【特許文献１】特開２００２−２３６３２号公報
【特許文献２】特開２０００−２８４６９０公報
【特許文献３】特開平１１−２１２４５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記説明した従来の方法においては、以下に述べるような問題点があった。
【００１１】
第１に、暗号に使用可能な楕円曲線の生成に時間がかかるという問題があった。
【００１２】
その理由は、以下の通りである。
【００１３】
暗号系に使用できる楕円曲線を生成する上で問題となるのは、曲線の安全性であり、素数または素数に近い（大きな素因数を含む）十分に大きな位数（点の環群の構成数）を持たなくてはならないことである。
【００１４】
位数とは、素数ｑを法とする有限体上ＧＦ（ｑ）における楕円曲線Ｅの底点Ｇ（ｘ，ｙ）をｋ倍算し、点｛Ｇ，Ａ０，…Ａｎ，０｝で環群を構成するような場合では、環群の要素数である。
【００１５】
楕円曲線を暗号用途に利用するためには、この位数ｒが大きく、なおかつ素数または素数に近い（大きな素因数を含む）数でなければならない。
【００１６】
スクープ法やＳＥＡ法（Hasseの定理による誤差項を直接決定する方法）といった手法では、先にＧＦ（ｑ）上のランダムな曲線を作成し、その曲線が十分に大きな位数を持つか計算する。このため、多大な位数計算を繰り返し行う必要がある。
【００１７】
その理由は、従来のスクープ法やＳＥＡ法におけるパラメータ生成では、ランダムに楕円曲線パラメータａ，ｂを定め、その楕円曲線Ｅ：ｙ２＝ｘ３＋ａｘ＋ｂにおける位数ｒを計算する必要があり、この処理に大変な時間がかかっていた。
【００１８】
こうした条件を満たす位数ｒを持つ曲線を見つけるまで、繰り返し計算を行うのに非常に時間がかかっていた。
【００１９】
第２に、暗号に使用する安全性（ランダム性）高い暗号に使用可能な楕円曲線を簡単に生成することができないという問題があった。
【００２０】
その理由は、以下の通りである。
【００２１】
楕円曲線暗号を構成する場合では、楕円離散対数問題とよばれる数学的問題をベースに暗号系が構成される。この問題は曲線上の点Ｙ，Ｇと任意の数ｋ∈＃Ｅ（楕円曲線の位数）が、Ｙ＝ｋＧという式を満たしている時、Ｙ，Ｇからｋを求める問題であり、基本的にはｋＧを順に計算してＹとなるか調べることとなる。
【００２２】
また、拡大体を構成することで楕円離散対数問題を離散対数問題へと帰着して、より効果的に攻撃を行う手法もある。
【００２３】
例えば、ＦＲ帰着と呼ばれる方法では、素数ｑを法とする有限体上ＧＦ（ｑ）にて位数をｒとし、ｑｘ≡１（ｍｏｄ ｒ）、１≦ｘ＜ｌｏｇ（ｑ）の条件を満たす場合では、楕円離散対数問題を離散対数問題へと帰着することにより、攻撃を行うこともある。
【００２４】
特許文献１のＣＭ法の曲線パラメータの生成では、既存の帰着問題から安全なパラメータを生成するために、楕円曲線におけるトレースｔの値を狭めていたり、底点Ｇ(ｘ、ｙ)を関連する数式により求めることにより、曲線のランダム性をなくしていた。
【００２５】
パラメータの条件を狭めることで曲線のランダム性が無くなるため、新しい攻撃法が発見された場合には、再度曲線の安全性を検証する必要があった。
【００２６】
上述した特許文献２、特許文献３に開示される手法では、パラメータを自由に選択できることから、特許文献１の手法よりランダム性が高く安全なパラメータを生成できるけれども、位数の計算に時間がかかり、高速にパラメータを生成できないといった欠点を有する。
【００２７】
本発明の目的は、暗号に使用可能な楕円曲線パラメータを高速に生成することができる、楕円曲線暗号化向け曲線パラメータ生成装置、楕円曲線パラメータ生成方法、及びプログラムを提供することにある。
【００２８】
本発明の第２の目的は、安全性の高い暗号に使用可能な楕円曲線パラメータを生成することができる、楕円曲線暗号化向け曲線パラメータ生成装置、楕円曲線パラメータ生成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００２９】
上記目的を達成する本発明は、楕円曲線暗号化向けの曲線パラメータの生成を行う楕円曲線暗号化向けの曲線パラメータ生成方法であって、素数を法とする有限体上での楕円曲線の楕円曲線パラメータに対して、一定の条件を満たす有限体と位数を先に定めることにより、楕円曲線暗号に利用できるパラメータの組み合わせを高速に検索することを特徴とする。
【００３０】
請求項２の本発明の楕円曲線暗号化向けの曲線パラメータ生成方法は、前記素数を法とする有限体上での楕円曲線にて、底点をランダムに定め、無限遠点を計算することで素数または素数に近い位数を持つ安全な底点を高速に検索することを特徴とする。
【００３１】
請求項３の本発明の楕円曲線暗号化向けの曲線パラメータ生成方法は、ＣＭ法による数学的手法を利用して楕円曲線の位数と楕円曲線パラメータを関係付けることにより、パラメータ生成に必要な変数や定数を絞り込むことを特徴とする。
【００３２】
請求項４の本発明の楕円曲線暗号化向けの曲線パラメータ生成方法は、定められた素数をｑとし、先に選択した定数をＤとし、ランダムな変数をｃとし、Ｄに対応する定数をｊ０とする場合、
a = 3*c２*j0 / (1728 - j0) (mod q)、
b = 2*c３*j0 / (1728 - j0) (mod q)
の関係式を使用することで、ランダム性が高く柔軟性のある楕円曲線パラメータａ、ｂを出力することを特徴とする。
【００３３】
請求項５の本発明の楕円曲線暗号化向けの曲線パラメータ生成方法は、定数Ｄと定数ｊ０の間に１：１の関係が成り立つように、前記定数ｊ０を算出することを特徴とする。
【００３４】
請求項６の本発明の楕円曲線暗号化向けの曲線パラメータ生成方法は、素数をｑとし、位数をｒとし、ランダム数をＷとし、ランダム数をＶとし、定数をＤとする場合、
4q = W２ + DV２ 
r = q + 1 - W
の関係式が成り立つ場合に、パラメータを一意に定めるための定数Ｄと、ランダムな変数であるＷ、Ｖを先に定めることで、素数ｑと、位数ｒを定めることを特徴とする。
【００３５】
請求項７の本発明の楕円曲線暗号化向けの曲線パラメータ生成方法は、定められた楕円曲線上で無限遠点となる底点を繰り返し検索することで、底点を生成することを特徴とする。
【００３６】
請求項８の本発明は、コンピュータ装置上で実行され、楕円曲線暗号化向けの曲線パラメータの生成を行う楕円曲線暗号化向けの曲線パラメータ生成プログラムであって、素数を法とする有限体上での楕円曲線の楕円曲線パラメータに対して、一定の条件を満たす有限体と位数を先に定めることにより、楕円曲線暗号に利用できるパラメータの組み合わせを高速に検索する機能を有することを特徴とする。
【００３７】
請求項９の本発明の楕円曲線暗号化向けの曲線パラメータ生成プログラムは、前記素数を法とする有限体上での楕円曲線にて、底点をランダムに定め、無限遠点を計算することで素数または素数に近い位数を持つ安全な底点を高速に検索する機能を有することを特徴とする。
【００３８】
請求項１０の本発明の楕円曲線暗号化向けの曲線パラメータ生成プログラムは、ＣＭ法による数学的手法を利用して楕円曲線の位数と楕円曲線パラメータを関係付けることにより、パラメータ生成に必要な変数や定数を絞り込む機能を有することを特徴とする。
【００３９】
請求項１１の本発明の楕円曲線暗号化向けの曲線パラメータ生成プログラムは、定められた素数をｑとし、先に選択した定数をＤとし、ランダムな変数をｃとし、Ｄに対応する定数をｊ０とする場合、
a = 3*c２*j0 / (1728 - j0) (mod q)、
b = 2*c３*j0 / (1728 - j0) (mod q)
の関係式を使用することで、ランダム性が高く柔軟性のある楕円曲線パラメータａ、ｂを出力する機能を有することを特徴とする。
【００４０】
請求項１２の本発明の楕円曲線暗号化向けの曲線パラメータ生成プログラムは、定数Ｄと定数ｊ０の間に１：１の関係が成り立つように、前記定数ｊ０を算出する機能を有することを特徴とする。
【００４１】
請求項１３の本発明の楕円曲線暗号化向けの曲線パラメータ生成プログラムは、素数をｑとし、位数をｒとし、ランダム数をＷとし、ランダム数をＶとし、定数をＤとする場合、
4q = W２ + DV２ 
r = q + 1 - W
の関係式が成り立つ場合に、パラメータを一意に定めるための定数Ｄと、ランダムな変数であるＷ、Ｖを先に定めることで、素数ｑと、位数ｒを定める機能を有することを特徴とする。
【００４２】
請求項１４の本発明の楕円曲線暗号化向けの曲線パラメータ生成プログラムは、定められた楕円曲線上で無限遠点となる底点を繰り返し検索することで、底点を生成する機能を有することを特徴とする。
【００４３】
請求項１５の本発明は、楕円曲線暗号化向けの曲線パラメータの生成を行う楕円曲線暗号化向けの曲線パラメータ生成装置であって、素数を法とする有限体上での楕円曲線の楕円曲線パラメータに対して、一定の条件を満たす有限体と位数を先に定めることにより、楕円曲線暗号に利用できるパラメータの組み合わせを高速に検索する手段を備えることを特徴とする。
【００４４】
請求項１６の本発明の楕円曲線暗号化向けの曲線パラメータ生成装置は、前記素数を法とする有限体上での楕円曲線にて、底点をランダムに定め、無限遠点を計算することで素数または素数に近い位数を持つ安全な底点を高速に検索する手段を備えることを特徴とする。
【００４５】
請求項１７の本発明の楕円曲線暗号化向けの曲線パラメータ生成装置は、ＣＭ法による数学的手法を利用して楕円曲線の位数と楕円曲線パラメータを関係付けることにより、パラメータ生成に必要な変数や定数を絞り込む手段を備えることを特徴とする。
【発明の効果】
【００４６】
本発明によれば、以下に述べるような効果が達成される。
【００４７】
第１に、素数ｑを法とする有限体上ＧＦ（ｑ）での楕円曲線Ｅ：ｙ２ = ｘ３ + ａｘ + ｂに対するパラメータ生成全体の処理速度を高速化することができる。
【００４８】
その理由は、素数ｑと楕円曲線の位数ｒを先に定めることで、楕円曲線の位数を計算する必要がなく、素数生成や底点のｋ倍算などの時間のかかる処理を必要最小限にとどめることが可能なためである。
【００４９】
第２に、暗号系に使用できる安全な楕円曲線Ｅを高速に生成することができる。
【００５０】
その理由は、底点Ｇの位数ｒまたはｒ’(r = r' * h) は十分に大きな素数であり、これにより全検索攻撃やＷｅｉｌペアリングに対する安全性が確保されるためである。
【００５１】
また、パラメータａ，ｂの生成に関しても、１つのランダムな数値ｃ∈ＧＦ（ｑ）を定めて計算できるためランダム性が高く柔軟かつ安全にパラメータを生成できる。底点Ｇに関しても、ｒＧ＝０（無限遠点）となる点Ｇをランダムに選択するため、その安全性を高めている。
【００５２】
また、全検索攻撃やＷａｉｌペアリングなどの攻撃に強い安全な楕円曲線を構成することができる。
【００５３】
また、楕円曲線のパラメータ生成処理が軽減されるため、ＲＳＡ暗号化などの処理効率を高くすることができる。
【００５４】
さらに、楕円曲線のパラメータ生成処理が軽減されるため、携帯端末（携帯電話、ＰＡＤなど）に、暗号化処理機能を持たせることができる。
【実施例】
【００５５】
まず、本発明による楕円曲線暗号化向け曲線パラメータの生成手法についてその概要を説明する。
【００５６】
本発明は、ＣＭ法と呼ばれる数学的手法を応用する。この手法は、楕円曲線の位数と楕円曲線パラメータを関係付けることができるため、本発明ではこの性質を応用してパラメータ生成に必要な変数や定数を絞り込みつつ、適度なランダム性を持ち安全な楕円曲線を高速に生成することを可能にした。
【００５７】
すなわち、素数ｑと位数ｒには、関係式が成り立っており、パラメータを一意に定めるための定数Ｄとランダムな変数であるＷ，Ｖを先に定めることで、素数ｑと位数ｒを定めることができる。このとき、位数ｒは必ずｑ≠ｒとなり、かつ、素数又は素数に近い、十分大きな整数値にすることで、全検索攻撃やＷａｉｌペアリングなどの攻撃に強い安全な楕円曲線を構成することができる。次に、定められた素数ｑと先に選択した定数Ｄ、ランダムな変数ｃにより、楕円曲線パラメータを出力することが可能である。このとき、定数Ｄと定数ｊ０には１：１の関係ができ、パラメータ生成を高速化している。また、定められた楕円曲線上で無限遠点となる底点を検索する手段を有する。
【００５８】
以下、本発明の実施例について図面を参照して詳細に説明する。図１は本発明の実施例による楕円曲線暗号化向け曲線パラメータ生成装置１００の構成を示す構成図である。
【００５９】
暗号化に必要な素数パラメータを算出する式ｙ２＝ｘ３＋ａｘ＋ｂを決定するための楕円曲線暗号化向け曲線パラメータ生成装置１００は、楕円曲線生成に必要なパラメータを生成する楕円曲線パラメータ生成装置１０と、パラメータ生成時に行う計算を実行する暗号演算装置１１により構成される。
【００６０】
楕円曲線パラメータ生成装置１０は、パラメータを生成するために必要な制御を行うパラメータ生成部１０１と、パラメータの検証を行うパラメータ検証部１０２により構成されている。
【００６１】
暗号演算装置１１は、楕円曲線パラメータを生成するための楕円曲線の素数となる点の演算を行う楕円曲線演算部１１１と、パラメータを計算するための巨大数演算部１１２により構成されている。
【００６２】
パラメータ生成部１０１は、楕円曲線の生成に場合には、暗号演算装置１１を制御できる手段であって、楕円曲線パラメータ生成装置１０に組み込まれたコンピュータ装置（CPU）により実現する。
【００６３】
パラメータ検証部１０２は、曲線の機能、安全性の検証の手段であって、IEEE P1363（公開かぎ暗号の標準仕様）に定義されている、楕円曲線パラメータ生成装置１０に組み込まれたコンピュータ装置（CPU）により実現する。
【００６４】
楕円曲線演算部１１１は、点の加算、減算、ｋ倍算の機能により楕円曲線のパラメータ生成が可能となる手段であって、楕円曲線パラメータ生成装置１０に組み込まれたコンピュータ装置（CPU）により実現する。
【００６５】
巨大数演算部１１２は、２０４８ビット以下の数値であれば四則演算、ＧＦ（ｑ）上の累乗演算や平方根演算、素数生成などの手段であって、楕円曲線パラメータ生成装置１０に組み込まれたコンピュータ装置（CPU）により実現する。
【００６６】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００６７】
図２は、楕円曲線パラメータと、底点を生成するフローチャートである。素数ｑと位数ｒを計算（ステップＳ２０１）と楕円曲線パラメータａ，ｂと底点Ｇ（ｘ，ｙ）を計算（ステップＳ２０２）により構成される。
【００６８】
素数ｑと位数ｒの計算（ステップＳ２０１）をフローチャート図３を参照して詳細に説明する。
【００６９】
素数ｑと位数ｒの計算（ステップＳ２０１）では、素数ｑのビット長を入力することにより、素数ｑ，位数ｒと選択したＤを出力する。
【００７０】
素数ｑと位数ｒを計算ステップＳ２０１において、素数ｑのビット長を入力する（ステップＳ３０１）。
【００７１】
変数Ｖをランダムに決定する（ステップＳ３０２）。変数Ｖが、二乗してもｓビットを越えないように十分小さい値を選択する必要がある。（ｓ／４ビット程度の大きさが適当）
【００７２】
定数Ｄを選択する（ステップＳ３０３）。定数Ｄは、あらかじめ定められた値１１，１９，４３のうちのどれかとなる。
【００７３】
位数ｒと素数ｑの関係には、ｒ＝＃Ｅ（ＧＦ（ｑ））はHasse Boundの条件式によって、以下の式を満たす。
k = L(√q + 1)２ / r 
このとき、整数Ｄは素数ｑとｋの値により条件付けされる。
【００７４】
ｑ≡３（mod 8）ならばＤ≡２，３，７（mod 8）
ｑ≡５（mod 8）ならばＤは奇数
ｑ≡７（mod 8）ならばＤ≡３，６，７（mod 8）
ｋ＝１ならばＤ≡３（mod 8）
ｋ＝２，３ならばＤ≠７（mod 8）
すなわち、ｑ≡３，５，７（mod 8）、Ｄ≡３（mod 8）と任意のｋの値により、ＣＭ法の条件を満たすことになる（ステップＳ３０４）。
【００７５】
ただし、パラメータ生成式の計算（ステップＳ２０１）における考慮として
a = 3*c２*j0 / (1728 - j0) (mod q)
b = 2*c３*j0 / (1728 - j0) (mod q)
のj0を一意の値に定められる定数Ｄで、j0が小さく計算を行いやすいＤの値は１１，１９，４３となる。
【００７６】
変数Ｗをランダムに決定する（ステップＳ３０５）。このとき、二乗してもｓビットを越えないように十分小さい値を選択する必要がある。（ｓ／２ビット程度の大きさが適当）
このビット長をｓとすると 4q = W２ + DV２ を満たすように各変数を判定する（ステップＳ３０６）。満たさない場合では、定数Ｄの選択（ステップＳ３０３）から処理をやり直す。
【００７７】
(W２ + DV２)は４で割り切れるか判定をする（ステップＳ３０７）。割り切れない場合では、定数Ｄの選択（ステップＳ３０３）からやり直す。
【００７８】
ｑ≡３，５，７（mod 8）を満たすか判定をする（ステップＳ３０８）。これ以外の値であった場合では、定数Ｄの選択（ステップＳ３０３）からやり直す。
【００７９】
ｑが、素数か判定をする（ステップＳ３０９）。素数でない場合では、定数Ｄの選択（ステップＳ３０３）からやり直す。
【００８０】
r = q + 1 - W により位数ｒを計算（プロセスにより、位数ｒは、必ずｑ≠ｒとなる。）し、この値が、素数または、素数に近い値 (r = r' * h) であるかを判定する（ステップＳ３１０）。大きな数の合成数（素数ではない）と判定された場合では、定数Ｄの選択（ステップＳ３０３）からやり直す。
【００８１】
上記判定（ステップＳ３０６）から（ステップＳ３１０）には、各条件を満たす場合では、素数ｑ、位数ｒ、選択した定数Ｄを出力する（ステップＳ３１１）。
【００８２】
楕円曲線パラメータａ、ｂと底点Ｇ（ｘ，ｙ）の計算（ステップＳ２０２）をフローチャート図４を参照して詳細に説明する。
【００８３】
楕円曲線パラメータａ、ｂと底点Ｇ（ｘ，ｙ）の計算（ステップＳ２０２）では、ｑ，ｒ，Ｄを入力して楕円曲線パラメータａ，ｂと底点Ｇ（ｘ，ｙ）を生成する。楕円曲線Ｅ：ｙ２＝ｘ３＋ａｘ＋ｂの楕円曲線パラメータａ，ｂは次の式により導出される。
【００８４】
ステップＳ２０１より計算された、ｑ、ｒ、Ｄを入力する（ステップＳ４０１）。
【００８５】
変数ｃをランダムに決定する（ステップＳ４０２）。
【００８６】
導出式を使用して、楕円曲線パラメータａ，ｂを計算する（ステップＳ４０３）。
a = 3*c２*j0 / (1728 - j0) (mod q)
b = 2*c３*j0 / (1728 - j0) (mod q)
このとき、j0 の値は以下のように与えられる。
Ｄ＝１１ならば j0 = (-2５)３
Ｄ＝１９ならば j0 = (-2５ * 3)３
Ｄ＝４３ならば j0 = (-2５ * 3 * 5)３
よって、ランダムなｃの値を与えることにより柔軟かつ容易に楕円曲線パラメータａ，ｂを出力することができる。
【００８７】
ランダムに変数ｃ∈ＧＦ（ｑ）を定める。最終的に素数ｑにて剰余を取るため、適度な大きさの数値を選択する。（ｓ／２ビット程度の大きさが適当）
【００８８】
ランダムに変数ｘ∈ＧＦ（ｑ）を定め、楕円曲線の式に従いｙ∈ＧＦ（ｑ）を計算して、底点Ｇ（ｘ，ｙ）を求める（ステップＳ４０４）。
【００８９】
ｒＧ＝０（無限遠点）となるか計算を行い、ｒ＝ｒ’＊ｈだった場合では、ｈＧを先に計算しこれを底点としてｒ’（ｈＧ）＝０計算（ステップＳ４０５）しなおすことで、素数位数の点を定義することができる。
【００９０】
ｒＧの計算によって無限遠点ｒＧ＝０が出力された場合では、条件を満たしているため楕円曲線パラメータａ，ｂと底点Ｇ（ｘ，ｙ）を出力する（ステップＳ４０８）。そうでない場合では、ランダムに底点Ｇ（ｘ，ｙ）を決定（ステップＳ４０４）からやり直す（ステップＳ４０６）。
【００９１】
また、ランダムに底点Ｇ（ｘ，ｙ）を決定（ステップＳ４０４）へのループを数回繰り返しても無限遠点が導出されない場合では、変数ｃをランダムに決定（ステップＳ４０２）からやり直す（ステップＳ４０７）。
【００９２】
また、変数ｃをランダムに決定（ステップＳ４０２）へのループを数回繰り返しても無限遠点が導出されない場合では、図２に示した素数ｑと位数ｒの計算（ステップＳ２０１）からやり直す。
【００９３】
楕円曲線パラメータａ，ｂと底点Ｇ（ｘ，ｙ）を出力する（ステップＳ４０８）。
【００９４】
上記のプロセスにより選ばれた値を使用することにより、例えば、ＳＡＲ暗号化における、暗証キーパラメータの公開キーと秘密キーの生成が可能となる。
【００９５】
以上説明したように、本実施例によれば、素数ｑと楕円曲線の位数ｒを先に定めることにより、素数ｑを法とする有限体上ＧＦ（ｑ）での楕円曲線Ｅ：ｙ２＝ｘ３＋ａｘ＋ｂに対する楕円曲線パラメータ生成全体の処理を容易にし、暗号化向け曲線パラメータの生成処理を高速化できる。
【００９６】
また、ＣＭ法の応用により楕円曲線パラメータａ、ｂの生成に関しても１つのランダムな数値ｃ∈ＧＦ（ｑ）を定めて計算できること、位数ｒまたはｒ’(r = r' * h) は十分に大きな素数であること、ＧＦ（ｑ）と十分に大きな位数ｒ＝＃Ｅ（ＧＦ（ｑ））を先に定めること、ｒＧ＝０（無限遠点）となる点Ｇをランダムに選択することにより、ランダム性が高く柔軟かつ安全に暗号化向け曲線パラメータを生成できる。
【００９７】
また、全検索攻撃やＷａｉｌペアリングなどの攻撃に強い安全な楕円曲線を構成することができる。
【００９８】
また、楕円曲線のパラメータ生成処理が軽減されるため、ＲＳＡ暗号化などの処理効率を高くすることができる。
【００９９】
さらに、楕円曲線のパラメータ生成処理が軽減されるため、携帯端末（携帯電話、ＰＡＤなど）に、暗号化処理機能を持たせることができる。
【０１００】
なお、本発明は上述した実施例に限定されるものではなく、その技術思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施例による楕円曲線暗号化向け曲線パラメータ生成装置の構成を示すブロック図である。
【図２】本発明の実施例による楕円曲線暗号化向け曲線パラメータ生成装置実施の動作を説明するフローチャートである。
【図３】本発明の実施例における、素数と、位数の計算における処理内容を説明するフローチャートである。
【図４】本発明の実施例における、楕円曲線パラメータと、底点の計算の処理内容を説明するフローチャートである。
【符号の説明】
【０１０２】
１００：楕円曲線暗号化向け曲線パラメータ生成装置
１０：楕円曲線パラメータ生成装置
１０１：パラメータ生成部
１０２：パラメータ検証部
１１：暗号演算装置
１１１：楕円曲線演算部
１１２：巨大数演算部
【図１】
2005283674.tif 000004
【図２】
2005283674.tif 000005
【図３】
2005283674.tif 000006
【図４】
2005283674.tif 000007