JP4836676B2 - 素数生成プログラム - Google Patents
素数生成プログラム Download PDFInfo
- Publication number
- JP4836676B2 JP4836676B2 JP2006166240A JP2006166240A JP4836676B2 JP 4836676 B2 JP4836676 B2 JP 4836676B2 JP 2006166240 A JP2006166240 A JP 2006166240A JP 2006166240 A JP2006166240 A JP 2006166240A JP 4836676 B2 JP4836676 B2 JP 4836676B2
- Authority
- JP
- Japan
- Prior art keywords
- prime number
- candidate
- prime
- determination
- result
- 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.)
- Active
Links
Images
Description
第1の発明においては、第1素数候補pについて「ミラー-ラビンテスト」を途中まで実行し、第2素数候補2p+1について「拡張されたオイラー-ラグランジュの定理」を実行し、第1素数候補pについて「ミラー-ラビンテスト」を再開している。
図1は本発明の第1の実施形態に係る素数生成装置の構成を示す模式図である。この素数生成装置10は、具体的には携帯電話又はスマートカードなどの演算機の素数生成部として構成され、ハードウェア及びソフトウェアの組合せにより素数生成処理を行うものである。
(f11-2) 乱数生成部16の制御により、L−1ビットの第1素数候補pとして乱数を生成する機能。
(f11-3) 演算部17の制御により、第1素数候補pに基づいて、Lビットの第2素数候補2p+1を算出する第2素数候補算出機能。
(f11-4) 演算部17の制御により、除数テーブルT内の除数毎に、各素数候補p,2p+1の試行割算を個別に実行する試行割算実行機能。
(f11-5) 試行割算実行機能による全ての試行割算の結果が剰余を持つとき、演算部17の制御により、第1素数候補pに対し、2である底を用いたミラー-ラビン(Miller - Rabin)テストを実行する第1のミラー-ラビンテスト実行機能。
入力:判定対象の整数n、base(底)
出力:判定結果(「nはおそらく素数」、または、「nは合成数」)
ステップ:
(MR-i) n−1=2^s*t、tは奇数、と分解する(なお、^はベキ乗を表す)。
(MR-ii) b=base^t(mod n)を計算する。
→もしもb≡±1(mod n)ならば、「nはおそらく素数」を返す。
(MR-iii) 以下の処理をs−1回繰り返す。
b=b^2(mod n)を計算する。
→もしもb≡−1(mod n)ならば、「nはおそらく素数」を返す。
(MR-iv) 「nは合成数」を返す。
なお、第1のミラー-ラビンテストは、以上のミラー-ラビンテストのうち、baseが2の場合のテストに該当する。また、後述する第2のミラー-ラビンテストは、baseが2でない場合のテストに該当する。
「拡張されたオイラー-ラグランジュの定理」
pを素数とする。この時、次の2つの主張(EL-i),(EL-ii)が成り立つ。
2p+1は素数である ⇔ 2p+1は2^p+1を割り切る。
(A⇔B:Aである場合にはBが成り立つという意味を表す。以下同様)
(EL-ii) p≡3(mod 4)ならば、
2p+1は素数である ⇔ 2p+1は2^p−1を割り切る。
次に、本発明の第2の実施形態について図1及び図3を参照しながら説明する。
本実施形態は、第1の実施形態を拡張した例であり、具体的には、第1の実施形態のミラー-ラビンテストの分割実行方式を、2p+1、pは素数という形の素数に限定することなく、定数項が0ではない一般的な整数係数の多項式f(X)に対し、f(X)、Xは素数という形の素数を生成する場合に拡張したものである。
このような第2素数f(p)は、次数n=1、整数係数a1=2、定数項a0=1の場合、セーフプライム2p+1となる。但し、第2素数f(p)は、セーフプライム2p+1に限定されない。
(f11a-2) 乱数生成部16の制御により、第1素数候補pとして乱数を生成する機能。
(f11a-3) 演算部17の制御により、第1素数候補pに基づいて、第2素数候補f(p)を算出する第2素数候補算出機能。
(f11a-4) 演算部17の制御により、除数テーブルT内の除数毎に、各素数候補p,f(p)の試行割算を個別に実行する試行割算実行機能。
(f11a-5) 試行割算実行機能による全ての試行割算の結果が剰余を持つとき、演算部17の制御により、第1素数候補pに対し、2である底を用いたミラー-ラビン(Miller - Rabin)テストを実行する第1のミラー-ラビンテスト実行機能。
次に、以上のように構成された素数生成装置による素数生成方法について図3のフローチャートを用いて説明する。
次に、本発明の第3の実施形態について図1及び図4を参照しながら説明する。
本実施形態は、第1の実施形態とは異なり、マウアー法を用いた素数生成法の高速化を図るものである。
(f11b-2) 演算部17の制御により、「マウアー法」に基づいて、L/2ビット程度の素数Fを生成する素数生成機能。
F’=2rF+1 ・・・(1)
2r<F、但しrは乱数、Fは素数。
a^(F’−1)≡1(mod F’)、
g.c.d.(a^{(F’−1)/F}−1,F’)=1
が成り立つならば、F’は素数である。
(f11b-4) 演算部17の制御により、乱数r、素数F及び式p=2rF+1に基づいて、L−1ビットの第1素数候補pを算出する第1素数候補算出機能。
(f11b-7) 試行割算実行機能による全ての試行割算の結果が剰余を持つとき、演算部17の制御により、第2素数候補2p+1に対し、「拡張されたオイラー-ラグランジュ(Euler - Lagrange)の定理」に基づいて素数判定を実行する第1の素数判定機能。
次に、本発明の第4の実施形態について図1及び図5を参照しながら説明する。
本実施形態は、第2及び第3の実施形態を組み合わせた例であり、具体的には、第3の実施形態のマウアー法の分割実行方式を、2p+1、pは素数という形の素数に限定することなく、第2の実施形態に述べた多項式f(X)、Xは素数という形の素数を生成する場合に拡張したものである。
(f11c-2) 演算部17の制御により、「マウアー法」に基づいて、L/2ビット程度の素数Fを生成する素数生成機能。
(f11c-4) 演算部17の制御により、乱数r、素数F及び式p=2rF+1に基づいて、Lビットの第1素数候補pを算出する第1素数候補算出機能。
(f11c-7) 試行割算実行機能による全ての試行割算の結果が剰余を持つとき、演算部17の制御により、第2素数候補f(p)に対し、確率的素数判定法又は確定的素数判定法に基づいて素数判定を実行する第1の素数判定機能。
(1)第1及び第3の実施形態は、「ミラー-ラビンテスト(ミラー-ラビン法)」や「マウアー法」に代えて、図6に示すように、数ステップからなる他の確率的素数判定法又は確定的素数判定法を分割した構成の素数生成を行なうように変形してもよい。同様に、第1及び第3の実施形態は、「拡張されたオイラー-ラグランジュの定理」に代えて、他の確率的素数判定法又は確定的素数判定法を用いるように変形してもよい。
2^{f(p)-1} ≡ 1 (mod f(p))
(e)pを通常のマウアー法で、素数判定する。
G.C.D.( 2^{(f(p)-1)/F}−1, f(p)) = 1
についても検証しなくてはならないが、これについては(c)の試行割算を通過した時点で、検証を行っているため、この処理を省くことが出来る。
a^{n-1} ≡ 1 (mod n)
が成立することを確かめるフェルマー(Fermat)法の代わりに、整数nに対して底aに関するミラー-ラビンテストが成り立つことを確かめる。このように変形しても、検証の誤判定率を低減させることなく、変形例(1)から(4)と同様の作用効果を得ることができる。更には一般にミラー-ラビンテストに要する時間は、フェルマー(Fermat)法に要する時間より短いため、判定時間を低減させることが可能となる。
Claims (6)
- Lビットの素数2p+1を生成する素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
予め複数個の除数が記憶された除数記憶手段、
L−1ビットの第1素数候補pとして乱数を生成する乱数生成手段、
前記第1素数候補pに基づいて、Lビットの第2素数候補2p+1を算出する第2素数候補算出手段、
前記除数記憶手段内の除数毎に、前記各素数候補p,2p+1の試行割算を個別に実行する試行割算実行手段、
前記試行割算実行手段による全ての試行割算の結果が剰余を持つとき、前記第1素数候補pに対し、2である底を用いたミラー-ラビンテストを実行する第1のミラー-ラビンテスト実行手段、
前記第1のミラー-ラビンテスト実行手段によるテストの結果が合格のとき、前記第2素数候補2p+1に対し、「拡張されたオイラー-ラグランジュの定理」に基づいて素数判定を実行する素数判定手段、
前記素数判定手段による素数判定の結果が合格のとき、前記第1素数候補pに対し、2でない底を用いたミラー-ラビンテストを実行する第2のミラー-ラビンテスト実行手段、
前記第2のミラー-ラビンテスト実行手段によるテストの結果が合格のとき、前記第2素数候補2p+1を素数として出力する素数出力手段、
として機能させるための素数生成プログラム。 - 定数項が0ではない、整数係数の多項式f(X)∈Z[X]に対し(但し、Xは任意の整数、ZはXを要素とする集合)、第1素数p(∈Z)から算出可能な第2素数f(p)(∈Z)を生成する素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
予め複数個の除数が記憶された除数記憶手段、
前記第1素数候補pとして乱数を生成する乱数生成手段、
前記第1素数候補pに基づいて、前記第2素数候補f(p)を算出する第2素数候補算出手段、
前記除数記憶手段内の除数毎に、前記各素数候補p,f(p)の試行割算を個別に実行する試行割算実行手段、
前記試行割算実行手段による全ての試行割算の結果が剰余を持つとき、前記第1素数候補pに対し、2である底を用いたミラー-ラビンテストを実行する第1のミラー-ラビンテスト実行手段、
前記第1のミラー-ラビンテスト実行手段によるテストの結果が合格のとき、前記第2素数候補f(p)に対し、確率的素数判定法又は確定的素数判定法を実行する素数判定手段、
前記素数判定手段による素数判定の結果が合格のとき、前記第1素数候補pに対し、2でない底を用いたミラー-ラビンテストを実行する第2のミラー-ラビンテスト実行手段、
前記第2のミラー-ラビンテスト実行手段によるテストの結果が合格のとき、前記第2素数候補f(p)を素数として出力する素数出力手段、
として機能させるための素数生成プログラム。 - Lビットの素数2p+1を生成する素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
予め複数個の除数が記憶された除数記憶手段、
「マウアー法」に基づいて、L/2ビット程度の素数Fを生成する素数生成手段、
ポクリントンの定理に基づく式p=2rF+1に基づいて、前記L/2ビット程度の素数Fに応じてL−1ビットの第1素数候補pを得られるように、乱数rを生成する乱数生成手段、
前記乱数r、前記素数F及び前記式p=2rF+1に基づいて、L−1ビットの第1素数候補pを算出する第1素数候補算出手段、
前記第1素数候補pに基づいて、Lビットの第2素数候補2p+1を算出する第2素数候補算出手段、
前記除数記憶手段内の除数毎に、前記各素数候補p,2p+1の試行割算を個別に実行する試行割算実行手段、
前記試行割算実行手段による全ての試行割算の結果が剰余を持つとき、前記第2素数候補2p+1に対し、「拡張されたオイラー-ラグランジュの定理」に基づいて素数判定を実行する第1の素数判定手段、
前記第1の素数判定手段による素数判定の結果が合格のとき、前記第1素数候補pに対し、ポクリントンの定理に基づいて素数判定を実行する第2の素数判定手段、
前記第2の素数判定手段による判定結果が合格のとき、前記第2素数候補2p+1を素数として出力する素数出力手段、
として機能させるための素数生成プログラム。 - 定数項が0ではない、整数係数の多項式f(X)∈Z[X]に対し(但し、Xは任意の整数、ZはXを要素とする集合)、第1素数p(∈Z)から算出可能な第2素数f(p)(∈Z)を生成する素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
予め複数個の除数が記憶された除数記憶手段、
「マウアー法」に基づいて、L/2ビット程度の素数Fを生成する素数生成手段、
ポクリントンの定理に基づく式p=2rF+1に基づいて、前記L/2ビット程度の素数Fに応じてLビットの第1素数候補pを得られるように、乱数rを生成する乱数生成手段、
前記乱数r、前記素数F及び前記式p=2rF+1に基づいて、Lビットの第1素数候補pを算出する第1素数候補算出手段、
前記第1素数候補pに基づいて、第2素数候補f(p)を算出する第2素数候補算出手段、
前記除数記憶手段内の除数毎に、前記各素数候補p,f(p)の試行割算を個別に実行する試行割算実行手段、
前記試行割算実行手段による全ての試行割算の結果が剰余を持つとき、前記第2素数候補f(p)に対し、確率的素数判定法又は確定的素数判定法に基づいて素数判定を実行する第1の素数判定手段、
前記第1の素数判定手段による素数判定の結果が合格のとき、前記第1素数候補pに対し、ポクリントンの定理に基づいて素数判定を実行する第2の素数判定手段、
前記第2の素数判定手段による判定結果が合格のとき、前記第2素数候補2p+1を素数として出力する素数出力手段、
として機能させるための素数生成プログラム。 - Lビットの素数2p+1を生成する素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
予め複数個の除数が記憶された除数記憶手段、
L−1ビットの第1素数候補pとして乱数を生成する乱数生成手段、
前記第1素数候補pに基づいて、Lビットの第2素数候補2p+1を算出する第2素数候補算出手段、
前記除数記憶手段内の除数毎に、前記各素数候補p,2p+1の試行割算を個別に実行する試行割算実行手段、
前記試行割算実行手段による全ての試行割算の結果が剰余を持つとき、前記第2素数候補2p+1に対し、「ミラー-ラビンテスト」とは異なる確率的素数判定法又は確定的素数判定法を途中まで実行する第1の素数判定手段、
前記第1の素数判定手段による素数判定の結果が合格のとき、前記第1素数候補pに対し、「拡張されたオイラー-ラグランジュの定理」を用いない確率的素数判定法又は確定的素数判定法に基づいて第2の素数判定を実行する第2の素数判定手段、
前記第2の素数判定手段による素数判定の結果が合格のとき、前記第2素数候補2p+1に対し、前記第1の素数判定手段による素数判定を再開し、この素数判定を最後まで実行する第3の素数判定手段、
前記第3の素数判定手段による素数判定の結果が合格のとき、前記第2素数候補2p+1を素数として出力する素数出力手段、
として機能させるための素数生成プログラム。 - 定数項が0ではない、整数係数の多項式f(X)∈Z[X]に対し(但し、Xは任意の整数、ZはXを要素とする集合)、第1素数p(∈Z)から算出可能な第2素数f(p)(∈Z)を生成する素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
予め複数個の除数が記憶された除数記憶手段、
前記第1素数候補pとして乱数を生成する乱数生成手段、
前記第1素数候補pに基づいて、前記第2素数候補f(p)を算出する第2素数候補算出手段、
前記除数記憶手段内の除数毎に、前記各素数候補p,f(p)の試行割算を個別に実行する試行割算実行手段、
前記試行割算実行手段による全ての試行割算の結果が剰余を持つとき、前記第2素数候補f(p)に対し、「ミラー-ラビンテスト」とは異なる確率的素数判定法又は確定的素数判定法を途中まで実行する第1の素数判定手段、
前記第1の素数判定手段による素数判定の結果が合格のとき、前記第1素数候補pに対し、確率的素数判定法又は確定的素数判定法を実行する第2の素数判定手段、
前記第2の素数判定手段による素数判定の結果が合格のとき、前記第2素数候補f(p)に対し、前記第1の素数判定手段による素数判定を再開し、この素数判定を最後まで実行する第3の素数判定手段、
前記第3の素数判定手段による素数判定の結果が合格のとき、前記第2素数候補f(p)を素数として出力する素数出力手段、
として機能させるための素数生成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006166240A JP4836676B2 (ja) | 2006-06-15 | 2006-06-15 | 素数生成プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006166240A JP4836676B2 (ja) | 2006-06-15 | 2006-06-15 | 素数生成プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007334038A JP2007334038A (ja) | 2007-12-27 |
JP4836676B2 true JP4836676B2 (ja) | 2011-12-14 |
Family
ID=38933573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006166240A Active JP4836676B2 (ja) | 2006-06-15 | 2006-06-15 | 素数生成プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4836676B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2946207A1 (fr) * | 2009-05-28 | 2010-12-03 | Proton World Internat Nv | Protection d'une generation de nombres premiers pour algorithme rsa |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003005643A (ja) * | 2001-06-20 | 2003-01-08 | Sony Corp | 素数生成装置 |
JP2007218997A (ja) * | 2006-02-14 | 2007-08-30 | Toshiba Corp | 素数生成装置、プログラム及び方法 |
-
2006
- 2006-06-15 JP JP2006166240A patent/JP4836676B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2007334038A (ja) | 2007-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5328186B2 (ja) | データ処理システム及びデータ処理方法 | |
US6795553B1 (en) | Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method | |
WO2006126668A1 (ja) | 擬似ランダム関数計算装置及び方法、並びに回数制限匿名認証システム及び方法 | |
JP4351987B2 (ja) | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム | |
JP4690819B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
US6609141B1 (en) | Method of performing modular inversion | |
JP2009505148A (ja) | 暗号化演算における反転操作を行うための回路配置及び方法 | |
JP4836676B2 (ja) | 素数生成プログラム | |
JP2007218997A (ja) | 素数生成装置、プログラム及び方法 | |
JP4664514B2 (ja) | 素数生成装置及びプログラム | |
CN112861189A (zh) | 签名的生成方法和验证方法、装置、设备和介质 | |
JP4802228B2 (ja) | 鍵生成装置及びプログラム | |
CN112906059A (zh) | 代理签名和验证方法、装置、系统及存储介质 | |
JP5210712B2 (ja) | 圧縮rsa係数の計算方法 | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
WO2023228408A1 (ja) | パラメータ生成システム、パラメータ生成方法、及びパラメータ生成プログラム | |
KR20090090881A (ko) | 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 | |
JPH076025A (ja) | 冪剰余演算方法および装置 | |
JP2005316038A (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム | |
JP2006091086A (ja) | モンゴメリ逆元演算装置を備えた半導体装置およびicカ−ド | |
JP2007212768A (ja) | 楕円曲線暗号における事前計算テーブル作成装置 | |
JPH0237383A (ja) | 素数生成方式 | |
JPH0766322B2 (ja) | 素数判定器 | |
JPS61281335A (ja) | 素数発生器 | |
JP2000293101A (ja) | 楕円暗号安全性評価装置、その方法及びプログラム記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090311 |
|
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: 20110906 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110927 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20141007 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4836676 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |