説明

パラメータ設定装置、離散対数計算装置、事前計算装置、パラメータ設定方法、離散対数計算方法、事前計算方法、プログラム

【課題】離散対数の計算量と素因数分解の計算量の比を大きくする
【解決手段】本発明のパラメータ設定装置は、条件設定部、素数生成部、整数生成部を備える。条件設定部は、整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなるように、整数Nのサイズと素因数の数R(ただし、Rは2以上)を決める。素数生成部は、整数Nのサイズと素因数の数Rから、R個の素数p(ただし、rは1からRの整数)を生成する。整数生成部は、素数pから整数Nを求める。本発明の離散対数計算装置は、整数N、素数p,…,p、要素g、要素yを入力として、y=gを満たす整数xを求める。本発明の離散対数計算装置は、因子基底計算部と群要素計算部とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、落し戸付き離散対数問題のパラメータ設定装置、離散対数計算装置、事前計算装置、パラメータ設定方法、離散対数計算方法、事前計算方法、プログラムに関する。
【背景技術】
【0002】
ある群Gの要素g、yが与えられたときに、y=gを満たす整数xが存在する場合には整数xを計算し、存在しない場合にはその旨を出力する問題を離散対数問題と呼ぶ。ここで、xをgを底とするyの離散対数と呼ぶ。離散対数問題が困難な群に対し、何かヒントが与えられた場合に離散対数が簡単に計算できるとき、そのヒントを落し戸と呼ぶ。そのようなヒントが構成できるような離散対数問題を落し戸付き離散対数問題と呼ぶ。
【0003】
群Gとして、乗法群(Z/NZ)を考える。ただし、Nは正の整数である。乗法群(Z/NZ)とは、例えば、整数Nと互いに素な0以上N未満の整数の集合である。一般に、整数Nが十分に大きい場合には離散対数問題は困難だと考えられている。非特許文献1では、整数N=pとして、次の条件を満たすものを選び、整数Nの素因数分解を落し戸としている。なお、pとpは素数である。
【0004】
<条件1>
i=1,2に対し、p−1がB−smoothで、p−1の2番目に大きな素因子はBと同程度の大きさである
つまり、整数Nの素因数分解が未知の場合は離散対数問題が困難になるようにし、整数Nの素因数分解が既知の場合は離散対数問題が容易になるようにした。
【0005】
ここで、既知の最適な離散対数の解法でも、落し戸がない状態では、まず整数Nを素因数分解し、それからその結果を用いて離散対数を計算する方法が最も高速である。<条件1>を満たす整数Nの場合、Bが十分に小さければ最も効率のよい整数Nの素因数分解法はp−1法であり、計算量はO(B)である。一方、離散対数の計算はPohlig-Hellman法とρ法の組合せが最適であり、計算量はO(√B)である。O(√B)の自乗のオーダーとO(B)のオーダーが同じなので、素因数分解の計算量は、離散対数の計算量の自乗のオーダーである。よって、整数Bを適切に選べば、素因数分解の計算は困難だが、離散対数の計算は容易になるように調整でき、落し戸付き離散対数問題が構成できる。つまり、落し戸である整数Nの素因数分解の結果を知っている場合(例えば、正規なユーザ)は離散対数の計算が容易だが、整数Nの素因数分解の結果を知らない場合(例えば、攻撃者)は離散対数の計算が困難になる。例えば、B=240を選べばよい。なお、乗法群(Z/NZ)の離散対数を簡単に構成する具体例として、特許文献1〜3が知られている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2007−003946号公報
【特許文献2】特開2007−171411号公報
【特許文献3】特開2007−171412号公報
【非特許文献】
【0007】
【非特許文献1】Kenneth G. Paterson and Sriramkrishnan Srinivasan, “On the Relations Between Non-Interactive Key Distribution, Identity-Based Encryption and Trapdoor Discrete Log Groups”、[平成21年10月13日検索]、インターネット<URL: http://eprint.iacr.org/2007/453.pdf>.
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、従来技術では、容易にしたい離散対数の計算量(落し戸ありの場合の計算量)がO(√B)であるのに対し、困難にしたい素因数分解の計算量(落し戸なしの場合の計算量)はO(B)である。また、O(√B)のオーダーとO(B)のオーダーとが等しい。つまり、計算量の比は、自乗の比(O(√B):O(B))程度に限られてしまうという課題がある。
【0009】
本発明は、このような課題に鑑みてなされたものであり、離散対数の計算量(落し戸ありの場合の計算量)と素因数分解の計算量(落し戸なしの場合の計算量)の比を大きくできる整数Nを選定する方法を提供すること、およびこのような整数Nを用いた離散対数の計算方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の別のパラメータ設定装置は、条件設定部、素数生成部、整数生成部を備える。条件設定部は、整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなるように、整数Nのサイズと素因数の数R(ただし、Rは2以上)を決める。例えば、条件設定部は、
【0011】
【数1】

【0012】
が成り立つように、整数Nのサイズと素因数の数Rを決めればよい。素数生成部は、整数Nのサイズと素因数の数Rから、素数p(ただし、rは1からRの整数)を生成する。整数生成部は、素数pから、
【0013】
【数2】

【0014】
の関係が成り立つ整数Nを求める。
【0015】
本発明の別のパラメータ設定装置は、素数生成部、整数生成部、パラメータ選定部を備える。素数生成部は、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)を生成する。整数生成部は、素数pから、整数Nを
【0016】
【数3】

【0017】
のように求める。パラメータ選定部は、整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなる場合に、当該整数Nをパラメータとして選定する。例えば、パラメータ選定部は、
【0018】
【数4】

【0019】
が成り立つ場合に、当該整数Nをパラメータとして選定する。なお、パラメータ設定装置は、複数の整数Nを生成しておき、その中からパラメータ選定部が条件を満たす整数Nを選定してもよいし、素数生成部と整数生成部が1つの整数Nを生成し、パラメータ選定部が条件を満たすかを確認する処理を、条件を満たす整数Nが生成されるまで繰り返してもよい。
【0020】
本発明の離散対数計算装置は、整数N、素数p,…,p、要素g、要素yを入力として、y=gを満たす整数xを求める。なお、yとgは、乗法群(Z/NZ)の要素であり、NはR個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【0021】
【数5】

【0022】
の関係が成り立つ整数である。また、整数Nを素因数分解するための計算量は、数体篩法の方が楕円曲線法よりも少ない、もしくは、RとNが、
【0023】
【数6】

【0024】
の関係を満足する。そして、本発明の離散対数計算装置は、因子基底計算部と群要素計算部とを備える。因子基底計算部は、整数N、素数p,…,p、要素gから、離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する。群要素計算部は、多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する。
【0025】
本発明の事前計算装置は、整数N、素数p,…,p、要素g、要素yが与えられたときに、y=gを満たす整数xを求めるための中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を求める。本発明の別の離散対数計算装置は、あらかじめ計算された離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する群要素計算部を備える。
【発明の効果】
【0026】
本発明のパラメータ設定装置によって選定される整数Nの場合、それぞれのpのサイズが近いときは、素因数分解の計算量PはL[1/3,(64/9)1/3]となり、乗法群(Z/pZ)の離散対数の計算量QはL[1/3,(64/9R)1/3]となる。したがって、PのオーダーとQのR1/3乗のオーダーが等しい。つまり、Rを大きくすることで、素因数分解の計算量Pのオーダーを離散対数の計算量Qのオーダーの自乗よりも大きくできる。そして、このような整数Nを用いた離散対数計算装置によれば、落し戸ありの場合の計算量(離散対数の計算量)と落し戸なしの場合の計算量(素因数分解も行う場合の計算量)の比を大きくできる。
【図面の簡単な説明】
【0027】
【図1】実施例1のパラメータ設定装置の機能構成例を示す図。
【図2】実施例1のパラメータ設定装置の処理フロー例を示す図。
【図3】実施例1変形例1のパラメータ設定装置の機能構成例を示す図。
【図4】実施例1変形例1のパラメータ設定装置の処理フロー例を示す図。
【図5】実施例2の離散対数計算装置の機能構成例を示す図。
【図6】実施例2の離散対数計算装置の処理フロー例を示す図。
【図7】実施例2変形例2の事前計算装置の機能構成例を示す図。
【図8】実施例2変形例2の離散対数計算装置の処理フロー例を示す図。
【図9】実施例2変形例2の事前計算装置の処理フロー例を示す図。
【図10】実施例2変形例2の離散対数計算装置の処理フロー例を示す図。
【発明を実施するための形態】
【0028】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0029】
実施例の説明の前に、本発明の理解に必要な内容について説明する。計算量を表す関数としてL[s,c](ただし、sとcは実数であり、0≦s≦1)を、
【0030】
【数7】

