説明

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

【課題】離散対数問題に基づく公開鍵暗号のPollardのρ法による解読にかかる計算量を削減する。
【解決手段】暗号鍵解読装置200は、点列生成処理部141と、判定処理部242とを有する。点列生成処理部141は、点に対して写像を実行し、写像の実行結果となる点に対して再度写像を実行する処理を繰り返し実行することで複数の点を生成する。また、点列生成処理部141は、生成した点が所定の特徴を有する特徴点であるか否かを判定する。判定処理部242は、点列生成処理部141において生成された点のうち、特徴点でないと判定した点を判定点として記憶装置に記憶する。また、判定処理部242は、点列生成処理部141によって生成された点と前記記憶装置に記憶された判定点とを比較して、生成された点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定して演算を中断し、別の初期点から演算を再開する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号鍵解読方法、暗号鍵解読装置および暗号鍵解読プログラムに関する。
【背景技術】
【0002】
従来、情報通信において情報を保護するために用いられる暗号化方式の一つとして、公開鍵暗号が存在する。公開鍵暗号は、情報を暗号化するための公開鍵と、公開鍵により暗号化された情報を復号化するための秘密鍵とで一対の異なる鍵を用いる暗号方式である。公開鍵暗号では、送信者は、受信者が公開している公開鍵で情報を暗号化して送信し、受信者は、暗号化された情報を自分だけが保持している秘密鍵で復号する。
【0003】
公開鍵暗号は、公開鍵から秘密鍵が解読されないようにするために、数学的に難しいとされる問題に基づいて設計される。例えば、公開鍵暗号には、ElGamal暗号や楕円曲線暗号のように、計算量的に解読が困難である離散対数問題に基づいて設計されるものが存在する。離散対数問題とは、素数pに対して有限体GF(p)の生成元αを固定し、有限体GF(p)の元βに対してβ=αを満たす整数xを求めるという問題である。
【0004】
公開鍵暗号により情報を保護するためには、現状および今後の計算機能力を見積もり、容易に解読できないような計算量になるようにパラメータを設計する必要がある。このため、公開鍵暗号を実際に解読し、解読にかかる計算量を評価する方法が存在する。例えば、上記の離散対数問題に基づく公開鍵暗号を解読する方法として、Pollardのρ法がある。このPollardのρ法は、所定の点に対して写像を適用して新たな点を生成し、生成した点に対して写像を更に適用することで、点の生成を繰り返す。そして、Pollardのρ法は、生成した複数の点のうち2点が一致する場合に得られる関係式を用いることで、離散対数問題を解く方法である。
【0005】
ここで、Pollardのρ法について説明する。図11および図12は、従来のPollardのρ法を説明するための図である。図11に示すように、Pollardのρ法では、まず、初期点Pが生成される。続いて、点Pi−1から点Pへの写像Fを用いて、点P,点P,点P・・・のように点Pが生成される。生成された点Pは、図12に示すように、メモリに記憶される。なお、写像Fは、下記の式(1)によって示され、下記の式(2)が成り立つuおよびvを一意に算出できる写像である。
【0006】
=F(Pi−1)・・・(1)
【0007】
=α^{u}*β^{v}・・・(2)
【0008】
続いて、点Pがメモリに新たに記憶されるごとに、点Pが既に記憶された点P〜点Pj−1のいずれかと一致するか否かが判定される。点Pが既に記憶された点P〜点Pj−1のいずれかと一致する場合には、2つの点の一致を衝突として検出する。すなわち、点Pと点Pとが衝突する場合には、下記の式(3)が成り立つ。
【0009】
=P・・・(3)
【0010】
続いて、点Pの式(2)および2点の衝突によって得られる式(3)から、下記の式(4)が導かれる。式(4)に離散対数問題の条件式β=αをあてはめると、下記の式(5)が導かれる。そして、式(5)にu,v,u,vを代入することで、秘密鍵xが算出される。なお、秘密鍵xが算出されるのは、v≠vが成り立つ場合である。
【0011】
α^{u}*β^{v}=α^{u}*β^{v}・・・(4)
【0012】
x=(u−u)/(v−v)・・・(5)
【0013】
しかし、Pollardのρ法を用いて公開鍵暗号の解読を実行すると、多数の点Pが生成され、生成された点Pを記憶するためのメモリ使用量が膨大になってしまうという問題があった。このメモリ使用量を削減する技術として、特徴点(distinguished point)を導入したρ法が存在する。この方法は、生成された点Pのうち、数値に特徴を有する特徴点のみを記憶することで、メモリ使用量を削減する方法である。
【0014】
ここで、特徴点を導入したρ法について説明する。図13は、従来の特徴点を導入したρ法を説明するための図である。図13に示す例では、点Pの数値の下位2桁が00である点を特徴点として設定した場合を説明する。図13に示す白丸印は特徴点を示し、黒丸印は特徴点でない点を示す。特徴点を導入したρ法では、生成された全ての点Pを記憶するのではなく、特徴点のみをメモリに記憶する。衝突の検出はメモリ上で行われるので、図13に示すように、特徴点でない点P10と点P28とが一致していたとしても、この一致は衝突として検出されない。しかし、写像Fは一意の写像であるので、同一の点からの写像は常に一致する。つまり、点P28が点P10と一致した場合には、次の点P29は点P11と一致する。さらに、次々に生成される点P30,点P31,点P32・・・は、点P12,点P13,点P14・・・とそれぞれ一致する。このように、新たな点が既に生成された点のいずれかと一致すると、同一の点が生成され続けるループが形成される。このため、このループ上に特徴点が含まれる場合には、衝突が検出される。図13に示す例では、ループ上に点P17,点P29の2点が含まれるので、点P35が生成された時点で、点P17と点P35との衝突が検出される。このように、特徴点を導入したρ法では、解読にかかる計算量は増加するものの、メモリ使用量は削減される。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特開2008−20653号公報
【発明の概要】
【発明が解決しようとする課題】
【0016】
しかしながら、上記従来技術では、特徴点のみを記憶するので、メモリ使用量を低減できるものの、解が算出されない場合があった。このため、解が算出されないにもかかわらず、演算処理が継続されてしまい、解読にかかる計算量が膨大になっていた。
【0017】
図14および図15を用いて、解が算出されない場合について説明する。図14および図15は、従来技術の問題を説明するための図である。図14および図15に示す白丸印は特徴点を示し、黒丸印は特徴点でない点を示す。
【0018】
図14に示す例では、特徴点を含まないループが発生した場合を説明する。図14に示すように、ループが形成されると、写像Fを繰り返し実行したとしても、周期的に同じ点が生成されてしまう。このため、ループ上に特徴点が含まれていなければ、特徴点でない点が生成され続けるため、特徴点の衝突を検出することができず、解を算出することができない。
【0019】
図15に示す例では、自明な衝突が発生した場合を説明する。この自明な衝突とは、2点P,Pが衝突した場合に、衝突した2点の係数u,v,u,vが等しくなることである。つまり、自明な衝突が発生すると、P=P,u=u,v=vが成り立つ。図15に示すように、自明な衝突が発生した場合には、写像Fの演算処理を繰り返したとしても、2点間の写像を繰り返すのみである。このため、この2点がいずれも特徴点でなければ、特徴点の衝突を検出することができず、解を算出することができない。また、仮に、この2点のいずれかが特徴点であったとしても、v=vを満たすので、上記の式(5)を用いても解を算出することができない。
【0020】
開示の技術は、上記に鑑みてなされたものであって、解読にかかる計算量を削減することができる暗号鍵解読方法、暗号鍵解読装置および暗号鍵解読プログラムを提供することを目的とする。
【課題を解決するための手段】
【0021】
本願の開示する技術は、一つの態様において、コンピュータが、点生成ステップと、判定点記憶ステップと、判定ステップとを実行することを要件とする。点生成ステップは、点に対して写像を実行し、写像の実行結果となる点に対して再度写像を実行する処理を繰り返し実行することで複数の点を生成する。判定点記憶ステップは、点生成ステップによって生成された点が、所定の特徴を有する特徴点であるか否かを判定し、特徴点でないと判定した点を判定点として記憶装置に記憶する。判定ステップは、点生成ステップによって生成された点と記憶装置に記憶された判定点とを比較して、点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定する。
【発明の効果】
【0022】
本願の開示する技術の一つの態様によれば、解読にかかる計算量を削減することができるという効果を奏する。
【図面の簡単な説明】
【0023】
【図1】図1は、本実施例1にかかる暗号鍵解読装置の構成を示す図である。
【図2】図2は、点列データのデータ構造の一例を示す図である。
【図3】図3は、本実施例1にかかる暗号鍵解読装置の処理手順を示すフローチャートである。
【図4】図4は、演算処理回数に閾値を設定する根拠を説明するための図である。
【図5】図5は、本実施例2にかかる暗号鍵解読装置の構成を示す図である。
【図6】図6は、本実施例2にかかる暗号鍵解読装置の処理手順を示すフローチャートである。
【図7】図7は、本実施例3にかかる暗号鍵解読装置の構成を示す図である。
【図8】図8は、本実施例3にかかる暗号鍵解読装置の処理手順を示すフローチャートである。
【図9】図9は、本実施例1〜3にかかる暗号鍵解読装置の効果を比較して説明するための図である。
【図10】図10は、本実施例にかかる暗号鍵解読装置を構成するコンピュータのハードウェア構成を示す図である。
【図11】図11は、従来のPollardのρ法を説明するための図である。
【図12】図12は、従来のPollardのρ法を説明するための図である。
【図13】図13は、従来の特徴点を導入したρ法を説明するための図である。
【図14】図14は、従来技術の問題を説明するための図である。
【図15】図15は、従来技術の問題を説明するための図である。
【発明を実施するための形態】
【0024】
以下に、本願の開示する暗号鍵解読方法、暗号鍵解読装置および暗号鍵解読プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例1】
【0025】
本実施例1にかかる暗号鍵解読装置の構成の一例について説明する。図1は、本実施例1にかかる暗号鍵解読装置の構成を示す図である。図1に示すように、この暗号鍵解読装置100は、入力部110、出力部120、記憶部130、制御部140を有する。
【0026】
入力部110は、各種情報の入力を受け付ける入力装置である。例えば、入力部110は、パラメータ(p,α,β)の入力や秘密鍵xを算出する命令の入力を受け付ける。入力部110は、キーボードやマウスなどに対応する装置である。出力部120は、各種情報を出力する出力装置である。例えば、出力部120は、後述する解算出処理部144から受け付けた秘密鍵xを出力する。出力部120は、ディスプレイやモニタなどに対応する装置である。
【0027】
記憶部130は、点列データ131を有する。この点列データ131は、iと、Qと、uと、vとを対応付けて記憶する。このうち、iは、インデックスであり、1以上の整数である。また、Qは、Qi−1を写像した値であり、u、vは、Qの係数である。
【0028】
図2は、点列データのデータ構造の一例を示す図である。図2に示すように、例えば、点列データ131は、i=3と、Q=17100と、u=19と、v=6とを対応付けて記憶する。また、点列データ131は、i=17と、Q=4500と、u=44と、v=3とを対応付けて記憶する。また、点列データ131は、i=29と、Q=4300と、u=26と、v=5とを対応付けて記憶する。また、点列データ131は、i=35と、Q=4500と、u=8と、v=69とを対応付けて記憶する。
【0029】
制御部140は、点列生成処理部141、判定処理部142、衝突検知処理部143、解算出処理部144を有する。
【0030】
点列生成処理部141は、所定の点に対して写像を適用して新たな点を生成し、生成した点に対して写像を更に適用することで、点の生成を繰り返す。そして、点列生成処理部141は、点を生成する度に、生成した点が数値に所定の特徴を有する特徴点であるか否かを判定し、特徴点であると判定された点の情報を点列データ131に格納する処理部である。
【0031】
以下において、点列生成処理部141の処理について具体的に説明する。例えば、点列生成処理部141は、入力部110を介して受け付けたパラメータ(p,α,β)と下記の式(6)とを用いて、初期点Pを算出する。なお、例えば、式(6)のuは、ランダムに選択される初期値である。また、例えば、vは、0である。
【0032】
=α^{u}*β^{v}・・・(6)
【0033】
続いて、点列生成処理部141は、初期点PをQと設定し、下記の式(7)を用いて、点Qを算出する。なお、式(7)のFは、点Qi−1から点Qへの写像であり、下記の式(8)が成り立つuおよびvを一意に算出できる写像である。また、式(7)のiは、インデックスであり、写像Fの演算処理回数に対応する。つまり、iは、点Qが写像される度に、1インクリメントされる。
【0034】
=F(Qi−1)・・・(7)
【0035】
=α^{u}*β^{v}・・・(8)
【0036】
また、点列生成処理部141は、点Qを生成する度に、生成した点Qが数値に特徴を有する特徴点であるか否かを判定する。ここで、特徴点とは、例えば、点Qの数値の下位2桁が00である点を指す。点列生成処理部141は、点Qが特徴点であると判定された場合には、点Qの情報としてiと、Qと、uと、vとを対応付けて点列データ131に格納する。例えば、点列生成処理部141は、点Qが特徴点であると判定された場合には、点Qの情報として、i=3と、Q=17100と、u=19と、v=6とを対応付けて点列データ131に格納する。また、点列生成処理部141は、点Qが特徴点でないと判定された場合には、点Qの情報を判定処理部142に出力する。
【0037】
判定処理部142は、点列生成処理部141による演算処理回数と所定の閾値とを比較し、演算処理回数が所定の閾値以上である場合に、解が算出されないと判定する処理部である。ここで、衝突とは、点列データ131に新たに格納された点が、点列データ131に既に記憶された点のいずれかと一致することを指す。
【0038】
例えば、判定処理部142は、点Qの情報を点列生成処理部141から受け付けて、受け付けた点Qに対応するiと所定の閾値とを比較する。判定処理部142は、iが所定の閾値以上である場合には、解が算出されないと判定し、出力部120にNGを出力する。これに対して、iが所定の閾値未満である場合には、判定処理部142は、次の点Qの情報を受け付けるまで待機する。ここで比較される閾値は、例えば、特徴点が出力される確率が最も高いiの値を10倍した値である。例えば、点Qの数値の下位2桁が00である点を特徴点とした場合には、閾値は1000に設定される。
【0039】
衝突検知処理部143は、衝突を探索する処理部である。例えば、衝突検知処理部143は、新たな特徴点が点列データ131に格納されるごとに、新たな特徴点が既に記憶された特徴点のいずれかと一致するか否かを判定する。衝突検知処理部143は、新たな特徴点が既に記憶された特徴点のいずれかと一致する場合には、2つの特徴点の一致を衝突として検出する。すなわち、2つの特徴点が衝突する場合には、下記の式(9)が成り立つ。なお、式(9)のkは、衝突した2つの特徴点のiの差分である。
【0040】
=Qi+k・・・(9)
【0041】
続いて、衝突検知処理部143は、衝突した2つの特徴点に対応するu,v,ui+k,vi+kを解算出処理部144に出力する。なお、衝突検知処理部143は、衝突を検出するまで衝突を探索する。
【0042】
図2に示す例では、衝突検知処理部143は、特徴点Q35=4500が点列データ131に格納された時点で、特徴点Q35が既に記憶された特徴点のいずれかと一致するか否かを判定する。衝突検知処理部143は、特徴点Q35=4500が特徴点Q17=4500と一致するので、特徴点Q35と特徴点Q17の衝突を検出する。そして、衝突検知処理部143は、u17,v17,u35,v35の値を解算出処理部144に出力する。
【0043】
解算出処理部144は、解を算出する処理部である。例えば、解算出処理部144は、衝突検知処理部143から受け付けたu17,v17,u35,v35の値を用いて、秘密鍵xを算出する。
【0044】
ここで、解算出処理部144が秘密鍵xを算出するために用いる式について説明する。まず、点Qの式(8)および2点の衝突によって得られる式(9)から、下記の式(10)が導かれる。そして、式(10)に離散対数問題の条件式β=αをあてはめると、下記の式(11)が導かれる。
【0045】
α^{u}*β^{v}=α^{ui+k}*β^{vi+k}・・・(10)
【0046】
x=(u−ui+k)/(vi+k−v)・・・(11)
【0047】
すなわち、解算出処理部144は、衝突検知処理部143から受け付けたu,v,ui+k,vi+kを式(11)に代入することで、秘密鍵xを算出する。そして、解算出処理部144は、算出した秘密鍵xを出力部120に出力する。なお、解算出処理部144が秘密鍵xを算出するのは、v≠vi+kが成り立つ場合である。これに対して、v=vi+kが成り立つ場合には、解算出処理部144は、秘密鍵xを算出できないので、出力部120にNGを出力する。
【0048】
なお、解算出処理部144は、入力部110から秘密鍵xを算出する命令を受け付けた時間を取得し、取得した時間を用いて秘密鍵xが算出されるまでに要した演算時間を算出しても良い。そして、解算出処理部144は、算出した演算時間を出力部120に出力しても良い。
【0049】
次に、本実施例1にかかる暗号鍵解読装置100の処理手順について説明する。図3は、本実施例1にかかる暗号鍵解読装置の処理手順を示すフローチャートである。例えば、図3に示す処理は、暗号鍵解読装置100が、入力部110を介して秘密鍵xを算出する命令を受け付けたことを契機として実行される。
【0050】
図3に示すように、暗号鍵解読装置100は、入力部110を介して受け付けたパラメータを用いて初期点Pを算出し(ステップS101)、初期点Pを点Q(i=1)と設定する(ステップS102)。暗号鍵解読装置100は、点Qi−1に対して写像Fを適用して点Qを生成し(ステップS103)、iを1インクリメントさせる(ステップS104)。暗号鍵解読装置100は、点Qが特徴点である場合には(ステップS105,Yes)、点Qの情報を点列データ131に格納する(ステップS106)。
【0051】
暗号鍵解読装置100は、点Qの情報を点列データ131に格納するごとに、衝突を探索する(ステップS107)。暗号鍵解読装置100は、衝突を検知した場合には(ステップS108,Yes)、秘密鍵xを算出し(ステップS109)、処理を終了する。一方、暗号鍵解読装置100は、衝突を検知しなかった場合には(ステップS108,No)、ステップS103に移行する。
【0052】
暗号鍵解読装置100は、ステップS105において、点Qが特徴点でない場合には(ステップS105,No)、iが閾値以上であるか否かを判定する(ステップS110)。暗号鍵解読装置100は、iが閾値以上である場合には(ステップS110,Yes)、解が算出されないと判定してNGを出力し(ステップS111)、処理を終了する。一方、暗号鍵解読装置100は、iが閾値未満である場合には(ステップS110,No)、ステップS103に移行する。
【0053】
なお、上記の処理手順では、NGを出力した後に、処理を終了すると説明したが、必ずしも処理を終了しなくても良い。例えば、暗号鍵解読装置100は、NGを出力した後に、新たな初期点Pを算出し、処理を継続しても良い。具体的には、NGを出力する処理であるステップS111の処理の後に、新たな初期点Pを算出する処理を実行し、ステップS103に移行しても良い。
【0054】
次に、本実施例1にかかる暗号鍵解読装置100の効果について説明する。従来技術では、特徴点を含まないループや自明な衝突が発生した場合には、解が算出されないにもかかわらず、演算処理が継続されていた。これに対して、暗号鍵解読装置100は、写像Fの演算処理回数に上限となる閾値を設定し、演算処理回数が閾値に到達した時点で解が算出されないと判定する。このため、暗号鍵解読装置100は、特徴点を含まないループや自明な衝突が発生した場合でも、演算処理を確実に中断でき、解読にかかる計算量の増加を防ぐことができる。
【0055】
ここで、演算処理回数に閾値を設定する根拠を説明する。図4は、演算処理回数に閾値を設定する根拠を説明するための図である。図4に示す例では、点Qの数値の下位2桁が00である点を特徴点とした場合を説明する。図4に示すグラフの横軸は、写像Fの演算処理回数iを示し、縦軸は、特徴点が生成される確率を示す。図4に示すように、特徴点が生成される確率は、写像Fの演算処理回数iの増加に伴って上昇するものの、100回目をピークとして、その後低下する。特に、写像Fの演算処理回数iが1000回を超えた場合に、特徴点がほとんど出力されなくなるのは、特徴点を含まないループが発生したか、あるいは自明な衝突が発生したものと推測されるからである。このため、判定処理部142で用いられる閾値は、1000、すなわち、特徴点が出力される確率が最も高い演算処理回数iの10倍に設定されることが望ましい。なお、閾値については、この例示に限るものではなく、暗号鍵解読装置100を利用する者が任意の値に設定してよい。
【実施例2】
【0056】
次に、本実施例2にかかる暗号鍵解読装置の構成の一例について説明する。図5は、本実施例2にかかる暗号鍵解読装置の構成を示す図である。図5に示すように、この暗号鍵解読装置200は、入力部110、出力部120、記憶部130、制御部240を有する。このうち、図5に示す入力部110、出力部120、記憶部130の説明は、図1に示した入力部110、出力部120、記憶部130の説明と同様である。
【0057】
制御部240は、点列生成処理部141、判定処理部242、衝突検知処理部143、解算出処理部144を有する。このうち、図5に示す点列生成処理部141、衝突検知処理部143、解算出処理部144の説明は、図1に示した点列生成処理部141、衝突検知処理部143、解算出処理部144の説明と同様である。
【0058】
判定処理部242は、点列生成処理部141において生成された点のうち、特徴点でないと判定された点を判定点として設定し、設定した判定点と一致する点が生成された時点で、今後、解が算出されないと判定する処理部である。
【0059】
具体的には、判定処理部242は、点列生成処理部141が生成した点のうち、特徴点でない一点を判定点Rとして保存する。この判定点Rは、点Qが初期点として保存され、写像Fの演算処理回数が回数mに到達する度に、m回目に生成された点Qに更新される値である。例えば、mが10である場合には、判定点Rは、最初に点Qが保存され、点Q10,点Q20,点Q30・・・と更新される。なお、回数mについては、この例示に限るものではなく、暗号鍵解読装置100を利用する者が任意の値に設定してよい。
【0060】
また、判定処理部242は、点列生成処理部141が点Qを生成するごとに、点Qが判定点Rと一致するか否かを判定する。判定処理部242は、点Qが判定点Rと一致する場合には、解が算出されないと判定し、出力部120にNGを出力する。これに対して、判定処理部242は、点Qが判定点Rと一致しない場合には、次の点Qの情報を受け付けるまで待機する。
【0061】
次に、本実施例2にかかる暗号鍵解読装置200の処理手順について説明する。図6は、本実施例2にかかる暗号鍵解読装置の処理手順を示すフローチャートである。例えば、図6に示す処理は、暗号鍵解読装置200が、入力部110を介して秘密鍵xを算出する命令を受け付けたことを契機として実行される。
【0062】
図6に示すように、暗号鍵解読装置200は、入力部110を介して受け付けたパラメータを用いて初期点Pを算出し(ステップS201)、初期点Pを点Q(i=1)と設定し、さらに点Qを判定点R(j=1)と設定する(ステップS202)。なお、このjは、判定処理部242が判定点Rの更新タイミングを管理するために設定される値である。jは、点Qが写像される度に1インクリメントされ、回数mに達する度に1に再設定される。
【0063】
暗号鍵解読装置200は、点Qi−1に対して写像Fを適用して点Qを生成し(ステップS203)、iおよびjをそれぞれ1インクリメントさせる(ステップS204)。暗号鍵解読装置200は、点Qが特徴点である場合には(ステップS205,Yes)、点Qの情報を点列データ131に格納する(ステップS206)。
【0064】
暗号鍵解読装置200は、点Qの情報を点列データ131に格納するごとに、衝突を探索する(ステップS207)。暗号鍵解読装置200は、衝突を検知した場合には(ステップS208,Yes)、秘密鍵xを算出し(ステップS209)、処理を終了する。一方、暗号鍵解読装置200は、衝突を検知しなかった場合には(ステップS208,No)、ステップS203に移行する。
【0065】
暗号鍵解読装置200は、ステップS205において、点Qが特徴点でない場合には(ステップS205,No)、点Qが判定点Rと一致するか否かを判定する(ステップS210)。暗号鍵解読装置200は、点Qが判定点Rと一致する場合には(ステップS210,Yes)、解が算出されないと判定してNGを出力し(ステップS211)、処理を終了する。一方、暗号鍵解読装置200は、点Qが判定点Rと一致しない場合には(ステップS210,No)、jがmに到達する度に、判定点Rを点Qに更新するとともに、jを1に設定し(ステップS212)、ステップS203に移行する。
【0066】
なお、上記の処理手順では、NGを出力した後に、処理を終了すると説明したが、必ずしも処理を終了しなくても良い。例えば、暗号鍵解読装置200は、NGを出力した後に、新たな初期点Pを算出し、処理を継続しても良い。具体的には、NGを出力する処理であるステップS211の処理の後に、新たな初期点Pを算出する処理を実行し、ステップS203に移行しても良い。
【0067】
次に、本実施例2にかかる暗号鍵解読装置200の効果について説明する。図14および図15に示したように、従来技術では、特徴点を含まないループや自明な衝突が発生し、ループが形成された場合には、解が算出されないにもかかわらず、演算処理が継続されていた。これに対して、暗号鍵解読装置200は、生成した点のうち、特徴点でない点を判定点として設定し、演算処理が所定回数に到達する度に、判定点を新たな点に更新する。このため、特徴点を含まないループや自明な衝突が発生した場合には、ループ上の点のいずれかが判定点に設定されるので、暗号鍵解読装置200は、判定点と今後生成される点との衝突を判定することで、今後解が算出されないということを早期に検出できる。したがって、暗号鍵解読装置200は、特徴点を含まないループや自明な衝突が発生した場合でも、演算処理を早期に中断でき、解読にかかる計算量を削減することができる。
【0068】
ところで、図5に示した暗号鍵解読装置200の構成は一例であり、暗号鍵解読装置200は、必ずしも図5に示した各処理部を全て有していなくても良い。例えば、暗号鍵解読装置200は、点生成部と判定点記憶部と判定部の機能を有していれば良い。
【0069】
このうち、点生成部は、点に対して写像を実行し、写像の実行結果となる点に対して再度写像を実行する処理を繰り返し実行することで複数の点を生成する処理部である。この点生成部は、点列生成処理部141に対応する。判定点記憶部は、点生成部によって生成された点が、所定の特徴を有する特徴点であるか否かを判定し、特徴点でないと判定した点を判定点として記憶装置に記憶する処理部である。この判定点記憶部は、点列生成処理部141と判定処理部242とに対応する。また、判定部は、点生成部によって生成された点と前記記憶装置に記憶された判定点とを比較して、前記点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定する処理部である。この判定部は、判定処理部242に対応する。
【実施例3】
【0070】
次に、本実施例3にかかる暗号鍵解読装置の構成の一例について説明する。図7は、本実施例3にかかる暗号鍵解読装置の構成を示す図である。図7に示すように、この暗号鍵解読装置300は、入力部110、出力部120、記憶部130、制御部340を有する。このうち、図7に示す入力部110、出力部120、記憶部130の説明は、図1に示した入力部110、出力部120、記憶部130の説明と同様である。
【0071】
制御部340は、点列生成処理部141、判定処理部342、衝突検知処理部143、解算出処理部144を有する。このうち、図7に示す点列生成処理部141、衝突検知処理部143、解算出処理部144の説明は、図1に示した点列生成処理部141、衝突検知処理部143、解算出処理部144の説明と同様である。
【0072】
判定処理部342は、図1に示した判定処理部142と同様の機能と、図5に示した判定処理部242と同様の機能とを有する。すなわち、判定処理部342は、点列生成処理部141による演算処理回数と所定の閾値とを比較し、演算処理回数が所定の閾値以上である場合に、解が算出されないと判定する。また、判定処理部342は、点列生成処理部141において生成された点のうち、特徴点でないと判定された点を判定点として設定し、設定した判定点と一致する点が生成された時点で、解が算出されないと判定する。
【0073】
次に、本実施例3にかかる暗号鍵解読装置300の処理手順について説明する。図8は、本実施例3にかかる暗号鍵解読装置の処理手順を示すフローチャートである。例えば、図8に示す処理は、暗号鍵解読装置300が、入力部110を介して秘密鍵xを算出する命令を受け付けたことを契機として実行される。
【0074】
図8に示すように、暗号鍵解読装置300は、入力部110を介して受け付けたパラメータを用いて初期点Pを算出し(ステップS301)、初期点Pを点Q(i=1)と設定し、さらに点Qを判定点R(j=1)と設定する(ステップS302)。暗号鍵解読装置300は、点Qi−1に対して写像Fを適用して点Qを生成し(ステップS303)、iおよびjをそれぞれ1インクリメントさせる(ステップS304)。暗号鍵解読装置300は、点Qが特徴点である場合には(ステップS305,Yes)、点Qの情報を点列データ131に格納する(ステップS306)。
【0075】
暗号鍵解読装置300は、点Qの情報を点列データ131に格納するごとに、衝突を探索する(ステップS307)。暗号鍵解読装置300は、衝突を検知した場合には(ステップS308,Yes)、秘密鍵xを算出し(ステップS309)、処理を終了する。一方、暗号鍵解読装置300は、衝突を検知しなかった場合には(ステップS308,No)、ステップS303に移行する。
【0076】
暗号鍵解読装置300は、ステップS305において、点Qが特徴点でない場合には(ステップS305,No)、iが閾値以上であるか否かを判定する(ステップS310)。暗号鍵解読装置300は、iが閾値以上である場合には(ステップS310,Yes)、解が算出されないと判定してNGを出力し(ステップS311)、処理を終了する。一方、暗号鍵解読装置300は、iが閾値未満である場合には(ステップS310,No)、点Qが判定点Rと一致するか否かを判定する(ステップS312)。暗号鍵解読装置300は、点Qが判定点Rと一致する場合には(ステップS312,Yes)、ステップS311に移行する。一方、暗号鍵解読装置300は、点Qが判定点Rと一致しない場合には(ステップS312,No)、jがmに到達する度に、判定点Rを点Qに更新するとともに、jを1に設定し(ステップS313)、ステップS303に移行する。
【0077】
なお、上記の処理手順では、NGを出力した後に、処理を終了すると説明したが、必ずしも処理を終了しなくても良い。例えば、暗号鍵解読装置300は、NGを出力した後に、新たな初期点Pを算出し、処理を継続しても良い。具体的には、NGを出力する処理であるステップS311の処理の後に、新たな初期点Pを算出する処理を実行し、ステップS303に移行しても良い。
【0078】
また、上記の処理手順は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲で適宜変更されても良い。例えば、上記の処理手順では、iが閾値以上であるか否かを判定する処理を実行した後に、点Qが判定点Rと一致するか否かを判定する処理を実行すると説明したが、これらの処理を逆の順序で実行しても良い。具体的には、iが閾値以上であるか否かを判定する処理であるステップS310の処理は、点Qが判定点Rと一致するか否かを判定する処理であるステップS312〜ステップS313の処理の後に実行されても良い。
【0079】
次に、本実施例3にかかる暗号鍵解読装置300の効果について説明する。従来技術では、特徴点を含まないループや自明な衝突が発生した場合には、解が算出されないにもかかわらず、演算処理が継続されていた。これに対して、暗号鍵解読装置300は、特徴点を含まないループや自明な衝突が発生した場合でも、判定点を用いることで、演算処理を早期に中断でき、解読にかかる計算量を削減できる。
【0080】
また、判定点と一致する点が検出されない場合でも、衝突が発生しないことが原因で、演算処理回数が増加してしまう場合がある。このような場合には、図4に示したように、演算処理回数が増加するほど、特徴点が生成される確率は低下するので、解が算出され難くなる。これに対して、暗号鍵解読装置300は、演算処理回数に閾値を設定することで、演算処理を確実に中断でき、解読にかかる計算量の増加を防止できる。
【0081】
ここで、本実施例1〜3にかかる暗号鍵解読装置の効果を比較して説明する。図9は、本実施例1〜3にかかる暗号鍵解読装置の効果を比較して説明するための図である。図9に示す例では、点Qの数値の下位2桁が00である点を特徴点とし、演算処理回数の閾値を1000とし、m=10とした場合を説明する。図9に示すように、従来の特徴点を導入しない技術では、写像Fを用いて生成した全ての点を記憶して衝突を探索するので、衝突を必ず検知できる。しかし、この従来技術では、全ての点を記憶する必要があるのでメモリ使用量が膨大になっていた。また、この従来技術では、全ての点を用いて衝突を探索するので、衝突の検知速度は遅かった。
【0082】
これに対して、本実施例1にかかる暗号鍵解読装置100は、特徴点のみを記憶するので、メモリ使用量が削減される。また、暗号鍵解読装置100は、特徴点のみを用いて衝突を探索するので、従来技術に比べて処理速度が上がり、衝突を早く検出できる。また、暗号鍵解読装置100は、特徴点を含まないループや自明な衝突が発生した場合でも、演算処理回数の上限を設定するので、演算処理を確実に中断でき、無駄な点を1000個以内に抑えることができる。このため、暗号鍵解読装置100は、新たな初期点Pを生成することで、演算処理を再び実行できるので、衝突を確実に検出できる。
【0083】
また、本実施例2にかかる暗号鍵解読装置200は、特徴点を含まないループや自明な衝突が発生した場合でも、判定点を用いることで、演算処理を早期に中断でき、無駄な点を10個程度に抑えることができる。このため、暗号鍵解読装置100は、演算処理回数が少ない段階で新たな初期点Pを生成し、演算処理を再び実行できるので、衝突を早期に検出できる。
【0084】
しかし、暗号鍵解読装置200は、判定点と一致する点を検出しない場合でも、衝突が発生しないことが原因で、演算処理回数が増加してしまう場合があった。これに対して、本実施例3にかかる暗号鍵解読装置300は、演算処理回数の上限を設定するので、演算処理を確実に中断でき、無駄な点を1000個以内に抑えることができる。このため、暗号鍵解読装置300は、衝突を早期に、かつ、確実に検出できる。
【0085】
また、図1,5,7に示した記憶部130は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、ハードディスクや光ディスクなどの記憶装置に対応する。また、図1,5,7に示した制御部140,240,340は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積装置に対応する。または、制御部140,240,340は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。
【0086】
また、本実施例1〜3において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0087】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図1に示した点列生成処理部141〜解算出処理部144のうちいずれかの機能をサーバに持たせ、かかるサーバと暗号鍵解読装置100とが協働することで、解が算出されないことを判定しても良い。
【0088】
また、暗号鍵解読装置100〜300は、既知のパーソナルコンピュータ、ワークステーション、携帯電話、PHS端末、移動体通信端末またはPDAなどの情報処理装置に、暗号鍵解読装置100〜300の各機能を搭載することによって実現することもできる。
【0089】
図10は、本実施例にかかる暗号鍵解読装置を構成するコンピュータのハードウェア構成を示す図である。図10に示すように、このコンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータの入力を受け付ける入力装置402と、モニタ403を有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る媒体読み取り装置404と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置405を有する。また、コンピュータ400は、各種情報を一時記憶するRAM(Random Access Memory)406と、ハードディスク装置407を有する。各装置401〜407は、バス408に接続される。
【0090】
そして、ハードディスク装置407は、図1,5,7に示した、点列生成処理部141、判定処理部142,242,342、衝突検知処理部143、解算出処理部144と同様の機能を有する暗号鍵解読プログラム407aを記憶する。また、ハードディスク装置407は、図1,5,7に示した点列データ131に対応する点列データ407bを記憶する。
【0091】
CPU401が暗号鍵解読プログラム407aをハードディスク装置407から読み出してRAM406に展開することにより、暗号鍵解読プログラム407aは、暗号鍵解読プロセス406aとして機能する。そして、CPU401がハードディスク装置407から点列データ407bを読み出して、RAM406に点列データ406bを展開し、暗号鍵解読プロセス406aが点列データ406bを利用して処理を実行する。
【0092】
なお、上記の暗号鍵解読プログラム407aは、必ずしもハードディスク装置407に記憶されている必要はない。例えば、CD−ROM等の記憶媒体に記憶されたプログラムを、コンピュータ400が読み出して実行するようにしても良い。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等にこのプログラムを記憶させておき、コンピュータ400がこれらからプログラムを読み出して実行するようにしても良い。
【0093】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0094】
(付記1)コンピュータが、
点に対して写像を実行し、該写像の実行結果となる点に対して再度前記写像を実行する処理を繰り返し実行することで複数の点を生成する点生成ステップと、
前記点生成ステップによって生成された点が、所定の特徴を有する特徴点であるか否かを判定し、特徴点でないと判定した点を判定点として記憶装置に記憶する判定点記憶ステップと、
前記点生成ステップによって生成された点と前記記憶装置に記憶された判定点とを比較して、前記点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定する判定ステップと
を実行することを特徴とする暗号鍵解読方法。
【0095】
(付記2)前記写像が所定回数実行される毎に、前記記憶装置に記憶された判定点を新たに生成された点に更新する判定点更新ステップを更に実行することを特徴とする付記1に記載の暗号鍵解読方法。
【0096】
(付記3)前記判定ステップは、前記写像が実行された回数と閾値とを比較し、写像が実行された回数が閾値以上である場合に、特徴点同士の衝突が起こらないと更に判定することを特徴とする付記1または2に記載の暗号鍵解読方法。
【0097】
(付記4)点に対して写像を実行し、該写像の実行結果となる点に対して再度前記写像を実行する処理を繰り返し実行することで複数の点を生成する点生成部と、
前記点生成部によって生成された点が、所定の特徴を有する特徴点であるか否かを判定し、特徴点でないと判定した点を判定点として記憶装置に記憶する判定点記憶部と、
前記点生成部によって生成された点と前記記憶装置に記憶された判定点とを比較して、前記点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定する判定部と
を備えたことを特徴とする暗号鍵解読装置。
【0098】
(付記5)前記写像が所定回数実行される毎に、前記記憶装置に記憶された判定点を新たに生成された点に更新する判定点更新部を更に備えたことを特徴とする付記4に記載の暗号鍵解読装置。
【0099】
(付記6)前記判定部は、前記写像が実行された回数と閾値とを比較し、写像が実行された回数が閾値以上である場合に、特徴点同士の衝突が起こらないと更に判定することを特徴とする付記4または5に記載の暗号鍵解読装置。
【0100】
(付記7)コンピュータに、
点に対して写像を実行し、該写像の実行結果となる点に対して再度前記写像を実行する処理を繰り返し実行することで複数の点を生成する点生成手順と、
前記点生成手順によって生成された点が、所定の特徴を有する特徴点であるか否かを判定し、特徴点でないと判定した点を判定点として記憶装置に記憶する判定点記憶手順と、
前記点生成手順によって生成された点と前記記憶装置に記憶された判定点とを比較して、前記点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定する判定手順と
を実行させることを特徴とする暗号鍵解読プログラム。
【0101】
(付記8)前記写像が所定回数実行される毎に、前記記憶装置に記憶された判定点を新たに生成された点に更新する判定点更新手順を更に実行させることを特徴とする付記7に記載の暗号鍵解読プログラム。
【0102】
(付記9)前記判定手順は、前記写像が実行された回数と閾値とを比較し、写像が実行された回数が閾値以上である場合に、特徴点同士の衝突が起こらないと更に判定することを特徴とする付記7または8に記載の暗号鍵解読プログラム。
【符号の説明】
【0103】
100 暗号鍵解読装置
110 入力部
120 出力部
130 記憶部
131 点列データ
140 制御部
141 点列生成処理部
142 判定処理部
143 衝突検知処理部
144 解算出処理部
200 暗号鍵解読装置
240 制御部
242 判定処理部
300 暗号鍵解読装置
340 制御部
342 判定処理部

【特許請求の範囲】
【請求項1】
コンピュータが、
点に対して写像を実行し、該写像の実行結果となる点に対して再度前記写像を実行する処理を繰り返し実行することで複数の点を生成する点生成ステップと、
前記点生成ステップによって生成された点が、所定の特徴を有する特徴点であるか否かを判定し、特徴点でないと判定した点を判定点として記憶装置に記憶する判定点記憶ステップと、
前記点生成ステップによって生成された点と前記記憶装置に記憶された判定点とを比較して、前記点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定する判定ステップと
を実行することを特徴とする暗号鍵解読方法。
【請求項2】
前記写像が所定回数実行される毎に、前記記憶装置に記憶された判定点を新たに生成された点に更新する判定点更新ステップを更に実行することを特徴とする請求項1に記載の暗号鍵解読方法。
【請求項3】
前記判定ステップは、前記写像が実行された回数と閾値とを比較し、写像が実行された回数が閾値以上である場合に、特徴点同士の衝突が起こらないと更に判定することを特徴とする請求項1または2に記載の暗号鍵解読方法。
【請求項4】
点に対して写像を実行し、該写像の実行結果となる点に対して再度前記写像を実行する処理を繰り返し実行することで複数の点を生成する点生成部と、
前記点生成部によって生成された点が、所定の特徴を有する特徴点であるか否かを判定し、特徴点でないと判定した点を判定点として記憶装置に記憶する判定点記憶部と、
前記点生成部によって生成された点と前記記憶装置に記憶された判定点とを比較して、前記点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定する判定部と
を備えたことを特徴とする暗号鍵解読装置。
【請求項5】
コンピュータに、
点に対して写像を実行し、該写像の実行結果となる点に対して再度前記写像を実行する処理を繰り返し実行することで複数の点を生成する点生成手順と、
前記点生成手順によって生成された点が、所定の特徴を有する特徴点であるか否かを判定し、特徴点でないと判定した点を判定点として記憶装置に記憶する判定点記憶手順と、
前記点生成手順によって生成された点と前記記憶装置に記憶された判定点とを比較して、前記点と判定点とが一致した場合に、特徴点同士の衝突が起こらないと判定する判定手順と
を実行させることを特徴とする暗号鍵解読プログラム。

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


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