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
Application number
JP34904796A
Other languages
English (en)
Other versions
JP3796867B2 (ja
Inventor
Koji Suzuki
耕二 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP34904796A priority Critical patent/JP3796867B2/ja
Publication of JPH10187037A publication Critical patent/JPH10187037A/ja
Application granted granted Critical
Publication of JP3796867B2 publication Critical patent/JP3796867B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】 P−1法などの安全対策を施した法数を生成
する場合でも、処理の始めに増加値剰余テーブルを作成
することによって、以後繰り返される多倍長の計算を回
避する。 【解決手段】 ふるい法によって棄却された素数候補を
増加させるための多倍長の整数を被除数、素数テーブル
の要素を除数としたときの剰余を予め計算し、この値を
増加値剰余テーブルとして保持する(203)。そして
この増加値剰余テーブルの値を用いて、ふるい法に必要
な素数テーブルの要素を法としたときの乱整数の剰余を
求める計算を行う(303)。素数テーブルの要素の大
きさを1ワードより数ビット小さくし、この増加値剰余
テーブルの要素の大きさも1ワードより数ビット小さく
する。乱整数の剰余の計算は1ワードで実行できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えば公開鍵暗号
に用いる法数生成法に利用される素数判定技術に関する
ものであり、特にP−1法、P+1法などの素因数分解
攻撃等に対抗するための法数生成に用いることができる
ようにしたものである。
【0002】
【従来の技術】近年のパーソナル・コンピュータの急激
な発展と普及、そしてインターネット/イントラネット
をはじめとする通信ネットワークの社会への急速な浸
透、そしてCD−ROMなどの大規模な情報媒体の普及
を背景として、デジタル情報を簡便に利用者に送り届
け、デジタル情報の利用に対する課金を確実に行える技
術の普及を望む声が高まっている。
【0003】このような情報セキュリティを確保するた
めの技術として、暗号技術とりわけ公開鍵暗号が注目を
集めている。公開鍵暗号の一種であるRSA(Rive
st、Shamir、Adleman)暗号は、データ
保護、認証、電子署名を可能とし、その安全性の高さか
ら公開鍵暗号の標準として確立されつつある。今後デジ
タル情報社会の発展と共にRSA暗号の利用機会は急速
に拡大することが予想される。
【0004】一般にRSA暗号では、二つの大きな素数
の積からなる合成数を法数として用いる。一般にこの素
数の生成では、ふるい法と確率的素数判定法の二段階の
素数判定が行われる。ふるい法は、素数性を判定する数
を、予め用意された素数集合の要素で割ったときの剰余
が零かどうか、つまり割り切れるかどうかで素数判定を
行う方法である。確率的素数判定法は、調べたい数があ
る確率をもって合成数であることを判定する方法で、F
ermat判定法、Solovay−Strassen
法、Miller−Rabin法などが知られている。
確率的素数判定法は計算負荷が大きいので、通常の素数
生成では、ふるい法が併用されることが多い。
【0005】一般的な素数生成の手順は以下の通りであ
る。まず乱数生成法によって奇数の乱数を生成する。乱
数生成法には、非線形FSR乱数発生方式などが知られ
ている。この乱数に対してふるい法を実行する。これに
よって合成数と判定された場合は、この乱数を適当に増
減するか、乱数を作り直すかして、再びふるい法による
判定を行う。この処理をふるい法が合成数と判定しない
素数候補値が得られるまで繰り返す。ふるい法が合成数
と判定しない素数候補値が得られたら、この数をFer
mat判定法などの確率的素数判定法にかける。確率的
素数判定法によって、合成数と判定されない場合は、こ
れを素数として出力する。合成数と判定される場合に
は、この値を適当に増減するか、乱数を作り直すかし
て、再びふるい法による判定にかける。以上のような手
順により、素数を獲得する。
【0006】RSA暗号の安全性は、上記法数の素因数
分解の困難さに根拠を置いている。したがって、素因数
分解法がそのままRSA暗号の攻撃法となる。この他、
素因数分解攻撃法以外にもRSA暗号の周期性を利用し
た攻撃法が知られている。
【0007】代表的な素因数分解法として、P−1法、
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が十分大きな素因数を持てばこの攻撃法
の適用が困難なことが知られている。
【0008】上記のP−1法、P+1法に対抗するため
従来技術として、次のアルゴリズムAに従って素因数を
決める方法が知られている。 [アルゴリズムA] (ステップA1) 適当に大きな素数tを生成する。 (ステップA2) r=2at+1の形の素数rを生成
する。 (ステップA3) 適当に大きな素数sを生成する。 (ステップA4) 整数Rを法sでのrの逆数として、
P=1+2(bs−R)rの形の素数Pを生成する。
【0009】上記アルゴリズムAにしたがって生成され
た素数を因数とする法数は、P−1法、P+1法、そし
てRSA暗号の周期性を利用した攻撃法に対抗できる法
数となっている。しかし、上記の各ステップでふるい法
と確率的素数判定法を繰り返すため、アルゴリズムAに
従って素数生成を行うには膨大な計算量を必要とする。
【0010】また上記アルゴリズムAとは別に、安全対
策を施した法数を生成する従来技術として、J.Gor
donによる方法がある。この方法は任意の素数s,r
に対してU=sr-1−rs-1 mod rsとなる整数U
と任意の整数mを用いて、p=U+2mrsの形となる
整数を法数の素因数の候補とする。ところがこの計算に
は多倍長のべき乗剰余演算を伴うため、膨大な量の演算
を必要とする。この問題を解決するために特開平2−3
7383号公報の素数生成手法が提案されているが、特
開平2−37383号公報の手法も多倍長数の除算を数
多く繰り返す必要があるため、パーソナル・コンピュー
タなどでは大きな計算負荷となってしまう。
【0011】上記のアルゴリズムA、特開平2−373
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を素
数候補として出力する。
【0012】上記アルゴリズムBからわかるように、剰
余テーブル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法を利用することはできない。
【0013】
【発明が解決しようとする課題】RSA暗号の法数生成
を行うには、一般に第一段階としてふるい法を実行し、
得られた素数候補をさらにFermat判定法やMil
ler−Rabin判定法など、確率的素数判定法を用
いて素数性の判定を行う。第一段階のふるい法では多倍
長数の除算を繰り返すため、この処理は計算負荷の重い
ものとなる。これらの2段階の処理を繰り返し、最終的
に法数の因数となる素数を獲得する。加えて、P−1法
やP+1法、そしてRSA暗号の周期性を利用した攻撃
法対策を施すには膨大な多倍長演算を必要とする。
【0014】このため処理能力の低いパーソナル・コン
ピュータなどで、素因数分解攻撃やRSA暗号の周期性
を利用した攻撃に対抗しうる法数生成を行うには、多倍
長演算を削減する技術、および法数生成処理に必要とさ
れるメモリ量を削減する技術が重要となる。
【0015】本発明の第一の目的は、上記のP−1法や
P+1法、そしてRSA暗号の周期性を利用した攻撃法
対策を施した法数の生成時に行われる素数判定・生成法
に必要な多倍長演算を削減する技術を提供することにあ
る。
【0016】また本発明の第二の目的は、上記の法数生
成に必要なメモリ量を削減する技術を提供することにあ
る。
【0017】
【課題を解決するための手段】本発明はで上記の課題を
解決するために、次に述べるような手段を用いる。 (1) 増加値剰余テーブルの作成 P−1法やP+1法、そしてRSA暗号の周期性を利用
した攻撃法対策を施した法数を生成するには上記のアル
ゴリズムA、J.Gordonの方法などで素数生成を
行わなければならない。これらの方法で、ふるい法によ
って素数候補値が棄却された場合には、元の素数候補に
多倍長の整数を加えたものを次の素数候補としなければ
ならない。この新しい素数候補をふるい法に再びかける
ため、多倍長の除算が繰り返し行われることになる。
【0018】本発明ではふるい法によって棄却された素
数候補を増加させるための多倍長の整数を被除数、素数
テーブルの要素を除数としたときの剰余を予め計算し、
この値を増加値剰余テーブルとして保持する。そしてこ
の増加値剰余テーブルの値を用いて、ふるい法に必要な
素数テーブルの要素を法としたときの乱整数の剰余を求
める計算を行う。素数テーブルの要素の大きさを1ワー
ドより数ビット小さくすると、この増加値剰余テーブル
の要素の大きさも1ワードより数ビット小さくなるた
め、この計算は1ワードで実行できる。このように、P
−1法などの安全対策を施した法数を生成する場合で
も、処理の始めに増加値剰余テーブルを作成することに
よって、以後繰り返される多倍長の計算を回避すること
ができる。 (2) 除数集合の実行時生成 通常のふるい法で用いる素数集合の代わりに、1ワード
より数ビット小さい乱数またはd(i)=a+biの形
の整数集合を用いる。この場合、素数集合を記憶保持手
段に保持しておく必要がなく、メモリ上に除数集合を保
持する必要がないため、演算に必要なメモリ量を削減す
ることができる。
【0019】すなわち、本発明によれば、上述の目的を
達成するために、整数Aに対し、整数Aとは異なる整数
BまたはBの倍数分だけ整数Aと異なる整数の集合Cに
属する要素の素数性を判定する素数判定方法において、
整数BまたはBの倍数を被除数とし、一つまたは複数の
整数を除数または除数集合とした場合の剰余または剰余
の集合を記憶手段に記憶するステップと、集合Cの要素
を生成するステップと、生成された集合Cの要素に対
し、対応する剰余を上記記憶手段から取り出すステップ
と、上記記憶手段から取り出された剰余を用いて、上記
生成された集合Cの要素を被除数とし上記一つまたは複
数の整数を除数とした場合の剰余を算出するステップと
を実行するようにしている。
【0020】この場合、任意の整数aと任意の素数tに
対して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とすることができる。
【0021】また、該剰余または該剰余集合を求めるの
に除数として一つ又は複数の素数又は乱数を用いること
ができる。また、該剰余または該剰余集合を求めるのに
除数としてd(i)=a+biの形の整数集合を用いる
ことができる。
【0022】また、本発明によれば、ふるい法による素
数判定方法において、除数としてd(i)=a+biの
形の整数集合を用いるようにしている。
【0023】また、本発明は素数生成方法として実現す
ることもできる。また本発明は、装置の実現形態を採用
しても良く、コンピュータプログラムの実現形態を採用
することもできる。
【0024】
【発明の実施の態様】以下に本発明の実施例を説明す
る。 [実施例1]図1から4を用いて、本発明によるP−1
法、P+1法、そしてRSA暗号の周期性を利用した攻
撃法対策を施した法数の素因数をアルゴリズムAに従っ
て生成する場合の実施例について説明する。
【0025】まず図1を用いて本発明による素因数生成
の基本構成を説明する。図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を出力する。
【0026】上記ステップ105においてrとsは素数
なので、二つの数は互いに素である。つまりその最大公
約数は1となるので、ユークリッドの互除法を用いて法
sでの素数rの逆数Rを計算することができる。
【0027】次にステップ102、104における素数
生成法について詳細に説明する。二つのステップの手順
は全く同じなので、ここではステップ102について説
明する。
【0028】ステップ102で生成されるのは単純な形
の素数なので、従来技術のp−delta法をそのまま
用いることができる。p−delta法を繰り返し実行
し、1ワードよりも数ビット小さい相異なる素数の集合
のどの要素でも割り切れない素数候補を獲得した後、本
実施例ではFermat判定法による本格的な判定を行
う。Fermat判定法は、Fermatの小定理に基
づく判定法で、vを正整数とするとき任意の素数xに対
して
【0029】
【数1】vx-1≡1 mod x が成立することを利用している。上式が不成立のときは
合成数と判定される。
【0030】図2はステップ102での処理を詳細に説
明したものである。ここで、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を出力する。
【0031】上記ステップ202における乱数生成を行
う方法として、例えば非線形FSR乱数発生方式などが
知られている。
【0032】次にステップ103における素数生成法に
ついて詳細に説明する。ここでは、先の従来例のアルゴ
リズムAと同様にしてr=2at+1を生成してその素
数性を判定する。アルゴリズムAのステップA2では、
r=2at+1の形の素数候補を得るために、aを順に
増加させていく。このとき、a=basea+adel
ta、baseaをaの初期値、adeltaをaの増
加値すると、
【0033】
【数2】r mod primes[i]≡(2・t・
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で代替することができる。ここで、
【0034】
【数3】remainders[i]=2・t・bas
ea+1 mod primes[i] muldeltas[i]=2・t mod prim
es[i] とおくと、
【0035】
【数4】r mod primes[i]=remai
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暗号の周期性を利用
した攻撃法対策を施す法数の生成において繰り返し実行
されるふるい法に必要な多倍長演算を大幅に削減するこ
とができる。
【0036】上記のふるい法に加えて、本実施例ステッ
プ103ではFermat判定法を実行し、二段階構成
の素数生成を行う。
【0037】図3は、以上説明したステップ103での
処理をより詳細に説明するものである。ここで、ステッ
プ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を出力する。
【0038】次にステップ106における素数生成法に
ついて詳細に説明する。上記アルゴリズムAのステップ
A4での計算の場合、ステップ202と同様にb=ba
sab+bdelta、basebをbの初期値、bd
eltaをbの増加値とおく。ここでbasebは非線
形FSR乱数発生方式などで生成した多倍長の乱数とす
る。このとき、
【0039】
【数5】remainders[i]=2・r・(s・
baseb−R)+1 modprimes[i] muldeltas[i]=2・r・s mod pr
imes[i] とおくと、
【0040】
【数6】p mod primes[i]=remai
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暗号の周期性を利用した攻撃法対策を施す法数の生成
において繰り返し実行されるふるい法に必要な多倍長演
算を大幅に削減できることがわかる。
【0041】上記のふるい法に加えて、本実施例ステッ
プ106ではFermat判定法を実行し、二段階構成
の素数生成を行う。
【0042】図4は上述したステップ106での処理を
より詳細に説明するものである。ここで、ステップ10
4で生成された素数s、およびステップ103で生成さ
れた素数rが与えられているとする。ステップ401か
ら415までの処理は以下の通りである。 (ステップ401) スタート。 (ステップ402) 1ワードの乱数を生成し、初期値
basebとする。 (ステップ403) ステップ104で生成された素数
sとステップ103で生成された素数r、およびステッ
プ402で生成されたbasebを使って、
【0043】
【数7】remainders[i]=2・r・(s・
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を出力する。
【0044】上記によりアルゴリズムAに基づいたP−
1法やP+1法、そしてRSA暗号の周期性を利用した
攻撃法に対抗できる法数の素因数pを獲得できる。
【0045】[実施例2]つぎに、本発明を用いた、P
−1法、P+1法、RSA暗号の周期性を利用した攻撃
法、およびFermatの素因数分解法にも対抗できる
法数生成の実施例について説明する。
【0046】上記実施例1と同じようにして、二つの大
きな素数p,qを生成する。ただし、Lを十分大きな数
として、|p−q|>Lが成立するようにする。このと
き法数n=pqは、P−1法やP+1法、そしてRSA
暗号の周期性を利用した攻撃法に対抗できるだけでな
く、Fermatの素因数分解法にも対抗することがで
きる。
【0047】図5を用いて、本実施例の詳細な説明を行
う。以下で手順1は図1に示した素数生成の手順とす
る。ステップ501から506までの処理は以下の通り
である。 (ステップ501) スタート。 (ステップ502) 手順1によって素数pを生成。 (ステップ503) 手順1によって素数qを生成。 (ステップ504) |p−q|>Lかどうかを判定。 上式が成立すれば、ステップ505へ。上式が成立しな
ければ、ステップ502へ。 (ステップ505) n=pqとする。 (ステップ506) 終了。nを法数として出力する。
【0048】以上のように法数を生成すれば、P−1
法、P+1法、RSA暗号の周期性を利用した攻撃法、
およびFermatの素因数分解法にも対抗できる法数
nを生成することができる。
【0049】[実施例3]つぎに、実施例1の素数生成
手法をハードウエア態様で実現した実施例について説明
する。
【0050】図6は、実施例1の素数生成装置を示し、
この図において、素数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を参照して素数性の判定を行う。
【0051】素数r−生成判定部15はr=2at+1
の素数候補を生成し、整数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に関連
して説明したとおりである。
【0052】また、R−生成部18は素数r−生成判定
部15から得た素数rおよび素数s−生成部12から得
た素数sを用いて、Rs≡1 mod sとなるRを作
成する。
【0053】素数p−生成判定部19は、素数s−生成
判定部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
に関連して説明したとおりである。
【0054】以上の結果、 P−1法、P+1法、RS
A暗号の周期性を利用した攻撃法、およびFermat
の素因数分解法にも対抗できる素数を生成できる。しか
も、多倍長の計算を回避できる。
【0055】
【発明の効果】以上説明したように、本発明によれば、
ふるい法によって棄却された素数候補を増加させるため
の多倍長の整数を被除数、素数テーブルの要素を除数と
したときの剰余を予め計算し、この値を増加値剰余テー
ブルとして保持する。そしてこの増加値剰余テーブルの
値を用いて、ふるい法に必要な素数テーブルの要素を法
としたときの乱整数の剰余を求める計算を行う。素数テ
ーブルの要素の大きさを1ワードより数ビット小さくす
ると、この増加値剰余テーブルの要素の大きさも1ワー
ドより数ビット小さくなるため、この計算は1ワードで
実行できる。このように、P−1法などの安全対策を施
した法数を生成する場合でも、処理の始めに増加値剰余
テーブルを作成することによって、以後繰り返される多
倍長の計算を回避することができる。
【0056】また、通常のふるい法で用いる素数集合の
代わりに、1ワードより数ビット小さい乱数またはd
(i)=a+biの形の整数集合を用いれば、素数集合
を記憶保持手段に保持しておく必要がなく、メモリ上に
除数集合を保持する必要がないため、演算に必要なメモ
リ量を削減することができる。
【図面の簡単な説明】
【図1】 本発明の実施例1の素数生成方法を全体とし
て説明するフローチャートである。
【図2】 図1のステップ102の詳細を説明するフロ
ーチャートである。
【図3】 図1のステップ103の詳細を説明するフロ
ーチャートである。
【図4】 図1のステップ106の詳細を説明するフロ
ーチャートである。
【図5】 本発明の実施例2の法数生成方法を説明する
フローチャートである。
【図6】 本発明の実施例3の素数判定装置を示すブロ
ック図である。
【符号の説明】
15 素数r−生成判定部 16、17 素数r−生成判定部15の剰余テーブル 19 素数p−生成判定部 20、21 素数p−生成判定部19の剰余テーブル

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 整数Aに対し、整数Aとは異なる整数B
    またはBの倍数分だけ整数Aと異なる整数の集合Cに属
    する要素の素数性を判定する素数判定方法において、 整数BまたはBの倍数を被除数とし、一つまたは複数の
    整数を除数または除数集合とした場合の剰余または剰余
    の集合を記憶手段に記憶するステップと、 集合Cの要素を生成するステップと、 生成された集合Cの要素に対し、対応する剰余を上記記
    憶手段から取り出すステップと、 上記記憶手段から取り出された剰余を用いて、上記生成
    された集合Cの要素を被除数とし上記一つまたは複数の
    整数を除数とした場合の剰余を算出するステップとを有
    することを特徴とする素数判定方法。
  2. 【請求項2】 前記第1項の素数判定方法において、任
    意の整数aと任意の素数tに対してp=1+2atまた
    はp=−1+2atの形の整数を要素とする集合を素数
    性を判定する集合Cとする素数判定方法。
  3. 【請求項3】 前記第1項の素数判定方法において、t
    を任意の素数あるいは1として、任意の整数aに対して
    r=1+2atの形となる素数rと、任意の素数sを法
    としたときのrの逆数Rと、任意の整数bを用いて、p
    =1+2(bs−R)rの形となる整数を要素とする集
    合を素数性を判定する集合Cとする素数判定方法。
  4. 【請求項4】 前記第1項の素数判定方法において、t
    を任意の素数あるいは1として、任意の整数aに対して
    r=−1+2atの形となる素数rと、rを法としたと
    きの任意の素数sの逆数Sと、 任意の整数bを用い
    て、p=−1+2(br+S)sの形となる整数を要素
    とする集合を素数性を判定する集合Cとする素数判定方
    法。
  5. 【請求項5】 前記第1項の素数判定方法において、任
    意の素数s、rに対してU=sr-1−rs-1 mod r
    sとなる整数Uと任意の整数mを用いて、p=U+2m
    rsの形となる整数を要素とする集合を素数性を判定す
    る集合Cとする素数判定方法。
  6. 【請求項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. 【請求項7】 前記第1項の素数判定方法において、該
    剰余または該剰余集合を求めるのに除数として一つ又は
    複数の素数又は乱数を用いた素数判定方法。
  8. 【請求項8】 前記第1項の素数判定方法において、該
    剰余または該剰余集合を求めるのに除数としてd(i)
    =a+biの形の整数集合を用いた素数判定方法。
  9. 【請求項9】 素数は該素数および1とそれらの正負を
    換えたもの以外の数を除数とした場合に剰余が零と異な
    ることを利用した素数判定方法において、該剰余または
    該剰余集合を求めるのに除数としてd(i)=a+bi
    の形の整数集合を用いたことを特徴とする素数判定方
    法。
  10. 【請求項10】 整数Aに対し、整数Aとは異なる整数
    BまたはBの倍数分だけ整数Aと異なる整数の集合Cに
    属する要素の素数性を判定する素数判定法において、 整数BまたはBの倍数を被除数とし、一つまたは複数の
    整数を除数または除数集合とした場合の剰余または剰余
    の集合を記憶手段に記憶するステップと、 集合Cの要素を生成するステップと、 生成された集合Cの要素に対し、対応する剰余を上記記
    憶手段から取り出すステップと、 上記記憶手段から取り出された剰余を用いて、上記生成
    された集合Cの要素を被除数とし上記一つまたは複数の
    整数を除数とした場合の剰余を算出するステップと、 算出された剰余に基づいて、集合Cの所定の要素が、そ
    の要素自体、1、要素自体の正負の符号を変えたもの以
    外の数を除数とした場合に剰余が非零になるときに、上
    記所定の要素を素数候補として出力するステップとを有
    することを特徴とする素数生成方法。
  11. 【請求項11】 請求項9の素数生成方法において、出
    力された素数候補に対し確率的素数判定法あるいは確定
    的素数判定法により素数性の判定を行う素数生成方法。
  12. 【請求項12】 整数Aに対し、整数Aとは異なる整数
    BまたはBの倍数分だけ整数Aと異なる整数の集合Cに
    属する要素の素数性を判定する素数判定装置において、 整数BまたはBの倍数を被除数とし、一つまたは複数の
    整数を除数または除数集合とした場合の剰余または剰余
    の集合を記憶する記憶手段と、 集合Cの要素を生成する手段と、 生成された集合Cの要素に対し、対応する剰余を上記記
    憶手段から取り出す手段と、 上記記憶手段から取り出された剰余を用いて、上記生成
    された集合Cの要素を被除数とし上記一つまたは複数の
    整数を除数とした場合の剰余を算出する手段とを有する
    ことを特徴とする素数判定装置。
  13. 【請求項13】 整数Aに対し、整数Aとは異なる整数
    BまたはBの倍数分だけ整数Aと異なる整数の集合Cに
    属する要素の素数性を判定するためのコンピュータプロ
    グラム製品において、 整数BまたはBの倍数を被除数とし、一つまたは複数の
    整数を除数または除数集合とした場合の剰余または剰余
    の集合を記憶手段に記憶するステップと、 集合Cの要素を生成するステップと、 生成された集合Cの要素に対し、対応する剰余を上記記
    憶手段から取り出すステップと、 上記記憶手段から取り出された剰余を用いて、上記生成
    された集合Cの要素を被除数とし上記一つまたは複数の
    整数を除数とした場合の剰余を算出するステップとをコ
    ンピュータに実行させるために用いるコンピュータプロ
    グラム製品。
JP34904796A 1996-12-26 1996-12-26 素数判定方法および装置 Expired - Fee Related JP3796867B2 (ja)

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)

* Cited by examiner, † Cited by third party
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

Cited By (5)

* Cited by examiner, † Cited by third party
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