説明

暗号鍵解析方法、暗号鍵解析装置および暗号鍵解析プログラム

【課題】楕円曲線離散対数問題の解を求めるための計算量を削減すること。
【解決手段】暗号鍵解読装置100は、テーブル生成部132がBaby-StepおよびGiant-Stepを実行して、Tbテーブル141およびTbテーブル142を生成する場合に、楕円曲線演算の一部に、自己同型写像を適用することで、楕円曲線演算を実行すべき範囲を削減することができる。この結果、楕円曲線離散対数問題を解くための計算量を、従来のCheon解析法と比較して、1/(2m)1/2に削減することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号鍵解析方法、暗号鍵解析装置および暗号鍵解析プログラムに関する。
【背景技術】
【0002】
近年、ネットショッピングやネットバンキングが普及している。ネットショッピングやネットバンキングにおいて通信を行う場合には、情報漏洩などを防止するために、SSL(Secure Socket Layer)/TLS(Transport Layer Security)等の暗号技術が用いられる。暗号化方式を大別すると共通鍵暗号と公開鍵暗号に分類することができる。
【0003】
このうち、共通鍵暗号は、送信者と受信者とが同じ鍵を持つことにより暗号通信をおこなう方式である。すなわち、共通鍵暗号では、送信者は、あるメッセージを秘密の暗号鍵に基づいて暗号化して受信者に送る。受信者は、この暗号鍵を用いて暗号文を復号し、メッセージを入手する。
【0004】
公開鍵暗号は、対になる2つの鍵を使ってデータの暗号化、復号をおこなう方式である。すなわち、送信者は受信者によって公開されている公開鍵でメッセージを暗号化して送信する。これに対して、受信者は、暗号化された暗号化されたメッセージを秘密鍵で復号する。公開鍵は、メッセージを暗号化するための鍵であり、秘密鍵は、公開鍵により暗号化された情報を復号するための鍵である。公開鍵で暗号化された情報は、対の秘密鍵でのみ復号することができる。
【0005】
公開鍵暗号は、公開鍵を公開しても安全性を確保できるようにするために、数学的に難しいとされている問題に基づいて設計されている。例えば、公開鍵暗号には、RSA(Rivest Shamir Adleman)暗号、エルガマル暗号、楕円曲線暗号(Elliptic Curve Cryptosystem)がある。
【0006】
RSA暗号は、素因数分解問題と呼ばれる数学的問題の困難性に基づいている。エルガマル暗号は、離散対数問題と呼ばれる数学的問題の困難性に基づいている。楕円曲線暗号は、楕円曲線上の離散対数問題を基に設計されている。楕円曲線上の離散対数問題を「楕円曲線離散対数問題」と称する。このように、公開鍵暗号の安全性は、数学的問題の困難性に基づいている。したがって、これらの数学的問題の安全性が、公開鍵暗号の安全性の指標となる。
【0007】
楕円曲線暗号は、楕円曲線離散対数問題に基づく暗号である。楕円曲線離散対数問題に基づく暗号は、楕円曲線上の点および単位元となる無限遠点0の集合をなす加法群において定義される。この加法群に含まれる点の数を位数rと呼ぶ。楕円曲線上の点P1とP2に対する演算として、以下のものが定義されている。
加算:P3=P1+P2=P2+P1
2倍算:P2=2×P1=P1+P1
減算:P3=P1−P2
零点:0(無限遠点)=P1−P1
スカラ倍算:k×P=P+P+・・・+P
【0008】
ここで、k×PとPとからkを算出する問題を楕円曲線離散対数問題という。kは公開鍵暗号の秘密鍵に対応するものである。一般的に、位数rが十分に大きい場合には、解kを求めることは困難である。楕円曲線対数問題が困難であるという仮定のもとで、楕円曲線暗号は高い安全性を確保することができる。
【0009】
さらに近年では、ペアリングという公開鍵暗号技術が注目されている。ペアリングは楕円曲線暗号の一種である。楕円曲線上の2点に対するペアリングと呼ばれる演算を用いることで、従来の楕円曲線の機能を拡張する。この場合、楕円曲線離散対数問題の困難性に加え、いくつかの数学的問題の困難性に関する新たな仮定が必要となる。(L+1)双曲線Difie-Hellman指数問題と呼ばれる数学的問題の困難性を仮定することがある。(L+1)双曲線Difie-Hellman指数問題は、P、k×P、k×P、k×P、・・・、k×Pから、kやkL+1を求めるものである。この場合、P、k×Pからkを求める楕円曲線離散対数問題に比べ、k×P、k×P、・・・、k×Pなどの追加情報があることから、追加情報ありの楕円離散対数問題と呼ぶことがある。
【0010】
ここで、公開鍵暗号の安全性を評価するためには、その基となっている数学的問題の解析が必要となる。例えば、安全生を決定するパラメータの一つに位数rがあり、この位数rの値を大きくすれば、公開鍵暗号の安全性を高めることができるが、あまりにおおきな値にすると、暗号化、復号にかかる処理負荷も大きくなる。このため、安全性を保証しつつ、暗号化、復号にかかる処理負荷をある程度おさえることができるちょうど良い位数rの大きさを求めるべく、実際に計算機実験を行って、数学的問題の評価をおこなうことが重要となる。
【0011】
数学的問題の解析を行うものには、P、k×P、k×Pおよびdから、kを求める補助入力付き楕円曲線離散対数問題がある。ここで、dは(r−1)の約数である。この問題を解く方法として、例えば、Cheon解析法が知られている。Cheon解析法は、Baby-Step Giant-Step解析法(BSGS)を用いて攻撃を行う方法である。Cheon解析法では、BSGSを二重に処理することで攻撃を行う。BSGSでは2種類のテーブルを作成し、これら計算結果を比較して、秘密鍵kを求める。これにより、最小r1/4の数倍程度の計算量で暗号鍵としての秘密鍵kを解くことができる。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開平11−288215号公報
【特許文献2】特開2003−288013号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
しかしながら、上記のCheon解析法では、楕円曲線離散対数問題の解を求めるための計算量が多いという問題があった。
【0014】
開示の技術は、上記に鑑みてなされたものであって、楕円曲線離散対数問題の解を求めるための計算量を削減することができる暗号鍵解析方法、暗号鍵解析装置、および、暗号鍵解析プログラムを提供することを目的とする。
【課題を解決するための手段】
【0015】
本願の開示する暗号鍵解析方法は、一つの態様において、コンピュータが、楕円曲線離散対数問題の解を楕円曲線上の点に対応する生成元のべき乗で示し、前記生成元のべき乗部分を第1部分と第2部分に分割する分割ステップと、前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値を第1テーブルに格納する第1演算ステップと、前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納する第2演算ステップと、前記第1テーブルに格納された値と前記第2テーブルに格納された値とを比較し、一致した値に基づいて前記楕円曲線離散対数問題の解を算出することで暗号鍵を解析する暗号鍵解析ステップとを実行することを要件とする。
【発明の効果】
【0016】
本願の開示する暗号鍵解析方法の一つの態様によれば、楕円曲線離散対数問題の解を求めるための計算量を削減することができるという効果を奏する。
【図面の簡単な説明】
【0017】
【図1A】図1Aは、TbテーブルとTgテーブルとを比較する処理を補足するための図である。
【図1B】図1Bは、BSGSの具体例を説明するための図である。
【図2】図2は、Cheon解析法の具体例を説明するための図(1)である。
【図3】図3は、Cheon解析法の具体例を説明するための図(2)である。
【図4】図4は、Cheon解析法の具体例を説明するための図(3)である。
【図5】図5は、従来のCheon解析法の処理手順を示すフローチャートである。
【図6】図6は、本実施例1にかかる暗号鍵解読装置の構成を示す図である。
【図7】図7は、自己同型写像を適用した場合と適用していない場合との楕円曲線演算を実行すべき範囲を示す図(1)である。
【図8】図8は、自己同型写像を適用した場合と適用していない場合との楕円曲線演算を実行すべき範囲を示す図(2)である。
【図9】図9は、本実施例1にかかるTbテーブルのデータ構造の一例を示す図である。
【図10】図10は、本実施例1にかかるTgテーブルのデータ構造の一例を示す図である。
【図11】図11は、本実施例1にかかるテーブル生成部の構成を示す図である。
【図12】図12は、本実施例1にかかる処理部の処理手順を示すフローチャートである。
【図13】図13は、本実施例1にかかるテーブル処理部の処理手順を示すフローチャートである。
【図14】図14は、本実施例2にかかる暗号解読装置の構成を示す図である。
【図15】図15は、本実施例2にかかるTbテーブルのデータ構造の一例を示す図である。
【図16】図16は、本実施例2にかかるTgテーブルのデータ構造の一例を示す図である。
【図17】図17は、本実施例2にかかるテーブル生成部の構成を示す図である。
【図18】図18は、本実施例2にかかる処理部の処理手順を示すフローチャートである。
【図19】図19は、本実施例3にかかる暗号鍵解読装置の構成を示す図である。
【図20】図20は、本実施例3にかかるテーブル生成部の処理の概要を示す図である。
【図21】図21は、本実施例3にかかるTbテーブルのデータ構造の一例を示す図である。
【図22】図22は、本実施例3にかかるTgテーブルのデータ構造の一例を示す図である。
【図23】図23は、本実施例3にかかるテーブル生成部の構成を示す図である。
【図24】図24は、本実施例3にかかる処理部の処理手順を示すフローチャートである。
【図25】図25は、本実施例3にかかるテーブル生成部の処理手順を示すフローチャートである。
【図26】図26は、従来のCheon解析法、実施例1〜3の楕円演算回数、テーブルのデータ量の比較結果を示す図(1)である。
【図27】図27は、従来のCheon解析法、実施例1〜3の楕円演算回数、テーブルのデータ量の比較結果を示す図(2)である。
【図28】図28は、テーブル作成時間とテーブル量とを示す図である。
【図29】図29は、暗号鍵解読プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0018】
まず、本願の開示する暗号鍵解読装置における技術を説明するうえでの原理を図面に基づいて説明する。以下では、Baby-Step Giant-Step解析法、Cheon解析法、自己同型写像、自己同型写像のべき表現の順に説明する。
【0019】
まず、「Baby-Step Giant-Step解析法」について説明する。以下では、Baby-Step Giant-Step解析法をBSGSと表記する。BSGSは、楕円曲線離散対数問題の効率的な解法の一つである。位数rの楕円曲線パラメータを使用し、未知値x(0<x<r)を、既知のx×GとGから求める楕円曲線対数問題を解く場合には、BSGSは、2×r1/2回程度の楕円曲線演算によって楕円曲線離散対数問題を解くことができる。これに対して、BSGSを用いず、楕円曲線離散対数問題を総当たりで求めると、平均r/2回程度の演算が必要となってしまう。
【0020】
BSGSでは、未知数xを「r1/2の値を切り上げた値」の進数で、上位値xと下位値xに分割し、Baby-Stepを実行してTbテーブルを作成し、Giant-Stepを実行してTgテーブルを作成する。Baby-Stepでは、順次iの値を変化させながら「(x−i)×G」を順次算出し、Tbテーブルに計算結果を順次格納する。一方、Giant-Stepでは、順次jの値を変化させながら「j×G」を順次算出し、Tgテーブルに計算結果を順次格納する。なお、i、jには、進数に応じて所定の値が乗算される。
【0021】
図1Aは、TbテーブルとTgテーブルとを比較する処理を補足するための図である。図1Aの1aは、未知数xの上位部分であり、1bは、未知数xの下位部分である。TbテーブルとTgテーブルとを比較することは、図1Aの2a部分に対応する値と、2b部分に対応する値とを比較することである。
【0022】
図1Bは、BSGSの具体例を説明するための図である。ここでは一例として、位数r=97とし、GおよびxGの値が与えられるものとする。なお、未知数x=96とする。Baby-Stepにおいて、BSGSは、iの値を順次変化させ、「xG−iG」を順次計算することで、Tbテーブル10aを生成する。図1に示す例では、iの値を0〜9とする。Giant-Stepにおいて、BSGSは、jの値を順次変化させ、「j×10G」を順次計算することで、Tgテーブル10bを生成する。図1に示す例では、jの値を0〜9とする。
【0023】
BSGSでは、Tbテーブル10aの各値とTgテーブル10bの各値とを比較し、各値が一致する場合のiおよびjの値を判定する。未知数xとi、jとの関係は、「x=i+10j」となるため、各値が一致する場合のiおよびjの値を判定することができれば、未知数xを算出することができる。図1に示す例では、Tbテーブル10aのiが「6」となる場合の値「90」と、Tgテーブル10bのjが「9」となる場合の値「90」が一致する。このため、未知数xは、「x=6+9×10=96」となる。BSGSでは、このようにして未知数xを算出する。このときの楕円曲線演算は20回となる。この回数は、上述した「2×r1/2」の値とほぼ同じである。
【0024】
ここで、楕円曲線離散対数問題を総当たりで求める場合について説明する。楕円曲線離散対数問題を総当たりで求める場合には、平均r/2回程度の楕円曲線演算が行われる。GとxGの値が与えられた場合に、iの値を順次変化させ「i×G」を順次計算し、計算結果とxGの値とを比較して未知数xを求める。例えば、未知数x=96の場合には、iの値が96になった場合に、「i×G」の値とxGとの値が一致するため、未知数x=96として求めることができる。この場合には、楕円曲線演算を96回行う必要がある。
【0025】
位数rの場合、BSGSでは平均2×r1/2回程度の楕円曲線演算によって楕円曲線離散対数問題を解くことができるが、総当たり法では、平均r/2回程度の楕円曲線演算が必要となる。以上のことから、BSGSは、総当たり法と比較して、楕円曲線問題を解く場合の楕円曲線演算の回数が少なくなる。
【0026】
次に、「Cheon解析法」について説明する。Cheon解析法は、追加情報ありの楕円離散対数問題に対して、BSGSを適用して解を算出する方法である。上記BSGSでは、GとxGとから未知数xを求めたが、Cheon解析では、G、xG、xG、dを利用して、未知数xを求める。dはr−1の約数に対応するものである。Cheon解析法では、BSGSを二重に行うことで、計算量を削減する。仮に、dの値が、r1/2の値とほぼ同じ値となる場合には、楕円曲線演算の回数がほぼr1/4となることが知られている。
【0027】
以下において、Cheon解析法の具体例について説明する。図2〜図4は、Cheon解析法の具体例を説明するための図である。
【0028】
Cheon解析法では、点Gに対する位数rの生成元ζを求め、x=ζとなるyを見つける。ここで、yの値域は、0〜r−1となる。図2の左側の各数値は、図1Aに示した各数値と同様である。図2の右側において、yは、yを(r−1)/dで除算した商に対応し、yは、yを(r−1)/dで除算した余りに対応する。
【0029】
図2に示すように、部分2aに対応する値と部分2bに対応する値とを比較することは、部分3aに対応する値と部分3bに対応する値とを比較することと同じである。なお、部分2aに対応する値は「(x−i)×G」であり、部分2bに対応する値は「j×G」である。部分3aに対応する値は「
【数1】

」であり、部分3bに対応する値は「ζ×G」である。つまり、Cheon解析法では、ζの指数部分において、BSGSと同様の処理を実行することで、yを求める。
【0030】
なお、Cheon解析法では、はじめからx=ζとなるyを求めるのではなく、yをyとyに分割し、yとyとをそれぞれ求める。
【0031】
まず、yを求める場合について説明する。xG=ζGとなるzを求めることと、yを求めることは、数学的に同じ意味を持つ。だたし、ζ=ζとする。zを求めるために、BSGSを適用することで、計算量0(r1/4)でzを求めることができる。
【0032】
図3の右側に示すように、Cheon解析法では、zを上位zとzに分割する。そして、Cheon解析法では、Baby-Stepにおいて、iの値を変化させながら「
【数2】

」を順次算出し、Tbテーブルに計算結果を順次格納する。また、Giant-Stepにおいて、jの値を変化させながら「ζ×G」を順次算出し、Tgテーブルに計算結果を順次格納する。Cheon解析法では、Tbテーブルの各値とTgテーブルの各値とを比較し、各値が一致する場合のiおよびjの値を判定する。iとjとの値が分かれば、zを求めることができる。
【0033】
続いて、Cheon解析法では、yを求めた後に、残りのyを求める。Cheon解析法では、
【数3】

となるwの値を見つける。wの値は、yに対応するものである。wの値域は0〜dとなる。
【0034】
図4の右側に示すように、wを上位wとwに分割する。そして、Cheon解析法では、Baby-Stepにおいて、iの値を変化させながら「
【数4】

