説明

リスト生成装置、リスト生成方法およびリスト生成プログラム

【課題】スカラ倍算の計算コストを抑え、リストを生成する処理を高速化すること。
【解決手段】リスト生成装置100aでは、スカラ値生成部140が、ランダム関数部141から今まで出力された値の合計値を求め、合計値に基づいて楕円曲線上の点に対応する生成元を冪乗する。そして、スカラ倍算計算部150は、スカラ値生成部140の算出結果と、固定点テーブルとを基にして、初期値Gをスカラ倍算することでGi+1を求める。すなわち、スカラ倍算を行う楕円曲線上の点はGで固定されるため、リスト生成装置100aは、スカラ倍算を固定点テーブルの各点の加算によって求めることができ、スカラ倍算にかかる計算コストを削減することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リスト生成装置、リスト生成方法およびリスト生成プログラムに関する。
【背景技術】
【0002】
近年、ネットショッピングやネットバンキングが普及している。ネットショッピングやネットバンキングにおいて通信を行う場合には、情報漏洩などを防止するために、共通鍵暗号などの暗号技術が利用されている。
【0003】
公開鍵暗号は、対になる2つの鍵を使ってデータの暗号化、復号をおこなう方式である。すなわち、送信者は受信者によって公開されている公開鍵でメッセージを暗号化して送信する。これに対して、受信者は、暗号化されたメッセージを秘密鍵で復号する。公開鍵は、メッセージを暗号化するための鍵であり、秘密鍵は、公開鍵により暗号化された情報を復号するための鍵である。公開鍵で暗号化された情報は、対の秘密鍵でのみ復号することができる。
【0004】
この公開鍵暗号は、公開鍵を公開しても安全性を確保できるように、数学的に難しいとされている問題に基づいて設計されている。例えば、公開鍵暗号は、離散対数問題に基づいて設計される。この離散対数問題は、p個の元からなる可換群の生成元G、α∈Zpとした場合に、G、Gαからαを求めるというものである。
【0005】
また、上記離散対数問題に補助情報dを加え、G、Gα
【数1】

からαを求めるという補助情報付きの離散対数問題がある。この補助情報付きの離散対数問題を解くアルゴリズムとして、Cheonらの論文では、決定的アルゴリズムと確率的アルゴリズムとが示されている。dは、位数rから1を減算した値の約数に対応する。
【0006】
このうち決定的アルゴリズムは、計算量が膨大であるため、この決定的アルゴリズムを用いて離散対数問題を解くことは現実的に難しい。このため、Cheonらは、「Pollard's kangaroo algorithm」を適用することで計算量を削減した確率的アルゴリズムを提案している。この確率的アルゴリズムは、上記離散対数問題に対してだけではなく、楕円曲線上の離散対数問題にも適用されている。楕円曲線上の離散対数問題を楕円曲線離散対数問題と表記する。楕円曲線離散対数問題は、楕円曲線上の3点G、G=αG、G=αGから未知数αを求める問題である。
【0007】
この確率的アルゴリズムでは、G、Gから検索したk1と、G、Gから検索したk2とを用いて未知数αを求める。ここで、確率的アルゴリズムが、k1、k2を求める場合には、楕円曲線上の特徴点(distinguished point)を収集したリストが利用される。確率的アルゴリズムにおいてリストを生成する場合には、ランダムウォーク関数に楕円曲線上の点を順次代入した値に基づいて、楕円曲線上の点を順次スカラ倍算することで特徴点を求める。
【0008】
なお、ランダムウォーク関数を利用してリストを作成するためには、膨大な繰り返し処理が必要となる。このため従来では、リストを作成する場合の初期点を多数設定することで、複数のコンピュータで並列処理を行い、リストを作成する場合の処理負荷を分散させている。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平11−288215号公報
【特許文献2】特開2003−288013号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
コンピュータがリストを生成する場合には、楕円曲線上の点に対してスカラ倍算を実行する必要があり、このスカラ倍算の計算コストが非常に大きいものとなる。このため、スカラ倍算の計算コストを抑え、リストを生成する処理を高速化することが求められる。
【0011】
開示の技術は、上記に鑑みてなされたものであって、スカラ倍算の計算コストを抑え、リストを生成する処理を高速化することができるリスト生成装置、リスト生成方法およびリスト生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本願の開示するリスト生成装置は、楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶する固定点テーブルと、前記楕円曲線上の点に対してランダムウォーク関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶部に記憶する疑似ランダム関数適用部と、前記記憶部に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成部と、前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出部と、前記点算出部が算出した各点を収集し、リストを生成するリスト生成部とを備えたことを要件とする。
【発明の効果】
【0013】
本願の開示するリスト生成装置の一つの態様によれば、スカラ倍算の計算コストを抑え、リストを生成する処理を高速化することという効果を奏する。
【図面の簡単な説明】
【0014】
【図1】図1は、Cheonらの確率的アルゴリズムの処理手順を示すフローチャートである。
【図2】図2は、従来の衝突検出処理の処理手順を示すフローチャートである。
【図3】図3は、従来のリスト生成処理の処理手順を示すフローチャートである。
【図4】図4は、確率的アルゴリズムを並列処理する場合の処理手順を示すフローチャート(1)である。
【図5】図5は、確率的アルゴリズムを並列処理する場合の処理手順を示すフローチャート(2)である。
【図6】図6は、従来のリスト生成装置の構成を示す図である。
【図7】図7は、従来のリスト生成装置の処理手順を示すフローチャートである。
【図8】図8は、従来の固定点テーブルのデータ構造の一例を示す図である。
【図9】図9は、本実施例にかかるシステムの構成を示す図である。
【図10】図10は、リスト生成装置の構成を示す図である。
【図11】図11は、固定点テーブルのデータ構造の一例を示す図である。
【図12】図12は、各スカラ倍算計算部が算出するGi+1が同じことを説明するための図である。
【図13】図13は、本実施例にかかるリスト生成装置の処理手順を示すフローチャートである。
【図14】図14は、本実施例にかかるシステムの処理手順を示すフローチャート(1)である。
【図15】図15は、本実施例にかかるシステムの処理手順を示すフローチャート(2)である。
【図16】図16は、固定点テーブルを生成する処理手順を示すフローチャートである。
【図17】図17は、リスト生成プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0015】
まず、本願の開示する暗号鍵解読装置における技術を説明するうえで前提となる技術を図面を利用して説明する。
【0016】
まず、補助情報付きの楕円曲線離散対数問題を解くCheonらの確率的アルゴリズムの処理手順について説明する。図1は、Cheonらの確率的アルゴリズムの処理手順を示すフローチャートである。
【0017】
図1に示すように、確率的アルゴリズムでは、E、G、G、G、lenを取得する(ステップS10)。ここで、Eは、楕円曲線の各種パラメータである。G、G、Gは、楕円曲線上の点であり、G=αG、G=αGとする。lenは、リストを生成する場合に利用する閾値である。lenは、楕円曲線の点Gの位数rの4乗根程度の値が設定される。
【0018】
確率的アルゴリズムでは、Zの生成元ζを生成し(ステップS11)、sおよびs’を設定する(ステップS12)。ステップS12において、sは「(r−1)/d」により算出される。また、s’はdに対応する。
【0019】
確率的アルゴリズムでは、E、G、G、s、s’、ζ、lenを基にして、衝突検出処理を実行することでk1を得る(ステップS13)。また、確率的アルゴリズムでは、E、G、G、s、s’、ζ、lenを基にして、衝突検出処理を実行することでk2を得る(ステップS14)。
【0020】
確率的アルゴリズムでは、k1、k2を基にしてαを算出し(ステップS15)、αを出力する(ステップS16)。ステップS15において、αは、「
【数2】

」により算出される。
【0021】
次に、図1のステップS13およびステップS14に示した衝突検出処理の処理手順について説明する。図2は、従来の衝突検出処理の処理手順を示すフローチャートである。図2のフローチャートでは、G、G’を用いて説明する。図1の確率的アルゴリズムにおいて、E、G、G、s、s’、ζ、lenを基にして衝突検出処理を実行する場合には、Gは、Gに対応し、G’はGに対応する。これに対して、E、G、G、s、s’、ζ、lenを基にして衝突検出処理を実行する場合には、Gは、Gに対応し、G’はGに対応する。
【0022】
図2に示すように、衝突検出処理では、E、G、ζs’、lenを基にして、リスト生成処理を実行することで、list1を得る(ステップS20)。衝突検出処理では、E、G’、ζs’、lenを基にして、リスト生成処理を実行することで、list2を得る(ステップS21)。
【0023】
衝突検出処理では、list1とlist2とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS22)。衝突検出処理では、インデックスv、uを基にして、kを算出し(ステップS23)、kを出力する(ステップS24)。ステップS23においてkは、「
【数3】

」によって算出される。
【0024】
なお、上記kを算出する式において、fは疑似ランダム関数である。たとえばfは、楕円曲線上の点G=(x、y)が与えられた時に、x mod sを返す関数である。また、ランダムウォーク関数Fは、楕円曲線の点Gを他の楕円曲線上の点に写像する関数で、「
【数4】

」によって定義される。
【0025】
例えば、E、G、G、s、s’、ζ、lenを基にして衝突検出処理を実行する場合には、上記kを算出する式により、k1が求められる。これに対して、E、G、G、s、s’、ζ、lenを基にして衝突検出処理を実行する場合には、上記kを算出する式により、k2が求められる。
【0026】
次に、図2のステップS20およびステップS21に示したリスト生成処理の処理手順について説明する。図3は、従来のリスト生成処理の処理手順を示すフローチャートである。図3に示すように、リスト生成処理では、iの値を初期値に設定し(ステップS30)、Gi+1の値を算出する(ステップS31)。ステップS31において、Gi+1は、「
【数5】

