JPH0766322B2 - 素数判定器 - Google Patents

素数判定器

Info

Publication number
JPH0766322B2
JPH0766322B2 JP60122686A JP12268685A JPH0766322B2 JP H0766322 B2 JPH0766322 B2 JP H0766322B2 JP 60122686 A JP60122686 A JP 60122686A JP 12268685 A JP12268685 A JP 12268685A JP H0766322 B2 JPH0766322 B2 JP H0766322B2
Authority
JP
Japan
Prior art keywords
prime number
prime
random number
determination means
circuit
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 - Lifetime
Application number
JP60122686A
Other languages
English (en)
Other versions
JPS61281334A (ja
Inventor
栄司 岡本
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP60122686A priority Critical patent/JPH0766322B2/ja
Publication of JPS61281334A publication Critical patent/JPS61281334A/ja
Publication of JPH0766322B2 publication Critical patent/JPH0766322B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は素数判定器に関し、特に暗号通信においてキー
として使用される素数の発生に利用される素数判定器に
関する。
〔従来技術とその問題点〕
暗号方式の中で、リベスト(Rivest)等が提案した、い
わゆるアールエスエー(RSA)公開鍵暗号系は暗号化キ
ーを秘密にしておく必要がなく、暗号通信におけるキー
の配送に有望視されている。RSA公開鍵暗号系はコミュ
ニケーションズ・オブ・ザ・エーシーエム(Communicat
ions of the ACM)(以下文献(1))の1978年21巻2
号の120頁から126頁に記載される。このRSA公開鍵暗号
系においてはキーを作るにあたり100桁程度の大きな素
数が必要である。大きな素数を生成するには、ランダム
に奇数を生成してその奇数が素数であるか否かを判定す
ることによって行われる。上記文献(1)によれば、10
0桁の素数を生成するときには、1つの素数を得るまで
に約115回ぐらい素数候補を生成する必要がある。
従来から知られる素数判定法としては、上記文献(1)
に記載されるソロベイ・ストラッセンの方法や、ヌース
(Knuth)著、ジ・アート・オブ・コンピュータ・プロ
グラミング(The Art of Computer Programming)(以
下文献(2))の第2巻改訂版の374頁から380頁に記載
されるラビンの方法がある。
ここで上記ソロベイ・ストラッセンの方法を説明する。
下記にソロベイ・ストラッセンの方法のアルゴリズムを
示す。
ステップ101 N←素数候補(奇数)、I←0 ステップ102 乱数Aを生成 ステップ103 gcd(A,N)≠1ならば終了、Nは合成数 ステップ104 ならば終了、Nは合成数 ステップ105 I<Dならば、I←I+1としてステッ
プ102へ I≧Dならば終了、Nは素数 上記アルゴリズムにおいて、N,Iは整数、Dは100程度の
置、x≡y(modN)はx−yがnで割切れることを意味
する。また、(A/N)は以下に説明するようなヤコビ記
号である。
ヤコビ記号はルジャンドル記号を拡張したものである。
ルジャンドル記号はある整数aが別の整数pの平方剰余
であるかどうかによってその値の決まる記号である。平
方剰余、ルジャンドル記号、ヤコビ記号の順で説明す
る。
整数aが整数pの平方剰余であるとは、x2=kp+aを成
立させるような整数の組(x,k)が存在することであ
る。aがpの平方剰余でないとき、aはpの平方非剰余
であるという。
ルジャンドル記号(a/p)はpが素数のときのみ定義さ
れており、aがpの整数倍であるとき、(a/p)=0と
なり、aがpの平方剰余であるときに、(a/p)=1と
なり、aがpの平方非剰余であるときに、(a/p)=−
1となる。
ヤコビ記号(a/n)は整数であるようなnに対して定義
されており、表記はルジャンドル記号と同じであって、
実際、nが素数である場合には、ルジャンドル記号と値
が一致するという性質を持つ。n=p1・p2・p3・・・が
nの素因数分解であるときに、ヤコビ記号(a/n)は(a
/n)=(a/p1)(a/p2)(a/p3)・・・と定義される。
ソロベイ・ストラッセンの方法のアルゴリズムの詳細に
ついては、文献(1)に記載されている。
かかるソロベイ・ストラッセンの方法においては、 Nが合成数のときは、小さい素数を因数に持つことが
多い、 素数でないのに 又はAN-1≡1(mod N)になることは非常に少ない、 という特長を利用していない。
その結果、ソロベイ・ストラッセンの方法で素数を判定
する場合には多くの計算処理を行う必要があり、時間を
要するという問題を有していた。この問題は上記のラビ
ンの方法においても同様に発生する。
〔発明の目的〕
本発明の目的は、上記特長,を考慮して、計算処理
を少なくし素数判定時間を短縮した素数判定器を提供す
ることにある。
〔発明の構成〕
本発明は、与えられた正整数Nが素数であるか否かを判
定する素数判定器において、 前記Nが予め定められた正整数Mと互いに素でなければ
Nは素数でないと判定する第1判定手段と、正整数の乱
数を発生する乱数発生手段と、 前記第1判定手段がNは素数でないと判定しなかったと
き前記乱数発生手段の生成した整数Aに対して をNで割った余りが1でもN−1でもなければNは素数
でないと判定する第2判定手段と、 前記第2判定手段がNを素数でないと判定しなかったと
き前記余りがNとAに依存して定まる整数と異なるとき
Nは素数でないと判定する第3判定手段と、 前記乱数発生手段が生成した任意の個数の乱数に対して
前記第2判定手段と前記第3判定手段のいずれもNは素
数でないと判定しなかったときにNを素数と判定する第
4判定手段と、 から構成したことを特徴としている。
〔実施例〕
以下に、図面を用いて本発明の実施例を説明する。
第1図は本発明に係る素数判定器の装置構成を示すブロ
ック図である。この図において、乱数発生回路1は整数
の乱数Aを発生し、gcd(最大公約数)計算回路2は2
つの整数の最大公約数を計算し、巾乗剰余回路3は巾乗
剰余を計算し、ヤコビ計算回路4は2つの整数a,bに対
してヤコビの記号(a/b)を計算する機能を有する。ま
たROM5はプログラムや必要な定数を記憶し、RAM6は上記
計算で得たデータを一時的に記憶し、プロセッサ7は上
記の各回路の動作の制御、データの授受、各種の判断等
を行う機能を有する。上記各構成要素はバス8で接続さ
れており、かかる装置構成は例えば計算機システムによ
って実現される。
第2図は上記素数判定器の動作を示すフローチャートで
あり、このフローチャートに従って動作を説明する。バ
ス8を通して外部から与えられた素数候補(奇数の正整
数)を変数Nに置き、且つカウンタとして機能する変数
Iに0を置くと共にROM5内に記憶されている小さい素数
の積(正整数)を変数Mに置く(ステップ201)。この
場合Mは例えば100以下の素数の積である。上記NとM
はgcd計算回路2に送られる。gcd計算回路2はNとMの
最大公約数gcd(M,N)を求め、このgcd(M,N)を変数G
に置く(ステップ202)。プロセッサ7はgcd計算回路2
で求められたGが1でなければNは素数ではない、すな
わち合成数であると判断する(ステップ203)。一方G
が1であれば、プロセッサ7は、乱数発生回路1によっ
て乱数Aを発生させ(ステップ204)、この乱数Aと上
記Nとを巾乗剰余回路3に送り、この巾乗剰余回路3に
おいて なるBを計算させる(ステップ205)。このようにして
求めたBが1でもN−1でもなければ、プロセッサ7は
Nは合成数であると判断する(ステップ206)。一方B
が1かN−1であるときには、AとNをヤコビ計算回路
4に送り、このヤコビ計算回路4においてC=(A/N)
なるCを計算で求める(ステップ207)。そしてプロセ
ッサ7は、もしCがBと等しくないならばNは合成数で
あると判断し(ステップ208)、等しいのであればI=
I+1(ステップ209)、ステップ204に戻り、乱数発生
回路1で新しい乱数Aを発生し、それ以降上記と同じス
テップを繰返す。そしてIが予め定められた定数Dと等
しくなるまでNが合成数と判断されないときには(ステ
ップ210)、プロセッサ7は、Nは素数であると判断す
る(ステップ211)。この場合Dは例えば20程度に定め
られるが、前記の性質上5程度とすることもできる。
このようにして得られた判断結果はバス8を通じて外部
回線に通知される。
上記素数判定器の動作のアルゴリズムを示すと、 ステップ201 N←素数候補、I←0、M←小さい素数
の積 ステップ202,203 gcd(M,N)≠1ならば終了、Nは合
成数 ステップ204 乱数Aを生成 ステップ205,206 又はN−1ならば終了、Nは合成数 ステップ207,208 B≠(A/N)ならば終了、Nは合成数 ステップ209,210 I<DならばI<I+1としてステ
ップ204へ I≧Dならば終了、Nは素数 となる。かかるアルゴリズムはROM5に記憶されたプログ
ラムに基づきプロセッサ7が乱数発生回路1等の構成要
素を動作させて実行する。
上記アルゴリズムを従来のソロベイ・ストラッセン法の
アルゴリズムと比較すると、前記の特長を考慮してス
テップ202,203を入れて高速化を図っている。また前記
ステップ104を、ステップ205,206とステップ207,208の
2つに分けて設けるようにした。これによると前記の
特長によってステップ207,208を通過することが極めて
少なくなり、(A/N)の計算の必要性がほとんどなくな
って、更に高速化される。またステップ103はステップ2
02,203を設けると、その必要性が少なくなる。このこと
は、もしgcd(A,N)≠1であるならば、前記によって
Nは小さい因数を含むことが多く、そのときはステップ
202,203でNは合成数であると判定されるからである。
そこでステップ103を除いてステップ202,203を設ける
と、本来ステップ103はステップ202,203よりもアルゴリ
ズム上通過回数が多いので全体として計算処理量が少な
くなる。なおステップ103で合成数と判定されるNは、
必ずステップ205,206で合成数と判定されるので、ステ
ップ103を除いても素数判定能力は変わらない。
従って上記実施例における素数判定器のアルゴリズムは
従来法のアルゴリズムに比べて、計算処理量が少なくな
り、高速に動作することができる。
上記素数判定器を機能ブロック図で示すと第3図の如く
なる。第3図において、9は第1判定手段で、gcd計算
回路2とROM5とRAM6とプロセッサ7から構成され、前記
ステップ201,202,203を実行する。10は乱数発生手段
で、乱数発生回路1で構成され、ステップ204を実行す
る。11は第2判定手段で、巾乗剰余回路3とRAM6とプロ
セッサ7から構成され、前記ステップ205,206を実行す
る。12は第3判定手段で、ヤコビ計算回路4とRAM6とプ
ロセッサ7から構成され、前記ステップ207,208を実行
する。13は第4判定手段で、ROM5とRAM6とプロセッサ7
から構成され、前記ステップ209,210を実行する。この
ように素数判定器は、第1、第2、第3、第4の判定手
段を備え、第1判定手段9でNは非合成数であると判定
されたときに、第2判定手段11と第3判定手段12と第4
判定手段13による判定動作を順次に繰返すように構成さ
れている。
上記素数判定器において、乱数発生回路1で発生する乱
数は、自然乱数、疑似乱数であってもよい。またgcd計
算回路2については前記文献(2)の316頁〜339頁に記
載され、巾乗剰余回路3は例えば情報処理学会論文誌第
24巻6号764頁〜771頁(1983)に記載されているものを
用いることができる。ヤコビ計算回路4は前記文献
(1)に記載されているようなヤコビの記号(A/N)を
計算する回路であるが、計算処理量が少ないのでプロセ
ッサで容易に実行することができる。乱数発生回路1、
gcd計算回路2、巾乗剰余回路3、ヤコビ計算回路4は
プロセッサ7又は別の専用プロセッサで実行させること
もできる。
なお、上記素数判定器は、乱数発生回路1で発生される
乱数を素数候補として用いて上記素数判定を行うように
構成すれば、容易に素数発生器として構成し直すことが
できる。
〔発明の効果〕
以上説明した通り本発明によれば、従来の素数判定器に
対してその取扱う数及び計算上の特長を考慮して若干の
改良を施すことによって計算処理量を著しく少なくする
ことができ、これによって高速に素数判定を行うことが
できる。
【図面の簡単な説明】 第1図は素数判定器の装置構成図、 第2図は素数判定器の判定動作を示すフローチャート、 第3図は素数判定器の機能ブロック図である。 1……乱数発生回路 2……gcd計算回路 3……巾乗剰余回路 4……ヤコビ計算回路 5……ROM 6……RAM 7……プロセッサ 9……第1判定手段 10……乱数発生手段 11……第2判定手段 12……第3判定手段 13……第4判定手段

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】与えられた正整数Nが素数であるか否かを
    判定する素数判定器において、 前記Nが予め定められた正整数Mと互いに素でなければ
    Nは素数でないと判定する第1判定手段と、 正整数の乱数を発生する乱数発生手段と、 前記第1判定手段がNは素数でないと判定しなかったと
    き前記乱数発生手段の生成した整数Aに対して をNで割った余りが1でもN−1でもなければNは素数
    でないと判定する第2判定手段と、 前記第2判定手段がNを素数でないと判定しなかったと
    き前記余りがNとAに依存して定まる整数と異なるとき
    Nは素数でないと判定する第3判定手段と、 前記乱数発生手段が生成した任意の個数の乱数に対して
    前記第2判定手段と前記第3判定手段のいずれもNは素
    数でないと判定しなかったときにNを素数と判定する第
    4判定手段と、 から成ることを特徴とする素数判定器。
JP60122686A 1985-06-07 1985-06-07 素数判定器 Expired - Lifetime JPH0766322B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP60122686A JPH0766322B2 (ja) 1985-06-07 1985-06-07 素数判定器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60122686A JPH0766322B2 (ja) 1985-06-07 1985-06-07 素数判定器

Publications (2)

Publication Number Publication Date
JPS61281334A JPS61281334A (ja) 1986-12-11
JPH0766322B2 true JPH0766322B2 (ja) 1995-07-19

Family

ID=14842111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60122686A Expired - Lifetime JPH0766322B2 (ja) 1985-06-07 1985-06-07 素数判定器

Country Status (1)

Country Link
JP (1) JPH0766322B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0237383A (ja) * 1988-07-27 1990-02-07 Hitachi Ltd 素数生成方式
JP5875717B1 (ja) * 2015-01-14 2016-03-02 日本電信電話株式会社 乱数生成装置、乱数生成方法、およびプログラム

Also Published As

Publication number Publication date
JPS61281334A (ja) 1986-12-11

Similar Documents

Publication Publication Date Title
Khalique et al. Implementation of elliptic curve digital signature algorithm
Comba Exponentiation cryptosystems on the IBM PC
US7908641B2 (en) Modular exponentiation with randomized exponent
US6266688B1 (en) Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed
Robshaw et al. Elliptic curve cryptosystems
US8862651B2 (en) Method and apparatus for modulus reduction
Renes et al. qDSA: small and secure digital signatures with curve-based Diffie–Hellman key pairs
EP0984357B1 (en) Apparatus and method for elliptic-curve multiplication and recording medium having recorded thereon a program for implementing the method
EP0952697B1 (en) Elliptic curve encryption method and system
US7346637B2 (en) Polynomial time deterministic method for testing primality of numbers
US20040125948A1 (en) Montgomery modular multiplier using a compressor and multiplication method
Moon et al. Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications
Pavlovski et al. Efficient batch signature generation using tree structures
US6609141B1 (en) Method of performing modular inversion
JPH0766322B2 (ja) 素数判定器
Knežević et al. Speeding up bipartite modular multiplication
JPH0721761B2 (ja) 素数判定器
Dai et al. Don’t Forget Pairing-Friendly Curves with Odd Prime Embedding Degrees
CN117254909B (zh) 一种快速生成高概率原根的计算方法、系统及存储介质
Rao et al. A novel modular multiplication algorithm and its application to RSA decryption
JP3796867B2 (ja) 素数判定方法および装置
JP3626315B2 (ja) 剰余算装置、情報処理装置及び剰余算方法
KR100676461B1 (ko) 특정 소인수를 이용한 엔티티 인증성, 및 메시지의 무결성및(또는) 인증성 검증방법, 시스템 및 장치
JPS61281335A (ja) 素数発生器
JPH0721763B2 (ja) 素数発生器

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term