」を順次算出し、Tbテーブルに計算結果を順次格納する。また、jの値を変化させながら「ζ×G」を順次算出し、Tgテーブルに計算結果を順次格納する。Cheon解析法では、Tbテーブルの各値とTgテーブルの各値とを比較し、各値が一致する場合のiおよびjの値を判定する。iとjとの値が分かれば、wを求めることができる。
【0035】
上記のように、図2〜図4の処理を実行することで、yに対応するzと、yに対応するwが求まるので、yの値が特定される。上記のCheon解析法では、最小0(r1/4)の計算量で、追加情報ありの楕円離散対数問題を解析することができる。
【0036】
次に、従来のCheon解析法の処理手順について説明する。図5は、従来のCheon解析法の処理手順を示すフローチャートである。図5に示すように、Cheon解析法では、未知数x=ζとし、yをyとyに分割する(ステップS10)。
【0037】
Cheon解析法では、y部分に対してBaby-Stepを実行し、ζ−u1×xGとなるTbテーブルを作成する(ステップS11)。ただし、u1の値域を0≦u1<d1とする。ここで、d1は、((r−1)/d)1/2の値を切り上げたものに対応する。
【0038】
Cheon解析法では、y部分に対してGiant-Stepを実行し、ζv1・d1×GとなるTgテーブルを作成する(ステップS12)。ただし、v1の値域を0≦v1<d1とする。
【0039】
Cheon解析法では、TbテーブルとTgテーブルとを比較し、ζ−u1×xG=ζv1・d1×Gとなるu1、v1の組を算出する(ステップS13)。Cheon解析法では、u1とv1とを加算することでzを算出する(ステップS14)。このzは、yに対応するものである。
【0040】
続いて、Cheon解析法では、上位部分に対してBaby−Stepを実行し、ζ−u2(r−1)/r×xG{0≦u2<d1’’}となるTbテーブル141を作成する(ステップS15)。また、Cheon解析法では、上位部分に対してGiant−Stepを実行し、ζk1ζr2・d2・(r−1)/r×G{0≦v2<d’’}となるTgを計算し、全ての点からなるTgテーブルを作成する(ステップS16)。
【0041】
Cheon解析法では、TbテーブルとTgテーブルとを比較し、ζ−u2(r−1)/r×xG=、ζk1ζr2・d2・(r−1)/r×Gとなる(u2、v2)の組を算出する(ステップS17)。Cheon解析法では、、w=y=u2+v2d’’により、yの上位部分wを算出する(ステップS18)。このwは、yに対応するものである。そして、Cheon解析法では、zとw(r−1)/dとを加算することで、yを算出する(ステップS19)。このyは、x=ζと、未知数xに対応するものである。以上、Cheon解析法の具体例について説明した。このようにして、Cheon解析法では、未知数xを算出する。
【0042】
次に、「自己同型写像」について説明する。一部の楕円曲線では、楕円曲線上の点PのFrobenius写像Φ(P)が高速に計算できる。例えば、有限体(3127)の楕円曲線では、点P=(x、y)のFrobenius写像Φ(P)=(x、y)も同一の楕円曲線上の点となる。このFrobenius写像Φ(P)は、各座標を3乗するだけであり、他の楕円曲線演算に比べて高速に計算できる。なお、点PにFrobenius写像Φ(P)をi回適用して得られる点であるΦ(i)(P)は以下のように記述される。すなわち、Φ(i)(P)=Φ(Φ(・・・Φ(P)))となる。
【0043】
また、一部の楕円曲線ではマイナス写像についても高速に計算できる。マイナス写像は、点Pを点−Pに対応させる写像である。例えば、有限体GF(3127)における楕円曲線では、点P=(x,y)のマイナス写像−P=(x,−y)も同一の楕円曲線上の点となる。以下では、Frobenius写像およびマイナス写像をまとめて自己同型写像と呼ぶ。
【0044】
次に、「自己同型写像のべき表現」について説明する。有限体GF(q)における楕円曲線の場合、任意の点にFrobenius写像をm回適用すると元の点に戻る。つまり、Φ(m)(P)=Pとなる。また、任意の点のマイナス写像を2回適用すると元の点に戻る。つまり、(−1)×P=Pとなる。
【0045】
上記自己同型写像を生成元ζのべき乗として表すと、自己同型写像は、(−1)(i)Φ(j)P=ζ(i・m+2・c・j)(r―1)/2m×Pと表現することができる。ここで、cは楕円曲線と生成元の値によって一意に決まる定数である。iおよびjの値は、i=0〜1、j=0〜m−1である。
【0046】
特に、有限体GF(3127)楕円曲線上の点でマイナス点とFrobenius写像も同じ楕円曲線上の点となるような点Pに関し、生成元ζ=3、m=127、c=110の場合には、自己同型写像は、(−1)(i)Φ(j)P=ζ(127・i+220・j)(r―1)/254×Pと表現することができる。
【0047】
以上、本願の開示する暗号鍵解読装置における技術を説明する上での原理を説明した。以下に、本願の開示する暗号鍵解読装置の実施例を図面に基づいて詳細に説明する。なお、この実施例により発明が限定されるものではない。
【実施例1】
【0048】
本実施例1にかかる暗号鍵解読装置について説明する。図6は、本実施例1にかかる暗号鍵解読装置の構成を示す図である。この暗号鍵解読装置100は、楕円曲線離散対数問題を解くことで、公開鍵暗号の秘密鍵を算出する装置である。図6に示すように、この暗号鍵解読装置100は、入力部110、出力部120、処理部130、記憶部140を有する。
【0049】
入力部110は、外部から情報を入力する。例えば、入力部110は、ユーザからの指示を受け付けて、受け付けた指示を処理部130に入力する。また、入力部110は、楕円曲線離散対数問題を解読する場合に利用する各種のパラメータを受け付け、受け付けたパラメータを処理部130に入力する。出力部120は、楕円離散対数問題の解読結果を出力する。
【0050】
処理部130は、パラメータ取得部131、テーブル生成部132、テーブル比較部133、未知数算出部134、制御部135を有する。
【0051】
パラメータ取得部131は、入力部110からパラメータを取得し、取得したパラメータをテーブル生成部132に出力する処理部である。なお、パラメータ取得部131は、パラメータを記憶部140に記憶させておき、ユーザからの指示を受け付けた場合に、記憶部140に記憶されたパラメータを取得してもよい。
【0052】
ここで、パラメータの一例について説明する。パラメータには、G、ζ、m、d’’が含まれる。このうち、Gは、楕円曲線上の点である。ζは、位数rの生成元である。mは、拡大次数である。d’’は、テーブルの作成範囲を指定するものである。具体的に、自己同型写像を利用してyを求める場合には、G=G、ζ=ζ、d’’は、「((r−1)/d/2m)1/2の値を切り上げた値」となる。また、自己同型写像を利用してyを求める場合には、G=G、ζ=ζ(r−1)/d、d’’は、「(d/2m)1/2の値を切り上げた値」となる。自己同型写像を利用する場合、yを求める場合とyを求める場合のどちらかでのみ使用されることが多い。そのため、以降では、特に記述がない場合にはyの生成の場合について説明する。
【0053】
テーブル生成部132は、Cheon解析法の要領で、Baby-StepおよびGiant-Stepを実行し、TbテーブルおよびTgテーブルを生成する処理部である。特に、テーブル生成部132は、Giant-Stepを実行してTgテーブルを作成する場合に、楕円曲線演算の一部に、自己同型写像を適用することで、計算量の削減を図る。
【0054】
自己同型写像をCheon解析法に適用するためには、自己同型写像を生成元ζの指数乗倍で表現する必要がある。自己同型写像を生成元ζの指数乗倍で表すと、(−1)(i)Φ(j)×P=ζ(i・m+2・c・j)d’’Pとなる。dは、r−1の約数であり、このdは、約数2とmを含めないように選択された値とする。自己同型写像を適用することで、楕円曲線演算を実行すべき範囲を削減することができる。このように選択すると、yLを求めるのに自己同型写像を使用することになる。
【0055】
ここで、自己同型写像を適用した場合と適用していない場合との楕円曲線演算を実行すべき範囲について説明する。図7および図8は、自己同型写像を適用した場合と適用していない場合との楕円曲線演算を実行すべき範囲を示す図である。図7の上段は、自己同型写像を適用しない従来のCheon解析法に対応する。図7の下段は、自己同型写像を適用する今回のアイデアに対応する。
【0056】
図7では、探索範囲を上位dと下位(r−1)/dに分割する場合を示している。例えば、図7の上段に示すように、(r−1)/dの範囲を探索する場合には、(r−1)/dの範囲に対して楕円曲線演算を実行し、zを算出する必要があった。zを算出する場合には、図3で説明したように、zをzとzに分割し、Baby-StepおよびGiant-Stepを実行して、TbテーブルとTgテーブルとを比較することで、zを算出する。
【0057】
これに対して、自己同型写像を適用すると、(r−1)/dの範囲に対して楕円曲線演算を実行する必要がない。図7の下段に示すように、楕円曲線演算を実行する範囲は、(r−1)/d/2mでよくなり、残りの範囲は、自己同型写像「(−1)Φ」を用いて求めればよい。
【0058】
図8に示すように、Baby-Stepを実行する範囲は20bとなり、Giang-Stepを実行する範囲は20aとなる。Baby-Stepを実行する範囲20bには、自己同型写像を適用する範囲が含まれないので、Cheon解析法と同様にして、Tbテーブルを作成する。これに対して、Giant-Stepを実行する範囲20bには、自己同型写像を適用する範囲が含まれる。このため、Giant-Stepを実行する場合には、楕円曲線演算の一部に自己同型写像を適用してTgテーブルを作成する。
【0059】
テーブル生成部132が、Baby-Stepを実行する場合の処理について説明する。テーブル生成部132は、u1の値を変化させながら、「ζ−u1×xG」を順次算出することで、Tbテーブルを作成する。なお、u1の値域を「0≦u1<d1’’」とする。
【0060】
図9は、本実施例1にかかるTbテーブルのデータ構造の一例を示す図である。図9に示すように、このTbテーブル141は、kの値と、kの値に応じたζ−k×xGの点とを対応付けて記憶する。Tbテーブル141のkは、u1に対応する値である。
【0061】
テーブル生成部132が、Giang-Stepを実行する場合の処理について説明する。テーブル生成部132は、v1、i、jの値を順次変化させながら、「(−1)(i)Φ(j)(ζv1・d1×G)」を順次算出することで、Tgテーブル142を作成する。なお、v1の値域を「0≦v1<d1’’」とする。iの値域を「0、1」とする。jの値域を「0≦j<m−1」とする。
【0062】
図10は、本実施例1にかかるTgテーブルのデータ構造の一例を示す図である。図10に示すように、このTgテーブル142は、k、i、jの値と、k、i、jの値に応じた(−1)(i)Φ(j)(ζk・d1×G)の点とを対応付けて記憶する。Tgテーブルのkは、v1に対応する値である。
【0063】
ここで、テーブル生成部132の構成について説明する。図11は、本実施例1にかかるテーブル生成部の構成を示す図である。図11に示すように、テーブル生成部132は、テーブル生成制御部150、スカラ倍算部151、自己同型写像計算部152を有する。
【0064】
テーブル生成制御部150は、スカラ倍算部151および自己同型写像計算部152を利用して、「ζ−u1×xG」、「(−1)(i)Φ(j)(ζv1・d1×G)」に対応する値を算出し、Tbテーブル141およびTgテーブル142を作成する処理部である。
【0065】
テーブル生成制御部150は、パラメータd1’’、ζ、G、m、Tを取得する。テーブル生成制御部150は、Tに応じて、Tbテーブル141またはTgテーブル142を生成すると判定する。Tは、Tbテーブル141を作成するのか、Tgテーブル142を作成するのかを識別する情報である。テーブル生成制御部150は、制御部135からTを取得する。
【0066】
テーブル生成制御部150が、Tbテーブル141を生成する場合について説明する。テーブル生成制御部150は、スカラ倍算部151に、ζ、G、kを順次入力し、スカラ倍算部151から(ζを順次取得する。Tbテーブル141を生成する場合のkは、上記u1に対応する。テーブル生成制御部150は、kと(ζとを対応付けて、Tbテーブル141に登録する。
【0067】
テーブル生成制御部150が、Tgテーブル142を生成する場合について説明する。テーブル生成制御部150は、ζ、G、kをスカラ倍算部151に順次入力し、スカラ倍算部151から(ζを順次取得する。Tgテーブル142を生成する場合のkは、上記v1に対応する。テーブル生成制御部150は、(ζを取得した後に、i、j、(ζを自己同型写像計算部152に順次入力し、自己同型写像計算部152から(−1)(i)Φ(j)((ζ×G)を取得する。テーブル生成制御部150は、iとjとkと(−1)(i)Φ(j)((ζ×G)とを対応付けて、Tgテーブル142に登録する。
【0068】
スカラ倍算部151は、テーブル生成制御部150から、ζ、G、kを受け付け、(ζを算出する処理部である。スカラ倍算部151は、(ζをテーブル生成制御部150に出力する。
【0069】
自己同型写像計算部152は、テーブル生成制御部150から、i、j、(ζを受け付け、(−1)(i)Φ(j)((ζ×G)を算出する処理部である。自己同型写像計算部152は、(−1)(i)Φ(j)((ζ×G)をテーブル生成制御部150に出力する。
【0070】
ところで、テーブル生成部132は、上記の処理を、未知数yの下位部分と、上位部分に対してそれぞれ実行するものとする。未知数yの下位部分は、図3に示した(r−1)/dの範囲に対応する。また、未知数yの上位部分は、図4に示したdの範囲に対応する。下位部を求める場合には、楕円曲線演算の一部に自己同型写像を適用することで、計算量を削減する。上位部を求める場合には、自己同型写像演算を用いない従来と同様の計算を行う。
【0071】
図6の説明にもどる。テーブル比較部133は、Tbテーブル141とTgテーブル142とを比較して、
ζ−u1×xG=(−1)(i)Φ(j)(ζv1・d1×G)
となる(u1、v1、i、j)の組を求める処理部である。テーブル比較部133は、求めた(u1、v1、i、j)の組を未知数算出部134に出力する。
【0072】
Tbテーブル141、Tgテーブル142は、未知数yの下位部分、上位部分に対応してそれぞれ作成される。このため、テーブル比較部133は、部分毎に、(u1、v1、i、j)の組を未知数算出部134に出力する。
【0073】
未知数演算部134は、テーブル比較部133から、(u1、v1、i、j)の組を取得し、秘密鍵を算出する。ここでは、未知数yの下位部分をz、秘密鍵の上位部分をwとする。
【0074】
未知数演算部134は、下位部分から求められた組(u1、v1、i、j)を基にして、未知数yの下位部分をz=u1+v1・d1’’+(i・m+2・c・j)d’’により算出する。この場合には、xG=ζGとなるので、x=ζとなるzが求まる。
【0075】
未知数演算部134は、上位部分から求められた組(u2、v2)を基にして、未知数yの上位部分をw=u2+v2・d1’’により算出する。ここで、d’’=d2(従来値)とする。
【0076】
未知数演算部134は、zとwを求めた後に、y=z+w(r−1)/dにより求める。秘密鍵xとyとの間には、x=ζの関係がある。未知数演算部134は、秘密鍵xとyとの関係から、秘密鍵xを求め、求めた秘密鍵xの情報を出力部120に出力する。
【0077】
制御部135は、パラメータ取得部131、テーブル生成部132、テーブル比較部133、未知数算出部134の各部に対して、上記で説明したような動作を行うように制御する処理部である。例えば、制御部135は、Tをテーブル生成部132に入力して、Tbテーブル141またはTgテーブル142を作成させる。そして、Tbテーブル141、Tgテーブル142が作成された後に、制御部135は、テーブル比較部133に指示を出し、Tbテーブル141とTgテーブル142とを比較させる。
【0078】
記憶部140は、Tbテーブル141およびTgテーブル142を記憶する記憶部である。Tbテーブル141のデータ構造は、図9のものとなる。Tgテーブル142のデータ構造は、図10のものとなる。
【0079】
次に、本実施例1にかかる処理部130の処理手順について説明する。図12は、本実施例1にかかる処理部の処理手順を示すフローチャートである。例えば、図12に示す処理は、入力部110から、楕円曲線離散対数問題を解く旨の指示を受け付けた場合に実行される。図12に示すように処理部130は、秘密鍵x=ζとし、yを上位部分と下位部分に分割する(ステップS101)。
【0080】
処理部130は、下位部分に対してBaby-Stepを実行し、ζ−u1×xG{0≦u1<d1’’}となるTbテーブル141を作成する(ステップS102)。処理部130は、下位部分に対してGiant-Stepを実行し、ζv1・d1×G{0≦v1<d1’’}と、各点の自己同型写像(−1)(i)Φ(j)(ζv1・d1×G)を算出し、全ての点からなるTgテーブル142を作成する(ステップS103)。
【0081】
処理部130は、Tbテーブル141とTgテーブル142とを比較し、ζ−u1×xG=(−1)(i)Φ(j)(ζv1・d1×G)となる(u1、v1、i、j)の組を算出する(ステップS104)。処理部130は、z=u1+v1・d1’’+(i・m+2・c・j)d’’により、yの下位部分zを算出する(ステップS105)。
【0082】
処理部130は、上位部分に対してBaby−Stepを実行し、ζ−u2(r−1)/r×xG{0≦u2<d1’’}となるTbテーブル141を作成する(ステップS106)。処理部130は、上位部分に対してGiant−Stepを実行し、ζk1ζr2・d2・(r−1)/r×G{0≦v2<d’’}となるTgを計算し、全ての点からなるTgテーブルを作成する(ステップS107)。
【0083】
処理部130は、TbテーブルとTgテーブルとを比較し、ζ−u2(r−1)/r×xG=、ζk1ζr2・d2・(r−1)/r×Gとなる(u2、v2)の組を算出する(ステップS108)。処理部130は、w=y=u2+v2d’’により、yの上位部分wを算出する(ステップS109)。なお、d’’は、d1/2の値を切り上げたものである。
【0084】
処理部130は、y=z+w(r−1)/dにより、yの値を算出する(ステップS110)。処理部130は、x=ζの関係からxを求め(ステップS111)、秘密鍵xを出力する(ステップS112)。
【0085】
次に、本実施例1にかかるテーブル生成部132がTbテーブル141およびTgテーブル142を生成する処理手順について説明する。図13は、本実施例1にかかるテーブル生成部の処理手順を示すフローチャートである。
【0086】
図13に示すように、テーブル生成部132は、パラメータd1’’、ζ、G、m、Tを取得し(ステップS201)、kを初期値に設定する(ステップS202)。テーブル生成部132は、スカラ倍計算(ζを実行し(ステップS203)、{k、(ζ}を記憶部140に出力する(ステップS204)。
【0087】
テーブル生成部132は、i=0〜1、j=0〜m−1に対して、自己同型写像計算(−1)(i)Φ(j)((ζ×G)を実行する(ステップS205)。テーブル生成部132は、{k、i、j、(−1)(i)Φ(j)(ζ×G}を記憶部140に出力する(ステップS206)。
【0088】
テーブル生成部132は、k=k+1を算出し(ステップS207)、kの値がd’’−1の値よりも大きいか否かを判定する(ステップS208)。テーブル生成部132は、kの値がd’’−1の値以下の場合には(ステップS208,No)、ステップS203に移行する。一方、テーブル生成部132は、kの値がd’’−1の値より大きい場合には(ステップS208,Yes)、処理を終了する。
【0089】
次に、本実施例1にかかる暗号解読装置100の効果について説明する。本実施例1にかかる暗号解読装置100は、Giant-Stepを実行して、Tbテーブル141を生成する場合に、楕円曲線演算の一部に、自己同型写像を適用することで、楕円曲線演算を実行すべき範囲を削減することができる。下位部分の計算量を、従来のCheon解析法と比較して、1/(2m)1/2に削減することができる。例えば、有限体GF(3m)上の楕円曲線の場合には、m=127であるため、従来のCheon解析法と比較して、下位部分の計算量が(1/16)1/2=1/4程度となる。
【0090】
ところで、図6に示した暗号鍵解読装置100の構成は一例であり、暗号鍵解読装置100は、必ずしも図6に示した各処理部を全て有していなくてもよい。例えば、暗号鍵解読装置100は、分割部と、第1演算部と、第2演算部と、暗号鍵解析部とを有していればよい。
【0091】
このうち分割部は、楕円曲線離散対数問題の解を楕円曲線上の点に対応する生成元のべき乗で示し、前記生成元のべき乗部分を第1部分と第2部分に分割する処理部である。第1演算部は、第1部分の値を所定の値域で変化させた場合に生成元をべき乗することで算出される値を第1テーブルに格納する処理部である。第2演算部は、第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納する処理部である。分割部、第1演算部、第2演算部は、テーブル生成部132に対応する。
【0092】
暗号鍵解析部は、第1テーブルに格納された値と第2テーブルに格納された値とを比較し、一致した値に基づいて前記楕円曲線離散対数問題の解を算出することで暗号鍵を解析する処理部である。この暗号鍵解析部は、テーブル比較部133、未知数算出部134に対応する。
【実施例2】
【0093】
ところで、上記の実施例1では、従来のCheon解析法と比較して、計算量を大幅に削減できるものの、Tgテーブル242のデータ量が従来のものと比較して約8倍に増えてしまう。以下の実施例2では、データ量が増加させず、計算量を削減することを可能にする暗号鍵解読装置について説明する。
【0094】
図14は、本実施例2にかかる暗号鍵解読装置の構成を示す図である。図14に示すように、この暗号鍵解読装置200は、入力部210、出力部220、処理部230、記憶部240を有する。
【0095】
このうち、入力部210、出力部220に関する説明は、図1に示した入力部110、出力部120に関する説明と同様である。
【0096】
処理部230は、パラメータ取得部231、テーブル生成部232、テーブル比較部233、未知数算出部234、制御部235を有する。
【0097】
パラメータ取得部231は、入力部210からパラメータを取得し、取得したパラメータをテーブル生成部232に出力する処理部である。パラメータは、実施例1と同様にして、G、ζ、m、d’’が含まれる。なお、パラメータ取得部231は、パラメータを記憶部240に記憶させておき、ユーザからの指示を受け付けた場合に、記憶部240に記憶されたパラメータを取得してもよい。
【0098】
テーブル生成部232は、Cheon解析法の要領で、Baby-StepおよびGiant-Stepを実行し、Tbテーブル241およびTgテーブル242を生成する処理部である。特に、テーブル生成部232は、Giant-Stepを実行してTbテーブル241を作成する場合に、楕円曲線演算の一部に、自己同型写像を適用することで、計算量の削減を図る。
【0099】
ところで、実施例1のテーブル生成部132は、Baby-Stepを実行して、u1の値を「0〜d1’’」まで変化させながら、「ζ−u1×xG」を順次算出していた。また、Giant-Stepを実行して、v1の値を「0〜d1’’」まで変化させながら、「ζv1・d1×G」を順次算出していた。つまり、実施例1では、u1の値域と、v1の値域は「0〜d1’’」で共通であった。
【0100】
これに対して、テーブル生成部232は、u1の値域と、v1の値域とを不均一に設定する。具体的には、テーブル生成部232は、Baby-Stepを実行して、u1の値を「0〜d1」まで変化させながら、「ζ−u1×xG」を順次算出する。ここで、d1=((r−1)/d)1/2である。また、テーブル生成部232は、Giant-Stepを実行して、v1の値を「0〜d1」まで変化させながら、「ζv1・d1×G」を順次算出する。ここで、d1=((r−1)/d/2m)/d1)である。
【0101】
Baby-Stepを実行する場合のu1の値域0〜d1は、従来のCheon解析法の値域と同じであり、アルゴリズムも共通することから、Tbテーブル241の計算量およびデータ量は、従来のものと同じになる。これに対して、Giant-Stepを実行する場合のv1の値域は、0〜d1であり、d1=d1/2mの関係があるため、従来のものと比較して、計算量を約1/2に削減することができる。また、Tgテーブル242のデータ量は従来のCheon解析法と同じになる。つまり、本実施例2のテーブル生成部232は、従来のCheon解析法と比較した場合には、データ量を増加させることなく、計算量を1/2に削減することができる。
【0102】
テーブル生成部が、Baby-Stepを実行する場合の処理について説明する。テーブル生成部232は、u1の値を変化させながら、「ζ−u1×xG」を順次算出することで、Tbテーブル241を作成する。なお、u1の値域は上記のように「0≦u1<d1」とする。
【0103】
図15は、本実施例2にかかるTbテーブルのデータ構造の一例を示す図である。図15に示すように、このTbテーブル241は、kの値と、kの値に応じたζ−k×xGの点とを対応付けて記憶する。Tbテーブル241のkは、u1に対応する値である。
【0104】
テーブル生成部232が、Giang-Stepを実行する場合の処理について説明する。テーブル生成部232は、v1、i、jの値を順次変化させながら、「
【数5】

」を順次算出することで、Tgテーブル242を作成する。なお、v1の値域を「0≦v1<d1」とする。iの値域を「0、1」とする。jの値域を「0≦j<m−1」とする。
【0105】
図16は、本実施例2にかかるTgテーブルのデータ構造の一例を示す図である。図16に示すように、このTgテーブル242は、k、i、jの値と、k、i、jの値に応じた「
【数6】

」の点とを対応付けて記憶する。Tgテーブル242でのkは、v1に対応する値である。
【0106】
ここで、テーブル生成部232の構成について説明する。図17は、本実施例2にかかるテーブル生成部の構成を示す図である。図17に示すように、テーブル生成部232は、テーブル生成制御部250、スカラ倍算部251、自己同型写像計算部252を有する。
【0107】
テーブル生成制御部250は、パラメータd1’’、ζ、G、m、Tを取得する。テーブル生成制御部250は、Tに応じて、Tbテーブル241またはTgテーブル242を生成すると判定する。Tは、Tbテーブル241を作成するのか、Tgテーブル242を作成するのかを識別する情報である。テーブル生成制御部250は、制御部235からTを取得する。
【0108】
テーブル生成制御部250が、Tbテーブル241を生成する場合について説明する。テーブル生成制御部250は、スカラ倍算部251に、ζ、G、kを順次入力し、スカラ倍算部251から(ζを順次取得する。Tbテーブル241を生成する場合のkは、上記u1に対応する。テーブル生成制御部250は、kと(ζとを対応付けて、Tbテーブル241に登録する。
【0109】
テーブル生成制御部250が、Tgテーブル242を生成する場合について説明する。テーブル生成制御部250は、ζ、G、kをスカラ倍算部251に順次入力し、スカラ倍算部251から(ζを順次取得する。Tgテーブル242を生成する場合のkは、上記v1・d1に対応する。テーブル生成制御部250は、(ζを取得した後に、i、j、(ζを自己同型写像計算部252に順次入力し、自己同型写像計算部252から(−1)(i)Φ(j)((ζ×G)を取得する。テーブル生成制御部250は、iとjとkと(−1)(i)Φ(j)((ζ×G)とを対応付けて、Tgテーブル242に登録する。
【0110】
スカラ倍算部251は、テーブル生成制御部250から、ζ、G、kを受け付け、(ζを算出する処理部である。スカラ倍算部251は、(ζをテーブル生成制御部250に出力する。
【0111】
自己同型写像計算部252は、テーブル生成制御部250から、i、j、(ζを受け付け、(−1)(i)Φ(j)((ζ×G)を算出する処理部である。自己同型写像計算部252は、(−1)(i)Φ(j)((ζ×G)をテーブル生成制御部250に出力する。
【0112】
ところで、テーブル生成部232は、上記の処理を、未知数yの下位部分と、上位部分に対してそれぞれ実行するものとする。未知数yの下位部分は、図3に示した(r−1)/dの範囲に対応する。また、未知数yの上位部分は、図4に示したdの範囲に対応する。いずれの場合も、Giant-Stepを実行する場合に、楕円曲線演算の一部に自己同型写像を適用することで、計算量を削減する。
【0113】
図14の説明に戻る。テーブル比較部233は、Tbテーブル241とTgテーブル242とを比較して、
【数7】

となる(u1、v1、i、j)の組を求める処理部である。テーブル比較部233は、求めた(u1、v1、i、j)の組を未知数算出部234に出力する。
【0114】
Tbテーブル241、Tgテーブル242は、未知数yの下位部分、上位部分に対応してそれぞれ作成される。このため、テーブル比較部233は、部分毎に、(u1、v1、i、j)の組を未知数算出部234に出力する。
【0115】
未知数演算部234は、テーブル比較部233から、(u1、v1、i、j)の組を取得し、秘密鍵を算出する。ここでは、未知数yの下位部分をz、秘密鍵の上位部分をwとする。
【0116】
未知数演算部234は、下位部分から求められた組(u1、v1、i、j)を基にして、未知数yの下位部分をz=u1+v1・d1+(i・m+2・c・j)d’’により算出する。この場合には、xG=ζGとなるので、x=ζとなるzが求まる。
【0117】
未知数演算部234は、上位部分から求められた組(u2、v2)を基にして、未知数yの上位部分をw=u2+v2・d’’により算出する。
【0118】
未知数演算部234は、zとwを求めた後に、未知数yをy=z+w(r−1)/dにより求める。秘密鍵xとyとの間には、x=ζの関係がある。未知数演算部234は、秘密鍵xとyとの関係から、秘密鍵xを求め、求めた秘密鍵xの情報を出力部220に出力する。
【0119】
制御部235は、パラメータ取得部231、テーブル生成部232、テーブル比較部233、未知数算出部234の各部に対して、上記で説明したような動作を行うように制御する処理部である。例えば、制御部235は、Tをテーブル生成部232に入力して、Tbテーブル241またはTgテーブル242を作成させる。そして、Tbテーブル241、Tbテーブル242が作成された後に、制御部235は、テーブル比較部233に指示を出し、Tbテーブル241とTgテーブル242とを比較させる。
【0120】
記憶部240は、Tbテーブル241およびTgテーブル242を記憶する記憶部である。Tbテーブル241のデータ構造は、図15のものとなる。Tgテーブル242のデータ構造は、図16のものとなる。
【0121】
次に、本実施例2にかかる処理部230の処理手順について説明する。図18は、本実施例2にかかる処理部の処理手順を示すフローチャートである。図18に示す処理は、入力部210から、楕円曲線離散対数問題を解く旨の指示を受け付けた場合に実行される。
【0122】
図18に示すように処理部230は、秘密鍵x=ζとし、yを上位部分と下位部分に分割する(ステップS301)。処理部230は、下位部分に対してBaby-Stepを実行し、ζ−u1×xG{0≦u1<d1}となるTbテーブル241を作成する(ステップS302)。処理部230は、下位部分に対してGiant-Stepを実行し、「
【数8】

」{0≦v1<d1}と、各点の自己同型写像「
【数5】

」を算出し、全ての点からなるTgテーブル142を作成する(ステップS303)。
【0123】
処理部230は、Tbテーブル241とTgテーブル242とを比較し、「
【数7】

」となる(u1、v1、i、j)の組を算出する(ステップS304)。処理部230は、z=u1+v1・d1+(i・m+2・c・j)d’’により、yの下位部分zを算出する(ステップS305)。
【0124】
処理部230は、上位部分に対してBaby−Stepを実行し、ζ−u2(r−1)/r×xG{0≦u2<d1’’}となるTbテーブル141を作成する(ステップS306)。処理部230は、上位部分に対してGiant−Stepを実行し、ζk1ζr2・d2・(r−1)/r×G{0≦v2<d’’}となるTgを計算し、全ての点からなるTgテーブルを作成する(ステップS307)。
【0125】
処理部230は、TbテーブルとTgテーブルとを比較し、ζ−u2(r−1)/r×xG=、ζk1ζr2・d2・(r−1)/r×Gとなる(u2、v2)の組を算出する(ステップS308)。処理部230は、w=y=u2+v2d’’により、yの上位部分wを算出する(ステップS309)。
【0126】
処理部230は、y=z+w(r−1)/dにより、yの値を算出する(ステップS310)。処理部230は、x=ζの関係からxを求め(ステップS311)、秘密鍵xを出力する(ステップS312)。
【0127】
次に、本実施例2にかかる暗号解読装置200の効果について説明する。本実施例2にかかる暗号解読装置200は、Giant-Stepを実行して、Tbテーブル241を生成する場合に、楕円曲線演算の一部に、自己同型写像を適用する。更に、暗号解読装置200は、Baby-Stepを実行する場合のu1の値域と、Giant-Stepを実行する場合のv1の値域とを不均一に設定する。楕円曲線演算に自己同型写像を適応すると、自己同型写像「(−1)(i)Φ(j)」と、「
【数8】

」との全ての組み合わせをTgテーブル242に格納する必要がある。このため、
【数8】

のv1の値域を制限してやれば、「
【数8】

」の演算結果の数が減るので、結果として、自己同型写像「(−1)(i)Φ(j)」と、「
【数8】

」との全ての組み合わせ数が減り、Tgテーブル242のデータ量を削減することができる。したがって、本実施例2にかかる暗号解読装置200によれば、従来のCheon解析法と比較して、テーブル量を増加させることなく、計算量を削減することができる。
【実施例3】
【0128】
実施例3にかかる暗号鍵解読装置について説明する。上記実施例1、2では、Giant-Step側に自己同型写像を適用していたが、本実施例3では、Baby-Step側およびGiant-Step側に自己同型写像を適用することで、計算量およびテーブル量を削減する。
【0129】
図19は、本実施例3にかかる暗号鍵解読装置の構成を示す図である。図19に示すように、この暗号鍵解読装置300は、入力部310、出力部320、処理部330、記憶部340を有する。
【0130】
このうち、入力部310、出力部320に関する説明は、図1に示した入力部110、出力部120に関する説明と同様である。
【0131】
処理部330は、パラメータ取得部331、テーブル生成部332、テーブル比較部333、未知数算出部334、制御部335を有する。
【0132】
パラメータ取得部331は、入力部310からパラメータを取得し、取得したパラメータをテーブル生成部332に出力する処理部である。パラメータは、実施例1と同様にして、G、ζ、m、d’’が含まれる。なお、パラメータ取得部331は、パラメータを記憶部340に記憶させておき、ユーザからの指示を受け付けた場合に、記憶部340に記憶されたパラメータを取得してもよい。
【0133】
テーブル生成部332は、Cheon解析法の要領で、Baby-StepおよびGiant-Stepを実行し、Tbテーブル341およびTgテーブル342を生成する処理部である。特に、テーブル生成部332は、Baby-StepおよびGiant-Step場合に、楕円曲線演算の一部に、自己同型写像を適用することで、計算量の削減を図る。
【0134】
図20は、本実施例3にかかるテーブル生成部の処理の概要を示す図である。図20では、検索範囲を上位dと下位(r−1)/dに分割する場合を示している。テーブル生成部332が(r−1)/dの範囲に対してBaby-Stepを実行する場合には、範囲30aに対して、楕円曲線演算を実行し、範囲40bに対して自己同型写像を実行する。ここで、範囲40bは、自己同型写像「(−1)(i)Φ(j」」の上位部分に対応する。テーブル生成部332は、自己同型写像の結果と楕円曲線演算の結果とを組あわせた値を、Tbテーブル341に格納する。
【0135】
テーブル生成部332が(r−1)/dの範囲に対してGiant-Stepを実行する場合には、範囲30bに対して、楕円曲線演算を実行し、範囲40aに対して自己同型写像を実行する。ここで、範囲40bは、自己同型写像「(−1)Φ」の下位部分に対応する。テーブル生成部332は、自己同型写像の結果と楕円曲線演算の結果とを組あわせた値を、Tgテーブル342に格納する。
【0136】
テーブル生成部332が、Baby-Stepを実行する場合の処理について説明する。テーブル生成部332は、u1、ib、jbの値を順次変化させながら、「(−1)(ib)Φ(jb)(ζu1×G)」を順次計算し、Tbテーブル341を作成する。ただし、i、jの選択条件を、「−(2m)1/2<(i・m+j・c・2)mod 2m≦0」とする。すなわち、テーブル生成部332は、上記選択条件をみたすi、jの組に対応する「(−1)(ib)Φ(jb)(ζu1×G)」の値のみを算出する。なお、u1の値域を「0≦u1<d1’’」とする。
【0137】
図21は、本実施例3にかかるTbテーブルのデータ構造の一例を示す図である。図21に示すように、このTbテーブル341は、k、i、jの値と、k、i、jの値に応じた(−1)(i)Φ(j)(ζ−kG)の点とを対応付けて記憶する。Tbテーブル341のkは、u1に対応する値である。i、jはそれぞれ、ib、jbに対応する。
【0138】
テーブル生成部332が、Giant-Stepを実行する場合の処理について説明する。テーブル生成部332は、v1、ig、jgの値を順次変化させながら、「(−1)(ig)Φ(jg)(ζv1・d’’×G)」を順次計算し、Tbテーブル342を作成する。ただし、i、jの選択条件を「(m・ig+2c・jg) mod 2m=0」とする。すなわち、テーブル生成部332は、上記選択条件を満たすi、jの組に対応する「(−1)(ig)Φ(jg)(ζv1・d’’×G)」の値のみを算出する。なお、v1の値域を「0≦v1<d1’’」とする。
【0139】
図22は、本実施例3にかかるTgテーブルのデータ構造の一例を示す図である。図22に示すように、このTgテーブル342は、k、i、jの値と、k、i、jの値に応じた(−1)(i)Φ(j)(ζ−k・d1G)の点とを対応付けて記憶する。Tgテーブル342のkは、v1に対応する値である。i、jはそれぞれ、ig、jgに対応する。
【0140】
ここで、テーブル生成部332の構成について説明する。図23は、本実施例3にかかるテーブル生成部の構成を示す図である。図23に示すように、テーブル生成部232は、テーブル生成制御部350、スカラ倍算351、自己同型写像計算部352、自己同型写像選択部353を有する。
【0141】
テーブル生成制御部350は、パラメータd1’’、ζ、G、m、T、i,jの選択条件を取得する。このうち、i,jの選択条件は、「−(2m)1/2<(i・m+j・c・2)mod 2m≦0」および「(m・ig+2c・jg) mod 2m=0」である。
【0142】
テーブル生成制御部350は、Tに応じて、Tbテーブル341またはTgテーブル342を生成すると判定する。Tは、Tbテーブル341を作成するのか、Tgテーブル342を作成するのかを識別する情報である。テーブル生成制御部350は、制御部235からTを取得する。
【0143】
テーブル生成制御部350が、Tbテーブル341を生成する場合について説明する。テーブル生成制御部350は、スカラ倍算351に、ζ、G、kを順次入力し、スカラ倍算部351から(ζを順次取得する。Tbテーブル341を生成する場合のkは、上記u1に対応する。
【0144】
テーブル生成制御部350は、(ζを取得した後に、i、j、(ζを自己同型写像計算部352に順次入力し、自己同型写像計算部352から(−1)(i)Φ(j)((ζ×G)を取得する。テーブル生成制御部350は、iとjとkと(−1)(i)Φ(j)((ζ×G)とを対応付けて、Tbテーブル341に登録する。
【0145】
なお、テーブル生成制御部350は、i、jの選択条件と、i、jの組とを自己同型写像選択部353に入力し、i、jの組が、i、jの選択条件を満たしている場合に、かかるi、jの組と(ζを自己同型写像計算部352に入力する。Tbテーブル341を生成する場合の、i、jの選択条件は、「−(2m)1/2<(i・m+j・c・2)mod 2m≦0」である。
【0146】
テーブル生成制御部350が、Tgテーブル342を生成する場合について説明する。テーブル生成部350は、スカラ倍算部351に、ζ、G、kを順次入力し、スカラ倍算部251から(ζを順次取得する。Tgテーブル342を生成する場合のkは、上記v1に対応する。
【0147】
テーブル生成制御部350は、(ζを取得した後に、i、j、(ζを自己同型写像計算部352に順次入力し、自己同型写像計算部352から(−1)(i)Φ(j)((ζ×G)を取得する。テーブル生成制御部350は、iとjとkと(−1)(i)Φ(j)((ζ×G)とを対応付けて、Tgテーブル342に登録する。
【0148】
なお、テーブル生成制御部350は、i、jの選択条件と、i、jの組とを自己同型写像選択部353に入力し、i、jの組が、i、jの選択条件を満たしている場合に、かかるi、jの組と(ζを自己同型写像計算部352に入力する。Tgテーブル341を生成する場合の、i、jの選択条件は、「(m・ig+2c・jg) mod 2m=0」である。
【0149】
ところで、テーブル生成部332は、上記の処理を、未知数yの下位部分と、上位部分に対してそれぞれ実行するものとする。図3に示した(r−1)/dの範囲に対応する。また、未知数yの上位部分は、図4に示したdの範囲に対応する。いずれの場合も、Baby-StepおよびGiant-Stepを実行する場合に、楕円曲線演算の一部に自己同型写像を適用することで、計算量を削減する。
【0150】
図19の説明に戻る。テーブル比較部333は、Tbテーブル341とTgテーブル342とを比較して、
(−1)(ib)Φ(jb)(ζu1×G)=(−1)(ig)Φ(jg)(ζv1・d’’×G)
となる(u1、v1、ib、jb、ig、jg)の組を求める処理部である。テーブル比較部333は、求めた(u1、v1、ib、jb、ig、jg)の組を未知数算出部334に出力する。
【0151】
未知数演算部334は、テーブル比較部333から、(u1、v1、ib、jb、ig、jg)の組を取得し、秘密鍵を算出する。ここでは、未知数yの下位部分をz、秘密鍵の上位部分をwとする。
【0152】
未知数演算部334は、下位部分から求められた組(u1、v1、ib、jb、ig、jg)を基にして、未知数yの下位部分zを求める。zは、z=u1+(ib・m+2・c・jb)+v1・d1’’+(ig・m+2・c・jg)・d’’により求められる。この場合には、xG=ζGとなるので、x=ζとなるzが求まる。
【0153】
未知数演算部334は、上位部分から求められた組(u2、v2)を基にして、未知数yの上位部分をw=u2+v2・d’’により算出する。
【0154】
未知数演算部334は、zとwを求めた後に、y=z+w(r−1)/dにより求める。秘密鍵xとyとの間には、x=ζの関係がある。未知数演算部334は、秘密鍵xとyとの関係から、秘密鍵xを求め、求めた秘密鍵xの情報を出力部320に出力する。
【0155】
制御部335は、パラメータ取得部331、テーブル生成部332、テーブル比較部333、未知数算出部334の各部に対して、上記で説明したような動作を行うように制御する処理部である。例えば、制御部335は、Tをテーブル生成部332に入力して、Tbテーブル341またはTgテーブル342を作成させる。そして、Tbテーブル341、Tbテーブル342が作成された後に、制御部335は、テーブル比較部333に指示を出し、Tbテーブル341とTgテーブル342とを比較させる。
【0156】
記憶部340は、Tbテーブル341およびTgテーブル342を記憶する記憶部である。Tbテーブル341のデータ構造は、図21に示すものとなる。Tgテーブル342のデータ構造は、図22に示すものとなる。
【0157】
次に、本実施例3にかかる処理部330の処理手順について説明する。図24は、本実施例3にかかる処理部の処理手順を示すフローチャートである。例えば、図24に示す処理は、入力部310から、楕円曲線離散対数問題を解く旨の指示を受け付けた場合に実行される。図24に示すように処理部330は、秘密鍵x=ζとし、yを上位部分と下位部分に分割する(ステップS401)。
【0158】
処理部330は、下位部分に対してBaby-Stepを実行し、ζ−u1×xG{0≦u1<d1’’}と、各点の自己同型写像(−1)(ib)Φ(jb)(ζ−u1×xG)を算出し、全ての点からなるTbテーブル341を作成する(ステップS402)。
【0159】
処理部330は、計算した点のうち、ib、jbの組が、「−(2m)1/2<(ib・m+2・c・jb)mod 2m≦0」を満たす点だけTbテーブル341に格納する(ステップS403)。
【0160】
処理部330は、下位部分に対してGiant-Stepを実行し、ζv1・d1’’×G{0≦v1<d1’’}と、各点の自己同型写像(−1)(ig)Φ(jg)(ζv1・d1’’×G)を算出し、全ての点からなるTgテーブル342を作成する(ステップS404)。
【0161】
処理部330は、計算した点のうち、ig、jgの組が、(m・ig+2c・jg) mod 2m=0」となる点だけTgテーブル342に格納する(ステップS405)。
【0162】
処理部330は、Tbテーブル341とTgテーブル342とを比較し、(−1)(ib)Φ(jb)(ζ−u1×xG)=(−1)(ig)Φ(jg)(ζv1・d1’’×G)となる(u1、v1、ib、jb、ig、jg)の組を算出する(ステップS406)。処理部330は、z=u1+(ib・m+2・c・jb)+v1・d1’’+(ig・m+2・c・jg)・d’’により、zを算出する(ステップS407)。
【0163】
処理部330は、上位部分に対してBaby-Stepを実行し、上位部分に対してBaby−Stepを実行し、ζ−u2(r−1)/r×xG{0≦u2<d1’’}となるTbテーブル141を作成する(ステップS408)。
【0164】
処理部330は、上位部分に対してGiant−Stepを実行し、ζk1ζr2・d2・(r−1)/r×G{0≦v2<d’’}となるTgを計算し、全ての点からなるTgテーブルを作成する(ステップS409)。
【0165】
処理部330は、TbテーブルとTgテーブルとを比較し、ζ−u2(r−1)/r×xG=、ζk1ζr2・d2・(r−1)/r×Gとなる(u2、v2)の組を算出する(ステップS410)。処理部330は、w=y=u2+v2d’’により、yの上位部分wを算出する(ステップS411)。
【0166】
処理部330は、y=z+w(r−1)/dにより、yの値を算出する(ステップS412)。処理部330は、x=ζの関係からxを求め(ステップS413)、秘密鍵xを出力する(ステップS414)。
【0167】
次に、本実施例3にかかるテーブル生成部332がTbテーブル341およびTgテーブル342を生成する処理手順について説明する。図25は、本実施例3にかかるテーブル生成部の処理手順を示すフローチャートである。
【0168】
図25に示すように、テーブル生成部332は、パラメータd1’’、ζ、G、m、T、(i、j)の条件を取得し(ステップS501)、kを初期値に設定する(ステップS502)。テーブル生成部332は、スカラ倍計算(ζを実行する(ステップS503)。
【0169】
テーブル生成部332は、(i、j)の条件を満たすi=0〜1、j=0〜m−1に対して、自己同型写像計算(−1)(i)Φ(j)((ζ)を実行する(ステップS504)。テーブル生成部332は、{i、j、k、(−1)(i)Φ(j)((ζ)}を記憶部340に出力する(ステップS505)。
【0170】
テーブル生成部332は、k=k+1を算出し(ステップS506)、kの値がd’’−1の値よりも大きいか否かを判定する(ステップS507)。テーブル生成部332は、kの値がd’’−1の値以下の場合には(ステップS507,No)、ステップS503に移行する。一方、テーブル生成部332は、kの値がd’’−1の値より大きい場合には(ステップS507,Yes)、処理を終了する。
【0171】
次に、本実施例3にかかる暗号解読装置300の効果について説明する。本実施例3にかかる暗号解読装置300は、Baby-StepおよびGiant-Stepを実行する場合に、楕円曲線演算の一部に、自己同型写像を適用することで、楕円曲線演算を実行すべき範囲を削減することができる。この結果、楕円曲線離散対数問題を解くための計算量を、従来のCheon解析法と比較して、1/(2m)1/2に削減することができる。例えば、有限体GF(3m)上の楕円曲線の場合には、m=127であるため、従来のCheon解析法と比較して、計算量が1/16となる。
【0172】
また、本実施例3にかかる暗号装置300は、i、jの選択条件を満たさない、i=0〜1、j=0〜m−1の組あわせに対応する自己同型写像の計算結果を、Tbテーブル341、Tgテーブル342に記憶しない。この結果、Tbテーブル341、Tgテーブル342のデータ量を、従来のCheon解析法と同量のデータ量に抑えることができる。
【0173】
次に、従来のCheon解析法、実施例1〜3の楕円演算回数、テーブルのデータ量の比較結果を示す。図26および図27は、従来のCheon解析法、実施例1〜3の楕円演算回数、テーブルのデータ量の比較結果を示す図である。
【0174】
図26に示すように、従来のCheon解析法の楕円演算回数を1とすると、実施例1の楕円演算回数は1/(2m)1/2となり、実施例2の楕円演算回数は1/2となり、実施例3の楕円演算回数は1/(2m)1/2となる。また、従来のCheon解析法のテーブル量を1とすると、実施例1のテーブル量は1/(2m)1/2となり、実施例2のテーブル量は1、実施例3のテーブル量は1となる。
【0175】
有限体GF(3127)上の楕円曲線の場合の、従来のCheon解析法、実施例1〜3の楕円演算回数、テーブルのデータ量の比較結果を示す。図27に示すように、従来のCheon解析法の楕円演算回数を1とすると、実施例1の楕円演算回数は約1/16となり、実施例2の楕円演算回数は約1/2となり、実施例3の楕円演算回数は約1/16となる。また、従来のCheon解析法のテーブル量を1とすると、実施例1のテーブル量は約8倍となり、実施例2、3のテーブル量はほぼ同じとなる。
【0176】
理論値では、楕円演算回数で評価したが、実際のテーブル作成は自己同型写像の計算も処理時間がかかる。そこで、ここでは一例として、有限体GF(3127)上の楕円曲線で従来のCheon解析法、実施例3のテーブル作成時間の実験結果について説明する。図28は、テーブル作成時間とテーブル量とを示す図である。
【0177】
図28に示すように、従来のCheon解析法では、テーブル作成時間が7時間、テーブル量が15.78MByteとなる。これに対して、実施例3では、テーブル作成時間が44分、テーブル量が15.85MByteとなる。したがって、実施例3は、従来のCheon解析法と比較して、1/9.5倍の時間でテーブルを作成することができ、テーブル量は1.004倍でほとんど変わらないことが分かる。
【0178】
また、上記の各実施例で説明した暗号鍵解読装置100、200、300の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図29を用いて、上記の実施例で説明した暗号鍵解読装置100、200、300と同様の機能を有する暗号鍵解読プログラムを実行するコンピュータの一例を説明する。図29は、暗号鍵解読プログラムを実行するコンピュータを示す図である。
【0179】
同図に示すように、暗号鍵解読装置100、200としてコンピュータ400は、入出力制御部410、HDD(Hard Disk Drive)420、RAM(Random Access Memory)430およびCPU(Central Processing Unit)440を有する。各装置410〜440は、バス450で接続して構成される。
【0180】
ここで、入出力制御部410は、各種情報の入出力を制御する。HDD420は、CPU440による各種処理の実行に必要な情報を記憶する。RAM430は、各種情報を一時的に記憶する。CPU440は、各種演算処理を実行する。
【0181】
そして、HDD420には、暗号鍵解読システムデータがあらかじめ記憶されている。この暗号鍵解読システムデータは、図6、図14、図19に示した暗号鍵解読装置100、200、300の各処理部と同様の機能を発揮する暗号鍵解読プログラムを含む。また、暗号鍵解読システムデータは、処理に必要な各種パラメータを含む暗号鍵解読用データを含む。なお、この暗号鍵解読システムデータを適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
【0182】
そして、CPU440が、この暗号鍵解読システムデータをHDD420から読み出してRAM430に展開することにより、暗号鍵解読システムデータは暗号鍵解読システムとして機能するようになる。この暗号鍵解読システムには暗号鍵解読プロセスが含まれる。
【0183】
すなわち、暗号鍵解読システムやそれに搭載された暗号鍵解読プロセスは、暗号鍵解読用データをHDD420から読み出して、RAM430において自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種処理を実行する。
【0184】
なお、暗号鍵解読システム及び暗号鍵解読プロセスは、図6、図14、図19に示した各機能部において実行される処理に対応する。例えば、暗号鍵解読プロセスは、パラメータ取得部131、テーブル生成部132、テーブル比較部133、未知数算出部134に対応する。
【0185】
なお、上記した暗号鍵解読プログラムについては、必ずしも最初からHDD420に記憶させておく必要はない。
【0186】
例えば、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ400がこれらから各プログラムを読み出して実行するようにしてもよい。
【0187】
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ400に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておく。そして、コンピュータ400がこれらから各プログラムを読み出して実行するようにしてもよい。
【0188】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図6に示すテーブル生成部132とテーブル比較部133とが統合されてもよい。また、テーブル比較部133と未知数算出部134とが統合されてもよい。
【0189】
なお、図6、図14、図19に示した処理部130、230、330は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。または、各処理部130、230、330は、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。また、図6、図14、図19に示した記憶部140、240、340は、例えば、RAM、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
【0190】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0191】
(付記1)コンピュータが、
楕円曲線離散対数問題の解を楕円曲線上の点に対応する生成元のべき乗で示し、前記生成元のべき乗部分を第1部分と第2部分に分割する分割ステップと、
前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値を第1テーブルに格納する第1演算ステップと、
前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納する第2演算ステップと、
前記第1テーブルに格納された値と前記第2テーブルに格納された値とを比較し、一致した値に基づいて前記楕円曲線離散対数問題の解を算出することで暗号鍵を解析する暗号鍵解析ステップと
を実行することを特徴とする暗号鍵解析方法。
【0192】
(付記2)前記第2演算ステップは、前記第1演算ステップが変化させる所定の値域とは異なる値域によって、前記第1部分の値を変化させた場合に、前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納することを特徴とする付記1に記載の暗号鍵解析方法。
【0193】
(付記3)前記第1演算ステップは、前記生成元のべき乗部分の一部に自己同型写像を適用した値のうち所定の条件を満たす値と、前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値とを組あわせた値を前記第1テーブルに格納し、前記第2演算ステップは、前記生成元のべき乗部分の一部に自己同型写像を適用した値のうち所定の条件を満たす値と、前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値とを組あわせた値を前記第2テーブルに格納することを特徴とする付記1または2に記載の暗号鍵解析方法。
【0194】
(付記4)前記分割ステップは、前記生成元のべき乗部分を上位部と下位部にわけ、前記上位部および下位部分をそれぞれ、第1部分と第2部分に分割し、前記第2演算ステップは、前記上位部の第2部分または前記下位部の第2部分の内どちらか一方に、自己同型写像を適用することを特徴とする付記1、2または3に記載の暗号鍵解析方法。
【0195】
(付記5)楕円曲線離散対数問題の解を楕円曲線上の点に対応する生成元のべき乗で示し、前記生成元のべき乗部分を第1部分と第2部分に分割する分割部と、
前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値を第1テーブルに格納する第1演算部と、
前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納する第2演算部と、
前記第1テーブルに格納された値と前記第2テーブルに格納された値とを比較し、一致した値に基づいて前記楕円曲線離散対数問題の解を算出することで暗号鍵を解析する暗号鍵解析部と
を備えたことを特徴とする暗号鍵解析装置。
【0196】
(付記6)前記第2演算部は、前記第1演算部が変化させる所定の値域とは異なる値域によって、前記第1部分の値を変化させた場合に、前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納することを特徴とする付記5に記載の暗号鍵解析装置。
【0197】
(付記7)前記第1演算部は、前記生成元のべき乗部分の一部に自己同型写像を適用した値のうち所定の条件を満たす値と、前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値とを組あわせた値を前記第1テーブルに格納し、前記第2演算部は、前記生成元のべき乗部分の一部に自己同型写像を適用した値のうち所定の条件を満たす値と、前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値とを組あわせた値を前記第3テーブルに格納することを特徴とする付記5または6に記載の暗号鍵解析装置。
【0198】
(付記8)前記分割部は、前記生成元のべき乗部分を上位部と下位部にわけ、前記上位部および下位部分をそれぞれ、第1部分と第2部分に分割し、前記第2演算部は、前記上位部の第2部分または前記下位部の第2部分の内どちらか一方に、自己同型写像を適用することを特徴とする付記5、6または7に記載の暗号鍵解析装置。
【0199】
(付記9)コンピュータに
楕円曲線離散対数問題の解を楕円曲線上の点に対応する生成元のべき乗で示し、前記生成元のべき乗部分を第1部分と第2部分に分割する分割手順と、
前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値を第1テーブルに格納する第1演算手順と、
前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納する第2演算手順と、
前記第1テーブルに格納された値と前記第2テーブルに格納された値とを比較し、一致した値に基づいて前記楕円曲線離散対数問題の解を算出することで暗号鍵を解析する暗号鍵解析手順と
を実行させることを特徴とする暗号鍵解析プログラム。
【0200】
(付記10)前記第2演算手順は、前記第1演算ステップが変化させる所定の値域とは異なる値域によって、前記第1部分の値を変化させた場合に、前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納することを特徴とする付記9に記載の暗号鍵解析プログラム。
【0201】
(付記11)前記第1演算手順は、前記生成元のべき乗部分の一部に自己同型写像を適用した値のうち所定の条件を満たす値と、前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値とを組あわせた値を前記第1テーブルに格納し、前記第2演算手順は、前記生成元のべき乗部分の一部に自己同型写像を適用した値のうち所定の条件を満たす値と、前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値とを組あわせた値を前記第2テーブルに格納することを特徴とする付記9または10に記載の暗号鍵解析プログラム。
【0202】
(付記12)前記分割手順は、前記生成元のべき乗部分を上位部と下位部にわけ、前記上位部および下位部分をそれぞれ、第1部分と第2部分に分割し、前記第2演算手順は、前記上位部の第2部分または前記下位部の第2部分の内どちらか一方に、自己同型写像を適用することを特徴とする付記9、10または11に記載の暗号鍵解析プログラム。
【符号の説明】
【0203】
131 パラメータ取得部
132 テーブル生成部
133 テーブル比較部
134 未知数算出部
135 制御部

【特許請求の範囲】
【請求項1】
コンピュータが、
楕円曲線離散対数問題の解を楕円曲線上の点に対応する生成元のべき乗で示し、前記生成元のべき乗部分を第1部分と第2部分に分割する分割ステップと、
前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値を第1テーブルに格納する第1演算ステップと、
前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納する第2演算ステップと、
前記第1テーブルに格納された値と前記第2テーブルに格納された値とを比較し、一致した値に基づいて前記楕円曲線離散対数問題の解を算出することで暗号鍵を解析する暗号鍵解析ステップと
を実行することを特徴とする暗号鍵解析方法。
【請求項2】
前記第2演算ステップは、前記第1演算ステップが変化させる所定の値域とは異なる値域によって、前記第1部分の値を変化させた場合に、前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納することを特徴とする請求項1に記載の暗号鍵解析方法。
【請求項3】
前記第1演算ステップは、前記生成元のべき乗部分の一部に自己同型写像を適用した値のうち所定の条件を満たす値と、前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値とを組あわせた値を前記第1テーブルに格納し、前記第2演算ステップは、前記生成元のべき乗部分の一部に自己同型写像を適用した値のうち所定の条件を満たす値と、前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値とを組あわせた値を前記第2テーブルに格納することを特徴とする請求項1または2に記載の暗号鍵解析方法。
【請求項4】
前記分割ステップは、前記生成元のべき乗部分を上位部と下位部にわけ、前記上位部および下位部分をそれぞれ、第1部分と第2部分に分割し、前記第2演算ステップは、前記上位部の第2部分または前記下位部の第2部分の内どちらか一方に、自己同型写像を適用することを特徴とする請求項1、2または3に記載の暗号鍵解析方法。
【請求項5】
楕円曲線離散対数問題の解を楕円曲線上の点に対応する生成元のべき乗で示し、前記生成元のべき乗部分を第1部分と第2部分に分割する分割部と、
前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値を第1テーブルに格納する第1演算部と、
前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納する第2演算部と、
前記第1テーブルに格納された値と前記第2テーブルに格納された値とを比較し、一致した値に基づいて前記楕円曲線離散対数問題の解を算出することで暗号鍵を解析する暗号鍵解析部と
を備えたことを特徴とする暗号鍵解析装置。
【請求項6】
コンピュータに
楕円曲線離散対数問題の解を楕円曲線上の点に対応する生成元のべき乗で示し、前記生成元のべき乗部分を第1部分と第2部分に分割する分割手順と、
前記第1部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値を第1テーブルに格納する第1演算手順と、
前記第2部分の値を所定の値域で変化させた場合に前記生成元をべき乗することで算出される値と、前記生成元のべき乗部分の一部に自己同型写像を適用した値とを組あわせた値を第2テーブルに格納する第2演算手順と、
前記第1テーブルに格納された値と前記第2テーブルに格納された値とを比較し、一致した値に基づいて前記楕円曲線離散対数問題の解を算出することで暗号鍵を解析する暗号鍵解析手順と
を実行させることを特徴とする暗号鍵解析プログラム。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate


【公開番号】特開2012−32646(P2012−32646A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願番号】特願2010−172796(P2010−172796)
【出願日】平成22年7月30日(2010.7.30)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成20年度、独立行政法人情報通信研究機構、「適切な暗号技術を選択可能とするための新しい暗号技術の評価手法 〜暗号の技術評価に関する研究開発〜」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】