」によって算出される。
【0027】
リスト生成処理では、Gi+1の値が特徴点(distinguished point)であるか否かを判定する(ステップS32)。ステップS32において、リスト生成処理では、Gi+1の値の一部が所定の値となっている場合は、楕円曲線の点Gi+1の値が特徴点であると判定する。
【0028】
リスト生成処理では、Gi+1の値が特徴点ではないと判定した場合には(ステップS32,No)、ステップS34に移行する。一方、リスト生成処理では、Gi+1の値が特徴点であると判定した場合には(ステップS32,Yes)、listにGi+1の値を登録する(ステップS33)。
【0029】
リスト生成処理では、iの値に1を加算し(ステップS34)、iの値がlenよりも大きいか否かを判定する(ステップS35)。リスト生成処理では、iの値がlen以下の場合には(ステップS35,No)、ステップS31に移行する。一方、リスト生成処理では、iの値がlenよりも大きい場合には(ステップS35,Yes)、処理を終了する。
【0030】
ステップS33において、リスト生成処理では、インデックスiと、Gi+1の値とを対応付けて、listに登録するものとする。また、E、G、ζs’、lenを基にしてリスト生成処理を実行する場合には、上記listは、list1に対応する。この場合、listのインデックスiは、list1のインデックスvに対応する。
【0031】
また、E、G’、ζs’、lenを基にしてリスト生成処理を実行する場合には、上記listは、list2に対応する。この場合、listのインデックスiは、list2のインデックスuに対応する。
【0032】
現在の楕円曲線離散対数問題では、安全性を確保するために、楕円曲線の点の位数rは2160が利用されている。したがって、上記確率的アルゴリズムを実行する場合には、lenは240程度の値が指定される。lenの値が240に指定されると、図3に示したリスト生成処理を、240回繰り返し実行する必要があり、計算量が膨大なものとなる。
【0033】
図1〜図3に示したアルゴリズムは、複数のコンピュータ0〜nによって並列処理することで高速化を図ることができる。例えば、複数のコンピュータ0〜nは、ネットワークを介して相互に接続されており、協働して並列処理を実行する。この並列処理では、複数のコンピュータ1〜nがそれぞれlistを生成し、コンピュータ0が各listを収集する。コンピュータ0は、各listを利用して、未知数αを算出する。
【0034】
図4および図5は、確率的アルゴリズムを並列処理する場合の処理手順を示すフローチャートである。なお、図4のステップS40〜S43の処理、図5のステップS50〜S52、S59〜S62の処理は、コンピュータ0が実行する処理とする。図4のステップS44の処理は、コンピュータ1〜n/4がそれぞれlistを生成する処理とする。図4のステップS47の処理は、コンピュータn/4〜n/2がそれぞれlistを生成する処理とする。図5のステップS53の処理は、コンピュータn/2〜3n/4がそれぞれlistを生成する処理とする。図5のステップS56の処理は、コンピュータ3n/4〜nがそれぞれlistを生成する処理とする。
【0035】
図4に示すように、並列処理では、E、G、G、G、lenを取得し(ステップS40)、生成元ζを生成する(ステップS41)。また、並列処理では、sおよびs’を算出し(ステップS42)、iの値を初期値に設定する(ステップS43)。
【0036】
並列処理では、E、G、ζs’、lenを基にして、リスト生成処理を実行することで、list1を得る(ステップS44)。並列処理では、iの値に1を加算し(ステップS45)、iの値がn/4よりも大きいか否かを判定する(ステップS46)。iの値がn/4以下の場合には(ステップS46,No)、ステップS44に移行する。
【0037】
一方、iの値がn/4よりも大きい場合には(ステップS46,Yes)、並列処理では、E、Gid、ζs’、lenを基にして、リスト生成処理を実行することで、list2を得る(ステップS47)。並列処理では、iの値に1を加算し(ステップS48)、iの値がn/2よりも大きいか否かを判定する(ステップS49)。iの値がn/2以下の場合には(ステップS49,No)、ステップS47に移行する。
【0038】
一方、iの値がn/2よりも大きい場合には(ステップS49,Yes)、並列処理では、list1とlist2とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS50)。
【0039】
並列処理では、k1を算出する(ステップS51)。k1は、「
【数3】

」によって算出される。並列処理では、sおよびs’を設定する(ステップS52)。sはdに対応する。s’は「(r−1)/d」により算出される。
【0040】
並列処理では、E、G、ζs’、lenを基にして、リスト生成処理を実行することで、list3を得る(ステップS53)。並列処理では、iの値に1を加算し(ステップS54)、iの値が3n/4よりも大きいか否かを判定する(ステップS55)。iの値が3n/4以下の場合には(ステップS55,No)、ステップS53に移行する。
【0041】
一方、iの値が3n/4よりも大きい場合には(ステップS55,Yes)、並列処理では、E、G1i、ζs’、lenを基にして、リスト生成処理を実行することで、list4を得る(ステップS56)。並列処理では、iの値に1を加算し(ステップS57)、iの値がnより大きいか否かを判定する(ステップS58)。iの値がn以下の場合には(ステップS58,No)、ステップS56に移行する。
【0042】
一方、iの値がnよりも大きい場合には(ステップS58,Yes)、並列処理では、list3とlist4とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS59)。
【0043】
並列処理では、k2を算出する(ステップS60)。k2は「
【数3】

」によって算出される。並列処理では、k1およびk2を基にしてαを算出し(ステップS61)、αを出力する(ステップS62)。
【0044】
図4および図5に示した処理手順によってコンピュータ0〜nが並列処理を実行することで、リストを生成する処理負荷を分散させることができる。
【0045】
次に、図3に示したリスト生成処理を実行するリスト生成装置の構成について説明する。図6は、従来のリスト生成装置の構成を示す図である。図6に示すように、このリスト生成装置は、入力部11、繰り返し判定部12、記憶部13、スカラ値生成部14、スカラ倍算計算部15、特徴点判定部16、点出力部17を有する。
【0046】
入力部11は、リストを作成するためのパラメータを受け付け、受け付けたパラメータを繰り返し判定部12、スカラ値生成部14、スカラ倍算計算部15に出力する処理部である。入力部11は、キーボードなどの入力装置からパラメータを受け付けても良いし、他の装置と情報通信を行ってパラメータを取得しても良い。
【0047】
パラメータには、E、G、ζs’、lenが含まれる。入力部11は、パラメータのうち、E、Gをスカラ倍算計算部15に出力し、E、ζs’をスカラ値生成部14に出力する。また、入力部11は、lenを繰り返し判定部12に出力する。
【0048】
繰り返し判定部12は、GからGi+1を計算する回数をカウントする処理部である。繰り返し判定部12は、GからGi+1が計算された回数をどのようにカウントしてもよい。例えば、繰り返し判定部12は、スカラ倍算計算部15が、Gi+1の計算結果を出力する度に、計算回数をカウントする。
【0049】
繰り返し判定部12は、カウントした計算回数が、lenを超えた場合に、リスト生成処理を終了すると判定する。例えば、繰り返し判定部12は、リスト生成処理を終了すると判定した場合には、スカラ値生成部14およびスカラ倍算計算部15を制御して、処理を終了させる。
【0050】
記憶部13は、スカラ倍算計算部15の算出結果を記憶する記憶部である。
【0051】
スカラ値生成部14は、Gから
【数6】

を算出する処理部である。図6に示すように、スカラ値生成部14は、ランダム関数部14aおよび冪乗余剰計算部14bを有する。
【0052】
ランダム関数部14aは、Gからf(G)を算出する処理部である。例えば、fは楕円曲線上の点G=(x、y)が与えられた場合に、「x mod s」を返す関数である。ランダム関数部14aは、f(G)を冪乗余剰計算部14bに出力する。なお、ランダム関数部14aは、Gの初期値となるGを、入力部11から取得する。また、ランダム関数部14aは、初期値以外のGの値を記憶部13から取得する。
【0053】
冪乗余剰計算部14bは、f(G)とζs’とを取得して、
【数6】

を算出する処理部である。冪乗余剰計算部14bは、
【数6】

をスカラ倍算計算部15に出力する。
【0054】
スカラ倍算計算部15は、G
【数6】

とを取得して、Gi+1を計算する処理部である。スカラ倍算計算部15は、Gi+1を「
【数5】

」によって計算する。スカラ倍算計算部15は、Gi+1を記憶部13に記憶する。また、スカラ倍算計算部15は、Gi+1を特徴点判定部16に出力する。
【0055】
特徴点判定部16は、Gi+1が特徴点であるか否かを判定する処理部である。例えば、特徴点判定部16は、Gi+1の値の一部が所定の値となっている場合に、Gi+1を特徴点であると判定する。特徴点判定部16は、特徴点と判定したGi+1を点出力部17に出力する。
【0056】
点出力部17は、特徴点と判定されたGi+1をテーブルに登録することで、listを生成する処理部である。点出力部17は、listの情報を外部装置に出力する。
【0057】
次に、図6に示したリスト生成装置10の処理手順について説明する。図7は、従来のリスト生成装置の処理手順を示すフローチャートである。図7に示すように、リスト生成装置10は、iの値を初期値に設定し(ステップS70)、ランダム関数にGを入力し、入力結果f(G)を得る(ステップS71)。
【0058】
リスト生成装置10は、冪乗余剰計算を実行する(ステップS72)。冪乗余剰計算を実行することで、
【数6】

が得られる。リスト生成装置10は、スカラ倍算計算を実行し、Gi+1を得る(ステップS73)。
【0059】
リスト生成装置10は、Gi+1が特徴点であるか否かを判定する(ステップS74)。リスト生成装置10は、Gi+1が特徴点ではない場合には(ステップS74,No)、ステップS76に移行する。
【0060】
一方、リスト生成装置10は、Gi+1が特徴点の場合には(ステップS74,Yes)、Gi+1をlistに登録する(ステップS75)。リスト生成装置10は、iに1を加算し(ステップS76)、iの値がlenよりも大きいか否かを判定する(ステップS77)。リスト生成装置10は、iの値がlenよりも大きい場合には(ステップS77,Yes)、処理を終了する。一方、リスト生成装置10は、iの値がlen以下の場合には(ステップS77,No)、ステップS71に移行する。
【0061】
リスト生成装置10がlistを生成する場合に実行する各種計算のうち、図7のスカラ倍算計算が主要な計算となる。このため、スカラ倍算計算を高速化することができれば、リスト生成装置10がlistを生成する処理を高速化することができる。
【0062】
スカラ倍算計算を高速化する手法として、固定点テーブル法と呼ばれる技術が存在する。この固定点テーブル法は、予め複数のスカラ倍算計算を実行して、固定点テーブルに計算結果を格納しておく。そして、固定点テーブル法は、新たにスカラ倍算計算を実行する場合には、固定点テーブルに格納された計算結果を加算することで、スカラ倍算計算を実行する。
【0063】
具体的に、固定点テーブル法について説明する。図8は、従来の固定点テーブルのデータ構造の一例を示す図である。図8に示すように、この固定点テーブルでは、1列目の数値を2倍、3倍した値が格納されている。例えば、1行目では、1G、2G、3Gが格納されている。2行目では、4G、8G、12Gが格納されている。3行目では、16G、32G、48Gが格納されている。4行目では、64G、128G、192Gが格納されている。5行目では、256G、512G、768Gが格納されている。固定点テーブルの各Gは、全て同じ点である。
【0064】
例えば、固定点テーブル法が、10Gを算出する場合について説明する。この場合、固定点テーブル法では、図8の1行目2列目に格納された2Gと、2行目2列目に格納された8Gとを楕円加算することで、10Gを算出する。10とGとをスカラ倍算するよりも、2Gと8Gとを楕円加算する方が、計算コストが少ない。このため、固定点テーブル法を用いてリスト生成処理を実行することができれば、listを生成する処理を高速化することができる。
【0065】
しかし、固定点テーブル法を用いる場合には、スカラ倍算を行う楕円曲線上の点Gが常に同じ値であるという制限がある。例えば、固定点テーブル法では、10Gを、2Gと8Gとの楕円加算で算出することができるが、10Gを、2Gと8Gとの楕円加算で算出することができない。
【0066】
図6に示したスカラ倍算計算部15が、スカラ倍算計算を実行する場合には、楕円曲線上の点Gが毎回更新される。このため、従来のリスト生成装置10は、固定点テーブル法を利用して、スカラ倍算計算を高速化することができなかった。
【実施例】
【0067】
次に、本実施例について説明する。図9は、本実施例にかかるシステムの構成を示す図である。図9に示すように、このシステムは、リスト生成装置100a〜100nと、暗号鍵解析装置200とを有する。リスト生成装置100a〜100nおよび暗号鍵解析装置200は、ネットワーク50を介して相互に接続される。
【0068】
リスト生成装置100a〜100nは、ランダムウォーク関数と楕円曲線上の点Gとを基にして、リスト(list)を生成する処理部である。リスト生成装置100a〜100nは、リストを暗号鍵解析装置200に送信する。
【0069】
暗号鍵解析装置200は、リスト生成装置100a〜100nからリストを収集し、各リストを基にして、補助情報付き楕円曲線離散対数問題を解くことで、暗号鍵を解析する装置である。この暗号鍵解析装置200は、上記のコンピュータ0に対応する装置であり、図1に示した処理手順によって、補助情報付き楕円曲線離散対数問題を解くものとする。
【0070】
次に、リスト生成装置100aの構成について説明する。その他のリスト生成装置の構成は、リスト生成装置100aの構成と同様である。図10は、リスト生成装置の構成を示す図である。図10に示すように、このリスト生成装置100aは、入力部110、繰り返し判定部120、記憶部130、スカラ倍算計算部150、特徴点判定部160、点出力部170を有する。
【0071】
入力部110は、リストを作成するためのパラメータを受け付け、受け付けたパラメータを繰り返し判定部120、スカラ値生成部140、スカラ倍算計算部150に出力する処理部である。入力部110は、キーボードなどの入力装置からパラメータを受け付けても良いし、他の装置と情報通信を行ってパラメータを取得しても良い。
【0072】
パラメータには、E、G、ζs’、lenが含まれる。E、G、ζs’、lenに関する説明は、上記と同様である。入力部110は、パラメータのうち、E、Gをスカラ倍算計算部150に出力し、E、ζs’をスカラ値生成部140に出力する。また、入力部110は、lenを繰り返し判定部120に出力する。
【0073】
繰り返し判定部120は、GからGi+1を計算する回数をカウントする処理部である。繰り返し判定部120は、GからGi+1が計算された回数をどのようにカウントしてもよい。例えば、繰り返し判定部120は、スカラ倍算計算部150が、Gi+1の計算結果を出力する度に、計算回数をカウントする。
【0074】
繰り返し判定部120は、カウントした計算回数が、lenを超えた場合に、リスト生成処理を終了すると判定する。例えば、繰り返し判定部120は、リスト生成処理を終了すると判定した場合には、スカラ値生成部140およびスカラ倍算計算部150を制御して、処理を終了させる。
【0075】
記憶部130は、スカラ倍算計算部150の計算結果を記憶する記憶部である。
【0076】
スカラ値生成部140は、Gから
【数7】

を算出する処理部である。図10に示すように、スカラ値生成部140は、ランダム関数部141、加算部142、加算結果格納部143、冪乗余剰計算部144を有する。
【0077】
ランダム関数部141は、Gからf(G)を算出する処理部である。例えば、fは楕円曲線上の点G=(x、y)が与えられた場合に、「x mod s」を返す関数である。ランダム関数部141は、f(G)を加算部142に出力する。なお、ランダム関数部141は、Gの初期値となるGを、入力部110から取得する。また、ランダム関数部141は、初期値以外のGの値を記憶部130から取得する。
【0078】
加算部142は、f(G)の値を順次加算し、加算結果aを冪乗余剰計算部144に出力する処理部である。また、加算部142は、加算結果aを加算結果格納部143に記憶する。加算結果格納部143は、加算結果aを記憶する記憶部である。加算結果格納部143は、加算結果aの初期値aとして0を記憶する。
【0079】
具体的に、加算部142は、「a=ai−1+f(G)」によりaを算出する。すなわち、加算部142は、ランダム関数部141から取得したf(G)と、加算結果格納部143に記憶されたai−1とを加算することで、aを算出する。
【0080】
冪乗余剰計算部144は、aiとζs’とを取得して、
【数7】

を算出する処理部である。冪乗余剰計算部144は、
【数7】

をスカラ倍算計算部15に出力する。
【0081】
スカラ倍算計算部150は、G
【数7】

とを取得し、固定テーブル法を利用して、Gi+1を計算する処理部である。スカラ倍算計算部150は、Gi+1を「
【数8】

」によって計算する。ここで、
【数8】

に着目すると、Gi+1のiの値が順次変化し、G、G、・・・Glenを算出する場合でも、スカラ倍算計算部150は、楕円曲線上の点Gを固定したままで、「
【数7】

」倍すればよい。つまり、スカラ倍算計算部150は、固定テーブル法を利用して、スカラ倍算を算出することが可能となる。
【0082】
スカラ倍算計算部150は、固定点テーブルを保持している。図11は、固定点テーブルのデータ構造の一例を示す図である。図11に示すように、この固定点テーブルでは、1列目の数値を2倍、3倍した値が格納されている。例えば、1行目では、1G、2G、3Gが格納されている。2行目では、4G、8G、12Gが格納されている。3行目では、16G、32G、48Gが格納されている。4行目では、64G、128G、192Gが格納されている。5行目では、256G、512G、768Gが格納されている。固定点テーブルの各Gは、全て楕円曲線上の同じ点である。
【0083】
スカラ倍算計算部150は、固定点テーブルに記憶された各値を組あわせてスカラ倍算「
【数8】

」実行する。例えば、「
【数7】

」の値が「10」の場合には、スカラ倍算計算部150は、図11の1行目2列目に格納された2Gと、2行目2列目に格納された8Gとを楕円加算することで、10Gを算出する。
【0084】
スカラ倍算計算部150は、算出結果となるGi+1を記憶部130に記憶する。また、スカラ倍算計算部150は、Gi+1を特徴点判定部160に出力する。
【0085】
ところで、スカラ倍算計算部150が算出するGi+1と、図6に示したスカラ倍算計算部15が算出するGi+1は同じものである。図12は、各スカラ倍算計算部が算出するGi+1が同じであることを説明するための図である。ここでは簡単のため、Gを算出する場合について説明する。
【0086】
図12の1aは、
【数5】

のiに1を代入したものである。図12の1aは、2aのように置き換えることができる。2a部分のaは、冪乗余剰計算部144が出力する算出結果である。そして、2aは、3aのように置き換えることができる。3aは、
【数8】

のiに1を代入したものである。つまり、スカラ倍算計算部150が算出するGi+1と、図6に示したスカラ倍算計算部15が算出するGi+1は同じものである。しかし、スカラ倍算計算部150は、Gが固定されているので、固定点テーブル法を利用することができる。
【0087】
スカラ倍算計算部150は、固定点テーブルを入力部110から取得する。または、スカラ倍算計算部150自身が、固定点テーブルを生成してもよい。例えば、スカラ倍算計算部150は、楕円曲線上の同一の点同士を加算する処理を繰り返し実行することで、点のスカラ値を順次算出し、算出結果を固定点テーブルに格納する。例えば、加算対象となる楕円曲線上の点は、管理者などによって指定される。
【0088】
図10の説明に戻る。特徴点判定部160は、Gi+1が特徴点であるか否かを判定する処理部である。例えば、特徴点判定部160は、Gi+1の値の一部が所定の値となっている場合に、Gi+1を特徴点であると判定する。特徴点判定部160は、特徴点と判定したGi+1を点出力部170に出力する。
【0089】
点出力部170は、特徴点と判定されたGi+1をテーブルに登録することで、listを生成する処理部である。点出力部170は、listの情報を暗号鍵解析装置200に送信する。
【0090】
次に、本実施例にかかるリスト生成装置100aの処理手順について説明する。図13は、本実施例にかかるリスト生成装置の処理手順を示すフローチャートである。図13に示すように、リスト生成装置100aは、iの値を初期値に設定し(ステップS101)、ランダム関数にGを入力して、入力結果f(G)を得る(ステップS102)。
【0091】
リスト生成装置100aは、加算処理を実行する(ステップS103)。ステップS103において、リスト生成装置100aは、ランダム関数部141から出力されるf(G)と、加算結果格納部143に記憶されるai−1とを加算することで、加算処理を実行する。
【0092】
リスト生成装置100aは、冪乗余剰計算を実行する(ステップS104)。ステップS104において、リスト生成装置100aが冪乗余剰計算を実行することで、
【数7】

が得られる。リスト生成装置100aは、固定点テーブルを利用して、スカラ倍算計算を実行し、Gi+1を得る(ステップS105)。
【0093】
リスト生成装置100aは、Gi+1が特徴点であるか否かを判定する(ステップS106)。リスト生成装置100aは、Gi+1が特徴点ではない場合には(ステップS106,No)、ステップS108に移行する。
【0094】
一方、リスト生成装置100aは、Gi+1が特徴点の場合には(ステップS106,Yes)、Gi+1をlistに登録する(ステップS107)。リスト生成装置100aは、iに1を加算し(ステップS108)、iの値がlenよりも大きいか否かを判定する(ステップS109)。リスト生成装置100aは、iの値がlenよりも大きい場合には(ステップS109,Yes)、listを暗号鍵解析装置200に出力する(ステップS110)。一方、リスト生成装置100aは、iの値がlen以下の場合には(ステップS109,No)、ステップS102に移行する。
【0095】
次に、本実施例にかかるシステムの処理手順について説明する。図14および図15は、本実施例にかかるシステムの処理手順を示すフローチャートである。なお、図14のステップS200〜S203の処理、図15のステップS210〜S212、ステップS210〜S222の処理は、暗号鍵解析装置200が実行する処理とする。図14のステップS204の処理は、リスト生成装置100a〜N/4がそれぞれlistを生成する処理とする。図14のステップS207の処理は、リスト生成装置N/4〜N/2がそれぞれlistを生成する処理とする。図15のステップS213の処理は、リスト生成装置N/2〜3N/4がそれぞれlistを生成する処理とする。図15のステップS216の処理は、リスト生成装置3N/4〜100nがそれぞれlistを生成する処理とする。
【0096】
暗号鍵解析装置200は、E、G、G、G、lenを取得し(ステップS200)、生成元ζを生成する(ステップS201)。暗号鍵解析装置200は、sおよびs’を算出する(ステップS202)。ステップS202において、暗号鍵解析装置200は、s=(r−1)/d、s’=dによって、sおよびs’を算出する。
【0097】
iの値を初期値に設定し(ステップS203)、リスト生成装置100は、リスト生成処理を実行することで、list1を得る(ステップS204)。iの値に1を加算し(ステップS205)、iの値がN/4より大きいか否かを判定する(ステップS206)。
【0098】
iの値がN/4以下の場合には(ステップS206,No)、ステップS204に移行する。iの値がN/4より大きい場合には(ステップS206,Yes)、各リスト生成装置100は、list1を暗号鍵解析装置200に送信する(ステップS207)。
【0099】
リスト生成装置100は、リスト生成処理を実行することで、list2を得る(ステップS208)。iの値に1を加算し(ステップS209)、iの値がN/2より大きいか否かを判定する。
【0100】
iの値がN/2以下の場合には(ステップS210,No)、ステップS208に移行する。一方、iの値がN/2より大きい場合には(ステップS210,Yes)、各リスト生成装置100は、list2を暗号鍵解析装置200に送信する(ステップS211)。
【0101】
図15の説明に移行する。暗号鍵解析装置200は、list1とlist2とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS212)。暗号鍵解析装置200は、k1を算出する(ステップS213)。ステップS213において、暗号鍵解析装置200は、
【数3】

に基づいて、k1を算出するものとする。
【0102】
暗号鍵解析装置200は、sおよびs’を算出する(ステップS214)。ステップS214において、暗号鍵解析装置200は、s=d、s’=(r−1)/dによって、sおよびs’を算出する。
【0103】
リスト生成装置100は、リスト生成処理を実行することで、list3を得る(ステップS215)。iの値に1を加算し(ステップS216)、iの値が3N/4より大きいか否かを判定する(ステップS217)。
【0104】
iの値が3N/4以下の場合には(ステップS217,No)、ステップS215に移行する。一方、iの値が3N/4より大きい場合には(ステップS217,Yes)、リスト生成装置100は、list3を暗号鍵解析装置200に送信する(ステップS218)。
【0105】
リスト生成装置100は、リスト生成処理を実行することで、list4を得る(ステップS219)。iの値に1を加算し(ステップS220)、iの値がNより大きいか否かを判定する(ステップS221)。
【0106】
iの値がN以下の場合には(ステップS221,No)、ステップS219に移行する。一方、iの値がNより大きい場合には(ステップS221,Yes)、list4を暗号鍵解析装置に送信する(ステップS222)。暗号鍵解析装置200は、list3とlist4とを比較して、衝突が発生する場合のインデックスv、uを判定する(ステップS223)。
【0107】
暗号鍵解析装置200は、k2を算出する(ステップS224)。ステップS224において、暗号鍵解析装置200は、
【数3】

に基づいて、k2を算出するものとする。暗号鍵解析装置200は、k1とk2とを基にしてαを算出し(ステップS225)、αを出力する(ステップS226)。ステップS225において、暗号鍵解析装置200は、
【数2】

に基づいて、αを算出するものとする。
【0108】
図14のステップ204、S208、図15のステップ215、S219に示したリスト生成処理は、図13に示した処理手順に対応する。
【0109】
次に、リスト生成装置100aが、固定点テーブルを生成する場合の処理手順について説明する。図16は、固定点テーブルを生成する処理手順を示すフローチャートである。図16に示すように、リスト生成装置100aは、Gとbitとを取得し(ステップS300)、G’’にGの値を設定する(ステップS301)。ここで、bitは、固定点テーブルの行の数を決める閾値である。
【0110】
リスト生成装置100aは、iの値を初期値に設定し(ステップS302)、G’にG’’の値を設定する(ステップS303)。リスト生成装置100aは、jの値を初期値に設定し(ステップS304)、固定点テーブルのi行目、j列目にG’’の値を格納する(ステップS305)。
【0111】
リスト生成装置100aは、G’’とG’とを加算した値でG’’の値を更新し(ステップS306)、jの値に1を加算する(ステップS307)。リスト生成装置100aは、jの値が3より大きいか否かを判定する(ステップS308)。
【0112】
リスト生成装置100aは、jの値が3以下の場合には(ステップS308,No)、ステップS305に移行する。一方、リスト生成装置100aは、jの値が3より大きい場合には(ステップS308,Yes)、iの値に1を加算する(ステップS309)。
【0113】
リスト生成装置100aは、iの値がbitより大きいか否かを判定する(ステップS310)。リスト生成装置100aは、iの値がbit以下の場合には(ステップS310,No)、ステップS303に移行する。一方、リスト生成装置100aは、iの値がbitよりも大きい場合には(ステップS310,Yes)、処理を終了する。
【0114】
次に、本実施例にかかるリスト生成装置100aの効果について説明する。リスト生成装置100aでは、ランダム関数部141から出力された値と、加算結果格納部143に格納された値とを加算した値を基にして生成元を冪乗し、冪乗結果と楕円曲線上の点の初期値Gとをスカラ倍算することで、GからGi+1を算出する。このような方法で、リスト生成装置100aがGi+1を算出すれば、スカラ倍算を実行する場合の楕円曲線上の点は常に初期値Gで固定される。このため、リスト生成装置100aはスカラ倍算を、固定点テーブルの各点の加算によって求めることができ、スカラ倍算にかかる計算コストを削減することができる。
【0115】
具体的に、楕円曲線の点の位数r=2160とし、固定点テーブルの生成法におけるn進数展開の変数を216とする。この場合に、リスト生成装置100aは、従来の確率的アルゴリズムによってリストを生成する場合よりも、21倍速くリストを生成することができる。また、n進数展開の変数を4とした場合には、リスト生成装置100aは、従来の確率的アルゴリズムによってリストを生成する場合よりも、2.5倍速くリストを生成することができる。上記効果の前提として、冪乗余剰およびランダムウォーク関数の計算コストは、楕円スカラ倍算の計算コストに比べて十分小さいものとする。また、リストの長さlen=r1/4とし、楕円加算の計算コストを(4logr)/3とし、楕円スカラ倍算の計算コストを(640/3)とする。また、コンピュータを210台利用して並列処理を実行した場合には、図13〜図16に示した処理を実行することで、図4、図5に示した従来の処理と比較して、計算コストを1/1365に削減することができる。
【0116】
また、リスト生成装置110aは、スカラ倍算計算部150が生成した点を全てリストに登録するのではなく、特徴点のみをリストに登録する。このため、リストのデータ量を削減することができる。
【0117】
ところで、図10に示したリスト生成装置100aの構成は一例であり、リスト生成装置100aは、必ずしも図10に示した各処理部を全て有していなくてもよい。例えば、リスト生成装置100aは、固定点テーブル、疑似ランダム関数適用部、スカラ値生成部、点算出部、リスト生成部を有していればよい。
【0118】
固定点テーブルは、楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶するものである。この固定点テーブルは、スカラ倍算計算部150が保持する固定点テーブルに対応する。疑似ランダム関数適用部は、楕円曲線上の点に対してランダムウォーク関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶部に記憶する処理部である。この疑似ランダム関数適用部は、ランダム関数部141に対応する。
【0119】
スカラ値生成部は、記憶部に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成する処理部である。スカラ値生成部は、スカラ値生成部140に対応する。点算出部は、固定点テーブルに記憶された各値のうち、スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、楕円曲線上の点から該楕円曲線上の次の点を算出する処理部である。この点算出部は、スカラ倍算計算部150に対応する。リスト生成部は、点算出部が算出した各点を収集しリストを生成する処理部である。リスト生成部は、特徴点判定部160、点出力部170に対応する。
【0120】
なお、上記の実施例で説明したリスト生成装置100aの各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図17を用いて、上記の実施例で説明したリスト生成装置100aと同様の機能を有するリスト生成プログラムを実行するコンピュータの一例を説明する。図17は、リスト生成プログラムを実行するコンピュータを示す図である。
【0121】
同図に示すように、リスト生成装置100aとしてコンピュータ400は、入出力制御部410、HDD(Hard Disk Drive)420、RAM(Random Access Memory)430およびCPU(Central Processing Unit)440を有する。各装置410〜440は、バス450で接続して構成される。
【0122】
ここで、入出力制御部410は、各種情報の入出力を制御する。HDD420は、CPU440による各種処理の実行に必要な情報を記憶する。RAM430は、各種情報を一時的に記憶する。CPU440は、各種演算処理を実行する。
【0123】
そして、HDD420には、リスト生成システムデータがあらかじめ記憶されている。このリスト生成システムデータは、図10に示したリスト生成装置100aの各処理部と同様の機能を発揮するリスト生成プログラムを含む。また、リスト生成システムデータは、処理に必要な各種パラメータを含むリスト生成用データを含む。なお、このリスト生成システムデータを適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
【0124】
そして、CPU440が、このリスト生成システムデータをHDD420から読み出してRAM430に展開することにより、リスト生成システムデータはリスト生成システムとして機能するようになる。このリスト生成システムにはリスト生成プロセスが含まれる。
【0125】
すなわち、リスト生成システムやそれに搭載されたリスト生成プロセスは、リスト生成用データをHDD420から読み出して、RAM430において自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種処理を実行する。
【0126】
なお、リスト生成システム及びリスト生成プロセスは、図10に示した各機能部において実行される処理に対応する。例えば、リスト生成プロセスは、繰り返し判定部120、スカラ値生成部140、スカラ倍算計算部150、特徴点判定部160、点出力部170に対応する。
【0127】
なお、上記したリスト生成プログラムについては、必ずしも最初からHDD420に記憶させておく必要はない。
【0128】
例えば、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ400がこれらから各プログラムを読み出して実行するようにしてもよい。
【0129】
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ400に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておく。そして、コンピュータ400がこれらから各プログラムを読み出して実行するようにしてもよい。
【0130】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、リスト生成装置100a〜100nと、暗号鍵解析装置200の機能を統合し、単一の装置で、リスト生成や、暗号鍵の解析を実行してもよい。
【0131】
なお、図10に示した各処理部120、140〜170は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。または、各処理部120、140〜170は、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。また、図10に示した記憶部130は、例えば、RAM、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
【0132】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0133】
(付記1)楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶する固定点テーブルと、
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶部に記憶する疑似ランダム関数適用部と、
前記記憶部に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成部と、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出部と、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成部と
を備えたことを特徴とするリスト生成装置。
【0134】
(付記2)楕円曲線上の同一の点同士の加算を繰り返し実行することで、点のスカラ倍算を実行し、スカラ倍算の実行結果を前記固定点テーブルに格納する固定点テーブル生成部を更に備えたことを特徴とする付記1に記載のリスト生成装置。
【0135】
(付記3)前記リスト生成部は、前記点算出部が算出した値のうち、所定の特徴を有する点を収集することで、前記リストを生成することを特徴とする付記1または2に記載のリスト生成装置。
【0136】
(付記4)楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶する固定点テーブルを有するコンピュータが、
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶装置に記憶する疑似ランダム関数適用ステップと、
前記記憶装置に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成ステップと、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出ステップと、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成ステップと
を含んだことを特徴とするリスト生成方法。
【0137】
(付記5)楕円曲線上の同一の点同士の加算を繰り返し実行することで、点のスカラ倍算を実行し、スカラ倍算の実行結果を前記固定点テーブルに格納する固定点テーブル生成ステップを更に含んだことを特徴とする付記4に記載のリスト生成方法。
【0138】
(付記6)前記リスト生成ステップは、前記点算出部が算出した値のうち、所定の特徴を有する点を収集することで、前記リストを生成することを特徴とする付記4または5に記載のリスト生成方法。
【0139】
(付記7)楕円曲線上の所定の点をそれぞれ異なるスカラ値によってスカラ倍算した値を複数記憶する固定点テーブルを有するコンピュータに、
前記楕円曲線上の点に対して疑似ランダム関数を用いることで前記楕円曲線上の点を算出し、算出した点を記憶装置に記憶する疑似ランダム関数適用手順と、
前記記憶装置に記憶された点の値を合計し、合計した値に基づいてスカラ値を生成するスカラ値生成手順と、
前記固定点テーブルに記憶された各値のうち、前記スカラ値に対応する値の組あわせを判定し、判定した各値を加算することで、前記楕円曲線上の点から該楕円曲線上の次の点を算出する点算出手順と、
前記点算出部が算出した各点を収集し、リストを生成するリスト生成手順と
を実行させることを特徴とするリスト生成プログラム。
【0140】
(付記8)楕円曲線上の同一の点同士の加算を繰り返し実行することで、点のスカラ倍算を実行し、スカラ倍算の実行結果を前記固定点テーブルに格納する固定点テーブル生成手順を更にコンピュータに実行させることを特徴とする付記7に記載のリスト生成プログラム。
【0141】
(付記9)前記リスト生成手順は、前記点算出部が算出した値のうち、所定の特徴を有する点を収集することで、前記リストを生成することを特徴とする付記7または8に記載のリスト生成プログラム。
【符号の説明】
【0142】
100 リスト生成装置
110 入力部
120 繰り返し判定部
130 記憶部
140 スカラ値生成部
150 スカラ倍算計算部
160 特徴点判定部
170 点出力部

【特許請求の範囲】
【請求項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

【図16】
image rotate

【図17】
image rotate


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