【0031】
とおく。なお、o(1)は整数Nが無限大の場合に0に近づく適当な関数である。また、
【0032】
【数8】

【0033】
とし、それぞれのpのサイズは近いものとする。なお、必ずしもpのサイズは近くなくても以下の説明は成り立つが、説明が煩雑になる上、発明の効率もサイズが近い場合の方が良い。仮にpのサイズが異なるとすると、落し戸なしでの計算量は2番目に大きいpもしくはNのサイズによって決まり、落し戸ありでの離散対数の計算は最も大きなpによって決まる。したがって、以下の説明ではそれぞれのpのサイズは近いものとする。
【0034】
既知の漸近的に最も高速な素因数分解法である数体篩法による整数Nの素因数分解の計算量は、L[1/3,(64/9)1/3]であることが知られている。漸近的にはCoppersmith(Don Coppersmith, “Modifications to the Number Field Sieve,” Journal of Cryptology, vol. 6, num. 3, pp.169-180, 1993.)の改良が知られているが、実用的な効果は薄いと信じられているので実施例では取り扱わない。また、楕円曲線法による素因数分解により因子pを見つける計算量は、Nのサイズがpのサイズに比べてそれほど大きくない場合にはL[1/2,√2]であることが知られている。つまり、楕円曲線法により整数Nを素因数分解するためには、
【0035】
【数9】

【0036】
の計算が必要である。ここで、例えばo(1)を無視すれば、
【0037】
【数10】

【0038】
が成り立つ場合には数体篩法の方が楕円曲線法より整数Nを素因数分解するには高速となる。なお、実際にはo(1)を無視できない場合や式(1)が成立しない場合にも落し戸付き離散対数問題が構成できるような整数Nもあるが、式(1)によって判別すれば、高い確率で数体篩法の方が楕円曲線法よりも高速となるので、整数Nを繰り返し設定するパラメータ設定装置の場合には十分に本発明の効果が得られる。したがって、式(1)の条件を用いても実用的には問題ない。
【実施例1】
【0039】
図1に本発明のパラメータ設定装置の機能構成例を示す。また、図2にパラメータ設定装置の処理フロー例を示す。パラメータ設定装置100は、条件設定部130、素数生成部110、整数生成部120、記録部140を備える。条件設定部130は、整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなるように、整数Nのサイズと素因数の数R(ただし、Rは2以上)を決める(S130)。素数生成部110は、整数Nのサイズと素因数の数Rから、R個の素数p(ただし、rは1からRの整数)を生成する(S110)。このときに、前述のように各pのサイズが近くなるように設定することが望ましい。整数生成部120は、素数pから、整数Nを
【0040】
【数11】

【0041】
のように求め、記録部140に記録する(S120)。
【0042】
本発明のパラメータ設定装置によって選定される整数Nの場合、素因数分解の計算量PはL[1/3,(64/9)1/3]となり、乗法群(Z/pZ)の離散対数の計算量QはL[1/3,(64/9R)1/3]となる。ここで、
【0043】
【数12】

【0044】
である。したがって、PのオーダーとQのR1/3乗のオーダーが等しい。つまり、Rを大きくすることで、素因数分解の計算量Pのオーダーを離散対数の計算量Qのオーダーの自乗よりも大きくできる。なお、漸近的な条件ではいくらでもRを大きくできるので、計算量の比もいくらでも大きくできる。
【0045】
[変形例1]
図3に本発明の別のパラメータ設定装置の機能構成例を示す。また、図4にパラメータ設定装置の処理フロー例を示す。パラメータ設定装置150は、素数生成部115、整数生成部120、パラメータ選定部160、記録部190を備える。素数生成部115は、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)を生成する(S115)。整数生成部120は、素数pから、整数Nを
【0046】
【数13】

【0047】
のように求める(S120)。パラメータ選定部160は、整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなるかを確認する(パラメータとしての条件を満たすかを確認する)。そして、条件を満たす場合には当該整数Nをパラメータとして選定し、記録部190に記録する(S160)。パラメータとしての条件としては、例えば式(1)があるが、この式に限定する必要は無く、効率良く、かつ高い確率で判別できれば良い。そして、条件を満たさない場合にはステップS115に戻り、素数生成部115の素数の生成、整数生成部120の整数Nの生成、パラメータ選定部160の確認を繰り返す。なお、パラメータ設定装置100は、複数の整数Nを生成しておき、その中からパラメータ選定部が条件を満たす整数Nを選定してもよい。この場合も、複数の整数Nの中に条件を満たす整数が存在しなかった場合には、ステップS115に戻ればよい。
【0048】
このような構成なので、本変形例の場合にも、実施例1のパラメータ設定装置と同じ効果が得られる。
【0049】
[変形例2]
変形例2のパラメータ設定装置100’、150’では、素数生成部110’、115’が実施例1や実施例1変形例1と異なる。その他の構成部や処理フローは実施例1や実施例1変形例1のパラメータ設定装置100、150と同じである。素数生成部110’、115’は、乗法群(Z/pZ)の離散対数の計算で特殊数体篩法が利用できる素数pを生成する(S110’、S115’)。具体的には、2521−1や2607−1などを選定すればよい。
【0050】
このように素数pを生成すれば、Rが十分に大きいときに整数Nの素因数分解は、特殊数体篩法ではなく、やはり一般数体篩法が最も高速となる。このような素数pを用いた整数Nの場合、落し戸がある場合の離散対数の計算量Qは
【0051】
【数14】

【0052】
となる。ここで、
【0053】
【数15】

【0054】
である。したがって、PのオーダーとQの(2R)1/3乗のオーダーが等しい。つまり、実施例1や実施例1変形例1のパラメータ設定装置100、150が選定した整数Nよりもさらに計算量の比を大きくできる。
【実施例2】
【0055】
図5に実施例2の離散対数計算装置の機能構成例を示す。また、図6に離散対数計算装置の処理フロー例を示す。離散対数計算装置200は、整数N、素数p,…,p、要素g、要素yを入力として、y=gを満たす整数xを求める。なお、yとgは、乗法群(Z/NZ)の要素であり、NはR個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)を用いて
【0056】
【数16】

【0057】
のように求められた整数である。また、整数Nを素因数分解するための計算量は、数体篩法の方が楕円曲線法よりも少ない、もしくは、RとNが、
【0058】
【数17】

【0059】
の関係を満足する。離散対数計算装置200は、因子基底計算部210と群要素計算部250と記録部290とを備える。記録部290にあらかじめ上述の整数N、素数p,…,pを記録しておいてもよいし、パラメータ設定装置100(100’、150、150’)も備えておき、必要に応じて整数N、素数p,…,pを設定してもよい。因子基底計算部210は、多項式選択手段220、篩手段230、線形代数手段240を有し、整数N、素数p,…,p、要素gから、離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算し、記録部290に記録する(S210)。群要素計算部250は、多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する(S250)。
【0060】
次に、ステップS210とS250の処理内容について詳細に説明する。整数Nとその素因数である素数p,…,pが与えられている場合、各modpに対して離散対数を求め、中国人の剰余定理によりmodNの離散対数に変換する。具体的には、y(=g modp)とgが与えられた際の、数体篩法による乗法群(Z/pZ)の離散対数x(=logy)は、多項式選択処理、篩処理、線形代数処理、個別の離散対数計算の手順で求められる。多項式選択手段220が多項式選択処理を行い、篩手段230が篩処理を行い、線形代数手段240が線形代数処理を行い、群要素計算部250が個別の離散対数計算を行う。
【0061】
次に図6のフロー例に従いながら説明する。rを1とし(S211)、1つ目の素数pについての処理を始める。多項式選択手段220は、
【0062】
【数18】

【0063】
となる多項式fr1、fr2∈Z[X]、整数Mr1、Mr2∈Z/pZを求め、記録部290に記録する(S220)。多項式fr1、fr2は既約で、かつ複素数体C上の共通根を持ってはならない。また、多項式fr1、fr2の次数の和(degfr1+degfr2)の最適な大きさは素数pのサイズにより決定される。多くの場合fr1、fr2の係数の絶対値が小さい方が、後続の計算が高速となる。なお、多項式fr1、fr2の選び方としては、多数の方法が知られており、それらの中から適宜選択すればよい。
【0064】
ここで、複素数体C上でfri(α)=0とする。因子基底i=1,2に対し、
【0065】
【数19】

【0066】
と定義する。ここで最適なBはfr1、fr2とpによって決まる。そして、ノルムを
(a+bα)=(−b)degff(−a/b)
と定義する。篩手段230は、i=1,2のそれぞれに対して、
【0067】
【数20】

【0068】
となる(a,b)(ただし、gcd(a,b)=1)を多数見つける(S230)。さらに、(a,b)に対し、Shirokauer指数λを計算する。K=Q(α)とし、その整数環OKiの部分集合Γ
【0069】
【数21】

【0070】
と定義する。ここで、pは2以外の素数であり、(p−1)/2が素数の場合にはl=(p−1)/2とし、(p−1)/2が素数でない場合にはlを素因数分解したすべての因子をそれぞれlとして処理を行う。このとき、
λ:Γ→lOKi/lKi
の像はdegfri個の成分で表現されるので、
【0071】
【数22】

【0072】
を計算し、記録部290に記録する。その結果(a,b)のノルムの素因数分解から、
【0073】
【数23】

【0074】
という式が得られる。ここで、x(i)∈[0,l)∩Zであり、x(i)とlog(q,α−t)が未知数である。篩手段230は、この未知数の個数より多くの(a,b)を集める。
【0075】
式(2)の未知数を変数とみなして行列表記すると
Ax^≡0^ (modl)
と書ける。ここで、x^は未知数を並べたベクトル、0^は零ベクトルである。線形代数手段240は、このベクトルx^の非自明な解を求め、記録部290に記録する(S240)。なお、Aは疎行列となるので、Gaussの消去法などの一般的な方法ではなく、疎行列専用の高速な解法を利用できる。因子基底計算部210は、r=Rかを確認し(S212)、Yesの場合には線形代数処理(S250)に進み、Noの場合にはrの値を1つ増やした上で(S213)、多項式選択処理(S220)に戻る。ここまでの繰り返し処理(S210)で、多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^が記録部290に記録されている。これらの情報が、y=gを満たす整数xを求める離散対数計算の中間情報である。
【0076】
群要素計算部250は、yがB−smoothになるようにj,kを求め、そのj,k及び線形代数処理(S240)の結果であるベクトルx^,…,x^の値を用いて、個別の離散対数(yに対する離散対数)を計算する(S250)。
【0077】
離散対数計算装置200は、数体篩法の方が楕円曲線法よりも素因数分解の計算量が少なくなる整数Nを用いているので、落し戸ありの場合の計算量(離散対数の計算量)と落し戸なしの場合の計算量(素因数分解も行う場合の計算量)の比を自乗の比よりも大きくできる。なお、漸近的な条件ではいくらでもRを大きくできるので、計算量の比もいくらでも大きくできる。
【0078】
[変形例1]
実施例2で示したように、因子基底計算部210の処理(S210)によって、y=gを満たす整数xを求める離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^が記録部290に記録される。ステップS210の処理は、yの値が与えられなくても、整数N、素数p,…,pとgの値が分かればあらかじめ計算しておくことが可能である。また、ステップS210の部分の計算量は、
【0079】
【数24】

【0080】
であり、ステップS250の部分の計算量は、
【0081】
【数25】

【0082】
しか必要としない。
【0083】
そこで、変形例1の離散対数計算装置では、整数N、素数p,…,p、要素gが既知となったとき(落し戸が確定したとき)に、因子基底計算部210が多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算し、記録部290に記録する。このように個別の要素yが与えられる前に計算量の多い因子基底の離散対数の計算(S210)を行ってしまえば、さらに処理速度を高めることができる。
【0084】
[変形例2]
図7に実施例2変形例2の事前計算装置の機能構成例、図8に実施例2変形例2の離散対数計算装置の機能構成例を示す。また図9に事前計算装置の処理フロー例、図10に離散対数計算装置の処理フロー例を示す。本変形例は、離散対数計算装置200を2つに分けた構成であり、事前計算装置300は、因子基底計算部210と記録部290を備えている。離散対数計算装置400は、群要素計算部250と記録部490を備えている。因子基底計算部210の構成と処理フロー(S210)は実施例2と同じであり、変形例1と同じように、整数N、素数p,…,p、要素gが既知となったとき(落し戸が確定したとき)に、因子基底計算部210が多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算し、記録部290に記録する。
【0085】
そして、多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^が離散対数計算装置400に送信され、記録部490に記録される。離散対数計算装置400の群要素計算部250は、要素yが入力されると、y=gを満たす整数xを求める(S250)。この処理も実施例2と同じである。
【0086】
このような構成であっても、数体篩法の方が楕円曲線法よりも素因数分解の計算量が少なくなる整数Nを用いているので、事前計算装置300および離散対数計算装置400は、落し戸ありの場合の計算量(離散対数の計算量)と落し戸なしの場合の計算量(素因数分解も行う場合の計算量)の比を自乗の比よりも大きくできる。
【0087】
また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0088】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0089】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0090】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0091】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0092】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【0093】
本発明は、IDベース暗号などの落し戸付きの離散対数問題を必要とする暗号システムで利用できる。
【符号の説明】
【0094】
100、100’、150、150’ パラメータ設定装置
110、110’、115、115’ 素数生成部
120 整数生成部 130 条件設定部
140、190、290、490 記録部
160 パラメータ選定部 200、400 離散対数計算装置
210 因子基底計算部 220 多項式選択手段
230 篩手段 240 線形代数手段
250 群要素計算部 300 事前計算装置


【特許請求の範囲】
【請求項1】
整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなるように、整数Nのサイズと素因数の数R(ただし、Rは2以上)を決める条件設定部と、
整数Nのサイズと素因数の数Rから、素数p(ただし、rは1からRの整数)を生成する素数生成部と、
素数pから、
【数26】

の関係が成り立つ整数Nを求める整数生成部を
有するパラメータ設定装置。
【請求項2】
整数Nのサイズと素因数の数R(ただし、Rは2以上)を、
【数27】

が成り立つように決める条件設定部と、
整数Nのサイズと素因数の数Rから、素数p(ただし、rは1からRの整数)を生成する素数生成部と、
素数pから、
【数28】

の関係が成り立つ整数Nを求める整数生成部を
有するパラメータ設定装置。
【請求項3】
R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)を生成する素数生成部と、
素数pから、
【数29】

の関係が成り立つ整数Nを求める整数生成部と、
整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなる場合に、当該整数Nをパラメータとして選定するパラメータ選定部を
有するパラメータ設定装置。
【請求項4】
R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)を生成する素数生成部と、
素数pから、
【数30】

の関係が成り立つ整数Nを求める整数生成部と、
整数Nが、
【数31】

が成り立つ場合に、当該整数Nをパラメータとして選定するパラメータ選定部を
有するパラメータ設定装置。
【請求項5】
請求項1から4のいずれかに記載のパラメータ設定装置であって、
前記素数生成部は、
乗法群(Z/pZ)についての離散対数の計算で、特殊数体篩法が利用できるように前記素数pを選定する
ことを特徴とするパラメータ設定装置。
【請求項6】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数32】

の関係が成り立つ整数であり、
整数N、素数p,…,p、要素g、要素yを入力として、y=gを満たす整数xを求める離散対数計算装置であって、
整数N、素数p,…,p、要素gから、離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する因子基底計算部と、
多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する群要素計算部とを備え、
整数Nを素因数分解するための計算量は、数体篩法の方が楕円曲線法よりも少ない
ことを特徴とする離散対数計算装置。
【請求項7】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数33】

の関係が成り立つ整数であり、
整数N、素数p,…,p、要素g、要素yを入力として、y=gを満たす整数xを求める離散対数計算装置であって、
整数N、素数p,…,p、要素gから、離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する因子基底計算部と、
多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する群要素計算部とを備え、
前記RとNが、
【数34】

の関係を満足する
ことを特徴とする離散対数計算装置。
【請求項8】
請求項6または7記載の離散対数計算装置であって、
すべての前記素数pは、乗法群(Z/pZ)についての離散対数の計算で、特殊数体篩法が利用できる素数である
ことを特徴とする離散対数計算装置。
【請求項9】
請求項6から8のいずれかに記載の離散対数計算装置であって、
前記因子基底計算部は、整数N、素数p,…,p、要素gが既知となったときに多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算し、記録部に記録する
ことを特徴とする離散対数計算装置。
【請求項10】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数35】

の関係が成り立つ整数であり、
整数N、素数p,…,p、要素gから、y=gを満たす整数xを求めるための中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する因子基底計算部を備え、
前記Nを素因数分解するための計算量は、数体篩法の方が楕円曲線法よりも少ない
ことを特徴とする事前計算装置。
【請求項11】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数36】

の関係が成り立つ整数であり、
整数N、素数p,…,p、要素gから、y=gを満たす整数xを求めるための中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する因子基底計算部を備え、
前記RとNが、
【数37】

の関係を満足する
ことを特徴とする事前計算装置。
【請求項12】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数38】

の関係が成り立つ整数であり、
y=gを満たす整数xを求める離散対数計算装置であって、
あらかじめ計算された離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する群要素計算部を備え、
前記Nを素因数分解するための計算量は、数体篩法の方が楕円曲線法よりも少ない
ことを特徴とする離散対数計算装置。
【請求項13】
条件設定部が、整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなるように、整数Nのサイズと素因数の数R(ただし、Rは2以上)を決める条件設定ステップと、
素数生成部が、整数Nのサイズと素因数の数Rから、素数p(ただし、rは1からRの整数)を生成する素数生成ステップと、
整数生成部が、素数pから、
【数39】

の関係が成り立つ整数Nを求める整数生成ステップを
有するパラメータ設定方法。
【請求項14】
条件設定部が、整数Nのサイズと素因数の数R(ただし、Rは2以上)を、
【数40】

が成り立つように決める条件設定ステップと、
素数生成部が、整数Nのサイズと素因数の数Rから、素数p(ただし、rは1からRの整数)を生成する素数生成ステップと、
整数生成部が、素数pから、
【数41】

の関係が成り立つ整数Nを求める整数生成ステップを
有するパラメータ設定方法。
【請求項15】
素数生成部が、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)を生成する素数生成ステップと、
整数生成部が、素数pから、
【数42】

の関係が成り立つ整数Nを求める整数生成ステップと、
パラメータ選定部が、整数Nを素因数分解するための計算量が、数体篩法の方が楕円曲線法よりも少なくなる場合に、当該整数Nをパラメータとして選定するパラメータ選定ステップを
有するパラメータ設定方法。
【請求項16】
素数生成部が、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)を生成する素数生成ステップと、
整数生成部が、素数pから、
【数43】

の関係が成り立つ整数Nを求める整数生成ステップと、
パラメータ選定部が、整数Nが、
【数44】

が成り立つ場合に、当該整数Nをパラメータとして選定するパラメータ選定ステップを
有するパラメータ設定方法。
【請求項17】
請求項13または16記載のパラメータ設定方法であって、
前記素数生成ステップは、
乗法群(Z/pZ)についての離散対数の計算で、特殊数体篩法が利用できるように前記素数pを選定する
ことを特徴とするパラメータ設定方法。
【請求項18】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数45】

の関係が成り立つ整数であり、
整数N、素数p,…,p、要素g、要素yを入力として、y=gを満たす整数xを求める離散対数計算方法であって、
因子基底計算部が、整数N、素数p,…,p、要素gから、離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する因子基底計算ステップと、
群要素計算部が、多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する群要素計算ステップとを有し、
整数Nを素因数分解するための計算量は、数体篩法の方が楕円曲線法よりも少ない
ことを特徴とする離散対数計算方法。
【請求項19】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数46】

の関係が成り立つ整数であり、
整数N、素数p,…,p、要素g、要素yを入力として、y=gを満たす整数xを求める離散対数計算方法であって、
因子基底計算部が、整数N、素数p,…,p、要素gから、離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する因子基底計算ステップと、
群要素計算部が、多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する群要素計算ステップとを有し、
前記RとNが、
【数47】

の関係を満足する
ことを特徴とする離散対数計算方法。
【請求項20】
請求項18または19記載の離散対数計算方法であって、
すべての前記素数pは、乗法群(Z/pZ)についての離散対数の計算で、特殊数体篩法が利用できる素数である
ことを特徴とする離散対数計算方法。
【請求項21】
請求項18から20のいずれかに記載の離散対数計算方法であって、
前記因子基底計算ステップは、整数N、素数p,…,p、要素gが既知となったときに多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算し、記録部に記録する
ことを特徴とする離散対数計算方法。
【請求項22】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数48】

の関係が成り立つ整数であり、
因子基底計算部が、整数N、素数p,…,p、要素gから、y=gを満たす整数xを求めるための中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する因子基底計算ステップを有し、
前記Nを素因数分解するための計算量は、数体篩法の方が楕円曲線法よりも少ない
ことを特徴とする事前計算方法。
【請求項23】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数49】

の関係が成り立つ整数であり、
因子基底計算部が、整数N、素数p,…,p、要素gから、y=gを満たす整数xを求めるための中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^を計算する因子基底計算ステップを有し、
前記RとNが、
【数50】

の関係を満足する
ことを特徴とする事前計算方法。
【請求項24】
yとgは、乗法群(Z/NZ)の要素、
前記Nは、R個(ただし、Rは2以上)の素数p(ただし、rは1からRの整数)と
【数51】

の関係が成り立つ整数であり、
y=gを満たす整数xを求める離散対数計算方法であって、
群要素計算部が、あらかじめ計算された離散対数計算の中間情報である多項式f11、f12,…,fR1、fR2、整数M11、M12,…,MR1、MR2、ベクトルx^,…,x^と要素yを用いて整数xを計算する群要素計算ステップを有し、
前記Nを素因数分解するための計算量は、数体篩法の方が楕円曲線法よりも少ない
ことを特徴とする離散対数計算方法。
【請求項25】
請求項1から12のいずれかに記載された装置として、コンピュータを動作させるプログラム。

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