説明

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

【課題】記憶容量が圧迫されずに、暗号鍵を解くこと。
【解決手段】所定の点に対して自己同型写像を適用して算出した第1の点の集合の中から代表点を選択して記憶部に記憶させる。この集合に関する代表点に対して擬似乱数を用いて算出した点に対して自己同型写像を適用することで、第1の点の集合に関する新たな代表点を記憶部に追加して記憶させる。また、所定の暗号鍵から定まる点に対して自己同型写像を適用して算出した第2の点の集合の中から代表点を記憶部に記憶させる。この集合の点に関する代表点に対して擬似乱数を用いて点を算出し、点に対して自己同型写像を適用することで、第2の点の集合の新たな代表点を記憶部に追加して記憶させる。そして、第1および第2の点の集合に関する各代表点のうち、一致した代表点に基づいて暗号鍵を算出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号鍵解析方法、暗号鍵解析装置および暗号鍵解析プログラムに関する。
【背景技術】
【0002】
近年、ネットショッピングやネットバンキングなどが普及している。ネットショッピングやネットバンキングにおいて通信を行う場合には、SSL(Secure Sockets Layer)/TLS(Transport Layer Security)などの暗号技術が用いられる。暗号技術の代表である暗号化方式は、大別すると共通鍵暗号と公開鍵暗号との2つに分類される。
【0003】
共通鍵暗号は、送信者と受信者とが同じ鍵を持つことにより暗号通信を行う方式である。すなわち、共通鍵暗号では、送信者は、あるメッセージを秘密の暗号鍵に基づいて暗号化して受信者に送る。受信者は、この暗号鍵を用いて暗号文を復号し、メッセージを入手する。
【0004】
公開鍵暗号では、送信者は、受信者の公開されている鍵(公開鍵)でメッセージを暗号化して送信する。受信者は暗号化されたメッセージを自分だけが保持している鍵(秘密鍵)で復号する。すなわち、公開鍵暗号では、公開鍵は情報を暗号化するための鍵である。また、秘密鍵は、公開鍵により暗号化された情報を復号するための鍵である。公開鍵で暗号化された情報は、秘密鍵でのみ復号することができる。
【0005】
公開鍵暗号は、公開鍵を公開しても安全性を確保できるようにするために、数学的に難しいとされている問題に基づいて設計されている。例えば、RSA(Rivest Shamir Adleman)暗号は、素因数分解問題と呼ばれる数学的問題の困難性に基づいている。また、エルガマル暗号は、離散対数問題と呼ばれる数学的問題の困難性に基づいている。さらに、楕円曲線暗号(Elliptic Curve Cryptosystem)は、楕円曲線上の離散対数問題を基に設計されている。なお、楕円曲線上の離散対数問題を「楕円曲線離散対数問題」と称する。このように、公開鍵暗号の安全性は、数学的問題の困難性に基づいている。そのため、これらの数学的問題の解読計算量が、公開鍵暗号の安全性の指標となる。
【0006】
楕円曲線暗号は、楕円曲線離散対数問題に基づく暗号である。楕円曲線離散対数問題に基づく暗号は、楕円曲線上の点Pおよび単位元となる無限遠点Οの集合のなす加法群において定義される。この加法群に含まれる点の数を位数rと呼ぶ。 楕円曲線上の点P1とP2に対する演算として、以下が容易に計算できることが知られている。
加算:P3=P1+P2=P2+P1
2倍算:P2=2×P1=P1+P1
減算:P3=P1−P2
零点:Ο(無限遠点)=P1−P1
スカラ倍算:k×P=P+P+・・・+P(k個のPの和)
【0007】
ここで、k×PとPとからkを算出する問題を楕円曲線離散対数問題という。位数rが巨大な場合、解を求めることは困難であることが知られている。楕円曲線離散対数問題が困難であるという仮定のもとで、楕円曲線のパラメータを用いた楕円曲線暗号の安全性が保証される。なお、kは秘密鍵として使用されることが多い。
【0008】
さらに近年では、ペアリングという公開鍵暗号技術が注目されている。ペアリングは楕円曲線暗号の一種である。楕円曲線上の2点に対するペアリングと呼ばれる演算を用いることで、従来の楕円曲線暗号の機能を拡張する。この場合、楕円曲線離散対数問題の困難性に加え、いくつかの数学的問題の困難性に関する新たな仮定が必要となる。例えばペアリングを使った放送暗号では、L−双線形性Diffie‐Hellman指数問題(L−BDHE問題)と呼ばれる数学的問題の困難性を仮定することがある。ここでL−BDHE問題とは、P、k×P、k2×P、k3×P、・・・、kL×PからkやkL+1を求める問題である。この場合、P、k×Pからkを求める楕円曲線離散対数問題に比べ、k2×P、k3×P、…、kL×Pなどの補助情報があることから、この問題を補助入力付き楕円曲線離散対数問題と呼ぶことがある。
【0009】
また、数学的問題として、例えば、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を解くことができる。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】D.Hankerson,A.Menezes and S.Vanstone“Guide to Elliptic Curve Cryptography”p.161‐163
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、上記のCheon解析法では、記憶される上記計算結果の量が、r1/4程度と大きいため、記憶容量が圧迫されるという問題があった。
【0012】
開示の技術は、上記に鑑みてなされたものであって、記憶容量が圧迫されずに、暗号鍵を解くことができる暗号鍵解析方法、暗号鍵解析装置、および暗号鍵解析プログラムを提供することを目的とする。
【課題を解決するための手段】
【0013】
本願の開示する暗号鍵解析方法は、一つの態様において、コンピュータが、第1の代表点選択ステップと、第2の代表点選択ステップと、暗号鍵算出ステップとを実行することを特徴とする。第1の代表点選択ステップは、楕円曲線上の所定の点に対して自己同型写像を適用して第1の点の集合を算出する。第1の代表点選択ステップは、第1の点の集合の中から代表点を選択して記憶部に記憶させる。第1の代表点選択ステップは、記憶部に記憶された第1の点の集合に関する代表点に対して擬似乱数を用いて楕円曲線上の点を算出する。第1の代表点選択ステップは、点に対して自己同型写像を適用することで、第1の点の集合に関する新たな代表点を選択して記憶部に追加して記憶させる。第2の代表点選択ステップは、楕円曲線上において所定の暗号鍵から定まる点に対して自己同型写像を適用して第2の点の集合を算出する。第2の代表点選択ステップは、第2の点の集合の中から代表点を選択して記憶部に記憶させる。第2の代表点選択ステップは、第2の集合の点に関する代表点に対して擬似乱数を用いて楕円曲線上の点を算出する。第2の代表点選択ステップは、点に対して自己同型写像を適用することで、第2の点の集合の新たな代表点を記憶部に追加して記憶させる。暗号鍵算出ステップは、記憶部に記憶された第1の点の集合に関する代表点と第2の点の集合に関する代表点とを比較し、一致した代表点に基づいて暗号鍵を算出する。
【発明の効果】
【0014】
本願の開示する暗号鍵解析方法の一つの態様によれば、記憶容量が圧迫されずに、暗号鍵を解くことができるという効果を奏する。
【図面の簡単な説明】
【0015】
【図1】図1は、BSGSの具体例を説明するための図である。
【図2】図2は、Cheon解析法の具体例を説明するための図である。
【図3】図3は、Cheon解析法の具体例を説明するための図である。
【図4】図4は、Cheon解析法の具体例を説明するための図である。
【図5】図5は、RW関数の適用を説明するための図である。
【図6】図6は、特徴点のテクニックの併用を説明するための図である。
【図7】図7は、実施例1に係る暗号鍵解読装置の構成を示す図である。
【図8】図8は、テーブル生成部のブロック図である。
【図9】図9は、実施例1に係る解の計算処理の処理手順を示すフローチャートである。
【図10】図10は、解の計算処理を説明するための図である。
【図11】図11は、ループの発生を示す図である。
【図12】図12は、実施例2に係る暗号鍵解読装置の構成を示す図である。
【図13】図13は、テーブル生成部のブロック図である。
【図14】図14は、実施例2に係る解の計算処理の処理手順を示すフローチャートである。
【図15】図15は、実施例2の暗号鍵解読装置の効果を説明するための図である。
【図16】図16は、暗号鍵解読プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0016】
まず、本願の開示する暗号鍵解読装置における技術を説明する上での原理を図面に基づいて、いくつか説明する。
【0017】
[Baby−Step Giant−Step解析法]
最初に、Baby−Step Giant−Step解析法について説明する。以下、Baby−Step Giant−Step解析法を「BSGS」と称する。BSGSは、楕円曲線離散対数問題の効率的な解析法の一つである。位数rの楕円曲線パラメータを使用した場合、BSGSでは、(2×r1/2)回程度の楕円曲線演算によって楕円曲線離散対数問題が解かれる。BSGSでは、秘密鍵kが位数r1/2進数で上位と下位とに分割される。BSGSでは、秘密鍵kの下位値が0となるものを含むテーブルをBaby−Stepで作成する。また、BSGSでは、秘密鍵kの下位値が0の場合を総当りするテーブルをGiant−Stepで作成する。さらに、BSGSでは、各テーブルの値を比較する。そして、BSGSでは、比較結果に基づいて、秘密鍵kを解として算出する。BSGSでは、各テーブルの値を比較することで、効率的に楕円曲線離散対数問題が解かれる。
【0018】
図1は、BSGSの具体例を説明するための図である。位数r=97とし、秘密鍵k=96とした場合、図1に示すように、BSGSでは、Baby−Stepで(k×P−i×P)(i=0〜9)を計算する。なお、Pは所定の楕円曲線上の所定の点である。Baby−Stepでは、さらに、計算結果をTbテーブル1に登録する。これにより、Tbテーブル1が作成される。BSGSでは、Giant−Stepで、(j×10×P)(j=0〜9)を計算する。Giant−Stepでは、さらに、計算結果をTgテーブル2に登録する。これにより、Tgテーブル2が作成される。BSGSでは、Tbテーブル1の各値とTgテーブル2の各値とを比較する。ここで、値とは、例えば、図1に示す例では、点の座標を指す。図1に示す例の場合では、Tbテーブル1の値(50,12)と、Tgテーブル2の値(50,12)とが一致する。このとき、i=6、j=9となる。ここで、秘密鍵k=(i+j×10)と表される。よって、図1に示す例の場合では、秘密鍵k=(6+9×10)=96となる。BSGSでは、このようにして秘密鍵kが解として算出される。この例の場合では、楕円曲線演算は20回(≒2×961/2)行われる。
【0019】
ここで、総当り法で楕円曲線離散対数問題を解く場合を説明する。総当り法で楕円曲線離散対数問題を解く場合には、平均r/2回程度の楕円曲線演算が行われる。例えば、位数r=97とし、秘密鍵k=96とした場合、総当り法では、Pとk×Pとに対し、0×P,1×P,・・・,96×Pを計算する。そして、総当り法では、秘密鍵k=96を解として算出する。この場合、平均でr/2=48回の楕円曲線演算が行われる。
【0020】
以上のことから、BSGSは、総当り法と比較して、楕円曲線離散対数問題を解く場合における楕円曲線演算の回数が削減される。
【0021】
[Cheon解析法]
次に、Cheon解析法について説明する。Cheon解析法は、補助入力付き楕円曲線離散対数問題に対して、BSGS法を適用して解を算出する方法である。Cheon解析法では、BSGSを二重に処理することで計算量が削減される。例えば、Cheon解析法では、(d1/2+(r/d)1/2)回程度の楕円曲線演算で、補助入力付き楕円曲線離散対数問題の解が算出される。特に、d≒r1/2となる場合が最も効果的に計算量が削減される。例えば、d≒r1/2となる場合、r1/4回程度の楕円曲線演算で解が算出される。なお、dは(r−1)の約数である。
【0022】
Cheon解析法の具体例について説明する。図2〜4は、Cheon解析法の具体例を説明するための図である。
【0023】
Cheon解析法では、まず、位数rの生成元ζを求め、秘密鍵k=ζとする(ステップS1)。ここで、yの値域は0〜r−1である。図2には、比較対象のk×Pがζ×Pに変換された例が示されている。
【0024】
次に、図2に示すように、ζの指数部分のyを上位yと下位y−iとに分割し、kを上位jと、下位値を0とした下位j´とに分割する(ステップS2)。なお、yは、yを((r−1)/d)で除算した商とする。また、yは、yを((r−1)/d)で除算した余りとする。
【0025】
次に、方程式k×P=(ζ×Pからzを算出する(ステップS3)。図3には、比較対象のζ×Pとζ×Pとを変形する例が示されている。zの算出の際には、図3に示すように、zを上位zHと下位zL−iとに分割してBSGSと同等の処理を行う。なお、zを算出することと、yを算出することは数学的に等価である。よって、zが算出されることで、yが算出される。
【0026】
次に、算出されたyを用いて、図4に示すw(y)を算出する(ステップS4)。ここで、wは、k=ζyL+w(r−1)/dを満たす。図4には、比較対象のζ×Pとζ×Pとを変形する例が示されている。このwの算出の際には、図4に示すように、wを上位wと下位w−iとに分割してBSGSと同等の処理を行う。
【0027】
次に、ステップS3で算出されたyと、ステップS4で算出されたyとからyを算出する(ステップS5)。そして、ステップS5で算出されたyを用いて、秘密鍵k=ζを算出する(ステップS6)。以上、Cheon解析法の具体例について説明した。このようにして、Cheon解析法では、秘密鍵kの算出が行われる。
【0028】
[ランダムウォーク関数の適用]
上記のように、Cheon解析法は補助入力付き楕円曲線対数問題を効率的に解くことが可能である。しかしながら、Baby−Step、Giant−Stepで生成するTbテーブル1、Tgテーブル2のサイズが大きいという問題がある。例えば、有限体GF(3127)におけるある楕円曲線では、パラメータrはr=9314856004986223962601399となる。この場合、最適なdを用いたとしても、Tbテーブル1およびTgテーブル2の各テーブルには、1747000個の楕円曲線上の点データが登録される。このとき、各テーブルのサイズは約80MByteとなる。よって、計算量を増大させずに、解を得るための計算において記憶されるデータ量が削減されることが望まれる。
【0029】
このような背景から、計算量を増大させずに、解を得るための計算において記憶されるデータ量が削減される方法が生み出された。このような方法では、例えば、Cheon解析法において、BSGSを用いずに、ランダムウォーク関数を適用する。そこで、この方法について説明する。また、以下、ランダムウォーク関数を「RW関数」と称する。RW関数とは、楕円曲線上の点を入力として、楕円曲線上の別の点を出力する関数である。例えば、RW関数は、楕円曲線上の点Pに対し、ζd×Rnd(P)×Pのように定義される。ここで、Rnd(P)は、点Pから一意的に0以上で((r−1)/d)以下のランダムな整数を生成する擬似乱数生成関数である。なお、ランダムな整数を「擬似乱数」と称する。
【0030】
図5は、RW関数の適用を説明するための図である。Cheon解析法のステップS3に、上記したRW関数を適用した場合、図5に示すように、点Pを開始点として、点PにRW関数を適用して得られる点Pを算出し、算出された点Pを記憶する。次に、算出された点PにRW関数を適用して得られる点Pを新たに算出し、新たに算出された点Pを記憶する。以降、この動作を繰り返し、点Pを開始点とした場合のRW関数を適用して得られる各点Pがテーブルに登録される。同様に、図5に示すように、点k×Pを開始点として、点k×PにRW関数を適用して得られる点Pを算出し、算出された点を記憶する。次に、算出された点にRW関数を適用して得られる点を新たに算出し、新たに算出された点を記憶する。以降、この動作を繰り返し、点k×Pを開始点とした場合のRW関数を適用して得られる各点Pがテーブルに登録される。
【0031】
そして、生成されたこれらのテーブルを比較し、一致した点P´を検出する。一致した点の情報からk×P=ζd×k1×Pを満たすk1を算出する。このとき、誕生日の逆理により、テーブルの大きさは((r−1)/d)1/2程度でよいことが知られている。そのため、テーブル作成に必要な楕円曲線演算の回数も((r−1)/d)1/2程度となる。なお、図5に示すように、ある点P´で一致すると、その後は、新たに算出された互いの点が一致するようになる。
【0032】
[特徴点のテクニックの併用]
そして、特徴点のテクニックを併用して、以下のようにして、計算量を増大させずに、テーブルに記憶されるデータ量を削減する。図6は、特徴点のテクニックの併用を説明するための図である。図6に示すように、算出した全ての点P,Pを記憶せず、特徴的な点(特徴点)P´,P´だけを記憶する。なお、図6では、テーブルに記憶された点P´,P´は実線で示され、記憶されない点P,Pは破線で示されている。ここで、特徴点とは、特徴的な性質を持つ点のことである。例えば、特徴点は、点のx座標の下位16ビットがすべて0であるような点である。この場合、特徴点は、確率的に216個に1個の割合で算出される。よって、テーブルに記憶されるデータ量は1/216に削減される。したがって、BSGSを用いるCheon解析法と比較すると、計算量を増大させずに、テーブルに記憶されるデータ量が削減される。なお、一致する点P´がテーブルに一部記憶されない可能性がある。しかしながら、一致が起きれば、その後に出現する特徴点P´´でも一致することになる。そのため、問題は生じない。
【0033】
[自己同型写像]
次に、自己同型写像について説明する。一部の楕円曲線では、楕円曲線上の点PのFrobenius写像Φ(P)が高速に計算できる。例えば、有限体GF(3127)における楕円曲線では、点P=(x,y)のFrobenius写像Φ(P)=(x,y)も同一の楕円曲線上の点となる。また、Φ(P)=s×Pとなるsを簡単に求めることができる。Frobenius写像Φ(P)の計算は、各座標の値を3乗するだけである。そのため、他の楕円曲線演算に比べて高速に計算できる。よって、s×Pも高速に計算できる。なお、点PにFrobenius写像Φ(P)をI回適用して得られる点であるΦ(I)(P)は以下のように記述される。すなわち、点Φ(I)(P)=Φ(Φ(・・・(Φ(P))))となる。
【0034】
また、一部の楕円曲線では、楕円曲線上の点のマイナス写像についても高速に計算できる。なお、マイナス写像とは、例えば、点Pを点−Pに対応させる写像である。例えば、有限体GF(3127)における楕円曲線では、点P=(x,y)のマイナス写像−P=(x,−y)も同一の楕円曲線上の点となる。また、−P=t×Pと表される。他の楕円曲線演算に比べて高速に計算できるため、t×Pも高速に計算できる。
【0035】
これらFrobenius写像およびマイナス写像は、楕円曲線上の点Pを同一の楕円曲線上の点に対応させる自己同型写像である。
【0036】
[自己同型写像のべき表現]
そして、これらの自己同型写像を、べき表現する場合について説明する。Cheon解析法において、自己同型写像を使用するには、自己同型写像が生成元ζの指数乗倍で表現される。有限体GF(q)における楕円曲線の場合、任意の点にFrobenius写像をm回適用すると元の点に戻る。つまり、Φ(m)(P)=Pとなる。また、任意の点にマイナス写像を2回適用すると元の点に戻る。つまり、(−1)×P=Pとなる。そこで、自己同型写像(−1)(i)Φ(j)×P=ζ(i・m+2・c・j)(r−1)/2m×Pと表される。このように、自己同型写像(−1)(i)Φ(j)×Pはζのべき乗で表される。このように、べき乗で表すことを「べき表現」と称する。ここで、cは楕円曲線と生成元の値とによって一意に決定される定数である。また、i=0〜1である。また、j=0〜m−1である。例えば、有限体GF(3127)、ζ=3の場合、m=127、c=110となる。このとき、自己同型写像は以下のように表される。すなわち、(−1)(i)Φ(j)×P=ζ(127・i+220・j)(r−1)/254×Pとなる。
【0037】
以上、本願の開示する暗号鍵解読装置における技術を説明する上での原理を説明した。以下に、本願の開示する暗号鍵解読装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例1】
【0038】
[実施例1の装置構成]
本実施例1に係る暗号鍵解読装置について説明する。図7は、本実施例1に係る暗号鍵解読装置の構成を示す図である。暗号鍵解読装置100は、楕円曲線離散対数問題を解いて暗号鍵である秘密鍵kを算出する装置である。図7に示すように、暗号鍵解読装置100は、入力部110、出力部120、処理部130、および記憶部140を有する。
【0039】
入力部110は、外部から情報を入力する。例えば、入力部110は、ユーザからの指示を受け付けて、受け付けた指示を処理部130に入力する。入力部110は、例えば、通信によって外部装置からパラメータを取得し、取得したパラメータを処理部130に入力してもよい。また、入力部110は、例えば、マウスやキーボードを含んでもよい。また、指示としては、例えば、詳細を後述する「補助入力付き楕円曲線対数問題の解の計算処理」を実行する指示がある。以下、「補助入力付き楕円曲線対数問題の解の計算処理」を、「解の計算処理」と略する。
【0040】
出力部120は、外部へ情報を出力する。例えば、出力部120は、秘密鍵kおよび計算時間Tを後述するDLP計算部134から受け付ける。なお、計算時間Tは、解の計算に要する時間である。出力部120は、受け付けた秘密鍵kおよび計算時間Tの各値を出力する。出力部120は、例えば、ディスプレイを含んで構成するようにしてもよい。この場合、ディスプレイに秘密鍵kおよび計算時間Tの各値が表示される。また、出力部120は、例えば、スピーカーを含んで構成されてもよい。この場合、スピーカーから音声によって秘密鍵kおよび計算時間Tの各値が出力される。また、出力部120は、通信によって外部の装置に秘密鍵kおよび計算時間Tの各値を出力してもよい。
【0041】
記憶部140は、第1のテーブル141と第2のテーブル142とを有する。第1のテーブル141には、後述する代表点P*repと指標indexとが対応付けて登録される。第2のテーブル142には、後述する代表点P*repdiと指標indexdiとが対応付けて登録される。
【0042】
処理部130は、パラメータ取得部131、テーブル生成部132およびテーブル比較部133を有する。また、処理部130は、DLP(Discrete Logarithm Problem)計算部134および制御部135を有する。
【0043】
パラメータ取得部131は、解の計算処理の指示が入力された場合に、以下の処理を行う。すなわち、パラメータ取得部131は、例えば、外部装置から入力部110を介してシステムパラメータを取得する。そして、パラメータ取得部131は、取得したシステムパラメータをテーブル生成部132に入力する。なお、記憶部140に予めシステムパラメータを記憶しておき、パラメータ取得部131は、記憶部140からこのシステムパラメータを取得してもよい。
【0044】
システムパラメータの一例について説明する。システムパラメータには、楕円曲線E上の所定の点である点P、点(k×P)、所定の暗号鍵から定まる点である点(k×P)およびdが含まれる。また、楕円曲線のパラメータには秘密鍵kのビット長なども含まれる。また、システムパラメータには、テーブルの登録番号を示す指標indexが含まれる。なお、指標indexは、例えば、数値nを示す。なお、楕円曲線のパラメータはこれらに限られない。
【0045】
テーブル生成部132は、入力されたシステムパラメータに基づいて、楕円曲線E上の点Pに対して自己同型写像を適用して点の集合を算出する。テーブル生成部132は、点Pを開始点として算出された点(以下、第1の点と称する場合がある)の集合の中から代表点(以下、第1の代表点と称する場合がある)を選択して記憶部140に記憶させる。テーブル生成部132は、第1の代表点に対して擬似乱数を用いて楕円曲線E上の点を算出する。テーブル生成部132は、後述する制御部135の制御によってこれらの処理を繰り返し行うことで、記憶部140に追加して第1の代表点を記憶して、複数の第1の代表点を記憶部140に記憶する。
【0046】
また、テーブル生成部132は、楕円曲線E上において点(k×P)に対して自己同型写像を適用して点の集合を算出する。テーブル生成部132は、点(k×P)を開始点として算出された点(以下、第2の点と称する場合がある)の集合の中から代表点(以下、第2の代表点と称する場合がある)を選択して記憶部140に記憶させる。テーブル生成部132は、第2の代表点に対して擬似乱数を用いて楕円曲線E上の点を算出する。テーブル生成部132は、後述するテーブル比較部133で第1の代表点に一致する第2の代表点が検出されるまで、制御部135の制御によって、これらの処理を繰り返し行う。これにより、テーブル生成部132は、記憶部140に追加して第2の代表点を記憶して、複数の第2の代表点を記憶部140に記憶する。
【0047】
ここで、テーブル生成部132の詳細を説明する。図8はテーブル生成部132のブロック図である。テーブル生成部132は、テーブル生成制御部150、自己同型写像計算部151、代表点選択部152およびRW関数部153を有する。
【0048】
テーブル生成制御部150は、パラメータ取得部131から指標indexと点P(点P)とを受け付ける。また、テーブル生成制御部150は、パラメータ取得部131から指標indexと点P(k×P)とを受け付ける。テーブル生成制御部150は、受け付けた点Pまたは点Pを自己同型写像計算部151に出力する。テーブル生成制御部150は、代表点選択部152から第1の代表点である代表点P*rep(i=0〜v)または第2の代表点であるP*repdiを受け付ける。テーブル生成制御部150は、指標indexと受け付けた代表点P*repとを対応付けて第1のテーブル141に登録する。また、テーブル生成制御部150は、指標indexと受け付けた代表点P*repdiとを対応付けて第2のテーブル142に登録する。
【0049】
テーブル生成制御部150は、受け付けた指標indexと代表点P*repまたはP*repdiとをRW関数部153へ出力する。テーブル生成制御部150は、RW関数部153から指標indexi+1と点Pi+1または点Pdi+1とを受け付ける。そして、テーブル生成制御部150は、RW関数部153から受け付けた点Pi+1または点Pdi+1を自己同型写像計算部151に出力する。テーブル生成制御部150は上記の処理を繰り返し行って、第1のテーブル141に複数の代表点P*repおよび第2のテーブル142に複数の代表点P*repdiを追加して登録する。
【0050】
自己同型写像計算部151は、テーブル生成制御部150から点Pまたは点Pdiを受け付ける。なお、点Pは、i=0として、点Pと表される。また、点(k×P)は、i=0として、点Pd0と表される。自己同型写像計算部151は、受け付けた点Pに対して、下記の式(1)、式(2)に示す自己同型写像を適用する。また、自己同型写像計算部151は、受け付けた点Pdiに対して、以下の式(3)、(4)に示す自己同型写像を適用する。
【0051】
【数1】

【0052】
【数2】

【0053】
【数3】

【0054】
【数4】

【0055】
ただし、ω´はω=ω´・dを満たす。また、ν´はν=ν´・dを満たす。また、ωは、Φ(P)=(x,y)=Ω×P=ζω×Pを満たす。また、νは、−P=ζν×Pを満たす。
【0056】
自己同型写像計算部151は、例えば、受け付けた点Pに対して、式(1)に示す自己同型写像をm−1回適用させる。すると、点Pを含めるとm個の点{Pi(s)}(s=0〜m−1)の集合が算出される。そして、自己同型写像計算部151は、{Pi(s)}の各点に対して、式(2)に示す自己同型写像を適用する。これにより、結果として、点Pから2m個の点{Pi(h)}(h=0〜2m−1)が算出される。
【0057】
また、自己同型写像計算部151は、例えば、受け付けた点Pdiに対して、式(3)に示す自己同型写像をm−1回適用させる。すると、点Pdiを含めるとm個の点{Pdi(s)}(s=0〜m−1)の集合が算出される。そして、自己同型写像計算部151は、{Pdi(s)}の各点に対して、式(4)に示す自己同型写像を適用する。これにより、結果として、点Pdiから2m個の点{Pdi(h)}(h=0〜2m−1)が算出される。
【0058】
自己同型写像計算部151は、自己同型写像によって対応させた2m個の点{Pi(h)}または2m個の点{Pdi(h)}を1つの集合として代表点選択部152へ出力する。
【0059】
代表点選択部152は、自己同型写像計算部151から2m個の点{Pi(h)}または2m個の点{Pdi(h)}を受け付ける。代表点選択部152は、受け付けた2m個の点{Pi(h)}の中から代表点P*repを一つ選択する。また、代表点選択部152は、受け付けた2m個の点{Pdi(h)}の中から代表点P*repdiを一つ選択する。代表点選択部152は、選択した代表点P*repまたはP*repdiをテーブル生成制御部150へ出力する。なお、代表点選択部152は、例えば、2m個の点{Pi(h)}または{Pdi(h)}の中からx座標の値が最も小さい点を代表点として選択する。なお、代表点の選択の方法はこれに限られない。
【0060】
RW関数部153は、テーブル生成制御部150から指標indexと代表点P*repまたはP*repdiとを受け付ける。RW関数部153は、RW関数を用いて代表点P*repから点Pi+1を算出する。また、RW関数部153は、RW関数を用いて代表点P*repdiから点Pdi+1を算出する。なお、RW関数は、楕円曲線上の点P*repに対し、下記の式(5)に示すように定義される。同様に、RW関数は、楕円曲線上の点P*repdiに対し、下記の式(6)に示すように定義される。ここで、Rnd(P)は、点Pから一意的に0以上で((r−1)/d)以下のランダムな整数を生成する擬似乱数生成関数である。
【0061】
【数5】

【0062】
【数6】

【0063】
RW関数部153は受け付けた指標indexを1インクリメントさせて指標indexi+1を算出する。RW関数部153は、指標indexi+1と、算出した点Pi+1または点Pdi+1とをテーブル生成制御部150へ出力する。
【0064】
ここで、図7の説明に戻る。テーブル比較部133は、第1のテーブル141に登録された代表点P*repと第2のテーブル142に登録された代表点P*repdiとを比較して一致する代表点を検出する。テーブル比較部133は、一致する代表点の情報をDLP計算部134に出力する。
【0065】
DLP計算部134は、一致する代表点の情報に基づいて、秘密鍵kを算出する。また、DLP計算部134は、計算時間Tを算出する。なお、計算時間Tは、解の計算に要する時間である。例えば、計算時間Tは、後述する解の計算処理のステップS102〜S115までに要した時間である。DLP計算部134は、算出された秘密鍵kおよび計算時間Tを出力部120に出力する。また、DLP計算部134は、算出された秘密鍵kおよび計算時間Tを記憶部140に格納する。
【0066】
制御部135は、パラメータ取得部131、テーブル生成部132、テーブル比較部133およびDLP計算部134の各部に対して、上記で説明したような動作を行うように制御する。例えば、制御部135は、算出された点Pに対して自己同型写像を適用して新たな第1の点である点{Pi(h)}の集合を算出するようにテーブル生成部132を制御する。制御部135は、新たな点{Pi(h)}の集合の中から新たな代表点P*repを選択して記憶部140に追加して記憶させるようにテーブル生成部132を制御する。制御部135は、新たな代表点P*repに対して擬似乱数を用いて楕円曲線E上の新たな点Pi+1を算出するようにテーブル生成部132を制御する。制御部135は、これらの上記制御を複数回行って、複数の点{Pi(h)}の集合に関する複数の代表点P*repを記憶部140に記憶させる。ここで、複数回とは、例えば、(r−1)回である。
【0067】
また、制御部135は、テーブル比較部133の比較結果に基づいて、第2の点{Pdi(h)}の集合に関する代表点P*repdiに一致する代表点P*repがない場合には、以下の処理を行う。すなわち、制御部135は、今回記憶された代表点P*repdiに対して擬似乱数を用いて楕円曲線E上の新たな点Pdi+1を算出するようにテーブル生成部132を制御する。そして、制御部135は、算出された新たな点Pdi+1に対して自己同型写像を適用して新たな第2の点{Pdi+1(h)}の集合を算出するようにテーブル生成部132を制御する。そして、制御部135は、新たな第2の点{Pdi+1(h)}の集合の中から新たな代表点P*repdi+1を選択して記憶部140に追加して記憶させるようにテーブル生成部132を制御する。そして、制御部135は、これらの上記制御を、代表点が一致するまで繰り返し行う。
【0068】
[実施例1の処理手順]
次に、処理部130による解の計算処理の処理手順について説明する。図9は、処理部130による解の計算処理の処理手順を示すフローチャートである。
【0069】
図9に示すように、処理部130は、入力部110から解の計算処理を実行する指示が入力されたか否かを判定する(ステップS100)。処理部130は、当該指示が入力された場合には(ステップS100,Yes)、タイマーをスタートさせて時間Tの計測を開始する(ステップS101)。
【0070】
処理部130は、システムパラメータを取得する(ステップS102)。処理部130は、取得したシステムパラメータの中から点P(i=0)を抽出する(ステップS103)。
【0071】
処理部130は、点Pに対して、上記の式(1)、式(2)に示す自己同型写像を適用して、2m個の点{Pi(h)}を算出する(ステップS104)。すなわち、ステップS104で、Pから2m個の点{Pi(h)}の集合を算出する。処理部130は、算出された2m個の点{Pi(h)}の集合の中から代表点P*repを一つ選択する(ステップS105)。
【0072】
処理部130は、選択された代表点P*repと指標indexとを対応付けて、第1のテーブル141に登録する(ステップS106)。これにより、記憶部140に、代表点P*repが記憶される。
【0073】
処理部130は、RW関数を用いて代表点P*repから点Pi+1を算出する(ステップS107)。処理部130は、iを1インクリメントする(ステップS108)。処理部130は、iの値が所定値v以上であるか否かを判定する(ステップS109)。処理部130は、iの値が所定値v未満である場合には(ステップS109,No)、上記ステップS104へ戻り、上記で説明した処理を行う。このように、ステップS104〜109の処理を繰り返すことにより、テーブル141にはv個の代表点P*rep(i=0〜v−1)が登録される。すなわち、記憶部140には、v個の代表点P*repが記憶される。なお、所定値vの値を、例えば、r−1としてもよい。所定値vの値をr−1とした場合には、記憶部140には、r−1個の代表点P*repが記憶される。
【0074】
図10は、解の計算処理を説明するための図である。図10に示すように、点({Pi(h)})52の集合50の中から代表点(P*rep)51が、解を得るための情報として選択され、テーブル141に登録される。そして、代表点51から、RW関数により当該代表点51が属する集合とは異なる集合50の点({Pi+1(h)})52が算出される。これらの処理がステップS100〜109で繰り返されることで、複数の代表点51がテーブル141に登録される。
【0075】
一方、iの値が所定値v以上である場合には(ステップS109,Yes)、処理部130は、取得したシステムパラメータの中から点Pdi(i=0)を抽出する(ステップS110)。
【0076】
処理部130は、点Pdiに対して、上記の式(3)、式(4)に示す自己同型写像を適用して、2m個の点{Pdi(h)}を算出する(ステップS111)。すなわち、ステップS111で、Pdiから2m個の点{Pdi(h)}の集合を算出する。
【0077】
処理部130は、算出された2m個の点{Pdi(h)}の集合の中から代表点P*repdiを一つ選択する(ステップS112)。処理部130は、選択された代表点P*repdiと指標indexdiとを対応付けて、第2のテーブル142に登録する(ステップS113)。これにより、記憶部140に、代表点P*repdiが記憶される。
【0078】
処理部130は、第1のテーブル141に登録された複数の代表点P*repの各々と、第2のテーブル142に今回登録された代表点P*repdiとを比較し、代表点P*repdiに一致する代表点P*repがあるか否かを判定する(ステップS114)。
【0079】
代表点P*repdiに一致する代表点P*repがある場合には(ステップS114,Yes)、処理部130は、一致する代表点の情報に基づいて、秘密鍵kを算出する(ステップS115)。処理部130は、タイマーをストップする(ステップS116)。これにより、解の計算に要する時間である計算時間Tが算出される。処理部130は、算出された秘密鍵kおよび計算時間Tを出力部120に出力する(ステップS117)。このとき、処理部130は、秘密鍵kおよび計算時間Tを記憶部140に格納する(同ステップS117)。
【0080】
一方、代表点P*repdiに一致する代表点P*repがない場合には(ステップS114,No)、処理部130は、RW関数を用いて代表点P*repdiから点Pdi+1を算出する(ステップS118)。処理部130は、iを1インクリメントし(ステップS119)、上記ステップS111へ戻り、上記で説明した処理を行う。ステップS110〜114、118、119の処理では、点({Pdi(h)})の集合の中から代表点(P*repdi)が、解を得るための情報として選択され、テーブル142に登録される。そして、代表点(P*repdi)から、RW関数により当該代表点(P*repdi)が属する集合とは異なる集合50の点({Pi+1(h)})が算出される。これらの処理がステップS110〜114、118、119で繰り返されることで、複数の代表点(P*repdi)がテーブル142に登録される。
【0081】
[実施例1の効果等]
以上、本実施例1に係る暗号鍵解読装置100について説明した。本実施例1によれば、Cheon解析法にRW関数を適用し、上述した自己同型写像を適用して数学的問題を解いている。例えば、本実施例1によれば、楕円曲線E上の所定の点であるPに対して自己同型写像を適用して点{P0(h)}の集合が算出される。また、この集合の中から代表点P*repを選択して記憶部140に記憶させる。また、代表点P*repに対して擬似乱数を用いて楕円曲線E上の点Pを算出する。また、本実施例1によれば、点Pに対して自己同型写像を適用することで、新たな代表点P*repを記憶部140に記憶させる。
【0082】
また、本実施例1によれば、楕円曲線E上において所定の暗号鍵kから定まる点である(k×P)に対して自己同型写像を適用して点{Pd0(h)}の集合を算出する。また、この集合の中から代表点P*repd0を選択して記憶部140に記憶させる。また、代表点P*repd0に対して擬似乱数を用いて楕円曲線E上の点Pd1を算出する。また、点Pd1に対して自己同型写像を適用することで、新たな代表点P*repdiを記憶部140に記憶させる。また、記憶部140に記憶された代表点P*repと代表点P*repdiとを比較し、一致した代表点に基づいて暗号鍵kを算出する。
【0083】
従って、本実施例1によれば、記憶容量が圧迫されずに、暗号鍵kを解くことができる。例えば、本実施例1によれば、計算に必要な記憶容量が((r−1)/2m)1/4となる。従来のCheon解析法では計算に必要な記憶容量が(r−1)1/4であった。このように暗号鍵解読装置100によれば、従来のCheon解析法と比較すると、計算に必要な記憶容量が1/(2m)1/4倍削減される。
【実施例2】
【0084】
[実施例2の装置構成]
次に、実施例2に係る暗号鍵解読装置について説明する。図11はループの発生を示す図である。上記で説明した実施例1に係る暗号鍵解読装置100では、図11に示すように、代表点51が、既に選択された代表点51を含む集合50内に、再び、RW関数によって算出されてしまうことがある。これは、RW関数で生成される擬似乱数の最大値が((r−1)/d)となるからである。このような場合、既に選択された代表点51を選択し続けることになる。そのため、点52および代表点51が算出されない集合50´が存在してしまう。よって、暗号鍵解読の観点から更なる改良が望まれる。そこで、実施例2に係る暗号鍵解読装置では、既に選択された代表点を含む集合とは異なる集合に属する点52を算出することができるようにした。なお、既に選択された代表点51を選択し続ける現象を「ループ」と称する。
【0085】
なお、実施例1と同様の構成および処理については同一の符号を付し、説明を省略する。図12は、本実施例2に係る暗号鍵解読装置の構成を示す図である。図12に示すように、暗号鍵解読装置200は、入力部110、出力部120、処理部230、および記憶部140を有する。本実施例2に係る暗号鍵解読装置200では、実施例1の処理部130に代えて処理部230を有する。なお、入力部110、出力部120、および記憶部140は実施例1と同様の構成であるので、以下では説明は省略する。
【0086】
処理部230は、パラメータ取得部131、テーブル生成部232およびテーブル比較部133を有する。また、処理部230は、DLP(Discrete Logarithm Problem)計算部134および制御部135を有する。
【0087】
テーブル生成部232は、入力されたシステムパラメータに基づいて、楕円曲線E上の点Pに対して自己同型写像を適用して点の集合を算出する。テーブル生成部232は、点Pを開始点として算出された第1の点の集合の中から第1の代表点を選択して記憶部140に記憶させる。テーブル生成部232は、第1の代表点に対して擬似乱数を用いて楕円曲線E上の点を算出する。テーブル生成部232は、制御部135の制御によってこれらの処理を繰り返し行うことで、記憶部140に追加して第1の代表点を記憶して、複数の第1の代表点を記憶部140に記憶する。
【0088】
また、テーブル生成部232は、楕円曲線E上において点(k×P)に対して自己同型写像を適用して点の集合を算出する。テーブル生成部232は、点(k×P)を開始点として算出された第2の点の集合の中から第2の代表点を選択して記憶部140に記憶させる。テーブル生成部232は、第2の代表点に対して擬似乱数を用いて楕円曲線E上の点を算出する。テーブル生成部232は、テーブル比較部133で第1の代表点に一致する第2の代表点が検出されるまで、制御部135の制御によって、これらの処理を繰り返し行う。これにより、テーブル生成部232は、記憶部140に追加して第2の代表点を記憶して、複数の第2の代表点を記憶部140に記憶する。
【0089】
ここで、テーブル生成部232の詳細に説明する。図13はテーブル生成部232のブロック図である。テーブル生成部232は、テーブル生成制御部150、自己同型写像計算部151、代表点選択部152およびRW関数部253を有する。
【0090】
テーブル生成制御部150、自己同型写像計算部151、および代表点選択部152については実施例1と同様の構成であるので説明を省略する。
【0091】
RW関数部253は、テーブル生成制御部150から指標indexと代表点P*repまたはP*repdiとを受け付ける。RW関数部253は、RW関数を用いて代表点P*repから点Pi+1を算出する。RW関数部253は、RW関数を用いて代表点P*repdiから点Pdi+1を算出する。なお、RW関数は、楕円曲線上の点P*repに対し、以下の式(7)に示すように定義される。同様に、RW関数は、楕円曲線上の点P*repdiに対し、以下の式(8)に示すように定義される。ここで、この場合のRnd(P)は、点Pから一意的に0以上で((r−1)/2md)以下のランダムな整数を生成する擬似乱数生成関数である。
【0092】
【数7】

【0093】
【数8】

【0094】
ここで、自己同型写像計算部151で適用される自己同型写像について説明する。上記式(1)、式(2)の自己同型写像は、下記の式(9)のように表される。
【0095】
【数9】

【0096】
ただし、ωはω=(c・(r−1)/m)を満たす。ただし、cはζによって一意に定まる定数である。また、νはν=(r−1)/2を満たす。また、ζは、Φ(P)=(x,y)=Ω×G=ζω×Gを満たし、−P=ζν×Gを満たす。このように、ω、νは点の位数rと拡大次数m(GF(q))で表現される。
【0097】
以上のように、擬似乱数Rnd()の値の範囲が、実施例1では、0≦d・Rnd()≦((r−1))であったのが、実施例2では、0≦d・Rnd()≦((r−1)/2m)となる。これにより、実施例2では、擬似乱数の最大値が、実施例1と比較して1/2m倍に削減される。また、式(7)、式(8)のζの指数部に注目すると、この指数部は、(μ×(r−1)/2m)+(d×Rnd())と記述される。これは、((r−1)/2m)の倍数は自己同型写像で探索し、((r−1)/2m)の倍数でないものをRW関数で探索することを意味している。
【0098】
よって、RW関数によって算出される点Pi+1または点Pi+1は、既に選択した点P*repまたは点P*repdiを含む集合の点とは異なる集合の点となる。これにより、ループが防止される。より詳細に説明する。実施例1では、ランダム関数で生成される擬似乱数Rnd()の値の範囲が上記の0≦d・Rnd()≦((r−1))である。このため、ランダム関数によって既に生成されたある点の集合内で別の点がランダム関数によって生成される場合がある。この場合には、この集合内の点では既に選択された代表点と同一の代表点が選択されてしまう。その結果、ループが発生する。
【0099】
一方、実施例2では、ランダム関数で生成される擬似乱数Rnd()の値の範囲を上記の0≦d・Rnd()≦((r−1)/2m)とした結果、ランダム関数によって既に生成されたある点の集合とは異なる集合の点がランダム関数によって算出される。
【0100】
また、RW関数部253は受け付けた指標indexを1インクリメントさせて指標indexi+1を算出する。RW関数部253は、指標indexi+1と、算出した点Pi+1または点Pdi+1とをテーブル生成制御部150へ出力する。
【0101】
制御部135は、パラメータ取得部131、テーブル生成部232、テーブル比較部133およびDLP計算部134の各部に対して、上記で説明したような動作を行うように制御する。例えば、制御部135は、算出された点Pに対して自己同型写像を適用して新たな第1の点である点{Pi(h)}の集合を算出するようにテーブル生成部232を制御する。制御部135は、新たな点{Pi(h)}の集合の中から新たな代表点P*repを選択して記憶部140に追加して記憶させるようにテーブル生成部232を制御する。制御部135は、新たな代表点P*repに対して擬似乱数を用いて楕円曲線E上の新たな点Pi+1を算出するようにテーブル生成部232を制御する。制御部135は、これらの上記制御を複数回行って、複数の点{Pi(h)}の集合に関する複数の代表点P*repを記憶部140に記憶させる。
【0102】
また、制御部135は、テーブル比較部133の比較結果に基づいて、第2の点{Pdi(h)}の集合に関する代表点P*repdiに一致する代表点P*repがない場合には、以下の処理を行う。すなわち、制御部135は、今回記憶された代表点P*repdiに対して擬似乱数を用いて楕円曲線E上の新たな点Pdi+1を算出するようにテーブル生成部232を制御する。そして、制御部135は、算出された新たな点Pdi+1に対して自己同型写像を適用して新たな第2の点{Pdi+1(h)}の集合を算出するようにテーブル生成部232を制御する。そして、制御部135は、新たな第2の点{Pdi+1(h)}の集合の中から新たな代表点P*repdi+1を選択して記憶部140に追加して記憶させるようにテーブル生成部232を制御する。そして、制御部135は、これらの上記制御を、代表点が一致するまで繰り返し行う。
【0103】
次に、処理部230による解の計算処理の処理手順について説明する。図14は、処理部230の解の計算処理の処理手順を示すフローチャートである。
【0104】
なお、本実施例2における解の計算処理では、実施例1のステップS107に代えてステップS207が実行される。また、実施例1のステップS118に代えてステップS218が実行される。そのため、これらのステップS207、218について説明を行い、その他の実施例1と同様のステップについては説明を省略する。
【0105】
ステップS207について説明する。処理部230は、RW関数を用いて、擬似乱数を生成し、代表点P*repから点Pi+1を算出する(ステップS207)。ここで、この擬似乱数は、上述したように以下の式(10)に示す範囲内で生成される。
【0106】
【数10】

【0107】
ただし、Wは当該擬似乱数の値であり、mは楕円曲線暗号が定義された有限体における拡大次数であり、dは(r−1)の約数である。
【0108】
上記式(10)が示す範囲内で擬似乱数を生成することで、ステップS207において、ステップS105で既に選択された代表点P*repを含む集合とは異なる集合に属する点Pi+1が算出される。
【0109】
さらに、ステップS218について説明する。処理部230は、RW関数を用いて、擬似乱数を生成し、代表点P*repdiから点Pdi+1を算出する(ステップS218)。この擬似乱数は、上述したように上記式(10)に示す範囲内で生成される。上記式(10)が示す範囲内で擬似乱数を生成することで、ステップS218において、ステップS112で既に選択された代表点P*repdiを含む集合とは異なる集合に属する点Pdi+1が算出される。
【0110】
[実施例2の効果等]
以上、本実施例2に係る暗号鍵解読装置200について説明した。実施例2によれば、Cheon解析法と比較して、計算時に記憶されるデータ量が少なくなるため、記憶容量が圧迫されずに、暗号鍵を解くことができる。また、実施例2によれば、ループを防止できる。また、実施例2によれば、ループを防止できるので、実施例1よりも、暗号鍵の解読に必要な計算量が少なくなる。
【0111】
図15は本実施例2の暗号鍵解読装置200の効果を説明するための図である。既に説明したが、図15に示すように、実施例1では計算に必要な記憶容量が((r−1)/2m)1/4となる。そのため、従来の技術であるCheon解析法と比較すると、実施例1では、計算に必要な記憶容量が1/(2m)1/4倍削減される。
【0112】
しかしながら、図15に示すように、実施例1ではループになる確率が高くなる。Cheon解析法でループになる確率を1とすると、実施例1ではループになる確率が2mとなる。また、実施例1では、計算量が増加し、2m×2×((r−1)/2m)1/4となる。なお、図15の各項目の下段は、有限体GF(3127)の場合を示す。例えば、有限体GF(3127)においては、実施例1のループになる確率は、従来技術の254倍となる。また、計算量は従来技術では220.5となるが、実施例1では221.5となる。また、計算時に記憶されるデータ量は、従来技術では220.5だが、実施例1では216.5となる。
【0113】
本実施例2では、RW関数において、生成される擬似乱数の値の範囲の最大値を(r−1)/2mdにして、既に選択された代表点を含む集合とは異なる集合に属する点を算出するようにした。このため、図15に示すように、実施例1では、ループになる確率は1となった。また、実施例1では、計算量は2×((r−1)/2m)1/4となった。よって、実施例1と比較すると、本実施例2では、計算量およびループになる確率が減少する。例えば、有限体GF(3127)においては、本実施例2では、計算量が217.5となる。
【0114】
ところで、上記の各実施例1,2では、代表点P*repdiが選択されるごとに、テーブル141に登録された複数の代表点P*repの各々と、1つの代表点P*repdiとを比較して一致する代表点を検出する例について説明した。しかしながら、実施例はこれに限られない。例えば、複数の代表点P*repdiを求めてテーブル142に登録しておき、テーブル141に登録された複数の代表点P*repの各々と、テーブル141に登録された複数の代表点P*repdiの各々とを比較するようにしてもよい。
【0115】
また、上記の各実施例1,2では、点Pと点(k×P)とを開始点として、比較対象となる代表点P*repおよび代表点P*repdiを求める例について説明した。しかしながら、実施例はこれに限られない。例えば、点Pおよび点(k×P)に加えて、点Pおよび点(k×P)とは異なる楕円曲線E上の点、例えば、点(k×P)(g∈N、2≦g≦(d−1))を開始点として、同様の処理によって代表点G*repを求めてもよい。この場合、代表点G*repを登録するためのテーブルが新たに設けられる。そして、代表点P*repと代表点P*repdiとを比較することに加えて、代表点G*repと代表点P*repdiとを比較し、代表点G*repと代表点P*repdiとを比較する。そして、一致する代表点を検出する。
【0116】
また、点Pおよび点(k×P)に加えて、楕円曲線E上の複数の点(k×P)を開始点として、各開始点に対応する代表点を求めるようにしてもよい。この場合、各開始点に対応する代表点ごとに、当該代表点を登録するためのテーブルが設けられる。この場合、各代表点を比較して、一致する代表点を検出する。
【0117】
また、複数台のコンピュータの各々で、代表点をテーブルに登録する処理を並行に行うことで、処理の高速化を図ってもよい。
【0118】
[暗号鍵解読プログラム]
また、上記の各実施例で説明した暗号鍵解読装置100、200の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図16を用いて、上記の実施例で説明した暗号鍵解読装置100、200と同様の機能を有する暗号鍵解読プログラムを実行するコンピュータの一例を説明する。図16は、暗号鍵解読プログラムを実行するコンピュータを示す図である。
【0119】
同図に示すように、暗号鍵解読装置100、200としてコンピュータ300は、入出力制御部310、HDD(Hard Disk Drive)320、RAM(Random Access Memory)330およびCPU(Central Processing Unit)340をバス400で接続して構成される。
【0120】
ここで、入出力制御部310は、各種情報の入出力を制御する。HDD320は、CPU340による各種処理の実行に必要な情報を記憶する。RAM330は、各種情報を一時的に記憶する。CPU340は、各種演算処理を実行する。
【0121】
そして、HDD320には、暗号鍵解読システムデータがあらかじめ記憶されている。係る暗号鍵解読システムデータは、図7や図12に示した暗号鍵解読装置100、200の各処理部と同様の機能を発揮する暗号鍵解読プログラムを含む。また、暗号鍵解読システムデータは、処理に必要な各種パラメータを含む暗号鍵解読用データを含む。なお、この暗号鍵解読システムデータを適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
【0122】
そして、CPU340が、この暗号鍵解読システムデータをHDD320から読み出してRAM330に展開することにより、暗号鍵解読システムデータは暗号鍵解読システムとして機能するようになる。係る暗号鍵解読システムには暗号鍵解読プロセスが含まれる。
【0123】
すなわち、暗号鍵解読システムやそれに搭載された暗号鍵解読プロセスは、暗号鍵解読用データをHDD320から読み出して、RAM330において自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種処理を実行する。
【0124】
なお、暗号鍵解読システム及び暗号鍵解読プロセスは、図7や図12に示した各機能部(例えば、パラメータ取得部131、テーブル生成部132,232、テーブル比較部133、DLP計算部134)において実行される処理に対応する。
【0125】
なお、上記した暗号鍵解読プログラムについては、必ずしも最初からHDD320に記憶させておく必要はない。
【0126】
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300がこれらから各プログラムを読み出して実行するようにしてもよい。
【0127】
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておく。そして、コンピュータ300がこれらから各プログラムを読み出して実行するようにしてもよい。
【0128】
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。例えば、図9、図14の解の計算処理において、当該処理を実行する指示が手動で入力された場合に、ステップS101以降の処理が開始されたが、自動的にステップS101以降の処理を開始してもよい。
【0129】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図7に示すテーブル生成部132とテーブル比較部133とが統合されてもよい。また、テーブル比較部133とDLP計算部134とが統合されてもよい。また、図12に示すテーブル生成部232とテーブル比較部133とが統合されてもよい。
【0130】
また、テーブル生成部132は、以下の機能を有している。すなわち、テーブル生成部132は、入力されたシステムパラメータに基づいて、楕円曲線E上の点Pに対して自己同型写像を適用して点の集合を算出する機能を有している。また、テーブル生成部132は、算出された集合の中から第1の代表点を選択して記憶部140に記憶させる機能を有している。さらに、テーブル生成部132は、第1の代表点に対して擬似乱数を用いて楕円曲線E上の点を算出する機能を有している。これらの各機能を分散して構成するようにしてもよい。
【0131】
また、テーブル生成部132は、楕円曲線E上において点(k×P)に対して自己同型写像を適用して点の集合を算出する機能を有している。テーブル生成部132は、算出された集合の中から第2の代表点を選択して記憶部140に記憶させる機能を有している。テーブル生成部132は、第2の代表点に対して擬似乱数を用いて楕円曲線E上の点を算出する機能を有している。これらの各機能についても、分散して構成するようにしてもよい。同様に、テーブル生成部232についても各機能を分散して構成するようにしてもよい。
【符号の説明】
【0132】
100、200 暗号鍵解読装置
110 入力部
120 出力部
130、230 処理部
140 記憶部
131 パラメータ取得部
132、232 テーブル生成部
133 テーブル比較部
134 DLP計算部
135 制御部

【特許請求の範囲】
【請求項1】
コンピュータが、
楕円曲線上の所定の点に対して自己同型写像を適用して第1の点の集合を算出し、前記第1の点の集合の中から代表点を選択して記憶部に記憶させ、前記記憶部に記憶された第1の点の集合に関する代表点に対して擬似乱数を用いて前記楕円曲線上の点を算出し、当該点に対して前記自己同型写像を適用することで、前記第1の点の集合に関する新たな代表点を選択して前記記憶部に追加して記憶させる第1の代表点選択ステップと、
前記楕円曲線上において所定の暗号鍵から定まる点に対して前記自己同型写像を適用して第2の点の集合を算出し、前記第2の点の集合の中から代表点を選択して記憶部に記憶させ、前記記憶部に記憶された第2の点の集合に関する代表点に対して擬似乱数を用いて前記楕円曲線上の点を算出し、当該点に対して前記自己同型写像を適用することで、前記第2の点の集合に関する新たな代表点を選択して前記記憶部に追加して記憶させる第2の代表点選択ステップと、
前記記憶部に記憶された第1の点の集合に関する代表点と第2の点の集合に関する代表点とを比較し、一致した代表点に基づいて前記暗号鍵を算出する暗号鍵算出ステップと
を実行することを特徴とする暗号鍵解析方法。
【請求項2】
前記第1および第2の代表点選択ステップは、前記擬似乱数を用いて前記楕円曲線上の点を算出する場合に、既に選択された代表点を含む集合とは異なる集合に属する点を算出するように、当該算出に用いる前記擬似乱数を生成することを特徴とする請求項1に記載の暗号鍵解析方法。
【請求項3】
前記第1および第2の代表点選択ステップは、前記擬似乱数として、以下の式(1)に示す範囲内である擬似乱数を生成することを特徴とする請求項2に記載の暗号鍵解析方法。
【数1】

ただし、Wは擬似乱数の値であり、mは楕円曲線暗号における拡大次数であり、dは(r−1)の約数である。
【請求項4】
楕円曲線上の所定の点に対して自己同型写像を適用して第1の点の集合を算出する第1の写像計算部と、
前記第1の写像計算部によって算出された前記第1の点の集合の中から代表点を選択して記憶部に記憶させる第1の代表点選択部と、
前記第1の代表点選択部によって前記記憶部に記憶された前記第1の点の集合に関する代表点に対して擬似乱数を用いて前記楕円曲線上の点を算出する第1の乱数部と、
前記第1の乱数部で算出された点に対して前記自己同型写像を適用して新たな第1の点の集合を算出するように前記第1の写像計算部を制御し、新たな第1の点の集合の中から新たな代表点を選択して前記記憶部に追加して記憶させるように前記第1の代表点選択部を制御し、新たな代表点に対して擬似乱数を用いて前記楕円曲線上の新たな点を算出するように前記第1の乱数部を制御することを複数回行って、複数の前記第1の点の集合に関する複数の代表点を前記記憶部に記憶させる第1の制御部と、
前記楕円曲線上において所定の暗号鍵から定まる点に対して前記自己同型写像を適用して第2の点の集合を算出する第2の写像計算部と、
前記第2の写像計算部によって算出された前記第2の点の集合の中から代表点を選択して記憶部に記憶させる第2の代表点選択部と、
前記第2の代表点選択部によって選択された前記第2の点の集合に関する代表点に対して擬似乱数を用いて前記楕円曲線上の点を算出する第2の乱数部と、
前記記憶部に記憶された複数の前記第1の点の集合に関する複数の代表点の各々と、前記第2の代表点選択部によって前記記憶部に記憶された前記第2の点の集合に関する代表点とを比較し、前記第2の点の集合に関する代表点に一致する前記第1の点の集合に関する代表点がない場合には、今回記憶された第2の点の集合に関する代表点に対して前記擬似乱数を用いて前記楕円曲線上の新たな点を算出するように前記第2の乱数部を制御し、算出された新たな点に対して前記自己同型写像を適用して新たな第2の点の集合を算出するように前記第2の写像計算部を制御し、新たな第2の点の集合の中から新たな代表点を選択して前記記憶部に追加して記憶させるように前記第2の代表点選択部を制御し、複数の前記第1の点の集合に関する複数の代表点の各々と、新たな前記第2の点の集合に関する代表点とを比較することを、新たな前記第2の点の集合に関する代表点が複数の前記第1の点の集合に関する複数の代表点の少なくとも一つに一致するまで繰り返し行う第2の制御部と、
一致した代表点に基づいて前記暗号鍵を算出する暗号鍵算出部と
を備えることを特徴とする暗号鍵解析装置。
【請求項5】
楕円曲線上の所定の点に対して自己同型写像を適用して第1の点の集合を算出し、前記第1の点の集合の中から代表点を選択して記憶部に記憶させ、前記記憶部に記憶された第1の点の集合に関する代表点に対して擬似乱数を用いて前記楕円曲線上の点を算出し、当該点に対して前記自己同型写像を適用することで、前記第1の点の集合に関する新たな代表点を選択して前記記憶部に追加して記憶させる第1の代表点選択手順と、
前記楕円曲線上において所定の暗号鍵から定まる点に対して前記自己同型写像を適用して第2の点の集合を算出し、前記第2の点の集合の中から代表点を選択して記憶部に記憶させ、前記記憶部に記憶された第2の点の集合に関する代表点に対して擬似乱数を用いて前記楕円曲線上の点を算出し、当該点に対して前記自己同型写像を適用することで、前記第2の点の集合に関する新たな代表点を選択して前記記憶部に追加して記憶させる第2の代表点選択手順と、
前記記憶部に記憶された第1の点の集合に関する代表点と第2の点の集合に関する代表点とを比較し、一致した代表点に基づいて前記暗号鍵を算出する暗号鍵算出手順と
をコンピュータに実行させることを特徴とする暗号鍵解析プログラム。

【図1】
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


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