JP2003005643A - 素数生成装置 - Google Patents

素数生成装置

Info

Publication number
JP2003005643A
JP2003005643A JP2001186856A JP2001186856A JP2003005643A JP 2003005643 A JP2003005643 A JP 2003005643A JP 2001186856 A JP2001186856 A JP 2001186856A JP 2001186856 A JP2001186856 A JP 2001186856A JP 2003005643 A JP2003005643 A JP 2003005643A
Authority
JP
Japan
Prior art keywords
prime number
candidate
prime
number candidate
determination
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.)
Pending
Application number
JP2001186856A
Other languages
English (en)
Inventor
Hiromi Nobukata
浩美 信方
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2001186856A priority Critical patent/JP2003005643A/ja
Publication of JP2003005643A publication Critical patent/JP2003005643A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】高速に素数を生成し得る素数生成装置及び方法
を得る。 【解決手段】素数候補を既知素数で除算し剰余の有無に
基づいて第1の素数判定を行うとともに、素数候補の更
新回数に基づいて素数候補が既知素数の倍数であるかを
判別することにより第2の素数判定を行い、第1及び第
2の素数判定によって素数の可能性があると判定された
とき、素数候補に対して第3の素数判定を行うようにし
たことにより、第1及び第3の素数判定の回数を削減
し、素数生成に要する時間を短縮することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は素数生成装置及び方
法に関し、例えば情報の暗号化処理に用いる素数の生成
装置に適用して好適なものである。
【0002】
【従来の技術】従来、インターネット上の各種通信等の
暗号化方式として、RSA(Rivet,Shamir,Adelman)暗
号化が広く用いられている。
【0003】かかるRSA暗号化においては、2つの異
なる素数p及びqを用いて平文の暗号化及び暗号の復号
化を行うようになされている。
【0004】RSA暗号においては、平文M及び公開鍵
eのデータ長を1024[bit] とすると、必要となる素
数p及びqのデータ長は512[bit] となる。また、暗
号文Cは次式(1)で求められる。
【0005】
【数1】
【0006】ここで、剰余数Nはp×qで求まる102
4[bit] の数である。そして、公開鍵eが次式(2)で
表わされるとき、暗号化の演算は以下のフローで行われ
る。
【0007】
【数2】
【0008】
【数3】
【0009】この暗号化演算において、Nの剰余演算に
時間がかかる。この剰余演算の時間を短縮する方法とし
て、Montgomery法が一般的に用いられている。Montgome
ry法を用いた演算では、まず、N<21024であるため、
R=21024と置き、拡張Euclide の互助法を用いてN’
を求め、同時にM* 、x* を求めておく。
【0010】
【数4】
【0011】
【数5】
【0012】
【数6】
【0013】このとき、Montgomery法を用いた暗号化の
演算は、
【0014】
【数7】
【0015】ここで、Function:MonPro は以下のように
定義される。
【0016】
【数8】
【0017】ところでRSA暗号化においては、そのセ
キュリティを確保するため、素数p及びqを定期的に変
更する必要がある。
【0018】一般に素数を生成する場合、図6に示す素
数生成処理のように、まず素数候補Pを乱数から生成し
(ステップSP21)、この素数候補に対してFermat T
est等の素数判定を行う(ステップSP22)。Fermat
Test は、Fermatの小定理(Pが素数のときaP-1 mod
P=1、Pが非素数のときaP-1 mod P≠1)を利用し
たもので、素数候補Pに対して、次式(9)の演算を行
い、演算結果が「1」のとき、Pは素数であると判断す
る(ステップSP23)。そして、Fermat Test によっ
て素数候補Pが素数ではないと判定された場合、当該素
数候補Pに2を加え(ステップSP24)、再び素数判
定を行う。
【0019】
【数9】
【0020】ここで、例えばデータ長L=1024[bi
t] のRSA暗号の場合、素数p及びqとして512[bi
t] の素数を2つ生成する必要がある。α=32[bit]
の乗算器を用い、Fermat Test によって512[bit] の
素数判定を行う場合、1つの素数候補の判定に要する演
算サイクル数は、
【0021】
【数10】
【0022】となる。この乗算器を24[MHz] のクロッ
クで動作させた場合、1個の素数候補の判定に786.
4[Kcycle]/24[MHz] =32.8[ms]要することにな
る。
【0023】一方、素数定理により、ある数「n」以下
の素数の個数は次式で表される。
【0024】
【数11】
【0025】この式(11)により、ある数「n」付近
の素数の分布は次式で表される。
【0026】
【数12】
【0027】例えば、2512 (すなわち512[bit] )
付近の素数の分布は、
【0028】
【数13】
【0029】となり、356個の候補に対して1個の素
数が存在する。この356個の候補のうちの半数は偶数
であるから、残り半分の奇数(178個)を素数候補と
して素数判定を行えば、素数に到達することができる。
【0030】この、全178個の素数候補に対する素数
判定に要するサイクル数は786.4[Kcycle]×178
=139.98[Mcycle]、所要時間は32.8[ms]×1
78=5.84[s] となる。
【0031】また、RSA暗号には素数が2つ必要であ
るから、素数生成処理の所要総サイクル数は139.9
8[Mcycle]×2=279.96[Mcycle]、総所要時間は
5.84[s] ×2=11.68[s] となる。
【0032】
【発明が解決しようとする課題】かかる素数生成処理の
総所要時間を短縮するために、素数候補を既知素数で除
算して割り切れた素数候補をふるい落とし、既知素数で
割り切れなかった素数候補についてだけ素数判定を行う
ようにすることが考えられる。
【0033】例えば、既知素数として3から31の10
個の素数を用いた場合、各既知素数で割り切れる素数候
補の数は図7のようになる。そして、図8に示すフロー
チャートのように、素数候補を既知素数で除算(ステッ
プSP32)した後、その剰余が0であるかを判定し
(ステップSP33)、当該剰余が0でないとき(すな
わち既知素数で割り切れなかったとき)にのみ素数判定
を行う(ステップSP34)ようにすれば、素数判定の
回数を削減して素数生成処理全体の所要時間を短縮する
ことができる。
【0034】なお図7においては、複数の既知素数で割
り切れる素数候補は、それぞれの既知素数の欄に重複し
てカウントされている。例えば、「15」で割り切れる
素数候補は、既知素数「3」と、既知素数「5」の両方
の欄に重複してカウントされている。
【0035】このような10個の既知素数による除算に
よって、素数候補のうちの約60%がふるい落とされ
る。これにより、素数判定を行うべき素数候補の数は1
78×0.4≒72個となる。
【0036】ここで、除算を2の補数による加算で行う
ものとし、1[bit] の演算に2[cycle] を要する場合、
除数(既存素数)のビット数は6[bit] であるため、一
回の除算に要する演算サイクル数は2×(512−6)
=1012[cycle] となり、全ての素数候補178個に
対して10個の既知素数で除算を行う場合、これに要す
る演算サイクル数は1012[cycle] ×178×10=
1.8[Mcycle]となる。
【0037】また、既知素数で割り切れなかった72個
の素数候補に対するFermat Test の演算サイクル数は7
86.4[Kcycle]×72=56.62[Mcycle]となる。
【0038】これにより、512[bit] の素数を検出す
るまでのサイクル数は1.8[Mcycle]+56.62[Mcy
cle]=58.42[Mcycle]となり、2個の素数を検出す
るまでの総サイクル数は58.42[Mcycle]×2=11
6.84[Mcycle]となる。
【0039】全ての素数候補178個にFermat Test を
行った場合、2個の素数を検出するまでの総サイクル数
は279.96[Mcycle]であるから、10個の既知素数
を用いた除算によるふるい落としによって、所要サイク
ル数を116.84[Mcycle]÷279.96[Mcycle]=
41.2%に削減することができる。
【0040】この場合、既知素数除算によるふるい落と
しに要する演算サイクル数は総サイクル数の3.1%に
相当するが、これは理想的な構成の装置を用いた場合で
あり、装置の構成によってはふるい落としに要する演算
サイクル数が増大し、結果的に素数生成時間が増大して
しまうという問題があった。
【0041】また、必要とする素数のビット数が増大し
た場合、Fermat Test に要する所要サイクルはビット数
の3乗で増加するため(式(10))、ふるい落としに
よる所要サイクル数削減効果が低減してしまうという問
題があった。
【0042】本発明は以上の点を考慮してなされたもの
で、高速に素数を生成し得る素数生成装置及び方法を提
案しようとするものである。
【0043】
【課題を解決するための手段】かかる課題を解決するた
め第1の発明においては、素数候補に対し素数判定を行
って素数を生成する素数生成装置において、素数候補を
生成する素数候補生成手段と、素数候補が素数ではない
と判明したとき、当該素数候補に所定値を加算して素数
候補を更新する素数候補更新手段と、素数候補を既知素
数で除算し、剰余の有無に基づいて素数判定を行う第1
の素数判定手段と、素数候補が既知素数で割り切れた場
合に動作を開始し、素数候補が更新された回数をカウン
トするカウンタと、当該カウンタのカウント値に基づい
て、素数候補が既知素数の倍数であるかを判別すること
により素数判定を行う第2の素数判定手段と、第1及び
第2の素数判定手段によって素数候補は素数の可能性が
あると判定されたとき、素数判定を行う第3の素数判定
手段とを設けた。
【0044】また、第2の発明においては、素数候補に
対し素数判定を行って素数を生成する素数生成方法にお
いて、素数候補を生成する素数候補生成ステップと、素
数候補が素数ではないと判明したとき、当該素数候補に
所定値を加算して素数候補を更新する素数候補更新ステ
ップと、素数候補を既知素数で除算し、剰余の有無に基
づいて素数判定を行う第1の素数判定ステップと、素数
候補が既知素数で割り切れた場合に動作を開始し、素数
候補が更新された回数をカウントするカウンタのカウン
ト値に基づいて、素数候補が既知素数の倍数であるかを
判別することにより素数判定を行う第2の素数判定ステ
ップと、第1及び第2の素数判定ステップによって素数
候補は素数の可能性があると判定されたとき、素数判定
を行う第3の素数判定ステップとを設けた。
【0045】素数候補を既知素数で除算し剰余の有無に
基づいて第1の素数判定を行うとともに、素数候補の更
新回数に基づいて素数候補が既知素数の倍数であるかを
判別することにより第2の素数判定を行い、第1及び第
2の素数判定によって素数の可能性があると判定された
とき、素数候補に対して第3の素数判定を行うようにし
たことにより、第1及び第3の素数判定の回数を削減
し、素数生成に要する時間を短縮することができる。
【0046】
【発明の実施の形態】以下図面について、本発明の一実
施の形態を詳述する。
【0047】(1)素数生成装置の構成と処理 まず、素数生成装置の全体構成とその処理を、図1に示
す機能ブロック図、図2に示すフローチャート及び図3
に示すタイミングチャートを用いて説明する。
【0048】図1において、1は全体として本発明によ
る素数生成装置を示し、素数候補生成回路2、除算回路
3、素数倍数検出回路4及び素数判定回路5で構成され
る。
【0049】素数生成装置1には、RSA暗号コプロセ
ッサのシーケンスコントローラ(図示せず)から制御信
号XRSTが供給される。この制御信号XRSTの信号
レベルが「Lo」であるとき、当該素数生成装置1の各
回路はリセット状態に制御される。そして、制御信号X
RSTの信号レベルが「Hi」に立ち上がると素数生成
装置1は動作を開始する。
【0050】すなわち素数生成装置1は図2に示すルー
チンRT1の開始ステップから入り、ステップSP1で
動作を開始して次のステップSP2に移る。
【0051】ステップSP2において、素数生成装置1
の素数候補生成回路2は、内蔵する乱数発生回路6で乱
数を生成し、これを素数候補Pとして除算回路3に供給
し次のステップSP3に移る。
【0052】ステップSP3において、第1の素数判定
手段としての除算回路3は、供給された素数候補Pに対
し最初の10個の既知素数(「3」「5」「7」「1
1」「13」「17」「19」「23」「29」及び
「31」)で除算することにより素数候補のふるい落と
しを行い、次のステップSP4に移る。
【0053】ステップSP4において、素数生成装置1
は素数候補Pが既知素数で割り切れたかを判断する。ス
テップSP4において否定結果が得られた場合、このこ
とは素数候補Pが10個の既知素数で割り切れなかった
こと、すなわち素数候補Pが既知素数の倍数ではなく、
素数の可能性があることを表しており、このとき素数生
成装置1はステップSP10に移る。
【0054】ステップSP10において、第3の素数判
定手段としての素数判定回路5は、素数候補Pに対しFe
rmat Test による素数判定を行い、次のステップSP1
1に移る。
【0055】ステップSP11において素数判定回路5
は、Fermat Test の結果に基づき、素数候補Pが素数で
あるかを判断する。ステップSP11において肯定結果
が得られた場合、このことはFermat Test の演算結果が
「1」であり、素数候補Pが素数であることを表してお
り、このとき素数生成装置1はステップSP11に移
り、当該素数候補Pを素数として外部に出力し処理を終
了する。
【0056】これに対してステップSP11において否
定結果が得られた場合、このことはFermat Test の演算
結果が「1」ではなく、素数候補Pが素数ではないこと
を表しており、このとき素数生成装置1はステップSP
6に移る。
【0057】一方、ステップSP4において肯定結果が
得られた場合、このことは素数候補Pが10個の既知素
数で割り切れたこと、すなわち素数候補Pが素数ではな
いことを表しており、素数生成装置1はステップSP5
に移る。このとき素数生成装置1の除算回路3は、素数
候補Pを割り切った既知素数(これを整徐既知素数と呼
ぶ)が最初の3個の素数「3」「5」又は「7」であっ
た場合、これに対応する整徐信号DIV3、DIV5又
はDIV7の信号レベルを「Hi」にして素数倍数検出
回路4に供給する。
【0058】ステップSP5において、第2の素数判定
手段としての素数倍数検出回路4は、整徐信号DIV
3、DIV3又はDIV7の信号レベルが「Hi」にな
ると、これに対応する3の倍数検出部4A、5の倍数検
出部4B又は7の倍数検出部4Cを起動し、次のステッ
プSP6に移る。
【0059】ステップSP6において、素数更新手段と
しての素数生成回路2は、素数候補Pに「2」を加算し
て素数候補Pを更新するとともに、素数倍数検出回路4
に対しカウントアップパルスCNTUPを2パルス供給
して素数候補Pの更新を通知し、次のステップSP7に
移る。
【0060】ステップSP7において、素数生成装置1
の素数倍数検出回路4は、カウントアップパルスCNT
UPの供給に応じて、起動中の倍数検出部4A、4B又
は4C内のカウンタCNT3、CNT5又はCNT7の
カウント値をカウントアップし、次のステップSP8に
移る。このときカウンタCNT3、CNT5及びCNT
7は、カウントアップパルスCNTUPが2パルス供給
される毎にカウント値を1カウントアップする。
【0061】すなわち倍数検出部は、素数候補Pが既知
素数「3」「5」又は「7」で割り切れた場合に動作を
開始し、素数候補Pが更新されて「2」増加する毎に、
カウント値を「1」加算する。
【0062】ステップSP8において、素数生成装置1
の素数倍数検出回路4は、起動中の倍数検出部のカウン
ト値と、当該起動中の倍数検出部に対応する既知素数と
を照合することにより、素数候補Pが整徐既知素数の倍
数であるかを判断する。
【0063】ステップSP8において否定結果が得られ
た場合、このことは起動中の倍数検のカウント値と、対
応する既知素数とが一致しないこと、すなわち素数候補
Pが整徐既知素数の倍数ではなく、素数の可能性がある
ことを表しており、このとき素数生成装置1はステップ
SP3に戻り、当該素数候補Pに対し既知素数除算を行
う。
【0064】これに対してステップSP8において肯定
結果が得られた場合、このことは起動中の倍数検出部の
カウント値と、対応する既知素数とが一致したこと、す
なわち素数候補Pが整徐既知素数の倍数であり、素数で
はないことを表しており、このとき素数生成装置1はス
テップSP11に移る。
【0065】ステップSP11において素数生成装置1
の素数倍数検出回路4は、カウント値が一致した倍数検
出部のカウント値をリセットするとともに、整徐通知信
号XDIVEDの信号レベルを「Lo」にすることによ
り、素数候補Pが素数ではないことを素数候補生成回路
2に通知する。
【0066】そして素数生成装置1はステップSP6に
移り、既知素数による除算(ステップSP3)を行うこ
となく、素数候補生成回路2で新たな素数候補Pを生成
する。
【0067】このように素数生成装置1は、乱数から生
成した素数候補Pに対し、まず既知素数除算によるふる
い落としを行った後に素数判定を行う。
【0068】そして素数生成装置1は、素数候補Pが既
知素数で割り切れた場合、及びFermat Test による素数
判定で素数候補Pが素数ではないと判定された場合、当
該素数候補Pに2を加算して素数候補Pを更新し、新た
な素数候補Pに対して再度既知素数除算によるふるい落
としを行う。
【0069】このとき素数倍数検出回路4は、素数候補
Pの更新に応じてカウントアップするカウント値に基づ
いて、素数候補Pが整徐既知素数の倍数であるかを監視
する。そして素数生成装置1は、素数候補Pが整徐既知
素数の倍数である場合、既知素数除算によるふるい落と
しを行うことなく素数候補Pを更新する。
【0070】かくして素数生成装置1は、素数候補Pに
対する既知素数除算の回数を削減し、全体として素数生
成に要する処理時間を削減するようになされている。
【0071】(2)除算回路の構成 次に、除算回路3の構成を図4を用いて説明する。除算
回路3は、除数デコード部10、整徐検出部11、整徐
判定部12及び除算部(図示せず)で構成される。
【0072】除数デコード部10においては、除数レジ
スタ13、5つのNORゲート14A〜14E、及び4
つのNANDゲート15A〜15Dで構成される。
【0073】NORゲート14Aの3つの入力端子はそ
れぞれ除数レジスタ13のビットD7 、D6 及びD5 に
接続され、NORゲート14Bの2つの入力端子はそれ
ぞれ除数レジスタ10のビットD4 及びD3 に接続され
ている。そしてNORゲート14A及び14Bの出力端
子はそれぞれNANDゲート15Aの入力端子に接続さ
れている。
【0074】また、NANDゲート15Bの2つの入力
端子はそれぞれ除数レジスタ13のビットD1 及びD0
に接続され、NANDゲート15Cの2つの入力端子は
それぞれ除数レジスタ13のビットD2 及びD0 に接続
され、NANDゲート15Dの3つの入力端子は、それ
ぞれ除数レジスタ13のビットD2 、D1 及びD0 に接
続されている。
【0075】そして、NORゲート14Cの3つの入力
端子はそれぞれ除数レジスタ13のビットD2 、NAN
Dゲート15Aの出力端子及びNANDゲート15Bの
出力端子に接続され、NORゲート14Dの3つの入力
端子はそれぞれ除数レジスタ13のビットD1 、NAN
Dゲート15Aの出力端子及びNANDゲート15Cの
出力端子に接続され、NORゲート14Eの2つの入力
端子はそれぞれNANDゲート15Aの出力端子及びN
ANDゲート15Dの出力端子に接続されている。
【0076】除数レジスタ13には、除算部において素
数候補Pの除算に用いられた既知素数が格納される。そ
して除数デコード部10は、除数レジスタ13に格納さ
れた既知素数の値をNORゲート14A〜14E及びN
ANDゲート15A〜15Dからなる論理回路でデコー
ドし、その結果を整徐判定部12に供給する。
【0077】例えば除数レジスタ13に格納された既知
素数が「3」(2進数「11」)のとき、NORゲート
14Cの出力端子から出力される除数信号D3の信号レ
ベルが「Hi」になる。同様に、既知素数が「5」(2
進数「101」)のとき、NORゲート14Dの出力端
子から出力される除数信号D5の信号レベルが「Hi」
になり、既知素数が「7」(2進数「111」)のと
き、NORゲート14Eの出力端子から出力される除数
信号D7の信号レベルが「Hi」になる。
【0078】一方、整徐検出部11においては、剰余レ
ジスタ16、2つのNORゲート17A及び17B、A
NDゲート18で構成される。
【0079】NORゲート17Aの4つの入力端子はそ
れぞれ剰余レジスタ16のビットR7 、R6 、R5 及び
R4 に接続され、NORゲート17Bの4つの入力端子
はそれぞれ剰余レジスタ16のビットR3 、R2 、R1
及びR0 に接続されている。また、ANDゲート18の
3つの入力端子には、NORゲート17A及び17Bの
出力端子が接続されるとともに、外部からタイミング信
号XDIVBSYが供給される。
【0080】剰余レジスタ16には、除算部における素
数候補Pの除算結果の剰余数が格納される。そして整徐
検出部11は、剰余レジスタ16に格納された剰余数の
値をNORゲート17A及び17B、ANDゲート18
からなる論理回路でデコードし、その結果を整徐判定部
12に供給する。
【0081】すなわち、剰余レジスタ16に格納された
剰余数が「0」で、かつ外部から供給されるタイミング
信号XDIVBSYの信号レベルが「Hi」のときにの
み、ANDゲート18の出力端子から出力される整徐検
出信号DIVの信号レベルが「Hi」になる。
【0082】整徐判定部12においては、3つのNAN
Dゲート19A〜19C及び3つのNOTゲート20A
〜20Cで構成される。
【0083】NANDゲート19Aの2つの入力端子は
それぞれNORゲート14Cの出力端及びANDゲート
18の出力端子に接続され、NANDゲート19Bの2
つの入力端子はそれぞれNORゲート14Dの出力端子
及びANDゲート18の出力端子に接続され、NAND
ゲート19Cの2つの入力端子はそれぞれNORゲート
14Eの出力端子及びANDゲート18の出力端子に接
続されている。
【0084】また、NANDゲート19A〜19Cの出
力端子は、それぞれNOTゲート20A〜20Cの入力
端子に接続されている。
【0085】整徐判定部12は、素数候補Pが素数で割
り切れ(すなわち整徐検出信号DIVの信号レベルが
「Hi」)、かつそのとき用いた素数が「3」「5」又
は「7」のとき、これに対応する整徐信号DIV3、D
IV5又はDIV7の信号レベルを「Hi」にして出力
する。
【0086】すなわち、除数信号D3及び整徐検出信号
DIVの信号レベルが「Hi」のとき、NANDゲート
19Aの出力が「Lo」になる。NOTゲート20Aは
NANDゲート19Aの出力を反転し、これによりNO
Tゲート20Aから出力される整徐信号DIV3の信号
レベルが「Hi」になる。同様に、除数信号D5及び整
徐検出信号DIVの信号レベルが「Hi」のとき、NO
Tゲート20Bから出力される整徐信号DIV5の信号
レベルが「Hi」になり、除数信号D7及び整徐検出信
号DIVの信号レベルが「Hi」のとき、NOTゲート
20Cから出力される整徐信号DIV7の信号レベルが
「Hi」になる。
【0087】(3)素数倍数検出回路の構成 次に、素数倍数検出回路4の構成を図5を用いて説明す
る。素数倍数検出回路4は、3の倍数検出部4A、5の
倍数検出部4B及び7の倍数検出部4Cを有している。
【0088】3の倍数検出部4Aにおいては、Dフリッ
プフロップ21Aのクロック入力端子に整徐信号DIV
3が入力されるとともに、リセット端子に制御信号XR
STが入力され、D入力端子には「Hi」レベルの電源
が供給される。そして、制御信号XRSTが「Hi」の
状態で整徐信号DIV3が「Hi」に立ち上がると、D
フリップフロップ21Aはこれに応じてQ出力端子をセ
ットしてイネイブル信号ET3の信号レベルを「Hi」
にする。
【0089】Dフリップフロップ21AのQ出力端子に
はカウンタCNT3のイネイブル端子が接続されてお
り、イネイブル信号ET3の信号レベルが「Hi」に立
ち上がると、これに応じて当該カウンタCNT3がアク
ティブになる。
【0090】また、カウンタCNT3のクロック端子に
は、Dフリップフロップ21DのQ反転出力端子が接続
されている。
【0091】Dフリップフロップ21Dにおいては、ク
ロック端子に素数候補生成回路2(図1)からカウント
アップパルスCNTUPが入力されるとともに、リセッ
ト端子に制御信号XRSTが入力され、さらにD入力端
子がQ反転出力端子に接続されている。これによりDフ
リップフロップ21DはカウントアップパルスCNTU
Pを1/2に分周し、Q反転出力端子からカウントアッ
プパルスCK2として出力する。すなわち、素数候補P
が更新されて「2」増加し、カウントアップパルスCN
TUPが2パルス入力される毎に、Dフリップフロップ
21DからカウントアップパルスCK2が1パルス出力
される。
【0092】そしてカウンタCNT3は、イネイブル信
号ET3の信号レベルが「Hi」の状態でカウントアッ
プパルスCK2が1パルス供給される毎に、カウント値
を1カウントアップする。カウンタCNT3のQ0 出
力端子及びQ1 出力端子は、それぞれNANDゲート
23Aの入力端子に接続されており、当該NANDゲー
ト23AはカウンタCNT3のカウント値をデコードし
て出力する。
【0093】すなわちNANDゲート23Aのカウント
値が「3」(2進数「11」)になったとき、NAND
ゲート23Aの出力端子から出力される3の倍数検出信
号XCNT3の信号レベルが「Lo」になる。
【0094】かくして3の倍数検出部4Aにおいては、
素数候補Pが既知素数「3」で割り切れた時(整徐信号
DIV3が「Hi」)に動作を開始し、素数候補Pが3
回更新されて「6」増加したとき、更新された素数候補
Pが既知素数「3」の倍数であることを示す3の倍数検
出信号XCNT3を「Lo」にする。
【0095】同様に5の倍数検出部4Bにおいては、素
数候補Pが既知素数「5」で割り切れた時(整徐信号D
IV5が「Hi」)に動作を開始し、素数候補Pが5回
更新されて「10」増加したとき、更新された素数候補
Pが既知素数「5」の倍数であることを示す5の倍数検
出信号XCNT5を「Lo」にする。
【0096】また7の倍数検出部4Bにおいては、素数
候補Pが既知素数「7」で割り切れた時(整徐信号DI
V7が「Hi」)に動作を開始し、素数候補Pが7回更
新されて「14」増加したとき、更新された素数候補P
が既知素数「7」の倍数であることを示す7の倍数検出
信号XCNT7を「Lo」にする。
【0097】3の倍数検出信号XCNT3、5の倍数検
出信号XCNT5及び7の倍数検出信号XCNT7はA
NDゲート25に入力される。そして、入力の少なくと
も一つが「Lo」に立ち下がると、ANDゲート25の
出力端子から出力される倍数検出信号XCNTの信号レ
ベルが「Lo」になる。
【0098】ANDゲート25の出力端子は、Dフリッ
プフロップ21Eのリセット端子に接続されている。ま
た、Dフリップフロップ21Eのクロック端子にはカウ
ントアップパルスCNTUPが入力され、D入力端子に
は「Hi」レベルの電源が供給される。そして倍数検出
信号XCNTの信号レベルが「Lo」に立ち下がると、
Dフリップフロップ21EのQ出力端子から出力される
整徐通知信号XDIVEDの信号レベルが「Lo」に立
ち下がる。
【0099】ここで、3の倍数検出部4Aにおいては、
整徐通知信号XDIVED及び3の倍数検出信号XCN
T3がNORゲート24Bの入力端子に入力される。そ
して当該NORゲート24Bの出力端子、及び制御信号
XRSTを反転するNOTゲート26の出力端子がNO
Rゲート24Aの入力端子に接続され、さらに当該NO
Rゲート24Aの出力端子がカウンタCNT3のリセッ
ト端子に接続されている。
【0100】これによりNORゲート24Aから出力さ
れるカウンタクリア信号XCL3は、整徐通知信号XD
IVED及び3の倍数検出信号XCNT3が「Lo」、
かつ制御信号XRSTが「Hi」のときに「Lo」に立
ち下がり、このときカウンタCNT3はリセットされ、
再度「0」からカウントを再開する。
【0101】かくして3の倍数検出部4Aは、素数候補
Pが既知素数「3」で割り切れた場合、素数候補Pが3
回更新されて「6」増加する毎に3の倍数検出信号XC
NT3を「Lo」にする。同様に5の倍数検出部4B
は、素数候補Pが既知素数「5」で割り切れた場合、素
数候補Pが5回更新されて「10」増加する毎に5の倍
数検出信号XCNT5を「Lo」にし、7の倍数検出部
4Cは、素数候補Pが既知素数「7」で割り切れた場
合、素数候補Pが7回更新されて「14」増加する毎に
7の倍数検出信号XCNT7を「Lo」にする。
【0102】そして素数倍数検出回路4は、素数候補P
が既知素数「3」「5」又は「7」の倍数である場合、
整徐通知信号XDIVEDの信号レベルを「Lo」に立
ち下げ、これにより素数候補Pが既知素数の倍数である
ことを素数候補生成回路2(図1)に通知する。素数候
補生成回路2は、整徐通知信号XDIVEDの信号レベ
ルが「Lo」に立ち下がると、これに応じて素数候補P
に「2」を加えて更新する。
【0103】(4)素数生成装置の動作 次に、上述した素数生成装置1の動作を図3のタイミン
グチャートを用いて詳細に説明する。
【0104】演算開始前は制御信号XRSTが「Lo」
にあり、素数生成装置1のフリップフロップ及びカウン
タは全てリセット状態に制御されている。そして、制御
信号XRSTが「Hi」に立ち上がると素数生成装置1
は動作を開始する。
【0105】まず、素数候補生成回路2が素数候補P
(ここでは「115」)を生成し、除算回路3に供給す
る。除算回路3は素数候補Pを10個の既知素数で順番
に除算し、素数候補Pが既知素数の倍数であるかを判定
する。この場合、素数候補P「115」は既知素数
「5」の倍数であることから、整徐信号DIV5が「H
i」に立ち上がる。
【0106】整徐信号DIV5が「Hi」に立ち上がる
と、5の倍数検出回路4BのDフリップフロップ21B
がこれをラッチしてイネイブル信号ET5を「Hi」に
し、これによりカウンタCNT5がアクティブになる。
【0107】除算回路3によって素数候補P「115」
が非素数であると判明したため、素数候補生成回路2は
素数候補Pに「2」を加算し、「117」を新たな素数
候補Pとする。このとき素数候補生成回路2は、カウン
トアップパルスCNTUPを2パルス出力する。カウン
トアップパルスCNTUPはDフリップフロップ21D
で1/2に分周され、カウントアップパルスCK2とし
てカウンタCNT3、CNT5、CNT7に供給され
る。このときカウンタCNT5のみがアクティブであ
り、当該カウンタCNT5はカウントアップパルスCK
2に応じて「1」にカウントアップする。
【0108】この状態においてカウンタCNT3、CN
T5及びCNT7のカウント値は、いずれも対応する既
知素数「3」「5」及び「7」に一致しないため、3の
倍数検出信号XCNT3、5の倍数検出信号XCNT5
及び7の倍数検出信号XCNT7はいずれも「Hi」に
保持される。
【0109】続いて除算回路3は、新たな素数候補P
「117」を既知素数で除算する。この場合、素数候補
P「117」は既知素数「3」の倍数であることから、
整徐信号DIV3が「Hi」に立ち上がり、これにより
3の倍数検出回路4AのカウンタCNT3もアクティブ
になる。
【0110】除算回路3によって素数候補P「117」
が非素数であると判明したため、素数候補生成回路2は
素数候補Pに「2」を加算して「119」を新たな素数
候補Pとする。このときカウンタCNT3及びCNT5
がアクティブであり、カウントアップパルスCK2に応
じて、カウンタCNT3は「1」に、カウンタCNT5
は「2」にカウントアップする。
【0111】この状態においてカウンタCNT3、CN
T5及びCNT7のカウント値は、いずれも対応する既
知素数に一致しないため、3の倍数検出信号XCNT
3、5の倍数検出信号XCNT5及び7の倍数検出信号
XCNT7はいずれも「Hi」に保持される。
【0112】続いて除算回路3は、新たな素数候補P
「119」を既知素数で除算する。この場合、素数候補
P「119」は既知素数「7」の倍数であることから、
整徐信号DIV7が「Hi」に立ち上がり、これにより
7の倍数検出回路4AのカウンタCNT7もアクティブ
になる。
【0113】除算回路3によって素数候補P「119」
が非素数であると判明したため、素数候補生成回路2は
素数候補Pに「2」を加算して「121」を新たな素数
候補Pとする。このときカウンタCNT3、CNT5及
びCNT5は全てアクティブであり、カウントアップパ
ルスCK2に応じて、カウンタCNT3は「2」に、カ
ウンタCNT5は「3」に、カウンタCNT7は「1」
にカウントアップする。
【0114】この状態においてカウンタCNT3、CN
T5及びCNT7のカウント値は、いずれも対応する既
知素数に一致しないため、3の倍数検出信号XCNT
3、5の倍数検出信号XCNT5及び7の倍数検出信号
XCNT7はいずれも「Hi」に保持される。
【0115】除算回路3は、新たな素数候補P「12
1」を既知素数で除算する。この場合、素数候補P「1
19」は既知素数「11」の倍数であることから、素数
候補生成回路2は素数候補Pに「2」を加算して「12
3」を新たな素数候補Pとする。カウンタCNT3は
「3」に、カウンタCNT5は「4」に、カウンタCN
T7は「2」にカウントアップする。
【0116】この状態において、カウンタCNT3のカ
ウント値が対応する既知素数「3」に一致するため、3
の倍数検出信号XCNT3が「Lo」に立ち下がり、こ
れにより整徐通知信号XDIVEDの信号レベルが「L
o」になる。これに応じてカウンタクリア信号XCL3
は「Lo」になり、カウンタCNT3は「0」にリセッ
トされる。
【0117】整徐通知信号XDIVEDの信号レベル
「Lo」に応じて、素数候補生成回路2は素数候補Pに
「2」を加算して「125」を新たな素数候補Pとす
る。カウンタCNT3は「1」に、カウンタCNT5は
「5」に、カウンタCNT7は「3」にカウントアップ
する。
【0118】この状態において、今度はカウンタCNT
5のカウント値が対応する既知素数「5」に一致するた
め、5の倍数検出信号XCNT5が「Lo」に立ち下が
り、これにより整徐通知信号XDIVEDの信号レベル
が「Lo」になる。これに応じてカウンタクリア信号X
CL5は「Lo」になり、カウンタCNT5は「0」に
リセットされる。
【0119】整徐通知信号XDIVEDの信号レベル
「Lo」に応じて、素数候補生成回路2は素数候補Pに
「2」を加算して「127」を新たな素数候補Pとす
る。カウンタCNT3は「2」に、カウンタCNT5は
「1」に、カウンタCNT7は「4」にカウントアップ
する。
【0120】この状態において、カウンタCNT3、C
NT5及びCNT7のカウント値は、いずれも対応する
既知素数「3」、「5」及び「7」に一致しないため、
整徐通知信号XDIVEDは「Hi」に保持され、これ
に応じて除算回路3は、素数候補P「127」を「7」
以降の既知素数で順番に除算する。
【0121】素数候補P「127」は10個の既知素数
のいずれでも割り切れないため、素数の可能性があると
して素数判定回路5でFermat Test で試験されて素数と
判定され、1回の素数生成処理が終了する。
【0122】(5)動作及び効果 以上の構成において、素数生成装置1は、乱数から素数
候補Pを生成し、これに対してまず10個の既知素数で
順番に除算してふるい落としを行い、その後にFermat T
est による素数判定を行う。
【0123】そして素数生成装置1は、素数候補Pが既
知素数で割り切れた場合、及び素数判定で素数候補Pが
素数ではないと判定された場合、当該素数候補Pに2を
加算して素数候補Pを更新し、新たな素数候補Pに対し
て再度既知素数除算によるふるい落としを行う。
【0124】このとき素数倍数検出回路4は、既知素数
除算によって素数候補Pが最初の3つの素数「3」
「5」又は「7」の倍数であることが判明した場合、対
応するカウンタCNT3、CNT5又はCNT7をアク
ティブにし、これを素数候補Pの更新に伴ってカウント
アップすることにより、新たな素数候補Pが既知素数
「3」「5」又は「7」の倍数であるかを監視する。
【0125】そして素数生成装置1は、素数倍数検出回
路4によって素数候補Pが既知素数「3」、「5」又は
「7」の倍数であると判明した場合、既知素数除算によ
るふるい落としを行うことなく素数候補Pを更新する。
【0126】以上の構成によれば、素数候補Pの更新に
伴ってカウントアップするカウンタCNT3、CNT5
又はCNT7を用いて素数候補Pが既知素数の倍数であ
るかを監視し、当該素数候補Pが既知素数の倍数である
と判明した場合、既知素数除算によるふるい落としを行
わずに素数候補Pを更新するようにしたことにより、素
数生成処理における既知素数除算の回数を削減し、素数
生成に要する時間を短縮することができる。
【0127】(6)他の実施の形態 なお上述の実施の形態においては、最初の10個の既知
素数で素数候補Pを除算してふるい落としを行うように
したが、本発明はこれに限らず、これ以外の数の既知素
数で素数候補Pを除算してふるい落としを行うようにし
てもよい。
【0128】また上述の実施の形態においては、素数候
補Pが既知素数「3」「5」又は「7」の倍数であるか
を監視するようにしたが、本発明はこれに限らず、これ
以外の既知素数について監視するようにしてもよい。
【0129】さらに上述の実施の形態においては、Ferm
at Test を用いて素数判定を行うようにしたが、本発明
はこれに限らず、Miller-Rabin Test 等、様々な素数判
定方法を用いても良い。
【0130】
【発明の効果】上述のように本発明によれば、素数候補
を既知素数で除算し剰余の有無に基づいて第1の素数判
定を行うとともに、素数候補の更新回数に基づいて素数
候補が既知素数の倍数であるかを判別することにより第
2の素数判定を行い、第1及び第2の素数判定によって
素数の可能性があると判定されたとき、素数候補に対し
て第3の素数判定を行うようにしたことにより、第1及
び第3の素数判定の回数を削減し、素数生成に要する時
間を短縮することができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態による素数生成装置の全
体構成を示すブロック図である。
【図2】素数生成処理を示すフローチャートである。
【図3】素数生成装置における各種信号波形を示すタイ
ミングチャートである。
【図4】除算回路の構成を示す略線図である。
【図5】素数倍率検出部の構成を示す略線図である。
【図6】従来の素数生成処理を示すフローチャートであ
る。
【図7】既知素数によってふるい落とされる素数候補の
数を示す表である。
【図8】従来の素数生成処理を示すフローチャートであ
る。
【符号の説明】
1……素数生成装置、2……素数候補生成回路、3……
除算回路、4……素数倍数検出回路、5……素数判定回
路、6……乱数発生回路、10……除数デコード部、1
1……整徐検出部、12……整徐判定部。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】素数候補に対し素数判定を行って素数を生
    成する素数生成装置において、 上記素数候補を生成する素数候補生成手段と、 上記素数候補が素数ではないと判明したとき、当該素数
    候補に所定値を加算して上記素数候補を更新する素数候
    補更新手段と、 上記素数候補を既知素数で除算し、剰余の有無に基づい
    て素数判定を行う第1の素数判定手段と、 上記素数候補が上記既知素数で割り切れた場合に動作を
    開始し、上記素数候補が更新された回数をカウントする
    カウンタと、 上記カウンタのカウント値に基づいて、上記素数候補が
    上記既知素数の倍数であるかを判別することにより素数
    判定を行う第2の素数判定手段と、 上記第1及び第2の素数判定手段によって上記素数候補
    は素数の可能性があると判断されたとき、素数判定を行
    う第3の素数判定手段とを具えることを特徴とする素数
    生成装置。
  2. 【請求項2】上記素数候補生成手段は、乱数から奇数の
    上記素数候補を生成し、 上記素数候補更新手段は、上記素数候補に2を加算して
    上記素数候補を更新することを特徴とする請求項1に記
    載の素数生成装置。
  3. 【請求項3】素数候補に対し素数判定を行って素数を生
    成する素数生成方法において、 上記素数候補を生成する素数候補生成ステップと、 上記素数候補が素数ではないと判明したとき、当該素数
    候補に所定値を加算して上記素数候補を更新する素数候
    補更新ステップと、 上記素数候補を既知素数で除算し、剰余の有無に基づい
    て素数判定を行う第1の素数判定ステップと、 上記素数候補が上記既知素数で割り切れた場合に動作を
    開始し、上記素数候補が更新された回数をカウントする
    カウンタのカウント値に基づいて、上記素数候補が上記
    既知素数の倍数であるかを判別することにより素数判定
    を行う第2の素数判定ステップと、 上記第1及び第2の素数判定ステップによって上記素数
    候補は素数の可能性があると判断されたとき、素数判定
    を行う第3の素数判定ステップとを具えることを特徴と
    する素数生成装置。
  4. 【請求項4】上記素数候補生成ステップは、乱数から奇
    数の上記素数候補を生成し、 上記素数候補更新ステップは、上記素数候補に2を加算
    して上記素数候補を更新することを特徴とする請求項3
    に記載の素数生成方法。
