JP3750295B2 - 素数生成方法および装置 - Google Patents
素数生成方法および装置 Download PDFInfo
- Publication number
- JP3750295B2 JP3750295B2 JP21036597A JP21036597A JP3750295B2 JP 3750295 B2 JP3750295 B2 JP 3750295B2 JP 21036597 A JP21036597 A JP 21036597A JP 21036597 A JP21036597 A JP 21036597A JP 3750295 B2 JP3750295 B2 JP 3750295B2
- Authority
- JP
- Japan
- Prior art keywords
- prime
- integer
- factors
- prime number
- candidate
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は公開鍵暗号に用いる法数生成法に利用される素数判定・生成法に関するものであり、特に改良されたP−1法、P+1法などの素因数分解攻撃等に対抗するための法数生成に用いることができる。
【0002】
【従来の技術】
近年情報セキュリティを確保するための技術として、暗号技術とりわけ公開鍵暗号が注目を集めている。公開鍵暗号の一種であるRSA(Rivest−Shamir−Adelman)暗号は、データ保護、認証、電子署名を可能とし、その安全性の高さから公開鍵暗号の標準として確立されつつある。今後デジタル情報社会の発展と共にRSA暗号の利用機会は急速に拡大することが予想される。
【0003】
一般にRSA暗号では、二つの大きな素数の積からなる合成数を法数として用いる。一般にこの素数の生成では、ふるい法と確率的素数判定法の二段階の素数判定が行われる。ふるい法は、素数性を判定する数を、予め用意された素数集合の要素で割ったときの剰余が零かどうか、つまり割り切れるかどうかで素数判定を行う方法である。確率的素数判定法は、調べたい数がある確率をもって合成数であることを判定する方法で、Fermat判定法、Solovay−Strassen法、Miller−Rabin法などが知られている。確率的素数判定法は計算負荷が大きいので、通常の素数生成では、ふるい法が併用されることが多い。
【0004】
一般的な素数生成の手順は以下の通りである。まず乱数生成法によって奇数の乱数を生成する。乱数生成法には、非線形FSR乱数発生方式などが知られている。この乱数に対してふるい法を実行する。これによって合成数と判定された場合は、この乱数を適当に増減するか、乱数を作り直すかして、再びふるい法による判定を行う。この処理をふるい法が合成数と判定しない素数候補値が得られるまで繰り返す。ふるい法が合成数と判定しない素数候補値が得られたら、この数をFermat判定法などの確率的素数判定法にかける。確率的素数判定法によって、合成数と判定されない場合は、これを素数として出力する。合成数と判定される場合には、この値を適当に増減するか、乱数を作り直すかして、再びふるい法による判定にかける。以上のような手順により、素数を獲得する。
【0005】
RSA暗号の安全性は、上記法数の素因数分解の困難さに根拠を置いている。したがって、素因数分解法がそのままRSA暗号の攻撃法となる。この他、素因数分解攻撃法以外にもRSA暗号の周期性を利用した攻撃法が知られている。
【0006】
代表的な素因数分解法として、P−1法、改良されたP−1法、P+1法、改良されたP+1法、Fermatの素因数分解法が挙げられる。P−1法およびP+1法はRSA暗号の法数の素因数の一つをpとするとき、p−1あるいはp+1が小さな素数の積になっている場合に有効な方法である。このため、P−1法、P+1の方法に対抗するためには、p−1あるいはp+1が大きな素因数を持つようにすればよい。また、改良されたP−1法および改良されたP+1法は法数の素因数の一つをpとするとき、p−1あるいはp+1が一つの素因数を除いて小さな素数の積になっている場合に有効な方法である。このため、改良されたP−1法、改良されたP+1の方法に対抗するためには、p−1あるいはp+1が大きな素因数を少なくとも二つ持つようにすればよい。Fermatの素因数分解法は法数の二つの素因数の大きさがほぼ同じときに有効な方法で、これに対しては素因数の大きさを十分異なるようにすればよく、簡単に対抗策を講じることができる。また、RSA暗号の周期性を利用した攻撃法に対しては、p−1の素因数の一つをrとすると、r−1が十分大きな素因数を持てばこの攻撃法の適用が困難なことが知られている。
【0007】
上記の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を生成する。
【0008】
上記アルゴリズムAにしたがって生成された素数を因数とする法数は、P−1法、P+1法、そしてRSA暗号の周期性を利用した攻撃法に対抗できる法数となっている。しかし、上記の各ステップでふるい法と確率的素数判定法を繰り返すため、アルゴリズムAに従って素数生成を行うには膨大な計算量を必要とする。
【0009】
また上記アルゴリズムA以外にP−1法、P+1法、そしてRSA暗号の周期性を利用した攻撃法に対して安全対策を施した法数を生成する従来技術として、J.Gordonによる方法がある。この方法は任意の素数s,rに対してU=sr-1−rs-1 mod rsとなる整数Uと任意の整数mを用いて、p=U+2mrsの形となる整数を法数の素因数の候補とする。また同様にP−1法、P+1法に対抗する方法として特開平2−37383号公報による方法が発明されている。
【0010】
しかし、これらの方法ではP−1法、P+1法、そしてRSA暗号の周期性を利用した攻撃法に対して安全対策を施すことはできるが、改良されたP−1法、改良されたP+1法に対して安全対策を施すことはできない。
【0011】
また今後P−1法、P+1法など以外にp+αが十分小さな素数の積である場合に有効な新たな攻撃法が発見され、これに対抗するためにp+αが一つまたは複数の大きな素因数を持つような素数pを発見することが要求される場合においては、上記の方法ではこの要求を満足することができない。
【0012】
【発明が解決しようとする課題】
RSA暗号の法数生成を行う際には、様々な攻撃に備えて、安全対策を施した素数の生成が必須となる。本発明の目的は、上記のP−1法やP+1法、そしてRSA暗号の周期性を利用した攻撃法対策に加えて、改良されたP−1法や改良されたP+1法対策を含む、任意の個数のαiに対してp+αiが一つまたは複数の大きな素因数を持つような素数pを生成することを可能とする技術を提供することにある。
【0013】
【課題を解決するための手段】
本発明はで上記の課題を解決するために、整数p+αi(ただしαiは整数、i=1,2,3,・・・,k、kは正の整数)の因数をsiとするとき、上記因数siは一つまたは複数の大きな素数を因数として持つようにし、更に上記因数si(ただしi=1,2,3,・・・,k)はi≠jなるi,jに対してsiとsjとは互いに素であるように選択し、更に上記因数siに所定の演算を施した値をf(si)とし、上記素数pを発見する際に上記素数pの候補p’として
【0014】
【数4】
(ただしmは整数)
の形となる整数を用いることによって、整数p+αi(ただしαiは整数、i=1,2,3,・・・,k、kは正の整数)が一つまたは複数の大きな素因数を持つような素数pを発見する。
【0015】
以下、整数p’+αiがm個の大きな素因数を持つことを示す。整数p’+αiは
【0016】
【数5】
ここで、
【0017】
【数6】
より、
【0018】
【数7】
が成立する。ただし、Qは適当な整数である。また、Rを適当な整数とすると、
【0019】
【数8】
となるので、
【0020】
【数9】
となり、p’+αiが因数siを持つことがわかる。si=s1’s2’s3’…sm’ならばp’+αiがm個の大きな素因数を持つことがわかる。
【0021】
【発明の実施の態様】
以下に本発明の実施例を説明する。
【0022】
図1〜図3を用いて、本発明による実施例を説明する。本実施例では、k個のαiに対して整数p+αiがそれぞれci個の適当に大きな素因数を持つような素数の生成について述べる。
【0023】
まず図1を用いて本発明による素因数生成の基本構成を説明する。
図1のステップ101からステップ106に至る処理は以下のように行われる。
(ステップ101) スタート。
(ステップ102) 整数s1,s2,・・・,skを作成する。このステップの詳細は図2を参照して説明する。
(ステップ103) ステップ102で生成されたs1,s2,・・・,skをもとにp1=Πi=1,2,・・・,ksiを計算する。
(ステップ104) ステップ102で生成されたs1,s2,・・・,sk、およびステップ103で生成されたp1をもとに
【0024】
【数10】
を計算する。
(ステップ105) ステップ103で生成されたp1、およびステップ104で生成されたp2から、p=p1+mp2の形の素数pを作成する。ここでmは正の整数である。
(ステップ106) 終了。pを出力する。
【0025】
上記のステップ102で生成されるsiはp+αiの因数となる整数で、かつ互いに素な整数であり、ci個の適当に大きな素因数の積である。
【0026】
次にステップ102における互いに素なp+αiの因数s1,s2,・・・,skの作成について詳細に説明する。図2を用いてステップ102の因数の生成処理を説明する。
(ステップ201) スタート。
(ステップ202) q=1,i=1,j=1,s0=1とする。
(ステップ203) 乱数rを生成する。
(ステップ204) rが素数どうかを判定する。
素数であればステップ205へ進む。
素数でなければステップ203へ進む。
(ステップ205) (sx,r)=1かどうかを判定する。ここで、xはx=0,1,2・・・,i−1。上式が成立するときステップ206へ進む。
上式が不成立のときステップ203へ進む。
(ステップ206) (q,r)=1かどうかを判定する。
上式が成立するときステップ207へ進む。
上式が不成立のときステップ203へ進む。
(ステップ207) q=q*rとする。
(ステップ208) j=ciかかどうかを判定する。
上式が成立するときステップ210へ進む。
上式が不成立のときステップ209へ進む。
(ステップ209) j=j+1として、 ステップ203へ。
(ステップ210) si=qとする。
(ステップ211) i=kかどうかを判定する。
上式が成立するときステップ213へ進む。
上式が不成立のときステップ212へ進む。
(ステップ212) i=i+1,j=1,q=1としてステップ203へ。
(ステップ213) s1,s2,・・・,skを出力する。
ステップ203では乱数生成器により乱数を生成する。乱数を生成する方法としてはLFSRなどの方法が知られている。またステップ204で素数を判定する方法としては、Fermat判定法が知られている。Fermat判定法は、Fermatの小定理に基づく判定法で、vを正整数とするとき任意の素数xに対して
【0027】
【数11】
vx-1≡1 mod x
が成立することを利用している。上式が不成立のときは合成数と判定される。Fermat判定法以外にも、Solovay−Strassen法、Miller−Rabin法なども同様な効果を期待できる。
【0028】
次にステップ105における素数生成法について詳細に説明する。図3はステップ105での処理を詳細に説明したものである。ステップ301から306までの処理は以下の通りである。
(ステップ301) スタート。
(ステップ302) m=1とする。
(ステップ303) p=p1+mp2を計算する。
(ステップ304) pは素数かどうか判定する。
素数であればステップ306へ進む。
素数でなければステップ305へ進む。
(ステップ305) m=m+1として、ステップ303へ進む。
(ステップ306) pを出力する。
【0029】
ステップ304で素数を判定する方法としては、ステップ204と同様にFermat判定法、Solovay−Strassen法、Miller−Rabin法などを用いることができる。
【0030】
上記の手順により、k個のαiに対して整数p+αiがそれぞれci個の適当に大きな素因数を持つような素数を獲得することができる。特にα1=1,c1=2、およびα2=−1,c2=2とすると、改良されたP−1法および改良されたP+1法に対抗できる法数の素因数pを獲得することができる。
【0031】
上述実施例の少なくとも一部はコンピュータ上のソフトウェアとして実現できる。もちろん、少なくとも一部をハードウェアとして実現することも可能である。図4は、上述の実施例のハードウェア実現態様(素数生成装置)を示す。図4において、素数生成装置は、乱数生成部401、因数(si)生成部402、素数候補(p’)計算部403、素数判定部404および素数出力部405を含んで構成されている。乱数生成部401は上述の乱数rを生成するものである。因数生成部402は図2に示す動作を実行して上述の因数siを生成するものである。素数候補計算部403は因数生成部402で生成された因数siを用いて素数候補p’を生成するものである。素数判定部404は素数候補p’について図3に示すような素数判定を行うものである。素数出力部405は素数判定部404により素数と判定された整数を出力するものである。図4の各構成要素の詳細は図1〜図3で説明したものと同様であり、詳細な説明は繰り返さない。
【0032】
【発明の効果】
以上説明したように、本発明によれば、任意の個数のαiに対してp+αiが一つまたは複数の大きな素因数を持つような素数pを生成することができる。
【図面の簡単な説明】
【図1】 本発明の実施例における素数候補の生成動作を説明するフローチャートである。
【図2】 図1のステップ102の詳細な動作を説明するフローチャートである。
【図3】 上述実施例の素数判定動作を説明するフローチャートである。
【図4】 上述実施例のハードウェア実現形態を示すブロック図である。
【符号の説明】
401 乱数生成部
402 因数生成部
403 素数候補計算部
404 素数判定部
405 素数出力部
Claims (11)
- 整数p+αi(ただしαiは整数、i∈{1,2,3,・・・,k}、kは正の整数。ただし、少なくとも一つのα i が+1以外かつ−1以外の整数である)が一つまたは複数の大きな素因数を持つような素数pを生成する素数生成装置において、
上記整数p+αiの因数si(ただし、上記因数siは一つまたは複数の大きな素数を因数として持ち、更にr≠tなるr,t(ただしr,t∈{1,2,3,・・・,k})に対してsrとstとは互いに素であるように選択される)を生成する手段と、
上記素数pの候補p’を、
p’=−(Σi=1,2, ・・・ ,k α i(Πj=1,2, ・・・ ,i-1,i+1, ・・・ ,ksj f(sj)) mod (Πi=1,2, ・・・ ,ksi))+mΠi=1,2, ・・・ ,ksi (ただしmは整数、f(si)は上記因数siに所定の演算を施した値。f(si)として、φ(s i )(ただしφはオイラーの関数)の定数倍となるものを用いる)
より生成する手段と、
上記整数mを選定しながら上記素数候補p’が素数かどうかを判定する手段と、
素数と判定された素数候補p’を出力する手段とを有することを特徴とする素数生成装置。 - 上記因数siに所定の演算を施して得られる値f(si)として、特にφ(si)(ただしφはオイラーの関数)を用いる請求項1記載の素数生成装置。
- αi(ただしi=1,2,3,・・・,k)の中に特にαj=1またはαj=−1(j∈{1,2,3,・・・,k})となるようなものが存在する請求項1または2記載の素数生成装置。
- αi=1またはαi=−1となるαiに対して、siが2つの大きな素数の積から成る合成数である請求項1、2または3記載の素数生成装置。
- i=1とし、整数p+α1(αは+1でも−1でもない整数)が2個以上の大きな素因数を持つような素数pを生成するために、上記整数p+α 1 の2個以上の大きな素因数をt1,t2,t3,・・・・・,tn(nは正の整数)とするとき、p=−α 1 +2at1t2t3・・・・・tn(ただしaは整数)の形となる整数を素数候補とすることを特徴とする請求項1記載の素数生成装置。
- i=1または2とし、α 1 およびα 2 の少なくとも一方が+1でも−1でもない整数であり、整数p+α 1 がk個の大きな素因数を持ちp+α 2 がm個の大きな素因数を持つような素数pを生成するために、上記整数p+α 1 のk個の大きな素因数をr1,r2,r3,・・・・・,rk、上記整数p+α 2 のm個の大きな素因数をs1,s2,s3,・・・・・,smとし、γ=r1r2r3・・・・・rk,σ=s1s2s3・・・・・smとするときγとσとが互いに素となるようにr1,r2,r3,・・・・・,rkおよびs1,s2,s3,・・・・・,smを決め、整数RをR≡γ-1 mod σとしbを整数としたとき、p=−α 1 +(α 2 −α 1 )(bσ−R)γの形となる整数を素数候補とすることを特徴とする請求項1記載の素数生成装置。
- i=1または2とし、α 1 およびα 2 の少なくとも一方が+1でも−1でもない整数であり、整数p+α 1 がk個の大きな素因数を持ちp+α 2 がm個の大きな素因数を持つような素数pを生成するために、上記整数p+α 1 のk個の大きな素因数をr1,r2,r3,・・・・・,rk、上記整数p+α 2 のm個の大きな素因数をs1,s2,s3,・・・・・,smとし、γ=r1r2r3・・・・・rk,σ=s1s2s3・・・・・smとするときγとσとが互いに素となるようにr1,r2,r3,・・・・・,rkおよびs1,s2,s3,・・・・・,smを決め、整数Uを
U=−(2σγ−2 mod γ)σ
となる整数Uと任意の整数mを用いて、p=U+2mσγ−α1の形となる整数を素数候補とすることを特徴とする請求項1記載の素数生成装置。 - i=1または2とし、α 1 およびα 2 の少なくとも一方が+1でも−1でもない整数であり、整数p+α 1 がk個の大きな素因数を持ちp+α 2 のそれぞれがm個の大きな素因数を持つような素数pを生成する方法であって、上記整数p+α 1 のk個の大きな素因数をr1,r2,r3,・・・・・,rk、上記整数p+α 2 のm個の大きな素因数をs1,s2,s3,・・・・・,smとし、γ=r1r2r3・・・・・rk,σ=s1s2s3・・・・・smとするときγとσとが互いに素となるようにr1,r2,r3,・・・・・,rkおよびs1,s2,s3,・・・・・,smを決め、γを法としたときのσの逆数Sと、σを法としたときのγの逆数Rと、U=(−1+iσ)+(2+jγ−iσ) σS mod γσまたはU=(1+iσ)+(−2+iσ−jγ) σR mod γσを満たす整数Uを用いて、p=U+2mσγの形となる整数を素数候補とすることを特徴とする請求項1記載の素数生成装置。
- 素数候補の素数性の判定するために、ふるい法または確率的素数判定法または確定的素数判定法を実行する請求項1から請求項8のいずれかに記載の素数生成装置。
- 素数候補の素数性の判定を行う方法としてふるい法を用い、その後確率的素数判定法または確定的素数判定法を用いる請求項1から請求項9のいずれかに記載の素数生成装置。
- 公開鍵暗号に用いる法数を合成するために上記素数候補を用いる請求項1から請求項10のいずれかに記載の素数生成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21036597A JP3750295B2 (ja) | 1997-08-05 | 1997-08-05 | 素数生成方法および装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21036597A JP3750295B2 (ja) | 1997-08-05 | 1997-08-05 | 素数生成方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1152852A JPH1152852A (ja) | 1999-02-26 |
JP3750295B2 true JP3750295B2 (ja) | 2006-03-01 |
Family
ID=16588166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21036597A Expired - Fee Related JP3750295B2 (ja) | 1997-08-05 | 1997-08-05 | 素数生成方法および装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3750295B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3518672B2 (ja) | 1998-11-27 | 2004-04-12 | 村田機械株式会社 | 素数生成装置及び暗号システム |
JP4802228B2 (ja) * | 2008-08-14 | 2011-10-26 | 株式会社東芝 | 鍵生成装置及びプログラム |
-
1997
- 1997-08-05 JP JP21036597A patent/JP3750295B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1152852A (ja) | 1999-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8255691B2 (en) | Apparatus for batch verification and method using the same | |
KR101089121B1 (ko) | 빠른 집합 검증 방법 및 그 장치 | |
US7912216B2 (en) | Elliptic curve cryptosystem optimization using two phase key generation | |
US7020776B2 (en) | Cryptosystem based on a Jacobian of a curve | |
JP2004507789A (ja) | 高速強化暗号の方法および装置 | |
JP5449576B2 (ja) | 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム | |
US11310049B2 (en) | Homomorphic encryption for password authentication | |
AU2001265967B2 (en) | Cryptographic method and cryptographic device | |
JP4250429B2 (ja) | 連鎖型署名作成装置、及びその制御方法 | |
JP2011510579A (ja) | 署名ダイアグラムを用いた非対称暗号方式のための対策方法およびデバイス | |
JP2008048451A (ja) | エンティティの真正性又はメッセージの完全性を証明するための方法、システム、デバイス | |
JP3518672B2 (ja) | 素数生成装置及び暗号システム | |
JP4988448B2 (ja) | 一括検証装置、プログラム及び一括検証方法 | |
US7346637B2 (en) | Polynomial time deterministic method for testing primality of numbers | |
US20020041683A1 (en) | Method for selecting optimal number of prime factors of a modulus for use in a cryptographic system | |
US7760873B2 (en) | Method and a system for a quick verification rabin signature scheme | |
JP3750295B2 (ja) | 素数生成方法および装置 | |
KR101990861B1 (ko) | 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치 | |
JP2004163687A (ja) | 楕円曲線暗号装置、楕円曲線暗号プログラム | |
Markelova | Vulnerability of RSA algorithm | |
JP3796867B2 (ja) | 素数判定方法および装置 | |
Moldovyan et al. | Short signatures from the difficulty of factoring problem | |
WO1998051038A1 (fr) | Generateur pseudo-aleatoire base sur une fonction de hachage pour systemes cryptographiques necessitant le tirage d'aleas | |
Moldovyan et al. | Blind 384-bit digital signature scheme | |
KR102019369B1 (ko) | 단일파형공격을 차단하기 위한 타원곡선 암호화 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050315 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050516 |
|
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: 20051115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051128 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091216 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121216 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131216 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |