JP4664514B2 - 素数生成装置及びプログラム - Google Patents
素数生成装置及びプログラム Download PDFInfo
- Publication number
- JP4664514B2 JP4664514B2 JP2001072927A JP2001072927A JP4664514B2 JP 4664514 B2 JP4664514 B2 JP 4664514B2 JP 2001072927 A JP2001072927 A JP 2001072927A JP 2001072927 A JP2001072927 A JP 2001072927A JP 4664514 B2 JP4664514 B2 JP 4664514B2
- Authority
- JP
- Japan
- Prior art keywords
- prime number
- prime
- product
- generating
- 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 - Lifetime
Links
Images
Description
【発明の属する技術分野】
本発明は、素数生成装置及びプログラムに係り、特に、暗号鍵として用いるための素数の生成中、外部からの解析に対し、生成した素数及び生成中の情報の漏洩を困難にする素数生成装置及びプログラムに関する。
【0002】
【従来の技術】
社会における急速な情報関連技術の発展に伴い、電子情報の秘匿手段、認証手段として暗号技術の重要性が高まっている。係る暗号技術は、DES(Data Encryption Standard)方式に代表される秘密鍵方式と、RSA(Rivest-Shamir-Adleman)方式に代表される公開鍵方式とが広く用いられている。
【0003】
秘密鍵方式では、乱数を生成するだけで共通鍵を容易に生成可能である。一方、公開鍵方式では公開鍵及び秘密鍵の生成には、大きなビット長の素数を生成する必要がある。例えば、RSA方式では秘密鍵として2つの素数p,qを用い、DSA(Digital signature Algorithm)方式では公開鍵として2つの素数p,qを用いている。
【0004】
これらの素数は、暗号解読を困難にする観点から十分大きい必要があり、現時点では10進表記で約300桁が推奨されている。
素数の生成方法は、一般に、適当に生成した正の整数に素数判定アルゴリズムを適用し、素数と判定された場合にその正の整数を素数として出力する方式が用いられている。
【0005】
ここでは、素数判定アルゴリズムとしてポクリントン(Pocklington)の定理(岡本龍明、太田和夫、"暗号・ゼロ知識証明・数論"、共立出版、P.133-132, 1995)を利用した、マウアー(Maurer)の方法(U. M. Maurer, “Fast Generation of Prime Numbers and Secure Public-key Cryptographic Parameters"、Journal of Criptology、vol.8, p.123-155, 1995)について説明する。
【0006】
ポクリントンの定理は、与えられた整数が素数であるか否かを判定可能な定理であり、以下のように記述される。
【0007】
整数Nは、N=FG+1,gcd(F,G)=1という形をしていると仮定する。ここで、gcd(F,G)はFとGの最大公約数を意味する。さらに、整数Fは、F=q1 e1q2 e2…qk ek(qiは相異なる素数)として完全に素因数分解されているとする。
【0008】
このとき、次の2条件をみたす整数aが存在すれば、整数Nの任意の素因数rに対し、整数Fはr−1を割り切る。
条件1)aN-1=1 mod N
条件2)任意のiに対してgcd(a(N-1)/qi−1,N)=1
以上がポクリントンの定理である。マウアーの素数生成方法は、以下のように、ポクリントンの定理の特別な場合を利用している。
【0009】
整数NがN=FG+1であり、整数Fは、F>N1/2を満たす素数、という形をしていると仮定する。
このとき、次の2条件を満たす整数aが存在すれば、整数Nは素数である。
【0010】
条件1)aN-1=1 mod N
条件2)gcd(a(N-1)/F−1,N)=1
以上がマウアーの素数生成方法である。次に、このマウアーの素数生成方法を図5を用いて説明する。
まず小さな素数F0を生成する(ST1)。例えば16ビット程度の奇数をランダムに生成し、その奇数が8ビット以下の全ての素数で割り切れないとき、その奇数を素数F0として採用すればよい。
【0011】
次に、再帰的に素数Niを生成するループ処理を行う。ループのインデックスをiとし、初期値を0とする(ST2)。i回目のループについて説明する。まず、素数Fi未満の乱数Riを生成する(ST3)。この乱数Riと素数Fiと用いて、素数候補Ni=2RiFi+1を算出する(ST4)。この素数候補Niに関し、上述したポクリントンの定理の特別な場合を用いて素数判定を行う(ST5)。なお、素数候補Niは、Ri<Fiであることから、ポクリントンの定理の特別な場合(Fi>Ni 1/2)に該当している。
【0012】
すなわち、ステップST5により素数候補Niについて素数か否かが判定され(ST6)、素数候補Niが素数でないと判定されたとき、ステップST3に戻って乱数Riの生成からやり直す。
【0013】
一方、ステップST6により、素数候補Niが素数と判定されたとき、この素数Niを次の素数候補Ni+1の算出のために、Fi+1=Niとおき(ST7)、i+1回目のループ処理に入る(ST8)。
【0014】
ループ終了条件i<kのkは、生成したい素数のビット数に応じて適当に決める。また、ループが終了したとき、素数候補Niを素数として出力する(ST9)。
【0015】
一方、堀らは、マウアーの素数生成方法の変形例を特開平10−240128号に開示している。堀らの方法は、マウアーの方法に比べて次の2点で改良されている。
【0016】
第1の改良点は、図6に示すように、ステップST4にて算出された素数候補Niに対し、ステップST5によるポクリントンの定理による素数判定の前に、素数候補Niを数ビットの素数で割る試行割算を入れた点と(ST・D−1)、試行割算の結果、割り切れたか否かにより素数か否かを判定し(ST・D−2)、割り切れた場合はステップST3の乱数Riの生成に戻るようにした点である。
【0017】
この第1の改良点によれば、処理量の多いべき乗剰余算を必要とするポクリントンの定理による素数判定の前に、試行割算によって割り切れる簡単な合成数が排除されるので、素数判定全体の処理速度が向上されるという利点を奏する。
【0018】
第2の改良点は、生成した素数Niのビット数をmビットとするとき、p−1に0.5mビットの素因数、p+1に0.4mビットの素因数を持たせた点である。
【0019】
第2の改良点によれば、素因数分解手法であるp−1法及びp+1法に強い素数が生成されるという利点を奏する。
【0020】
さて、以上のようなマウアーあるいは堀らの素数生成方法では、ポクリントンの定理の条件1,2及び/又は試行割算の演算の際に、素数候補Niをそのまま演算データとして用いている。
【0021】
一方、近年では、ICカードの如き、スマートカードにおける演算中の状態を観察し、データの値と演算の内容とを解析する方法が提案され始めている。係る解析方法としては、例えば、コチャー(Kocher)らにより提案された電力解析及びタイミング解析などが強力な方式として知られている。
【0022】
電力解析は、スマートカードにおける演算中の消費電力を計測し、電力波形の解析に基づき、演算のデータを推測する手法である(P. Kocher, J. Jaffe, B. Jun、"Differential Power Analysis", Advances in Cryptology : Proceeding of CRYPTO’99, Springer-Verlag, 1999, pp.388-397)。
【0023】
また、タイミング解析は、演算の処理時間がデータ依存であることに基づき、演算のデータを推測する手法である(P. C. Kocher, “Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems", Advances in Cryptology : Proceedings of CRYPTO’96, Springer-Verlag, 1996, PP.104-113)。
【0024】
これらの解析方法によれば、特に乗算、除算では、演算に使われたデータに依存して消費電力や処理時間が変わるため、多くの情報を外部に漏らすことが知られている。なお、外部とは、権限の無い第三者又は第三者装置などを意味している。また、解析対象は、スマートカードに限らず、外部から解析可能な装置であればよい。
【0025】
このような電力解析やタイミング解析によれば、前述したマウアー又は堀らの素数生成方法では、生成した素数の情報が外部に漏れる可能性がある。
【0026】
しかしながら、例えばRSA方式では、素数を秘密鍵として用いるため、素数が外部に漏れると、暗号文が解読可能となってしまう。さらに、素数の一部の情報(ある特定のビットの値など)が漏れることも、例えば鍵の全数探索を行うときに探索対象の整数の個数を減らし、鍵の解析の糸口を与えるため、望ましくない。
【0027】
このため、素数生成中及び生成後において、外部からの解析に対し、情報を漏らさない必要がある。
【0028】
【発明が解決しようとする課題】
以上説明したように、演算中の状態を外部から解析可能な装置にて素数を生成する際には、素数生成中及び生成後の情報を外部に漏らさない必要がある。
【0029】
本発明は上記実情を考慮してなされたもので、素数生成時に電力解析やタイミング解析を施されても、情報の漏洩を阻止し得る素数生成装置及びプログラムを提供することを目的とする。
【0030】
【課題を解決するための手段】
本発明の骨子は、素数候補N,pをそのまま素数判定せずに、素数候補N,pを含む見掛け上の素数候補Nα’,pδを素数判定する構成により、素数生成中における外部からの解析に対し、素数候補N,pの漏洩を阻止することにある。
【0031】
ここで、本発明は、演算中の情報の漏洩を阻止するものであるから、素数判定の方法には限定されず、例えば、前述したポクリントンの定理の他には、ミラー法、アドルマン−ルメリ法、コーエン−レンストラ法、ルーカス法、又はルーカス−レーマー法といった確定的素数判定法や、フェルマー法、ソロベイ−ストラッセン法、又はラビン法といった確率的素数判定法のように、任意の素数判定方法が使用可能となっている。
【0032】
さて以上のような本発明の骨子に基づき、本発明を次のように表現してもよい。例えば装置で表現する場合、本発明は、所定のビット長の素数Nを出力可能な素数生成装置であって、前記素数Nを算出するための演算データを、他の素数を乗じて隠蔽する演算データ隠蔽手段を含んでいる素数生成装置である。
【0033】
このように、素数Nを算出するための演算データを他の素数により隠蔽するので、素数生成時に電力解析やタイミング解析を施されても、情報の漏洩を阻止することができる。
【0034】
また、本発明は、所定のビット長の素数Nを出力可能な素数生成装置であって、前記素数Nのビット長より短いビット長の第1の素数Fに対し、前記第1の素数Fとは異なる第2の素数αを乗じる素数乗算手段と、前記素数乗算手段による乗算結果Fαに対し、乗算及び加算処理を行ない、この処理結果として前記素数Nと第3の素数α’との積Nα’を生成する素数生成手段と、前記素数生成手段により得られた積Nα’を前記第3の素数α’で除して前記素数Nを取出す素数取出し手段と、を含んでいる素数生成装置としてもよい。また、第1の素数Fは、ビット長を限定せずに、素数Nより小さい素数と表現してもよい。
【0035】
このような本発明は、具体的には以下のような手段が講じられる。なお、以下の各発明は、重複した記載を避ける観点から、装置として表現された場合のみを示すが、方法、システム又はプログラム等の他のカテゴリーで表現してもよいことは言うまでもない。
【0036】
第1の発明は、所定のビット長の素数Nを出力可能な素数生成装置であって、所定のビット数以下の素数{α,α’,…}が予め記憶された素数記憶手段と、前記素数記憶手段内の素数を選択する選択手段と、予め生成又は与えられた素数Fを隠蔽するように、前記選択手段により選択された素数αを乗じて積H=Fαを算出する素数隠蔽手段と、前記素数隠蔽手段により算出された積Hに基づいて、乱数Rを生成する乱数生成手段と、前記乱数生成手段により生成された乱数R、前記素数隠蔽手段により算出された積H、及び前記選択手段により選択された他の素数α’に基づいて、素数候補N(=2RF+1)を隠蔽するように、この素数候補Nと素数α’の積Nα’を生成する素数候補隠蔽手段と、前記素数候補隠蔽手段により生成された積Nα’及びポクリントンの定理に基づいて、前記素数候補Nが素数か否かを判定する素数判定手段と、前記素数判定手段による判定結果が素数を示すとき、当該積Nα’から前記他の素数α’を除して素数Nを生成する素数生成手段と、を備えた素数生成装置である。
【0037】
これにより、マウアーの素数生成方法を利用して素数を生成するとき、生成中の素数候補Nに素数α’を乗じた積Nα’を実際の演算に用いるので、演算の消費電力波形又は処理時間から生成中の素数候補又は素数の解析を困難にすることができる。
従って、素数生成時に電力解析やタイミング解析を施されても、情報の漏洩を阻止することができる。
【0038】
第2の発明は、第1の発明において、前記素数記憶手段内の各素数{α,α’,…}がn+1ビット以上のサイズであり、前記予め生成又は与えられた素数Fに代えて、予め生成又は与えられた2nビット以下の奇数F0を用い、前記素数隠蔽手段としては、前記選択手段により選択された素数αを乗じて積H0=F0αを算出し、この積H0をnビット以下の全ての素数で個別に除算し、全ての除算結果が余りを持つとき、この積H0を前記積Hとして前記積H=Fαの算出を完了する素数生成装置である。
これにより、第1の発明と同様の作用に加え、始めの素数F0を外部からの解析から隠蔽しながら簡単に生成することができる。
【0039】
第3の発明は、第1の発明において、前記素数記憶手段内の各素数{α,α’,…}がn+1ビット以上のサイズであり、前記素数判定手段としては、前記素数候補隠蔽手段により生成された積Nα’をnビット以下の全ての素数で個別に除算し、全ての除算結果が余りを持つとき、前記ポクリントンの定理に基づいた判定を行なう素数生成装置である。
【0040】
これにより、第1の発明の作用に加え、堀らの素数生成方法と同様に、ポクリントンの定理に基づく素数判定の前に、試行割算によって割り切れる簡単な合成数が排除されるので、素数判定全体の処理速度を向上させることができる。
【0041】
第4の発明は、与えられた正の整数mに対し、mビットの素数pを出力可能な素数生成装置であって、所定のビット数以下の素数{α,β,γ,δ…}が予め記憶された素数記憶手段と、前記素数記憶手段内の素数を選択する選択手段と、予め生成した0.4mビットの2つの素数Fs,Ftを隠蔽するように、前記選択手段により選択された2つの素数α,βを個別に乗じて2つの積Fsα,Ftβを算出する第1の素数隠蔽手段と、前記第1の素数隠蔽手段により算出された積Ftβに基づいて乱数Raを生成し、前記第1の素数隠蔽手段により算出された積Fsαに基づいて乱数Rbを生成する乱数生成手段と、前記乱数生成手段により生成された乱数Ra、前記第1の素数隠蔽手段により算出された積Ftβ、及び前記選択手段により選択された素数β,γに基づいて、0.5mビットの素数Nr(=2RaFt+1)を隠蔽するように、この素数Nrと素数γとの積Nrγ(=(2RaFtβγ)/β+γ)を生成する第2の素数隠蔽手段と、前記第2の素数隠蔽手段により生成された積Nrγ、前記第1の素数隠蔽手段により算出された積Fsα、前記乱数生成手段により生成された乱数Rb、前記選択手段により選択された素数γ,δに基づいて、mビットの素数候補pを隠蔽するように、この素数候補pと素数δの積pδ{=(1+2(RbFs−(Nr - 1mod(Fsα)))Nr)δ}を生成する素数候補隠蔽手段と、この素数候補隠蔽手段により生成された積pδ及びポクリントンの定理に基づいて、前記素数候補pが素数か否かを判定する素数判定手段と、前記素数判定手段による判定結果が素数を示すとき、当該積pδから前記素数δを除してmビットの素数pを生成する素数生成手段と、を備えた素数生成装置である。
【0042】
これにより、第1の発明と同様に、演算中の素数Fs,Ft,Nrに素数α,β,γを乗じた積Nrγや、生成中の素数候補pに素数δを乗じた積pδを実際の演算に用いるので、素数生成時に電力解析やタイミング解析を施されても、情報の漏洩を阻止することができる。
【0043】
これに加え、生成した素数pのビット数をmビットとするとき、p−1に0.5mビットの素因数Nr、p+1に0.4mビットの素因数Fs,Ftを持たせたので、素因数分解手法であるp−1法及びp+1法に強い素数pを生成することができる。
【0044】
第5の発明は、第4の発明において、前記素数記憶手段内の各素数{α,β,γ,δ…}がn+1ビット以上のサイズであり、前記素数判定手段としては、前記素数候補隠蔽手段により生成された積pδをnビット以下の全ての素数で個別に除算し、全ての除算結果が余りを持つとき、前記ポクリントンの定理に基づいた判定を行なう素数生成装置である。
【0045】
これにより、第4の発明の作用に加え、第3の発明と同様に、素数判定全体の処理速度を向上させることができる。
【0046】
【発明の実施の形態】
以下、本発明の各実施形態について図面を用いて詳細に説明する。なお、以下の説明中、素数、素数候補、整数、積などの語を用いるが、これらは、素数データ、素数候補データ、整数データ、積データ等のように、「データ」の語を追記して読み替えてもよい。
【0047】
(第1の実施形態)
図1は本発明の第1の実施形態に係る素数生成装置の構成を示す模式図である。この素数生成装置10は、スマートカードなどの演算機の素数生成部として構成され、ハードウェア及びソフトウェアの組合せにより素数生成処理を行うものである。
【0048】
具体的には、プログラム記憶部1、不揮発性RAM2、不揮発性メモリ3、CPU(中央処理装置)4、乱数生成部5、選択部6及び演算部7が互いに、アドレスバス、コマンドバス並びにデータバスからなるバス8を介して接続されている。
【0049】
プログラム記憶部1は、CPU4に実行されるプログラムが記憶されるメモリであり、例えばROM(リードオンリーメモリ)が使用可能となっている。ここで、プログラムは、例えば公開鍵暗号用のメインプログラムに加え、図2に示す素数生成機能を実現させるためのサブプログラムを少なくとも含んでいる。係るプログラムは、外部の記憶媒体又はネットワークから予めプログラム記憶部1にインストールされてもよい。
【0050】
不揮発性RAM2は、CPU4から読出/書込可能なメモリであり、具体的には、所定のビット数以下の素数からなるテーブルTが予め記憶されており、さらにCPU4により、演算に必要なデータや演算途中のデータ等が記憶されるRAM(ランダムアクセスメモリ)である。なお、テーブルTは、予めプログラム記憶部1内のプログラムに含まれていてもよい。
【0051】
不揮発性メモリ3は、例えば生成された素数などがCPU4から読出/書込可能に記憶されるメモリであり、例えば、EEPROM(Electric Erasable Programmable ROM)が使用可能となっている。
【0052】
CPU4は、プログラム記憶部1内のプログラムを実行することにより、例えば図2に示す手順で各部2〜7を制御し、素数生成処理を実行する機能を有するものである。
【0053】
乱数生成部5は、CPU4により制御されて乱数Riを生成し、この乱数Riをバス8に送出するものであり、ここでは、CPU4から入力された積Hi及び素数αiに基づいて、素数Fi未満(Ri<Fi)の乱数Riを生成し、この乱数Riをバス8に送出する機能をもっている。ここで、乱数生成部5により生成される乱数Riは、真の乱数又は疑似乱数のいずれでもよい。
【0054】
なお、乱数生成部5は、独立のハードウェアで実現してもよいし、CPU4とプログラムで実現してもよい。また、乱数生成部5を省略し、乱数Riを外部から入力させる構成としてもよい。
【0055】
選択部6は、CPU4に起動され、不揮発性RAM2内のテーブルTからどの素数α(元)を選択するかを決定し、選択した素数αをCPU4及び演算部7に送出する機能をもっている。なお、選択部6は、独立のハードウェアで実現してもよいし、CPU4とプログラムで実現してもよい。
【0056】
演算部7は、CPU4により制御され、例えばCPU4から入力されたデータに基づいて演算を実行し、演算結果をバス8に出力するものである。なお、演算部7は、処理速度を向上させる観点から独立のハードウェア回路として設けられており、例えばコプロセッサ等の如き、多倍長の演算を行うものであるが、ハードウェア回路に限らず、CPU4とプログラムで実現してもよい。
【0057】
なお、このような素数生成装置10は、ハードウェア及びソフトウェアの組合せに限らず、ハードウェア又はソフトウェアのいずれか一方により構成されてもよい。
【0058】
次に、以上のように構成された素数生成装置による素数生成方法について図2のフローチャートを用いて説明する。
【0059】
処理11:例えば16ビット程度の小さな素数F0が図示しない外部インタフェースから素数生成装置10に入力される(ST11)。
【0060】
処理12:素数生成装置10では、CPU4が素数F0を演算部7に入力する一方、選択部6を起動する。選択部6は、不揮発性RAM2内のテーブルTから一つの素数α0を選択してCPU4及び演算部7に送出する(ST12-1)。演算部7は、両者の積H0=F0α0を演算し(ST12-2)、得られた積H0をCPU4に送出する。なお、この積H0は、乗じられた素数α0により、素数F0を外部からの解析から隠蔽する機能を有する。
【0061】
処理13:CPU4は、以下の処理ループのためのパラメータiをi=0に初期化する(ST13)。ループの終了条件は、パラメータiが終了回数k未満のとき(i<k)であり、終了回数kは、生成したい素数Niのビット数に応じて決定される。
【0062】
処理14:CPU4は、積H0及び素数α0を乱数生成部5に入力する。乱数生成部5は、積Hi及び素数αiに基づいて、素数Fi未満(Ri<Fi)の乱数Riを生成し(ST14)、得られた乱数RiをCPU4に向けてバス8に送出する。ここで、生成される乱数Riは、素数Fi未満の条件を満たすため、例えば生成直後の乱数Ri’からRi=(Ri’mod Hi)/αiとして算出される。
【0063】
処理15:判定前の素数候補NiをNi=2RiFi+1としたとき、選択部6は・不揮発性RAM2内のテーブルTから一つの素数αi+1を選択し(ST15-1)、得られた素数αi+1を演算部7に送出する。
【0064】
演算部7は、素数候補Niと素数αi+1との積Mi=Niαi+1が次式のように算出される(ST15-2)。
【0065】
Mi=(2RiHiαi+1)/αi+αi+1
なお、この式は、先に(かっこ)内を演算することで、素数Fiを出さずに積Miを求める利点をもっている。また、この積Miは、乗じられた素数αi+1により、素数候補Niを外部からの解析から隠蔽する機能を有する。
【0066】
なお、素数候補Niと素数αi+1とは互いに素である必要があるため、この確認を積Miが(αi+1)2で割り切れるか否かにより実行し、割り切れたら別の素数αi+1を選択して積Miを算出し直す処理が必要である。
【0067】
処理16:素数候補Niの第1の素数判定のため、演算部7は、素数候補Niを含む積Miに関し、所定の正の整数ai毎に式(1)を満たすか否かを演算するフェルマーテストを行なう(ST16-1)。
【0068】
ai (Ni−1 )( αi+1−1 )=1 mod Mi …(1)
なお、整数aiは、ai=2を用いることが望ましい。
【0069】
また、式(1)中、整数aiのべき指数(Ni−1)(αi+1−1)は、次式のように算出される。
【0070】
(Ni−1)(αi+1−1)=(Mi(αi+1−1))/αi+1−(αi+1−1)
ステップST16-1の結果、式(1)を満たすか否かにより素数候補Niを未だ素数の候補であるか否かを判定する(ST16-2)。ここで、式(1)を満たさないときは素数候補Niを未だ素数候補であると判定して第2の素数判定に進む。一方、式(1)を満たさないときは素数候補Niを素数でない(合成数)と判定し、乱数Riを生成し直すため、処理14に戻る。
【0071】
処理17:素数候補Niの第2の素数判定のため、演算部7は、素数候補Niを含む積Miに関し、正の整数ai毎に式(2)を満たすか否かを演算する(ST17-1)。
【0072】
gcd(ai (Ni−1 )( αi+1−1 )/Fi−1,Mi)=αi+1 …(2)
なお、整数aiは、前述同様にai=2を用いることが望ましい。
【0073】
また、式(2)中、整数aiのべき指数(Ni−1)(αi+1−1)/Fiは、次式のように算出される。
【0074】
(Ni−1)(αi+1−1)/Fi=2Ri(αi+1−1)
ステップST17-1の結果、式(2)を満たすか否かにより素数候補Niを素数であるか否かを判定する(ST17-2)。ここで、式(2)を満たすときは素数Niを素数であると判定して処理18に進む。一方、式(2)を満たさないときは素数でないと判定して前述同様に処理14に戻る。
【0075】
処理18:ステップST17−2により、素数候補Niが素数と判定されたとき、この素数Niを次の素数候補Ni+1の算出のために、Fi+1=Ni、Hi+1=Miとおき(ST18-1)、パラメータiを“+1”して更新する。
【0076】
また、ループの終了条件i<kを判定し、終了でなければ処理14に戻って、i+1回目のループ処理に入る(ST18-2)。なお、ループの終了条件は、素数候補Niが所定のビット長に達するように、乱数Riのビット数を増減させて調整する。
【0077】
処理19:以上のようなループ処理により、素数候補Niが所定のビット長に達したとき、ループ処理に用いた値として、積Miが得られている。積Miは素数NiにテーブルTの素数αi+1を乗じた値であるので、演算部7は、Mi/αi+1を演算し(ST19-1)、得られた素数Niをデータバスに出力する(ST19-2)。
【0078】
上述したように本実施形態によれば、演算のどのステップにおいても素数候補Ni(i=0,1,…,k−1)をそのまま演算データとして用いずに、素数候補Niに素数αiを乗じた積Miを実際の演算に用いるので、演算の消費電力波形又は処理時間から生成中の素数候補又は素数の解析を困難にすることができる。従って、素数生成時に電力解析やタイミング解析を施されても、情報の漏洩を阻止することができる。
【0079】
また、最終の素数候補(又は素数)Nk-1だけでなく、途中の素数候補(又は素数)Niの解析も困難なことから、Nk-1−1が含む素因数Nk-2も解析が困難である。これにより素因数分解の一手法であるp−1法を回避することができる。
【0080】
(第2の実施形態)
次に、本発明の第2の実施形態に係る素数生成装置について図1及び図3を用いて説明する。
【0081】
すなわち、本実施形態は、第1の実施形態の変形例であり、本発明の情報の漏洩を阻止する技術を、試行割算を用いる堀らの素数生成方式に適用したものであって、具体的には、試行割算による素数判定用の素数を格納したテーブルAが不揮発性RAM2に記憶されており、且つプログラム記憶部1には、図1に示すプログラムに代えて、図3に示す素数生成機能を実現させるためのプログラムが記憶されている。なお、テーブルAは、予めプログラム記憶部1内のプログラムに含まれていてもよい。
【0082】
ここで、不揮発性RAM2内のテーブルAは、CPU4から読出可能であり、予めワードサイズ以下の素数が記憶されたものとする。ここで、「ワードサイズ以下」の制限は、処理手順として、始めにワードサイズの2倍のビット長の素数が生成され、その素数に基づいてその素数より大きい所定サイズの素数が生成されることが前提となっている。
【0083】
例えばワードサイズが8ビットである場合、テーブルAには、予め256(=28)以下の全ての素数が記憶される。一方、テーブルT内の素数αは、9ビット以上であるとする。
これにより、テーブルT内の素数αは、テーブルA内のどの素数でも割り切れないことが保証される。
【0084】
次に、以上のように構成された素数生成装置による素数生成方法について図3のフローチャートを用いて説明するが、図2と同一部分には同一符号を付し、ほぼ同一部分にはアルファベットの添字を付してその詳しい説明を省略し、ここでは異なる部分について主に述べる。
【0085】
処理11a:乱数生成部5は、ワードサイズの2倍のビット長の奇数F0をランダムに生成し(ST11a)、この奇数F0をCPU4に送出する。
【0086】
処理12:前述した通り、ステップST12−1及びST12−2が実行される。すなわち、演算部7は、CPU4から入力された奇数F0と、選択部6によりテーブルTから選択された素数α0とに基づいて(ST12−1)、両者の積H0=F0α0を演算し(ST12−2)、得られた積H0をCPU4に送出する。なお、積H0は、乗じられた素数α0により、奇数F0を外部からの解析から隠蔽する機能を有する。
【0087】
処理D1:演算部7は、CPU4から積H0を受けると、テーブルA内のワードサイズ以下の素数で積H0を割算する試行割算を行ない(ST・D1−1)、試行割算の結果、余りの有無に基づいて奇数F0が素数であるか否かを判定する(ST・D1−2)。
【0088】
ステップST・D1−2の結果、余りが無いときには奇数F0を素数でないと判定して、奇数F0を生成し直すため、処理11aに戻る。一方、余りが有るときには奇数F0を素数であると判定して、処理13に進む。
【0089】
処理13〜処理15:前述した通り、ステップ13〜ST15−2が実行される。すなわち、処理13としては、処理ループのパラメータi,kが設定され(ST13)、i回目のループが開始される。
【0090】
続いて、処理14としては、素数Fiを拡張するための乱数Riが生成される(ST14)。
【0091】
また、処理15としては、乱数Riで拡張された素数候補Ni(=2RiFi+1)を外部の解析から隠蔽するための素数αi+1が選択され(ST15−1)、素数候補Niと素数αi+1とを乗じて積Miを算出することにより(ST15−2)、素数候補Niが積Mi内に隠蔽される。
【0092】
処理D2:演算部7は、CPU4から積Miを受けると、テーブルA内のワードサイズ以下の素数で積Miを割算する試行割算を行ない(ST・D2−1)、試行割算の結果、余りの有無に基づいて素数候補Niが未だに素数の候補であるか否かを判定する(ST・D2−2)。
【0093】
ステップST・D2−2の結果、余りが無いときには素数候補Niを素数でない(合成数)と判定して、乱数Riを生成し直すため、処理14に戻る。なお、戻った処理14では、素数Fi,αiの値はそのままで、乱数生成部5にて乱数Riを生成し直すことにより、新しい素数候補Niが生成される。一方、余りが有るときには素数候補Niを未だ素数候補であると判定して、処理16に進む。
【0094】
以下、前述した通り、処理16〜処理19として、ステップST16−1〜ST19−2が実行される。
上述したように本実施形態によれば、第1の実施形態の効果に加え、ポクリントンの定理による素数判定の前に、小さな素数による試行割算を行うことで、多くの合成数を排除することができる。よって素数判定にかける素数候補が絞られることにより、効率よく素数判定を行うことができる。
【0095】
また、同様の試行割算により、始めの素数F0を外部からの解析から隠蔽しつつ簡単に生成することができる。
【0096】
(第3の実施形態)
次に、本発明の第3の実施形態に係る素数生成装置について図1〜図4を用いて説明する。
【0097】
すなわち、本実施形態は、第2の実施形態の応用例であり、生成する素数に、素因数分解の一手法であるp+1法に対する耐性を持たせたものであって、具体的には、プログラム記憶部1に、図3に示すプログラムに代えて、図4に示す素数生成機能を実現させるためのプログラムが記憶されている。
【0098】
なお、生成する素数pのビット数をmビットとし、ビット数mは、所定の値でもよく、入力されて指定されてもよい。
【0099】
また、本実施形態に用いる符号は、以下のように第2の実施形態に用いた符号に対応している。
テーブルT内の素数α,β,γ,γ’,δは、前述したテーブルT内の素数{α1,α2,…,αi,αi+1,…,αk-1}のうち、任意の素数に対応している。
素数Fs,Ftは、前述した素数F0のうち、添字0をs又はtとして互いに別の素数としたものに対応している。
【0100】
乱数生成部5により生成される乱数Ra,Rbは、前述した乱数生成部5により生成される乱数Riにおいて、添字iをa又はbとして互いに別の乱数としたものに対応している。
素数Nrは、前述した素数Niに対応している。
【0101】
次に、以上のように構成された素数生成装置における素数生成方法について図4のフローチャートを用いて説明する。
【0102】
処理21:CPU4は、図3に示したステップST11a〜ST12−2に従って乱数生成部5〜演算部7を制御し、0.4mビットの2つの素数Fs,FtとテーブルTからランダムに選択された素数α,βとの積Fsα,Ftβを生成する(ST21−1,ST21−2)。なお、積Fsα,Ftβは、乗じられた素数α,βにより、素数Fs,Ftを外部からの解析から隠蔽する機能を有する。
【0103】
処理22:CPU4は、図2に示したステップST14〜ST17−2に従って乱数生成部5〜演算部7を制御し、乱数生成部5により生成された乱数Raと、選択部6によりテーブルTからランダムに選択された素数γとを用い、0.5mビットの素数Nr(=2RaFt+1)を次式のように素数γとの積Nrγという形式で生成する(ST22)。
【0104】
Nrγ=(2RaFtβγ)/β+γ
なお、積Nrγは、乗じられた素数γにより、素数Nrを外部からの解析から隠蔽する機能を有する。
【0105】
処理23:続いて、CPU4は、乱数生成部5〜演算部7を制御し、乱数生成部5により生成された乱数Rbと、制御部6によりテーブルTからランダムに選択された素数δを用い、mビットの素数候補p{=1+2(RbFs−(Nr -1mod(Fsα)))Nr}を次式のように素数δとの積pδという形式で生成する(ST23)。
【0106】
pδ=(1+2(RbFs−(Nr -1mod(Fsα)))Nr)δ
ここで、Fsα、Nrγからpδを生成するには、次のような演算を行う。まず、CPU4は、αとγが相異なること(α≠γ)を確認する。同じ場合はαと異なるγ’を選択し、(Nrαγ’)/αによりNrγをNrγ’に取り替える。
【0107】
次に、(Nrγ)-1 mod(Fsα)を演算する。α≠γよりこの演算結果は存在する。この演算結果にγ mod(Fsα)を乗じ、Nr - 1 mod(Fsα)を求める。一方、(RbFsα)/αによりRbFsを求める。
【0108】
これらをまとめ、pδ=(2(RbFs−(Nr - 1mod(Fsα)))Nrγ)δ/γ+δを演算する。
【0109】
処理24:CPU4は、このpδに対し、図3に示したステップST・D2−1〜ST17−2と同様に、素数判定を行う(ST24−1〜ST24−6)。但し、堀らの方法に基づく試行割算(ステップST・D2−1,ST・D2−2)のステップST24-1,ST24−2は、省略してもよい。なお、省略した場合、本実施形態はマウアーの方法(改良前)に基づく素数生成方式となる。
【0110】
処理25:ステップST24−6により素数候補pが素数と判定されたとき、積pδが得られている。積pδは、素数pにテーブルTの素数δを乗じた値であるので、演算部7は、pδ/δを演算し(ST25−1)、得られた素数pをデータバスに出力する(ST25−2)。
【0111】
上述したように本実施形態によれば、第1の実施形態と同様に、演算中の素数Fs,Ft,Nrに素数α,β,γを乗じた積Nrγや、生成中の素数候補pに素数δを乗じた積pδを実際の演算に用いるので、素数生成時に電力解析やタイミング解析を施されても、情報の漏洩を阻止することができる。
【0112】
また、最終の素数pだけでなく、途中の素数Ni,Fs,Ft,Nrの解析も困難なことから、p−1が含む素因数Nrも解析が困難である。これにより素因数分解の一手法であるp−1法を回避することができる。
また、p+1が含む素因数Fsも解析が困難であることから、素因数分解の一手法であるp+1法を回避することができる。
また、生成した素数pのビット数をmビットとするとき、p−1に0.5mビットの素因数Nr、p+1に0.4mビットの素因数Fsを持たせたので、素因数分解手法であるp−1法及びp+1法に強い素数pを生成することができる。
【0113】
さらに、第2の実施形態と同様に、ポクリントンの定理を用いた素数判定の前に、試行割算を行なう場合には、素数判定全体の処理速度を向上させることができる。
【0114】
なお、上記各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピーディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【0115】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【0116】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行しても良い。
【0117】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【0118】
また、記憶媒体は1つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【0119】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【0120】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【0121】
なお、本願発明は、上記各実施形態に限定されるものでなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、各実施形態は可能な限り適宜組み合わせて実施してもよく、その場合、組み合わされた効果が得られる。さらに、上記各実施形態には種々の段階の発明が含まれており、開示される複数の構成用件における適宜な組み合わせにより種々の発明が抽出され得る。例えば実施形態に示される全構成要件から幾つかの構成要件が省略されることで発明が抽出された場合には、その抽出された発明を実施する場合には省略部分が周知慣用技術で適宜補われるものである。
【0122】
その他、本発明はその要旨を逸脱しない範囲で種々変形して実施できる。
【0123】
【発明の効果】
以上説明したように本発明によれば、素数生成時に電力解析やタイミング解析を施されても、情報の漏洩を阻止できる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態に係る素数生成装置の構成を示す模式図
【図2】同実施形態における素数生成方法を説明するためのフローチャート
【図3】本発明の第2の実施形態に係る素数生成方法を説明するためのフローチャート
【図4】本発明の第3の実施形態に係る素数生成方法を説明するためのフローチャート
【図5】従来の素数生成方法を説明するためのフローチャート
【図6】従来の素数生成方法を説明するためのフローチャート
【符号の説明】
1…プログラム記憶部
2…不揮発性RAM
3…不揮発性メモリ
4…CPU(中央処理装置)
5…乱数生成部
6…選択部
7…演算部
8…バス
10…素数生成装置
Claims (9)
- 所定のビット長の素数Nを出力可能な素数生成装置であって、
前記素数Nのビット長より短いビット長の第1の素数Fに対し、前記第1の素数Fとは異なる第2の素数αを乗じる素数乗算手段と、
前記素数乗算手段による乗算結果Fαに対し、乗算及び加算処理を行ない、この処理結果として前記素数Nと第3の素数α’との積Nα’を生成する素数生成手段と、
前記素数生成手段により得られた積Nα’を前記第3の素数α’で除して前記素数Nを取出す素数取出し手段と、
を備えたことを特徴とする素数生成装置。 - 所定のビット長の素数Nを出力可能な素数生成装置であって、
所定のビット数以下の素数{α,α’,…}が予め記憶された素数記憶手段と、
前記素数記憶手段内の素数を選択する選択手段と、
予め生成又は与えられた素数Fを隠蔽するように、前記選択手段により選択された素数αを乗じて積H=Fαを算出する素数隠蔽手段と、
前記素数隠蔽手段により算出された積Hに基づいて、乱数Rを生成する乱数生成手段と、
前記乱数生成手段により生成された乱数R、前記素数隠蔽手段により算出された積H、及び前記選択手段により選択された他の素数α’に基づいて、素数候補N(=2RF+1)を隠蔽するように、この素数候補Nと素数α’の積Nα’を生成する素数候補隠蔽手段と、
前記素数候補隠蔽手段により生成された積Nα’及びポクリントンの定理に基づいて、前記素数候補Nが素数か否かを判定する素数判定手段と、
前記素数判定手段による判定結果が素数を示すとき、当該積Nα’から前記他の素数α’を除して素数Nを生成する素数生成手段と、
を備えたことを特徴とする素数生成装置。 - 請求項2に記載の素数生成装置において、
前記素数記憶手段内の各素数{α,α’,…}は、n+1ビット以上のサイズであり、
前記予め生成又は与えられた素数Fに代えて、予め生成又は与えられた2nビット以下の奇数F0を用い、
前記素数隠蔽手段は、前記選択手段により選択された素数αを乗じて積H0=F0αを算出し、この積H0をnビット以下の全ての素数で個別に除算し、全ての除算結果が余りを持つとき、この積H0を前記積Hとして前記積H=Fαの算出を完了することを特徴とする素数生成装置。 - 請求項2に記載の素数生成装置において、
前記素数記憶手段内の各素数{α,α’,…}は、n+1ビット以上のサイズであり、
前記素数判定手段は、前記素数候補隠蔽手段により生成された積Nα’をnビット以下の全ての素数で個別に除算し、全ての除算結果が余りを持つとき、前記ポクリントンの定理に基づいた判定を行なうことを特徴とする素数生成装置。 - 与えられた正の整数mに対し、mビットの素数pを出力可能な素数生成装置であって、所定のビット数以下の素数{α,β,γ,δ…}が予め記憶された素数記憶手段と、
前記素数記憶手段内の素数を選択する選択手段と、
予め生成した0.4mビットの2つの素数Fs,Ftを隠蔽するように、前記選択手段により選択された2つの素数α,βを個別に乗じて2つの積Fsα,Ftβを算出する第1の素数隠蔽手段と、
前記第1の素数隠蔽手段により算出された積Ftβに基づいて乱数Raを生成し、前記第1の素数隠蔽手段により算出された積Fsαに基づいて乱数Rbを生成する乱数生成手段と、
前記乱数生成手段により生成された乱数Ra、前記第1の素数隠蔽手段により算出された積Ftβ、及び前記選択手段により選択された素数β,γに基づいて、0.5mビットの素数Nr(=2RaFt+1)を隠蔽するように、この素数Nrと素数γとの積Nrγ(=(2RaFtβγ)/β+γ)を生成する第2の素数隠蔽手段と、
前記第2の素数隠蔽手段により生成された積Nrγ、前記第1の素数隠蔽手段により算出された積Fsα、前記乱数生成手段により生成された乱数Rb、前記選択手段により選択された素数γ,δに基づいて、mビットの素数候補pを隠蔽するように、この素数候補pと素数δの積pδ{=(1+2(RbFs−(Nr -1mod(Fsα)))Nr)δ}を生成する素数候補隠蔽手段と、
この素数候補隠蔽手段により生成された積pδ及びポクリントンの定理に基づいて、前記素数候補pが素数か否かを判定する素数判定手段と、
前記素数判定手段による判定結果が素数を示すとき、当該積pδから前記素数δを除してmビットの素数pを生成する素数生成手段と、
を備えたことを特徴とする素数生成装置。 - 請求項5に記載の素数生成装置において、
前記素数記憶手段内の各素数{α,β,γ,δ…}は、n+1ビット以上のサイズであり、
前記素数判定手段は、前記素数候補隠蔽手段により生成された積pδをnビット以下の全ての素数で個別に除算し、全ての除算結果が余りを持つとき、前記ポクリントンの定理に基づいた判定を行なうことを特徴とする素数生成装置。 - 所定のビット長の素数Nを出力可能な素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
前記素数Nのビット長より短いビット長の第1の素数Fに対し、前記第1の素数Fとは異なる第2の素数αを乗じる素数乗算手段、
前記素数乗算手段による乗算結果Fαに対し、乗算及び加算処理を行ない、この処理結果として前記素数Nと第3の素数α’との積Nα’を生成する素数生成手段、
前記素数生成手段により得られた積Nα’を前記第3の素数α’で除して前記素数Nを取出す素数取出し手段、
として機能させるための素数生成プログラム。 - 所定のビット長の素数Nを出力可能な素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
所定のビット数以下の素数{α,α’,…}が予め記憶された素数記憶手段、
前記素数記憶手段内の素数を選択する選択手段、予め生成又は与えられた素数Fを隠蔽するように、前記選択手段により選択された素数αを乗じて積H=Fαを算出する素数隠蔽手段、前記素数隠蔽手段により算出された積Hに基づいて、乱数Rを生成する乱数生成手段、前記乱数生成手段により生成された乱数R、前記素数隠蔽手段により算出された積H、及び前記選択手段により選択された他の素数α’に基づいて、素数候補N(=2RF+1)を隠蔽するように、この素数候補Nと素数α’の積Nα’を生成する素数候補隠蔽手段、
前記素数候補隠蔽手段により生成された積Nα’及びポクリントンの定理に基づいて、前記素数候補Nが素数か否かを判定する素数判定手段、
前記素数判定手段による判定結果が素数を示すとき、当該積Nα’から前記他の素数α’を除して素数Nを生成する素数生成手段、
として機能させるための素数生成プログラム。 - 与えられた正の整数mに対し、mビットの素数pを出力可能な素数生成装置に用いられる素数生成プログラムであって、
前記素数生成装置のコンピュータを、
所定のビット数以下の素数{α,β,γ,δ…}が予め記憶された素数記憶手段、
前記素数記憶手段内の素数を選択する選択手段、
予め生成した0.4mビットの2つの素数Fs,Ftを隠蔽するように、前記選択手段により選択された2つの素数α,βを個別に乗じて2つの積Fsα,Ftβを算出する第1の素数隠蔽手段、
前記第1の素数隠蔽手段により算出された積Ftβに基づいて乱数Raを生成し、前記第1の素数隠蔽手段により算出された積Fsαに基づいて乱数Rbを生成する乱数生成手段、
前記乱数生成手段により生成された乱数Ra、前記第1の素数隠蔽手段により算出された積Ftβ、及び前記選択手段により選択された素数β,γに基づいて、0.5mビットの素数Nr(=2RaFt+1)を隠蔽するように、この素数Nrと素数γとの積Nrγ(=(2RaFtβγ)/β+γ)を生成する第2の素数隠蔽手段、
前記第2の素数隠蔽手段により生成された積Nrγ、前記第1の素数隠蔽手段により算出された積Fsα、前記乱数生成手段により生成された乱数Rb、前記選択手段により選択された素数γ,δに基づいて、mビットの素数候補pを隠蔽するように、この素数候補pと素数δの積pδ{=(1+2(RbFs−(Nr -1mod(Fsα)))Nr)δ}を生成する素数候補隠蔽手段、
この素数候補隠蔽手段により生成された積pδ及びポクリントンの定理に基づいて、前記素数候補pが素数か否かを判定する素数判定手段、
前記素数判定手段による判定結果が素数を示すとき、当該積pδから前記素数δを除してmビットの素数pを生成する素数生成手段、
として機能させるための素数生成プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001072927A JP4664514B2 (ja) | 2001-03-14 | 2001-03-14 | 素数生成装置及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001072927A JP4664514B2 (ja) | 2001-03-14 | 2001-03-14 | 素数生成装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002278450A JP2002278450A (ja) | 2002-09-27 |
JP4664514B2 true JP4664514B2 (ja) | 2011-04-06 |
Family
ID=18930439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001072927A Expired - Lifetime JP4664514B2 (ja) | 2001-03-14 | 2001-03-14 | 素数生成装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4664514B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4802228B2 (ja) * | 2008-08-14 | 2011-10-26 | 株式会社東芝 | 鍵生成装置及びプログラム |
FR2946207A1 (fr) * | 2009-05-28 | 2010-12-03 | Proton World Internat Nv | Protection d'une generation de nombres premiers pour algorithme rsa |
FR2949925A1 (fr) * | 2009-09-09 | 2011-03-11 | Proton World Int Nv | Protection d'une generation de nombres premiers contre des attaques par canaux caches |
JP5848106B2 (ja) * | 2011-11-28 | 2016-01-27 | ルネサスエレクトロニクス株式会社 | 半導体装置及びicカード |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH076025A (ja) * | 1993-06-21 | 1995-01-10 | Nippon Telegr & Teleph Corp <Ntt> | 冪剰余演算方法および装置 |
JPH10240128A (ja) * | 1996-12-26 | 1998-09-11 | Toshiba Corp | 暗号装置、暗号鍵生成方法及び暗号鍵管理方法、並びに素数生成装置及び素数生成方法 |
JP2000066585A (ja) * | 1998-08-20 | 2000-03-03 | Toshiba Corp | 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体 |
JP2000181349A (ja) * | 1998-12-11 | 2000-06-30 | Nippon Telegr & Teleph Corp <Ntt> | 暗号鍵生成方法、その装置及びプログラム記録媒体 |
JP2000200038A (ja) * | 1998-12-29 | 2000-07-18 | Fujitsu Ltd | 素数生成方法及び装置並びにrsa暗号化方法及び記録媒体 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69837036T2 (de) * | 1997-09-16 | 2007-10-18 | Koninklijke Philips Electronics N.V. | Verfahren und vorrichtung zur ausführung einer entschlüsselung mittels einer standardisierten modularen potenzierung zum vereiteln eines zeitangriffs |
-
2001
- 2001-03-14 JP JP2001072927A patent/JP4664514B2/ja not_active Expired - Lifetime
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH076025A (ja) * | 1993-06-21 | 1995-01-10 | Nippon Telegr & Teleph Corp <Ntt> | 冪剰余演算方法および装置 |
JPH10240128A (ja) * | 1996-12-26 | 1998-09-11 | Toshiba Corp | 暗号装置、暗号鍵生成方法及び暗号鍵管理方法、並びに素数生成装置及び素数生成方法 |
JP2000066585A (ja) * | 1998-08-20 | 2000-03-03 | Toshiba Corp | 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体 |
JP2000181349A (ja) * | 1998-12-11 | 2000-06-30 | Nippon Telegr & Teleph Corp <Ntt> | 暗号鍵生成方法、その装置及びプログラム記録媒体 |
JP2000200038A (ja) * | 1998-12-29 | 2000-07-18 | Fujitsu Ltd | 素数生成方法及び装置並びにrsa暗号化方法及び記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
JP2002278450A (ja) | 2002-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5328186B2 (ja) | データ処理システム及びデータ処理方法 | |
JP3821631B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体 | |
KR101194837B1 (ko) | 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 | |
CN109039640B (zh) | 一种基于rsa密码算法的加解密硬件系统及方法 | |
US7912216B2 (en) | Elliptic curve cryptosystem optimization using two phase key generation | |
JP4137385B2 (ja) | 公開鍵および秘密鍵による暗号化方法 | |
JP2008252299A (ja) | 暗号処理システム及び暗号処理方法 | |
US8280042B2 (en) | Decryption processor and decryption processing method | |
US9680647B2 (en) | Method of using a token in cryptography | |
US7024560B2 (en) | Power-residue calculating unit using Montgomery algorithm | |
JP4977300B2 (ja) | 暗号法及び装置 | |
JP2004304800A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
JP2010164904A (ja) | 楕円曲線演算処理装置、楕円曲線演算処理プログラム及び方法 | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
JP5261088B2 (ja) | 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法 | |
US6175850B1 (en) | Scheme for carrying out modular calculations based on redundant binary calculation | |
JP4351987B2 (ja) | モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム | |
EP1443699A1 (en) | Information processing means and IC card | |
Dubeuf et al. | ECDSA passive attacks, leakage sources, and common design mistakes | |
JP4664514B2 (ja) | 素数生成装置及びプログラム | |
JP2007187908A (ja) | サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法 | |
JP4678968B2 (ja) | 素数判定装置、方法及びプログラム | |
JP4836676B2 (ja) | 素数生成プログラム | |
JP5179933B2 (ja) | データ処理装置 | |
Monfared et al. | Secure and efficient exponentiation architectures using Gaussian normal basis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071221 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100917 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100928 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101119 |
|
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: 20101214 |
|
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: 20110107 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 4664514 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140114 Year of fee payment: 3 |
|
EXPY | Cancellation because of completion of term |