JP2001186856A 2001-06-20 2001-06-20 素数生成装置 Pending JP2003005643A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001186856A JP2003005643A (ja) 2001-06-20 2001-06-20 素数生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001186856A JP2003005643A (ja) 2001-06-20 2001-06-20 素数生成装置

Publications (1)

Publication Number Publication Date
JP2003005643A true JP2003005643A (ja) 2003-01-08

Family

ID=19026238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001186856A Pending JP2003005643A (ja) 2001-06-20 2001-06-20 素数生成装置

Country Status (1)

Country Link
JP (1) JP2003005643A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005531031A (ja) * 2002-06-21 2005-10-13 アトメル・コーポレイション 暗号化適用のための推定素数の検査
JP2007334038A (ja) * 2006-06-15 2007-12-27 Toshiba Corp 素数生成プログラム

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 アトメル・コーポレイション 暗号化適用のための推定素数の検査
JP4756117B2 (ja) * 2002-06-21 2011-08-24 インサイド コンタクトレス ソシエテ アノニム 暗号化適用のための推定素数の検査
JP2007334038A (ja) * 2006-06-15 2007-12-27 Toshiba Corp 素数生成プログラム

Similar Documents

Publication Publication Date Title
US7797361B2 (en) System and method for generating random numbers using parity feedback
EP2260376B1 (en) Digital random number generator based on digitally-controlled oscillators
JP3696209B2 (ja) シード生成回路、乱数生成回路、半導体集積回路、icカード及び情報端末機器
US20040059767A1 (en) Masking of factorized data in a residue number system
EP1465057A2 (en) Pseudo-random number generator with LFSR
CN110413257B (zh) 随机数产生电路
WO2009100104A1 (en) Cryptographic system incorporating a digitally generated chaotic numerical sequence
US20050097153A1 (en) Pseudorandom number generator
US9680647B2 (en) Method of using a token in cryptography
JP2013191213A (ja) メディアンフィルタ装置及びメディアンフィルタ方法
JP5143817B2 (ja) ハッシュ暗号装置及び方法
JP2001332961A (ja) クロック切替回路
JP2006303863A (ja) パルス信号生成装置
CN113541949A (zh) 用于加密的素数数字生成
US20150193206A1 (en) Method for generating an output of a random source of a random generator
JP4970287B2 (ja) 擬似ランダム・データ・シーケンスを発生するための方法、システム及び装置
JP2005523511A (ja) ギャップヒストグラムオンラインランダム性テスト
JPH09167083A (ja) 並列処理用割り算回路
KR101666974B1 (ko) 소수 생성
CN101243388A (zh) 用于在加密计算中执行求逆运算的电路结构和方法
JP2003005643A (ja) 素数生成装置
US20070150531A1 (en) Apparatus and method for generating random number using digital logic
JP2001251194A (ja) Crc演算装置
JP2002358010A (ja) べき乗剰余演算器
CN112860221A (zh) 一种随机序列生成方法、装置、设备及存储介质