JPH10187037A - 素数判定方法および装置 - Google Patents
素数判定方法および装置Info
- Publication number
- JPH10187037A JPH10187037A JP34904796A JP34904796A JPH10187037A JP H10187037 A JPH10187037 A JP H10187037A JP 34904796 A JP34904796 A JP 34904796A JP 34904796 A JP34904796 A JP 34904796A JP H10187037 A JPH10187037 A JP H10187037A
- Authority
- JP
- Japan
- Prior art keywords
- integer
- prime
- remainder
- prime number
- integers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Complex Calculations (AREA)
Abstract
する場合でも、処理の始めに増加値剰余テーブルを作成
することによって、以後繰り返される多倍長の計算を回
避する。 【解決手段】 ふるい法によって棄却された素数候補を
増加させるための多倍長の整数を被除数、素数テーブル
の要素を除数としたときの剰余を予め計算し、この値を
増加値剰余テーブルとして保持する(203)。そして
この増加値剰余テーブルの値を用いて、ふるい法に必要
な素数テーブルの要素を法としたときの乱整数の剰余を
求める計算を行う(303)。素数テーブルの要素の大
きさを1ワードより数ビット小さくし、この増加値剰余
テーブルの要素の大きさも1ワードより数ビット小さく
する。乱整数の剰余の計算は1ワードで実行できる。
Description
に用いる法数生成法に利用される素数判定技術に関する
ものであり、特にP−1法、P+1法などの素因数分解
攻撃等に対抗するための法数生成に用いることができる
ようにしたものである。
な発展と普及、そしてインターネット/イントラネット
をはじめとする通信ネットワークの社会への急速な浸
透、そしてCD−ROMなどの大規模な情報媒体の普及
を背景として、デジタル情報を簡便に利用者に送り届
け、デジタル情報の利用に対する課金を確実に行える技
術の普及を望む声が高まっている。
めの技術として、暗号技術とりわけ公開鍵暗号が注目を
集めている。公開鍵暗号の一種であるRSA(Rive
st、Shamir、Adleman)暗号は、データ
保護、認証、電子署名を可能とし、その安全性の高さか
ら公開鍵暗号の標準として確立されつつある。今後デジ
タル情報社会の発展と共にRSA暗号の利用機会は急速
に拡大することが予想される。
の積からなる合成数を法数として用いる。一般にこの素
数の生成では、ふるい法と確率的素数判定法の二段階の
素数判定が行われる。ふるい法は、素数性を判定する数
を、予め用意された素数集合の要素で割ったときの剰余
が零かどうか、つまり割り切れるかどうかで素数判定を
行う方法である。確率的素数判定法は、調べたい数があ
る確率をもって合成数であることを判定する方法で、F
ermat判定法、Solovay−Strassen
法、Miller−Rabin法などが知られている。
確率的素数判定法は計算負荷が大きいので、通常の素数
生成では、ふるい法が併用されることが多い。
る。まず乱数生成法によって奇数の乱数を生成する。乱
数生成法には、非線形FSR乱数発生方式などが知られ
ている。この乱数に対してふるい法を実行する。これに
よって合成数と判定された場合は、この乱数を適当に増
減するか、乱数を作り直すかして、再びふるい法による
判定を行う。この処理をふるい法が合成数と判定しない
素数候補値が得られるまで繰り返す。ふるい法が合成数
と判定しない素数候補値が得られたら、この数をFer
mat判定法などの確率的素数判定法にかける。確率的
素数判定法によって、合成数と判定されない場合は、こ
れを素数として出力する。合成数と判定される場合に
は、この値を適当に増減するか、乱数を作り直すかし
て、再びふるい法による判定にかける。以上のような手
順により、素数を獲得する。
分解の困難さに根拠を置いている。したがって、素因数
分解法がそのままRSA暗号の攻撃法となる。この他、
素因数分解攻撃法以外にもRSA暗号の周期性を利用し
た攻撃法が知られている。
P+1法、Fermatの素因数分解法が挙げられる。
上記二つはRSA暗号の法数の素因数の一つをpとする
とき、p−1あるいはp+1が小さな素数の積になって
いる場合に有効な方法である。このため、P−1法、P
+1の方法に対抗するためには、p−1あるいはp+1
の素因数が大きな素数を持つようにすればよい。Fer
matの素因数分解法は法数の二つの素因数の大きさが
ほぼ同じときに有効な方法で、これに対しては素因数の
大きさを十分異なるようにすればよく、簡単に対抗策を
こうじることができる。また、RSA暗号の周期性を利
用した攻撃法に対しては、p−1の素因数の一つをrと
すると、r−1が十分大きな素因数を持てばこの攻撃法
の適用が困難なことが知られている。
従来技術として、次のアルゴリズムAに従って素因数を
決める方法が知られている。 [アルゴリズムA] (ステップA1) 適当に大きな素数tを生成する。 (ステップA2) r=2at+1の形の素数rを生成
する。 (ステップA3) 適当に大きな素数sを生成する。 (ステップA4) 整数Rを法sでのrの逆数として、
P=1+2(bs−R)rの形の素数Pを生成する。
た素数を因数とする法数は、P−1法、P+1法、そし
てRSA暗号の周期性を利用した攻撃法に対抗できる法
数となっている。しかし、上記の各ステップでふるい法
と確率的素数判定法を繰り返すため、アルゴリズムAに
従って素数生成を行うには膨大な計算量を必要とする。
策を施した法数を生成する従来技術として、J.Gor
donによる方法がある。この方法は任意の素数s,r
に対してU=sr-1−rs-1 mod rsとなる整数U
と任意の整数mを用いて、p=U+2mrsの形となる
整数を法数の素因数の候補とする。ところがこの計算に
は多倍長のべき乗剰余演算を伴うため、膨大な量の演算
を必要とする。この問題を解決するために特開平2−3
7383号公報の素数生成手法が提案されているが、特
開平2−37383号公報の手法も多倍長数の除算を数
多く繰り返す必要があるため、パーソナル・コンピュー
タなどでは大きな計算負荷となってしまう。
83号公報の手法などの従来技術とは別に、安全対策を
施していない単純な法数の生成に必要な計算量を削減す
る従来技術としてp−delta法が知られている。こ
の方法はふるい法を実行する際の多倍長の除算の回数を
削減する方法である。p−delta法は処理のはじめ
に剰余テーブルを作成することにより繰り返し実行され
るふるい法を1ワードで高速処理する方法である。以下
にp−delta法のアルゴリズムを示す。ここでpr
imes[i]は、h個の1ワードよりも小さい相異な
る素数の集合のi番目の要素とする。 [アルゴリズムB] (ステップB1) pに適当な大きさの乱数を代入す
る。 (ステップB2) p[i]=p mod prime
s[i] (i=1,2,・・・・・・,h)、を計算
する。 (ステップB3) pdelta=0とする。 (ステップB4) p[i]+pdelta=0 (i
=1,2,・・・・・・,h)かどうかを判定する。 全てのiに対して上式が不成立のときステップB6へ。
そうでない場合はステップB5へ。 (ステップB5) pdelta←pdelta+2と
して、ステップB4へ。 (ステップB6) p←p+pdeltaとしてpを素
数候補として出力する。
余テーブルp[i](i=1,2,・・・・・・,h)
を予め作成することにより、p−delta法は負荷の
大きい多倍長演算を実行せずに、ステップB4での1ワ
ード演算でふるい法を実行するので計算量を大幅に削減
できる。しかしこの方法は、ステップB5からわかるよ
うに棄却された候補値を2だけ増加させた値を次の素数
候補とするので、P−1法やP+1法、そしてRSA暗
号の周期性を利用した攻撃法に対して必ず安全であるよ
うな素数を生成することはできない。したがって、この
方法は単純な素数の積の法数生成にしか適用することが
できず、P−1法やP+1法、そしてRSA暗号の周期
性を利用した攻撃法対策を施した法数の生成にはp−d
elta法を利用することはできない。
を行うには、一般に第一段階としてふるい法を実行し、
得られた素数候補をさらにFermat判定法やMil
ler−Rabin判定法など、確率的素数判定法を用
いて素数性の判定を行う。第一段階のふるい法では多倍
長数の除算を繰り返すため、この処理は計算負荷の重い
ものとなる。これらの2段階の処理を繰り返し、最終的
に法数の因数となる素数を獲得する。加えて、P−1法
やP+1法、そしてRSA暗号の周期性を利用した攻撃
法対策を施すには膨大な多倍長演算を必要とする。
ピュータなどで、素因数分解攻撃やRSA暗号の周期性
を利用した攻撃に対抗しうる法数生成を行うには、多倍
長演算を削減する技術、および法数生成処理に必要とさ
れるメモリ量を削減する技術が重要となる。
P+1法、そしてRSA暗号の周期性を利用した攻撃法
対策を施した法数の生成時に行われる素数判定・生成法
に必要な多倍長演算を削減する技術を提供することにあ
る。
成に必要なメモリ量を削減する技術を提供することにあ
る。
解決するために、次に述べるような手段を用いる。 (1) 増加値剰余テーブルの作成 P−1法やP+1法、そしてRSA暗号の周期性を利用
した攻撃法対策を施した法数を生成するには上記のアル
ゴリズムA、J.Gordonの方法などで素数生成を
行わなければならない。これらの方法で、ふるい法によ
って素数候補値が棄却された場合には、元の素数候補に
多倍長の整数を加えたものを次の素数候補としなければ
ならない。この新しい素数候補をふるい法に再びかける
ため、多倍長の除算が繰り返し行われることになる。
数候補を増加させるための多倍長の整数を被除数、素数
テーブルの要素を除数としたときの剰余を予め計算し、
この値を増加値剰余テーブルとして保持する。そしてこ
の増加値剰余テーブルの値を用いて、ふるい法に必要な
素数テーブルの要素を法としたときの乱整数の剰余を求
める計算を行う。素数テーブルの要素の大きさを1ワー
ドより数ビット小さくすると、この増加値剰余テーブル
の要素の大きさも1ワードより数ビット小さくなるた
め、この計算は1ワードで実行できる。このように、P
−1法などの安全対策を施した法数を生成する場合で
も、処理の始めに増加値剰余テーブルを作成することに
よって、以後繰り返される多倍長の計算を回避すること
ができる。 (2) 除数集合の実行時生成 通常のふるい法で用いる素数集合の代わりに、1ワード
より数ビット小さい乱数またはd(i)=a+biの形
の整数集合を用いる。この場合、素数集合を記憶保持手
段に保持しておく必要がなく、メモリ上に除数集合を保
持する必要がないため、演算に必要なメモリ量を削減す
ることができる。
達成するために、整数Aに対し、整数Aとは異なる整数
BまたはBの倍数分だけ整数Aと異なる整数の集合Cに
属する要素の素数性を判定する素数判定方法において、
整数BまたはBの倍数を被除数とし、一つまたは複数の
整数を除数または除数集合とした場合の剰余または剰余
の集合を記憶手段に記憶するステップと、集合Cの要素
を生成するステップと、生成された集合Cの要素に対
し、対応する剰余を上記記憶手段から取り出すステップ
と、上記記憶手段から取り出された剰余を用いて、上記
生成された集合Cの要素を被除数とし上記一つまたは複
数の整数を除数とした場合の剰余を算出するステップと
を実行するようにしている。
対してp=1+2atまたはp=−1+2atの形の整
数を要素とする集合を素数性を判定する集合Cとするこ
とができる。また、tを任意の素数あるいは1として、
任意の整数aに対してr=1+2atの形となる素数r
と、任意の素数sを法としたときのrの逆数Rと、任意
の整数bを用いて、p=1+2(bs−R)rの形とな
る整数を要素とする集合を素数性を判定する集合Cとす
ることができる。また、tを任意の素数あるいは1とし
て、任意の整数aに対してr=−1+2atの形となる
素数rと、rを法としたときの任意の素数sの逆数S
と、 任意の整数bを用いて、p=−1+2(br+
S)sの形となる整数を要素とする集合を素数性を判定
する集合Cとすることができる。また、任意の素数s、
rに対してU=sr-1−rs-1 modrsとなる整数U
と任意の整数mを用いて、p=U+2mrsの形となる
整数を要素とする集合を素数性を判定する集合Cとする
ができる。また、任意の整数i、jと、任意の素数s、
rと、rを法としたときのsの逆数Sと、sを法とした
ときのrの逆数Rと、U=(−1+is)+(2+jr
−is)sS modrsまたはU=(1+i)+(−
2+is−jr)sR mod rsを満たす整数Uを
用いて、p=U+2mrsの形となる整数を要素とする
集合を素数性を判定する集合Cとすることができる。
に除数として一つ又は複数の素数又は乱数を用いること
ができる。また、該剰余または該剰余集合を求めるのに
除数としてd(i)=a+biの形の整数集合を用いる
ことができる。
数判定方法において、除数としてd(i)=a+biの
形の整数集合を用いるようにしている。
ることもできる。また本発明は、装置の実現形態を採用
しても良く、コンピュータプログラムの実現形態を採用
することもできる。
る。 [実施例1]図1から4を用いて、本発明によるP−1
法、P+1法、そしてRSA暗号の周期性を利用した攻
撃法対策を施した法数の素因数をアルゴリズムAに従っ
て生成する場合の実施例について説明する。
の基本構成を説明する。図1のステップ101からステ
ップ106に至る処理は以下のように行われる。 (ステップ101) スタート。 (ステップ102) 通常のp−delta法を使って
素数tを作成する。 (ステップ103) ステップ102で生成された素数
tをもとにr=2at+1の形の素数rを作成する。こ
こでaは正の整数である。 (ステップ104) 通常のp−delta法を使って
素数sを生成する。 (ステップ105) Rr≡1 mod sとなるRを
作成する。 (ステップ106) ステップ103で生成された素数
r、ステップ104で生成された素数s、およびステッ
プ105で生成されたRから、p=1+2(bs−R)
rの形の素数pを作成する。ここでbは正の整数であ
る。 (ステップ107) 終了。pを出力する。
なので、二つの数は互いに素である。つまりその最大公
約数は1となるので、ユークリッドの互除法を用いて法
sでの素数rの逆数Rを計算することができる。
生成法について詳細に説明する。二つのステップの手順
は全く同じなので、ここではステップ102について説
明する。
の素数なので、従来技術のp−delta法をそのまま
用いることができる。p−delta法を繰り返し実行
し、1ワードよりも数ビット小さい相異なる素数の集合
のどの要素でも割り切れない素数候補を獲得した後、本
実施例ではFermat判定法による本格的な判定を行
う。Fermat判定法は、Fermatの小定理に基
づく判定法で、vを正整数とするとき任意の素数xに対
して
合成数と判定される。
明したものである。ここで、hは1ワードよりも数ビッ
ト小さい相異なる素数の集合の要素(=primes
[i])の個数で、kは予め定められたFermat判
定法を繰り返す回数である。ステップ201から213
までの処理は以下の通りである。なお、primes
[i]は、d(i)=a+biで代替してもよい。 (ステップ201) スタート。 (ステップ202) 多倍長の乱数を生成し、tに格納
する。 (ステップ203) t[i]=t mod prim
es[i](ただし、i=1,2,・・・・・・,h)
を計算する。 (ステップ204) pdelta=0とする。 (ステップ205) i=1とする。 (ステップ206) t[i]+pdelta=0かど
うかを判定する。 上式が成立するときステップ212へ。上式が不成立の
ときステップ207へ。 (ステップ207) i=hかどうかを判定する。 上式が成立するときステップ209へ。上式が不成立の
ときステップ208へ。 (ステップ208) ステップ207でi=hが成立し
ないと判定された場合、iを1だけ増加させてステップ
206に戻る。 (ステップ209) j=1とする。 (ステップ210) (primes[j])t-1≡1
mod tかどうかを判定する。 上式が成立するときステップ213へ。上式が不成立の
ときステップ212へ。 (ステップ211) ステップ213でj=kが成立し
ないと判定された場合、jを1だけ増加させてステップ
210に戻る。 (ステップ212) ステップ210の判定式が成立し
ない場合、およびステップ206でt[i]+pdel
ta=0と判定された場合、pdeltaを2だけ増加
させてステップ205に戻る。 (ステップ213) j=kかどうかを判定する。 上式が成立するときステップ214へ。上式が不成立の
ときステップ211へ。 (ステップ214) 終了。tを出力する。
う方法として、例えば非線形FSR乱数発生方式などが
知られている。
ついて詳細に説明する。ここでは、先の従来例のアルゴ
リズムAと同様にしてr=2at+1を生成してその素
数性を判定する。アルゴリズムAのステップA2では、
r=2at+1の形の素数候補を得るために、aを順に
増加させていく。このとき、a=basea+adel
ta、baseaをaの初期値、adeltaをaの増
加値すると、
basea+1 mod primes[i])+
((2・t mod primes[i])・adel
ta) modprimes[i] とできる。ここでbaseaは非線形FSR乱数発生方
式などで生成した乱数とする。ただしprimes
[i]は予め準備された1ワードの大きさの素数集合の
i番目の要素とする。 primes[i]はd(i)
=a+biで代替することができる。ここで、
ea+1 mod primes[i] muldeltas[i]=2・t mod prim
es[i] とおくと、
nders[i]+muldeltas[i]・ade
lta となる。上式はrを素数テーブルの要素の値で割った余
りを表しているので、この値が零かどうかを判定するこ
とにより、rの素数性を判定することができる。rem
ainders[i]およびmuldeltas[i]
は1ワードよりも数ビット小さいので、remaind
ers[i]およびmuldeltas[i]を計算
し、テーブルとして保持することにより、素数候補とな
るrを獲得するまでのprimes[i]による剰余を
1ワード演算で求めることができる。このように通常の
p−delta法で利用される剰余テーブル以外に、素
数候補の増加値のための剰余テーブルmuldelta
s[i]も合わせて利用することにより、P−1法やP
ollardの方法、そしてRSA暗号の周期性を利用
した攻撃法対策を施す法数の生成において繰り返し実行
されるふるい法に必要な多倍長演算を大幅に削減するこ
とができる。
プ103ではFermat判定法を実行し、二段階構成
の素数生成を行う。
処理をより詳細に説明するものである。ここで、ステッ
プ102で生成された素数tが与えられているとする。
ステップ301から315までの処理は以下の通りであ
る。 (ステップ301) スタート。 (ステップ302) 1ワードの乱数を生成し、初期値
baseaとする。 (ステップ303) ステップ102で生成された素数
tとステップ302で生成されたbaseaを使って、
remainders[i]=2・t・basea+1
mod primes[i]、muldeltas
[i]=2・t mod primes[i](ただ
し、i=1,2,・・・・・・,h)を計算する。 (ステップ304) adelta=0とする。 (ステップ305) i=1とする。 (ステップ306) remainders[i]+m
uldeltas[i]・adelta=0かどうかを
判定する。 上式が成立するときステップ312へ。上式が不成立の
ときステップ307へ。 (ステップ307) i=hかどうかを判定する。 上式が成立するときステップ309へ。上式が不成立の
ときステップ308へ。 (ステップ308) ステップ307でi=hが成立し
ないと判定された場合、iを1だけ増加させてステップ
306に戻る。 (ステップ309) ステップ307でi=hが成立す
ると判定された場合、r=2(basea+adelt
a)t+1を計算する。 (ステップ310) j=1とする。 (ステップ311) (primes[j])r-1≡1
mod rかどうかを判定する。 上式が成立するときステップ313へ。上式が不成立の
ときステップ312へ。 (ステップ312) ステップ311の式が成立しない
と判定された場合、およびステップ306の判定式が成
立すると判定された場合、adeltaを1だけ増加さ
せてステップ305に戻る。 (ステップ313) j=kかどうかを判定する。 上式が成立するときステップ315へ。上式が不成立の
ときステップ314へ。 (ステップ314) ステップ313でj=kが成立し
ないと判定された場合、jを1だけ増加させてステップ
311に戻る。 (ステップ315) 終了。rを出力する。
ついて詳細に説明する。上記アルゴリズムAのステップ
A4での計算の場合、ステップ202と同様にb=ba
sab+bdelta、basebをbの初期値、bd
eltaをbの増加値とおく。ここでbasebは非線
形FSR乱数発生方式などで生成した多倍長の乱数とす
る。このとき、
baseb−R)+1 modprimes[i] muldeltas[i]=2・r・s mod pr
imes[i] とおくと、
nders[i]+muldeltas[i]・bde
lta によって、pのprimes[i]による剰余を1ワー
ドの演算で求めることができる。上式はpを素数テーブ
ルの要素の値で割った余りを表しているので、この値が
零かどうかを判定することにより、pの素数性を判定す
ることができる。remainders[i]およびm
uldeltas[i]は1ワードより数ビット小さい
ので、remainders[i]およびmuldel
tas[i]を計算し、テーブルとして保持することに
より、素数候補となるpを獲得するまでのprimes
[i]による剰余を1ワードの演算で求めることができ
る。このように通常のp−delta法で利用される剰
余テーブル以外に、素数候補の増加値のための剰余テー
ブルmuldeltas[i]も合わせて利用すること
により、P−1法やPollardの方法、そしてRS
A暗号の周期性を利用した攻撃法対策を施す法数の生成
において繰り返し実行されるふるい法に必要な多倍長演
算を大幅に削減できることがわかる。
プ106ではFermat判定法を実行し、二段階構成
の素数生成を行う。
より詳細に説明するものである。ここで、ステップ10
4で生成された素数s、およびステップ103で生成さ
れた素数rが与えられているとする。ステップ401か
ら415までの処理は以下の通りである。 (ステップ401) スタート。 (ステップ402) 1ワードの乱数を生成し、初期値
basebとする。 (ステップ403) ステップ104で生成された素数
sとステップ103で生成された素数r、およびステッ
プ402で生成されたbasebを使って、
baseb−R)+1 modprimes[i] muldeltas[i]=2・r・s mod pr
imes[i] (ただし、i=1,2,・・・・・・,h) を計算する。 (ステップ404) bdelta=0とする。 (ステップ405) i=1とする。 (ステップ406) remainders[i]+m
uldeltas[i]・bdelta=0かどうかを
判定する。 上式が成立するときステップ412へ。上式が不成立の
ときステップ407へ。 (ステップ407) i=hかどうかを判定する。 上式が成立するときステップ409へ。上式が不成立の
ときステップ408へ。 (ステップ408) ステップ407でi=hが成立し
ないと判定された場合、iを1だけ増加させてステップ
406に戻る。 (ステップ409) ステップ407でi=hが成立す
ると判定された場合、p=1+2{(baseb+bd
elta)s−R}rを計算する。 (ステップ410) j=1とする。 (ステップ411) (primes[j])p-1≡1
mod pかどうかを判定する。 上式が成立するときステップ413へ。上式が不成立の
ときステップ412へ。 (ステップ412) ステップ411の式が成立しない
と判定された場合、およびステップ406の判定式が成
立すると判定された場合、bdeltaを1だけ増加さ
せてステップ405に戻る。 (ステップ413) j=kかどうかを判定する。 上式が成立するときステップ415へ。上式が不成立の
ときステップ414へ。 (ステップ414) ステップ413でj=kが成立し
ないと判定された場合、jを1だけ増加させてステップ
411に戻る。 (ステップ415) 終了。pを出力する。
1法やP+1法、そしてRSA暗号の周期性を利用した
攻撃法に対抗できる法数の素因数pを獲得できる。
−1法、P+1法、RSA暗号の周期性を利用した攻撃
法、およびFermatの素因数分解法にも対抗できる
法数生成の実施例について説明する。
きな素数p,qを生成する。ただし、Lを十分大きな数
として、|p−q|>Lが成立するようにする。このと
き法数n=pqは、P−1法やP+1法、そしてRSA
暗号の周期性を利用した攻撃法に対抗できるだけでな
く、Fermatの素因数分解法にも対抗することがで
きる。
う。以下で手順1は図1に示した素数生成の手順とす
る。ステップ501から506までの処理は以下の通り
である。 (ステップ501) スタート。 (ステップ502) 手順1によって素数pを生成。 (ステップ503) 手順1によって素数qを生成。 (ステップ504) |p−q|>Lかどうかを判定。 上式が成立すれば、ステップ505へ。上式が成立しな
ければ、ステップ502へ。 (ステップ505) n=pqとする。 (ステップ506) 終了。nを法数として出力する。
法、P+1法、RSA暗号の周期性を利用した攻撃法、
およびFermatの素因数分解法にも対抗できる法数
nを生成することができる。
手法をハードウエア態様で実現した実施例について説明
する。
この図において、素数t−生成判定部11および素数s
−生成判定部12はp−delta法で素数を判定する
ものである。素数t−生成判定部11は、t[i]=t
mod primes[i]を記憶している剰余テー
ブル13を参照して素数性の判定を行う。この動作は図
2のステップ202〜214に関連して説明したとおり
である。素数s−生成判定部12も同様にs[i]=s
mod primes[i]を記憶している剰余テー
ブル14を参照して素数性の判定を行う。
の素数候補を生成し、整数aを1だけ増加させながら素
数性を判定する。この判定は、remainder
[i]=2・t・basea+1 mod prime
s[i]を記憶している剰余テーブル16および、mu
ldeltas[i]=2・t mod primes
[i]を記憶している剰余テーブル17を参照して行わ
れる。この動作は図3のステップ301〜315に関連
して説明したとおりである。
部15から得た素数rおよび素数s−生成部12から得
た素数sを用いて、Rs≡1 mod sとなるRを作
成する。
判定部12、素数r−生成判定部15およびR−生成部
18からそれぞれ素数s、rおよびrの逆数Rを受け取
ってp=1+2(bs−R)rを生成し、整数bを1だ
けを増加させながら、その素数性を判定する。このと
き、remainder[i]の剰余テーブル20およ
びmuldeltas[i]の剰余テーブル21を参照
しながら行われる。この動作はステップ401〜415
に関連して説明したとおりである。
A暗号の周期性を利用した攻撃法、およびFermat
の素因数分解法にも対抗できる素数を生成できる。しか
も、多倍長の計算を回避できる。
ふるい法によって棄却された素数候補を増加させるため
の多倍長の整数を被除数、素数テーブルの要素を除数と
したときの剰余を予め計算し、この値を増加値剰余テー
ブルとして保持する。そしてこの増加値剰余テーブルの
値を用いて、ふるい法に必要な素数テーブルの要素を法
としたときの乱整数の剰余を求める計算を行う。素数テ
ーブルの要素の大きさを1ワードより数ビット小さくす
ると、この増加値剰余テーブルの要素の大きさも1ワー
ドより数ビット小さくなるため、この計算は1ワードで
実行できる。このように、P−1法などの安全対策を施
した法数を生成する場合でも、処理の始めに増加値剰余
テーブルを作成することによって、以後繰り返される多
倍長の計算を回避することができる。
代わりに、1ワードより数ビット小さい乱数またはd
(i)=a+biの形の整数集合を用いれば、素数集合
を記憶保持手段に保持しておく必要がなく、メモリ上に
除数集合を保持する必要がないため、演算に必要なメモ
リ量を削減することができる。
て説明するフローチャートである。
ーチャートである。
ーチャートである。
ーチャートである。
フローチャートである。
ック図である。
Claims (13)
- 【請求項1】 整数Aに対し、整数Aとは異なる整数B
またはBの倍数分だけ整数Aと異なる整数の集合Cに属
する要素の素数性を判定する素数判定方法において、 整数BまたはBの倍数を被除数とし、一つまたは複数の
整数を除数または除数集合とした場合の剰余または剰余
の集合を記憶手段に記憶するステップと、 集合Cの要素を生成するステップと、 生成された集合Cの要素に対し、対応する剰余を上記記
憶手段から取り出すステップと、 上記記憶手段から取り出された剰余を用いて、上記生成
された集合Cの要素を被除数とし上記一つまたは複数の
整数を除数とした場合の剰余を算出するステップとを有
することを特徴とする素数判定方法。 - 【請求項2】 前記第1項の素数判定方法において、任
意の整数aと任意の素数tに対してp=1+2atまた
はp=−1+2atの形の整数を要素とする集合を素数
性を判定する集合Cとする素数判定方法。 - 【請求項3】 前記第1項の素数判定方法において、t
を任意の素数あるいは1として、任意の整数aに対して
r=1+2atの形となる素数rと、任意の素数sを法
としたときのrの逆数Rと、任意の整数bを用いて、p
=1+2(bs−R)rの形となる整数を要素とする集
合を素数性を判定する集合Cとする素数判定方法。 - 【請求項4】 前記第1項の素数判定方法において、t
を任意の素数あるいは1として、任意の整数aに対して
r=−1+2atの形となる素数rと、rを法としたと
きの任意の素数sの逆数Sと、 任意の整数bを用い
て、p=−1+2(br+S)sの形となる整数を要素
とする集合を素数性を判定する集合Cとする素数判定方
法。 - 【請求項5】 前記第1項の素数判定方法において、任
意の素数s、rに対してU=sr-1−rs-1 mod r
sとなる整数Uと任意の整数mを用いて、p=U+2m
rsの形となる整数を要素とする集合を素数性を判定す
る集合Cとする素数判定方法。 - 【請求項6】 前記第1項の素数判定方法において、任
意の整数i、jと、任意の素数s、rと、rを法とした
ときのsの逆数Sと、sを法としたときのrの逆数R
と、U=(−1+is)+(2+jr−is)sS m
od rsまたはU=(1+i)+(−2+is−j
r)sR mod rsを満たす整数Uを用いて、p=
U+2mrsの形となる整数を要素とする集合を素数性
を判定する集合Cとする素数判定方法。 - 【請求項7】 前記第1項の素数判定方法において、該
剰余または該剰余集合を求めるのに除数として一つ又は
複数の素数又は乱数を用いた素数判定方法。 - 【請求項8】 前記第1項の素数判定方法において、該
剰余または該剰余集合を求めるのに除数としてd(i)
=a+biの形の整数集合を用いた素数判定方法。 - 【請求項9】 素数は該素数および1とそれらの正負を
換えたもの以外の数を除数とした場合に剰余が零と異な
ることを利用した素数判定方法において、該剰余または
該剰余集合を求めるのに除数としてd(i)=a+bi
の形の整数集合を用いたことを特徴とする素数判定方
法。 - 【請求項10】 整数Aに対し、整数Aとは異なる整数
BまたはBの倍数分だけ整数Aと異なる整数の集合Cに
属する要素の素数性を判定する素数判定法において、 整数BまたはBの倍数を被除数とし、一つまたは複数の
整数を除数または除数集合とした場合の剰余または剰余
の集合を記憶手段に記憶するステップと、 集合Cの要素を生成するステップと、 生成された集合Cの要素に対し、対応する剰余を上記記
憶手段から取り出すステップと、 上記記憶手段から取り出された剰余を用いて、上記生成
された集合Cの要素を被除数とし上記一つまたは複数の
整数を除数とした場合の剰余を算出するステップと、 算出された剰余に基づいて、集合Cの所定の要素が、そ
の要素自体、1、要素自体の正負の符号を変えたもの以
外の数を除数とした場合に剰余が非零になるときに、上
記所定の要素を素数候補として出力するステップとを有
することを特徴とする素数生成方法。 - 【請求項11】 請求項9の素数生成方法において、出
力された素数候補に対し確率的素数判定法あるいは確定
的素数判定法により素数性の判定を行う素数生成方法。 - 【請求項12】 整数Aに対し、整数Aとは異なる整数
BまたはBの倍数分だけ整数Aと異なる整数の集合Cに
属する要素の素数性を判定する素数判定装置において、 整数BまたはBの倍数を被除数とし、一つまたは複数の
整数を除数または除数集合とした場合の剰余または剰余
の集合を記憶する記憶手段と、 集合Cの要素を生成する手段と、 生成された集合Cの要素に対し、対応する剰余を上記記
憶手段から取り出す手段と、 上記記憶手段から取り出された剰余を用いて、上記生成
された集合Cの要素を被除数とし上記一つまたは複数の
整数を除数とした場合の剰余を算出する手段とを有する
ことを特徴とする素数判定装置。 - 【請求項13】 整数Aに対し、整数Aとは異なる整数
BまたはBの倍数分だけ整数Aと異なる整数の集合Cに
属する要素の素数性を判定するためのコンピュータプロ
グラム製品において、 整数BまたはBの倍数を被除数とし、一つまたは複数の
整数を除数または除数集合とした場合の剰余または剰余
の集合を記憶手段に記憶するステップと、 集合Cの要素を生成するステップと、 生成された集合Cの要素に対し、対応する剰余を上記記
憶手段から取り出すステップと、 上記記憶手段から取り出された剰余を用いて、上記生成
された集合Cの要素を被除数とし上記一つまたは複数の
整数を除数とした場合の剰余を算出するステップとをコ
ンピュータに実行させるために用いるコンピュータプロ
グラム製品。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34904796A JP3796867B2 (ja) | 1996-12-26 | 1996-12-26 | 素数判定方法および装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34904796A JP3796867B2 (ja) | 1996-12-26 | 1996-12-26 | 素数判定方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10187037A true JPH10187037A (ja) | 1998-07-14 |
JP3796867B2 JP3796867B2 (ja) | 2006-07-12 |
Family
ID=18401137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34904796A Expired - Fee Related JP3796867B2 (ja) | 1996-12-26 | 1996-12-26 | 素数判定方法および装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3796867B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005531031A (ja) * | 2002-06-21 | 2005-10-13 | アトメル・コーポレイション | 暗号化適用のための推定素数の検査 |
JP2007003946A (ja) * | 2005-06-24 | 2007-01-11 | Nippon Telegr & Teleph Corp <Ntt> | 離散対数演算装置、方法及びプログラム |
US8489665B2 (en) | 2008-01-28 | 2013-07-16 | Fujitsu Limited | Communication apparatus, method of checking received data size, multiple determining circuit, and multiple determination method |
-
1996
- 1996-12-26 JP JP34904796A patent/JP3796867B2/ja not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005531031A (ja) * | 2002-06-21 | 2005-10-13 | アトメル・コーポレイション | 暗号化適用のための推定素数の検査 |
JP4756117B2 (ja) * | 2002-06-21 | 2011-08-24 | インサイド コンタクトレス ソシエテ アノニム | 暗号化適用のための推定素数の検査 |
JP2007003946A (ja) * | 2005-06-24 | 2007-01-11 | Nippon Telegr & Teleph Corp <Ntt> | 離散対数演算装置、方法及びプログラム |
JP4663421B2 (ja) * | 2005-06-24 | 2011-04-06 | 日本電信電話株式会社 | 離散対数演算装置、方法及びプログラム |
US8489665B2 (en) | 2008-01-28 | 2013-07-16 | Fujitsu Limited | Communication apparatus, method of checking received data size, multiple determining circuit, and multiple determination method |
Also Published As
Publication number | Publication date |
---|---|
JP3796867B2 (ja) | 2006-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101089121B1 (ko) | 빠른 집합 검증 방법 및 그 장치 | |
US7904498B2 (en) | Modular multiplication processing apparatus | |
US6404890B1 (en) | Generating RSA moduli including a predetermined portion | |
US8862651B2 (en) | Method and apparatus for modulus reduction | |
JP2002528771A (ja) | 耐パワーシグニチャーアタック暗号法 | |
Renes et al. | qDSA: small and secure digital signatures with curve-based Diffie–Hellman key pairs | |
AU2001265967B2 (en) | Cryptographic method and cryptographic device | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
US20040125948A1 (en) | Montgomery modular multiplier using a compressor and multiplication method | |
US6763366B2 (en) | Method for calculating arithmetic inverse over finite fields for use in cryptography | |
US20090028323A1 (en) | Enhancing the security of public key cryptosystem implementations | |
US6609141B1 (en) | Method of performing modular inversion | |
JPH10187037A (ja) | 素数判定方法および装置 | |
US8290151B2 (en) | Device and method for determining an inverse of a value related to a modulus | |
JP3750295B2 (ja) | 素数生成方法および装置 | |
Somsuk | A new modified integer factorization algorithm using integer modulo 20's technique | |
Knezevic et al. | Modular reduction without precomputational phase | |
JP3626315B2 (ja) | 剰余算装置、情報処理装置及び剰余算方法 | |
CN117254909B (zh) | 一种快速生成高概率原根的计算方法、系统及存储介质 | |
Yakymenko et al. | Polynomial Rabin Cryptosystem Based on the Operation of Addition | |
Thwe et al. | EXTENDED POLLARD’S RHO FACTORIZATION ALGORITHM FOR FINDING FACTORS IN COMPOSITE NUMBER | |
JPH076025A (ja) | 冪剰余演算方法および装置 | |
JP3401196B2 (ja) | 事前計算を用いた複数生成元に対する演算装置、そのプログラム記録媒体、及び演算方法 | |
JP3518680B2 (ja) | 素数生成装置 | |
Mohammadi et al. | A fast and secure RSA public key cryptosystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Effective date: 20050315 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A521 | Written amendment |
Effective date: 20050516 Free format text: JAPANESE INTERMEDIATE CODE: A523 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051206 |
|
A521 | Written amendment |
Effective date: 20060116 Free format text: JAPANESE INTERMEDIATE CODE: A523 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060202 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060328 |
|
A61 | First payment of annual fees (during grant procedure) |
Effective date: 20060410 Free format text: JAPANESE INTERMEDIATE CODE: A61 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110428 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120428 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |