(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-07
(45)【発行日】2022-04-15
(54)【発明の名称】暗号アプリケーションのための素数を生成する方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20220408BHJP
G06F 7/58 20060101ALI20220408BHJP
【FI】
G09C1/00 650Z
G06F7/58 660
(21)【出願番号】P 2019545254
(86)(22)【出願日】2018-02-09
(86)【国際出願番号】 EP2018053247
(87)【国際公開番号】W WO2018153684
(87)【国際公開日】2018-08-30
【審査請求日】2019-10-18
(32)【優先日】2017-02-21
(33)【優先権主張国・地域又は機関】EP
【前置審査】
(73)【特許権者】
【識別番号】519271263
【氏名又は名称】タレス・ディス・フランス・エス・ア
(74)【代理人】
【識別番号】110001173
【氏名又は名称】特許業務法人川口國際特許事務所
(72)【発明者】
【氏名】ベルザチ,アレクサンドル
(72)【発明者】
【氏名】ルスレ,ミレーヌ
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2011-123356(JP,A)
【文献】特開2003-122251(JP,A)
【文献】特開2005-128832(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
素数を生成し、それを暗号アプリケーションにおいて使用するための方法であって、
a)少なくとも1つのハードウェアプロセッサ(4)と、テスト素数性回路(3)と、メモリ回路(5)とを備える処理システム(2)によって、少なくとも1つの2進数である基数Bを決定し、Bは小さいサイズb=log
2(B)ビットを有し、および、各決定された基数Bについて、iを整数として、少なくとも1つの小さい素数p
iを、B mod p
i=1であるように、決定するステップと、
b)前記ハードウェアプロセッサ(4)によって、素数候補Y
Pを選択するステップと、
c)前記ハードウェアプロセッサによって、選択された素数候補Y
Pを、前記決定された2進数である基数の中から選択された基数BでY
P=Σy
jB
jと分解するステップと、
d)前記ハードウェアプロセッサによって、前記選択された基数Bについて、y
PB=Σy
jのように、候補Y
Pから剰余y
PBを算出するステップと、
e)前記テスト素数性回路(3)によって、前記算出された剰余y
PBが、前記選択された基数Bについて前記決定された小さい素数の中から選択された1つの小さい素数p
iで、割り切れるか否かをテストするステップと、
f)前記算出された剰余y
PBが、前記選択された小さい素数で割り切れない間、ステップe)にて遂行されるテストが、前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても、前記算出された剰余y
PBが割り切れないことを証明するまで、前記テスト素数性回路によって、上記のステップe)を反復的に繰り返すステップと、
g)ステップe)にて遂行されるテストが、前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても、前記算出された剰余y
PBが割り切れないことを証明したとき、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返すステップと、
h)全ての決定された基数Bについて、ステップe)にて遂行されるテストが、前記決定された基数Bについて前記決定された小さい素数のうちのいずれによっても、決定された基数について算出された前記剰余y
PBが割り切れないことを証明したとき、前記テスト素数性回路によって、前記候補Y
Pに、既知の厳密な確率的素数判定法を実行し、既知の厳密な確率的素数判定法が成功したとき、前記素数候補Y
Pを前記メモリ回路(5)に記憶し、暗号プロセッサ(6)によって、前記記憶された素数候補Y
Pを前記暗号アプリケーションにおいて使用する、ステップと、
を含
み、
決定された基数Bについて、前記決定された小さい素数p
i
が、B mod p
i
=1であるような、3と541との間の全ての素数を含み、
前記決定された2進数である基数が、16、24、28、32、36、44、48、52、60、64のうちのサイズを持つ、方法。
【請求項2】
- ステップf)において、前記算出された剰余y
PBが、前記選択された小さい素数で割り切れるとき、前記算出された剰余y
PBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされるまで、前記テスト素数性回路によって、上記のステップe)を反復的に繰り返すステップと、
- ステップg)において、前記算出された剰余y
PBが、前記選択された基数Bについて前記決定された小さい素数のうちの1つで割り切れ、前記算出された剰余y
PBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされたとき、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返すステップと、
を含む、請求項1に記載の方法。
【請求項3】
i)前記算出された剰余y
PBが、選択された小さい素数で割り切れるとき、または、既知の厳密な確率的素数判定法が失敗したとき、前記既知の厳密な確率的素数判定法が成功するまで、新しい素数候補について、ステップd)からh)を反復的に繰り返すステップであって、新しい素数候補Y
Pおよび選択された基数Bについて、前記剰余y
PBが、別の素数候補および前記選択された基数Bについて以前に算出された剰余を、所定の増分でインクリメントすることにより算出される、ステップを含む、請求項1に記載の方法。
【請求項4】
前記記憶された素数候補Y
Pを前記暗号アプリケーションにおいて使用するステップは、前記暗号プロセッサ(6)によって、前記暗号アプリケーションを実行して、前記記憶された素数候補Y
Pを使用してデータをセキュアにするステップ、および/または、前記暗号プロセッサによって、前記記憶された素数候補Y
Pを使用して、暗号キーを生成するステップ、のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項5】
剰余算出の合計算出が、ランダムな順番で遂行される、請求項1に記載の方法。
【請求項6】
前記基数が、異なる決定された小さい素数の数が最大になるように決定される、請求項1に記載の方法。
【請求項7】
前記基数が、処理システムのワードサイズに基づき決定される、請求項1に記載の方法。
【請求項8】
前記算出された剰余y
PBが1つの小さい素数p
iで割り切れるか否かをテストするステップが、バレットのモジュラリダクションを使用して遂行される、請求項1に記載の方法。
【請求項9】
前記既知の厳密な確率的素数判定法が、ミラーラビンテストまたはフェルマーテストを含む、請求項1に記載の方法。
【請求項10】
少なくとも1つのコンピュータのメモリに直接ロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で起動されたとき、請求項1に記載の方法のステップを遂行するための、ソフトウェアコード命令を含む、コンピュータプログラム製品。
【請求項11】
処理システム(2)と暗号プロセッサ(6)とを備える暗号装置(1)によって実行されたとき、請求項1に記載の方法を遂行する、実行可能なコンピュータコードを記憶する、非一時的コンピュータ可読媒体。
【請求項12】
暗号装置(1)であって、
- 少なくとも1つのハードウェアプロセッサ(4)と、テスト素数性回路(3)と、前記素数候補Y
Pを記憶するように構成されたメモリ回路(5)とを有する処理システム(2)と、
- 暗号プロセッサ(6)とを備え、
前記処理システム(2)および暗号プロセッサ(6)が、請求項1に記載の方法のステップを実行するように構成される、暗号装置(1)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号アプリケーションのための素数生成の分野、および関連する暗号装置の分野に関し、より詳細には、いずれのGCD計算も必要としない、互いに素の性質のテストを使用する、高速の素数生成に関する。
【背景技術】
【0002】
暗号化または暗号キー生成等の暗号アプリケーションは、素数に依存することが多い。そのため、そのような暗号アプリケーションを遂行する、スマートカードのようなセキュアデバイス等の装置は、素数を生成しなければならず、これは、そのような装置に埋め込まれた最も資源を消費する演算の一つである。候補の数字の素数性は、ミラーラビンテスト等の厳密な確率的素数判定法(rigorous probable primality test)を使用して、テストされることが多い。そのようなテストは非常にコストがかかるため、候補は、それらの互いに素の性質を、わずかな既知の小さい素数を用いてテストすることによって、事前に除去することができる。
【0003】
そのような互いに素の性質のテストは、最大公約数(GCD)計算に基づくことが多い。それにもかかわらず、そのようなGCD計算は、それ自体が、特に、限られた処理能力の装置、および/または高速な除算器を持たないCPUについては、相当コストがかかり得る。暗号アプリケーションの枠組みにおけるGCD計算は、セキュリティ上のリスクを誘発することがあり、何故なら、GCD計算の漏出が、RSAプライベートキー等の秘密鍵を取得するために悪用され得るからである。
【発明の概要】
【発明が解決しようとする課題】
【0004】
そのため、GCD計算を必要とせずに、セキュアに、限られた処理能力要件で、素数を生成することができる暗号アプリケーション、および関連する装置が必要である。
【課題を解決するための手段】
【0005】
この目的のために、第一の態様によると、本発明は、素数を生成し、それを暗号アプリケーションにおいて使用するための方法に関し:
a)少なくとも1つのハードウェアプロセッサと、テスト素数性回路(test primality circuit)と、メモリ回路とを備える処理システムを介して、少なくとも1つの2進数である基数Bを決定し、Bは小さいサイズb=log2(B)ビットを有し、および、各決定された基数Bについて、iを整数として、少なくとも1つの小さい素数piを、B mod pi=1であるように、決定するステップと、
b)前記ハードウェアプロセッサを介して、素数候補YPを選択するステップと、
c)前記ハードウェアプロセッサを介して、選択された素数候補YPを、前記決定された2進数である基数の中から選択された基数Bで分解:YP=ΣyjBi するステップと、
d)前記ハードウェアプロセッサを介して、前記選択された基数について、yPB=Σyjのように、候補YPから剰余yPBを算出するステップと、
e)前記テスト素数性回路を介して、前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数の中から選択された1つの小さい素数piで、割り切れるか否かをテストするステップと、
f)前記算出された剰余yPBが、前記選択された小さい素数で割り切れない間、ステップe)にて遂行されるテストが、前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても、前記算出された剰余yPBが割り切れないことを証明するまで、前記テスト素数性回路を介して、上記のステップe)を反復的に繰り返すステップと、
g)ステップe)にて遂行されるテストが、前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても、前記算出された剰余yPBが割り切れないことを証明したとき、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返すステップと、
h)全ての決定された基数Bについて、ステップe)にて遂行されるテストが、前記決定された基数Bについて前記決定された小さい素数のうちのいずれによっても、決定された基数について算出された前記剰余yPBが割り切れないことを証明したとき、前記テスト素数性回路を介して、前記候補YPに、既知の厳密な確率的素数判定法を実行し、既知の厳密な確率的素数判定法が成功したとき、前記素数候補YPを前記メモリ回路に記憶し、暗号プロセッサを介して、前記記憶された素数候補YPを前記暗号アプリケーションにおいて使用する、ステップと、
を含む方法。
【0006】
これが、候補の素数と複数の素数との互いに素の性質を、この候補の素数と複数の素数のいずれのGCDも算出することなく、効率的にテストすることと;最終的に、素数をより低コストで決定して、そしてそれを暗号アプリケーションにおいて使用することとを可能にする。
【0007】
第1の態様による方法は、
- ステップf)において、前記算出された剰余yPBが、前記選択された小さい素数で割り切れるとき、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされるまで、前記テスト素数性回路を介して、上記のステップe)を反復的に繰り返すステップと、
- ステップg)において、前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数のうちの1つで割り切れ、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされたとき、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返すステップと、
を含んでもよい。
【0008】
これが、候補の素数が素数であろうとなかろうと、それのテスト工程の実行時間を一定にすることを可能にする。
【0009】
第1の態様による方法は、
i)前記算出された剰余yPBが、選択された小さい素数で割り切れるとき、または、既知の厳密な確率的素数判定法が失敗したとき、前記既知の厳密な確率的素数判定法が成功するまで、新しい素数候補について、ステップd)からh)を反復的に繰り返すステップであって、新しい素数候補YPおよび選択された基数Bについて、前記剰余yPBが、別の素数候補および前記選択された基数Bについて以前に算出された剰余を、所定の増分でインクリメントすることにより算出される、ステップを含んでもよい。
【0010】
それは、候補の素数が破棄された後、最終的に素数が見つかるまで、新しい候補の素数をテストし続けることを可能にする。
【0011】
前記記憶された素数候補YPを前記暗号アプリケーションにおいて使用するステップは、前記暗号プロセッサを介して、前記暗号アプリケーションを実行して、前記記憶された素数候補YPを使用してデータをセキュアにするステップ、および/または、前記暗号プロセッサを介して、前記記憶された素数候補YPを使用して、暗号キーを生成するステップ、のうちの少なくとも1つを含んでもよい。
【0012】
剰余算出の合計算出が、ランダムな順番で遂行されてもよい。
【0013】
ランダムな順番を使用することが、テストすべき候補の素数に関して、情報が攻撃者に漏れることを防ぐことを可能にする。
【0014】
前記基数が、異なる決定された小さい素数の数が最大になるように決定されてもよい。
【0015】
それは、厳密な確率的素数判定法を遂行する前に、決定される基数の数、したがって、遂行すべき候補の素数の分解の回数、を増やすことなく、候補の素数が素数ではないことを検出する機会を最大にすることを可能にする。
【0016】
前記基数が、処理システムのワードサイズに基づき決定されてもよい。
【0017】
基数を決定するそのような手法は、方法のステップの実施の効率を向上させる。
【0018】
前記算出された剰余yPBが1つの小さい素数piで割り切れるか否かをテストするステップが、バレットのモジュラリダクションを使用して遂行されてもよい。
【0019】
そのようなリダクションは、乗算演算によるワード分割演算を置き換え、したがって、そのようなテストのコストを低減させる。
【0020】
決定された基数Bについて、前記決定された小さい素数piが、B mod pi=1であるような、3と541との間の全ての素数を含んでもよい。
【0021】
決定された素数についてそのような小さい値を選択することが、素数候補が基数Bで分解されるときの素数候補ワードの合計が、決定された素数で割り切れるか否かをテストするコストを低くする。
【0022】
前記決定された2進数である基数が、16、24、28、32、36、44、48、52、60、64のうちのサイズを持つことができる。
【0023】
前記既知の厳密な確率的素数判定法が、ミラーラビンテストまたはフェルマーテストを含んでもよい。
【0024】
第2の態様によると、本発明は、少なくとも1つのコンピュータのメモリに直接ロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で起動されるとき第1の態様による方法のステップを遂行するための、ソフトウェアコード命令を含む、コンピュータプログラム製品に関する。
【0025】
第3の態様によると、本発明は、処理システムと暗号プロセッサとを備える暗号装置によって実行されたとき第1の態様による方法を遂行する、実行可能なコンピュータコードを記憶する、非一時的コンピュータ可読媒体に関する。
【0026】
第4の態様によると、本発明は、
- 少なくとも1つのハードウェアプロセッサと、テスト素数性回路と、前記素数候補YPを記憶するように構成されたメモリ回路とを有する処理システム、ならびに、
- 暗号プロセッサを備え、
前記処理システムおよび暗号プロセッサが、第1の態様による方法のステップを実行するように構成される、暗号装置に関する。
【0027】
上述の目的および関連する目的を達成するために、1つまたは複数の実施形態が、以下において十分に説明され、特許請求の範囲において特に指摘される特徴を備える。
【0028】
以下の説明および添付の図面は、例示の態様を詳細に記載するものであり、本実施形態の原理が採用されてよい種々の方法のうちのいくつかを示す。他の利点および新規な特徴は、図面と併せて検討されることにより、以下の詳細な説明から明らかになり、開示される実施形態は、全てのそのような態様およびその等価物を含むことが意図される。
【図面の簡単な説明】
【0029】
【
図1】本発明の一実施形態に係る暗号装置の概略図である。
【
図2】本発明の一実施形態に係る暗号アプリケーションにおける、素数を生成し、それを暗号アプリケーションにおいて使用するための方法を概略的に示す図である。
【発明を実施するための形態】
【0030】
以下に詳細に示す説明では、本発明が実践されてもよい特定の実施形態を、例示として示す添付の図面を参照する。これらの実施形態は、当業者が本発明を実践することができるように、十分に詳細に説明されている。本発明の種々の実施形態が、異なってはいるが、必ずしも相互排他的ではない、ということを理解されたい。例えば、一実施形態に関連して本明細書に説明される特別な特徴、構造、または特性は、本発明の精神および範囲から逸脱することなく他の実施形態において実現されてもよい。加えて、開示される各実施形態における個々の要素の、設置または配置が、本発明の精神および範囲から逸脱することなく変形されてもよいことを、理解されたい。以下に詳細に示す説明は、したがって、制限するものとして考慮されるのでなく、本発明の範囲は、添付の請求項によってのみ、適切に解釈されて、請求項に権限があるあらゆる均等物と併せて、定義される。
【0031】
以下の説明では、x^yおよびxyの形式の表記は、共にべき乗演算に使用される。
【0032】
本発明は、いずれのGCD計算も用いない高速の素数生成を備えた、暗号アプリケーションのための方法および関連する暗号装置、を提供することを目的とする。
【0033】
第1の態様によると、本発明は、
図1に示すような暗号装置に関する。そのような暗号装置1は、素数を生成するように構成される処理システム2を備えることができる。処理システム2は、ここで以下に記載される方法に従い、既知の小さい素数を用いて、候補の素数の互いに素の性質をテストするテスト素数性回路3を備えてもよい。処理システム2はまた、前記方法において素数を生成するために必要な他の処理タスクを遂行するハードウェアプロセッサ4と、少なくとも生成された素数を記憶するメモリ回路5とを備える。
【0034】
そのような暗号装置はまた、処理システム2によって生成される素数に基づく秘密鍵の生成等の暗号アプリケーションを遂行する暗号プロセッサ6を含んでもよい。
処理システム2のハードウェアプロセッサ4および暗号プロセッサ6は、別個のものであってもよいし、素数生成と暗号アプリケーションの両方に使用されるただ一つの共通のプロセッサであってもよい。
【0035】
第2の態様によると、本発明は、そのような暗号装置1によって遂行される、素数を生成し、それを暗号アプリケーションにおいて使用する方法に関する。資源の消費が限定された状態で素数を生成するために、前記方法は、既存の方法で行うように、既知の小さい素数に対して、互いに素の性質のテストを使用する。しかし、そのような互いに素の性質のテストを遂行するためにGCDを算出する代わりに、本発明に係る方法では、以下の段落で説明するように、いくつかの素数の特別な数学的な性質を利用する。
【0036】
サイズがb=log2(B)の2進数である基数Bと、素数候補Ypとを考える。素数候補YPは、基数Bで、YP=ΣyjBi、と表すことができる。素数候補YPと素数piの互いに素の性質を調べることは、YPがpiで割り切れるか否かをテストすること、すなわち、YP mod pi=0であるか否かをテストすることと等価である。
YP mod piは、以下の式を用いて異なる形式で表すこともできる:
YP mod pi=(ΣyjBj)mod pi=(Σyj(B mod pi)j)mod pi
【0037】
いくつかの2進数である基数について、B mod pi=1であるような、1つ以上の素数piが存在することが分かる。その場合、YP mod piは、YP mod pi=Σyj mod piと表すこともできる。そのため、B mod pi=1であるような素数piで、YPが割り切れるか否かのテストは、YPが基数Bで分解されるときのYPワードの合計をただ算出し、次に、その合計がそのような素数piで割り切れるか否かをテストすることによって、達成されうる。
【0038】
その結果、ある2進数である基数について、B mod pi=1という属性を実証した素数候補と素数の間の、互いに素の性質を、そのような合計の算出によって、前記素数候補と前記素数のGCDを算出することによるよりも相当速く、テストすることができる。
【0039】
そのような属性を利用して素数を生成して、暗号アプリケーションにおいて使用するために、本発明の第2の態様による方法は、以下に説明され、
図2に示されるステップを含むことができる。
【0040】
決定するステップa)において、処理システム2が、少なくとも1つの2進数である基数Bであって、小さいサイズb=log2(B)ビットを有するBを決定し、各決定された基数Bについて、iを整数として、少なくとも1つの小さい素数piをB mod pi=1であるように、決定してもよい。
【0041】
第1の実施形態において、決定するステップa)の中で、処理システムは、種々の基数について、どの素数がB mod pi=1を実証するのかを実証し、少なくとも1つの2進数である基数Bと、処理システムがB mod pi=1であることを実証した少なくとも1つの小さい素数piとを選択するために計算を遂行することができる。
【0042】
第2の実施形態において、そのような実証は、決定するステップa)が遂行される前に、場合によっては処理システム2とは別のシステムにより、遂行されてもよく、基数Bおよび、B mod pi=1であるような小さい素数piが、処理システム2のメモリ回路に記憶されてもよい。その場合、決定するステップa)の中で、処理システムが、記憶された基数Bと、基数Bのそれぞれ1つに関連する小さい素数とをメモリ回路から単に読み込んでもよい。
【0043】
上記に示したように、B mod pi=1という属性のおかげで、素数候補と決定された素数のそれぞれとの互いに素の性質を、素数候補とそのような決定された素数のGCD計算のコストよりも相当低いコストで、素数候補が基数Bで分解されるときの素数候補ワードの合計をただ算出し、次に、この合計がそのような素数piで割り切れるか否かをテストすることにより決定することができる。
【0044】
例示するように、決定された2進数である基数は、16、24、28、32、36、44、48、52、60および64のうちのサイズbを有することができる。基数は、処理システムのワードサイズに基づき決定されてもよい。
【0045】
一実施形態において、2進数である基数は、異なる決定された小さい素数の数が最大になるよう決定されてもよい。素数候補と、B mod pi=1を実証する少なくとも1つの素数との互いに素の性質をテストする、基数Bの数を限定することが望ましい。そのようなテストは、実際には、素数候補を各基数Bで分解することが必要であり、なんらかのコストがかかる。残念ながら、異なる2進数である基数Bは、B mod pi=1を実証する1つ以上の素数を共通に有する。そのため、所与の数の2進数である基数Bについて、素数候補となるべく多くの素数との互いに素の性質をテストできるために、2進数である基数Bは注意深く選択され、選択された基数についてB mod pi=1を実証する決定された素数の数が最大になるようにする。
【0046】
素数候補が素数で割り切れる可能性は、この素数が大きいほど低いので、候補の素数が最小の素数で割り切れることについて、最初にテストされる。一例として、決定された基数Bについて、前記決定された小さい素数piは、B mod pi=1であるような100個の最初の素数、すなわち、3と541との間の全ての素数を含むことができる。
【0047】
別の例として、16と32との間であるサイズbを有する前記決定された2進数である基数に関連する、決定された小さい素数は、以下の値:
- b= 16に対して、3、5、17、257
- b=18に対して、3、7、19、73
- b=20に対して、3、5、11、31、41
- b=21に対して、7、127、337
- b=22に対して、3、23、89、683
- b=23に対して、47
- b=24に対して、3、5、7、13、17、241
- b=25に対して、31、601、1801
- b=26に対して、3、2731
- b=27に対して、7、73
- b=28に対して、3、5、29、43、113、127
- b=29に対して、233、1103、2089
- b=30に対して、3、7、11、31、151、331
- b=32に対して、3、5、17、257
の中からであってもよい。
【0048】
選択ステップb)において、処理システム2のハードウェアプロセッサ4は、素数候補YPを選択してもよい。
【0049】
分解ステップc)において、ハードウェアプロセッサは、前記決定された2進数である基数から選択された基数Bで、選択された素数候補YPを分解:YP=ΣyjBi してもよい。
【0050】
そして、算出するステップd)において、ハードウェアプロセッサは、前記選択された基数Bについて、yPB=Σyjのように、候補YPから剰余yPBを算出してもよい。この式で表されるように、そのような剰余は、選択された基数BでYPが分解されるときの、YPワードの合計である。攻撃者へ情報が漏れるのを防ぐために、剰余算出の合計算出は、ランダムな順番で遂行される。
【0051】
そして、テストするステップe)において、テスト素数性回路3は、前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数の中から選択された1つの小さい素数piで、割り切れるか否かをテストする。選択された小さい素数piおよび選択された基数Bが、B mod pi=1を実証するので、剰余に対するそのようなテストは、候補の素数YPが、選択された小さい素数piと互いに素である否かをテストすることと等価である。
【0052】
テストするステップe)の結果が、剰余yPBは、選択された小さい素数piで割り切れないということであるとき、候補の素数YPが、選択された小さい素数piと互いに素であることを意味する。その場合、候補の素数YPは、未だ有効な候補の素数であり、候補の素数YPと基数Bについて選択された他の小さい素数との互いに素の性質が、テストされるべきである。
【0053】
方法は、次に、第1の繰り返しステップf)を含んでもよく、その間、前記算出された剰余yPBが、前記選択された小さい素数で割り切れない間は、ステップe)にて遂行されるテストが、前記選択された基数Bについて、前記算出された剰余yPBが、前記決定された小さい素数のうちのいずれによっても割り切れないことを証明するまで、テスト素数性回路が上記のステップe)を反復的に繰り返してよい。そうすることによって、テストするステップe)の各繰り返しにおいて、算出された剰余yPBは、前記選択された基数Bについて前記決定された小さい素数の中から選択された新しい小さい素数piで割り切れることについて、テストされる。候補の素数YPと、選択された基数Bについて決定された小さい素数piとの互いに素の性質は、候補の素数YPが、決定された小さい素数のうちの1つで割り切れ、したがって素数ではないとわかるまで、または、候補の素数YPが、基数Bについて選択された全ての小さい素数piと互いに素であるとわかるまで、こうして小さい素数について次々にテストされる。
【0054】
ステップe)にて遂行されるテストが、前記算出された剰余yPBは、前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても割り切れないということを証明したとき、候補の素数YPは、未だ有効な候補の素数であり、候補の素数YPと、他の基数とB mod pi=1を実証する他の小さい素数との互いに素の性質が、テストされるべきである。方法は次に、第2の繰り返しステップg)を含んでもよく、その間、ステップc)からf)が、前記決定された2進数である基数のうちの各基数Bについて、反復的に繰り返される。そうすることによって、分解ステップc)および算出するステップd)の各反復において、素数候補が、決定された2進数である基数のうちの新しい基数Bで分解され、その剰余が、新しい基数について算出される。そして、ステップe)およびf)が、候補の素数YPと、新しい選択された基数Bについて決定された小さい素数piとの互いに素の性質を、小さい素数について次々に、テストすることを可能にする。
【0055】
全ての決定された基数Bについて、ステップe)において繰り返し遂行されるテストが、決定された基数について算出された前記剰余yPBは、前記決定された基数について前記決定された小さい素数のうちのいずれによっても割り切れないことを証明したとき、候補の素数YPは、全ての決定された基数について決定された全ての小さい素数と、互いに素である。方法は次に、実行ステップh)を含んでもよく、その間、テスト素数性回路が、前記候補YPに、既知の厳密な確率的素数判定法を実行する。そのような厳密な確率的素数判定法は、例えば、ミラーラビンテストまたはフェルマーテストであってもよい。
【0056】
既知の厳密な確率的素数判定法が成功したとき、実行ステップh)はまた、素数候補YPを処理システム2のメモリ回路5に記憶するステップと、暗号プロセッサ6を介して、前記記憶された素数候補YPを前記暗号アプリケーションにおいて使用するステップとを含んでもよい。
【0057】
一例として、前記記憶された素数候補YPを暗号アプリケーションにおいて使用するステップは、前記暗号プロセッサを介して、前記暗号アプリケーションを実行して、前記記憶された素数候補YPを使用してデータをセキュアにするステップ、および/または、前記暗号プロセッサを介して、前記記憶された素数候補YPを使用して、暗号キーを生成するステップ、のうちの少なくとも1つを含んでもよい。
【0058】
上で説明されたステップa)からh)では、このように、より少ないコストで、素数候補と前記小さい素数のGCDを算出することなく、素数候補の複数の小さい素数に対して互いに素の性質を効率的にテストすることを可能にする。
【0059】
テストするステップe)にて遂行される互いに素の性質のテストのコストをさらに下げるためには、前記算出された剰余yPBが、小さい素数piで割り切れるか否かをテストするステップは、バレットのモジュラリダクションを使用して遂行されてもよい。そのようなリダクションは、実際は、相当低いコストとなることが多い乗算演算により、ワード分割を置き換える。
【0060】
テストするステップe)の反復のどこかで、算出された剰余yPBが、選択された小さい素数piで割り切れることがわかるかもしれない。実行ステップh)において、既知の厳密な確率的素数判定法が、失敗することもある。両方の場合において、テストされた素数候補は、実際に素数ではない。それで、新しい候補の素数をテストすることが望ましい。方法は、第3の繰り返しステップi)を含んでもよく、その間、ステップd)からh)が、前記既知の厳密な確率的素数判定法が成功するまで、新しい素数候補について反復的に繰り返される。そのような新しい素数候補について、決定された基数Bごとに、新しい素数候補の剰余が最終的には必要である。
【0061】
第1の実施形態において、そのような剰余は、分解するステップc)のように、新しい素数候補を各基数で分解すること、および、上記で説明したように、各基数で表される新しい候補の素数のワードの合計を算出すること、によって算出されてもよい。
【0062】
第2の実施形態において、新しい素数候補YPおよび選択された基数Bについて、剰余yPBは、別の前の素数候補および前記選択された基数Bについて以前に算出された剰余を、所定の増分でインクリメントすることにより、算出されてもよい。そのような所定の増分は、前記選択された基数Bで表される、前の素数候補と新しい素数候補との差分のワードの合計と等しい。そうすることが、コストがかかり得る、新しい素数候補全体を分解することに代えて、小さいと考えられる2つの候補の素数の差分のみを、選択された基数Bで分解することにより、剰余を算出することを可能にする。
【0063】
テストするステップe/において、算出された剰余yPBが、選択された小さい素数で割り切れるとわかったとき、素数候補は実際に素数ではない。第1の実施形態において、方法は、終了してもよいし、新しい候補の素数をテストするために上で説明された第3の繰り返しステップi/にジャンプしてもよい。これは、テストされた候補の素数が素数でないことを、実行時間をただ見ることにより、方法の実行を監視している攻撃者に分からせてしまう、という欠点がある。
【0064】
したがって、第2の実施形態において、全ての決定された基数について決定された全ての小さい素数との互いに素の性質は、テストするステップe)にて遂行されるテストの結果がどうであろうと、テストされる。そうするために:
- 第1の繰り返しステップf)において、前記算出された剰余yPBが前記選択された小さい素数で割り切れるとき、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされるまで、テスト素数性回路は、上記のステップe)を反復的に繰り返してもよい。
- 前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数のうちの1つで割り切れ、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされたとき、第2の繰り返しステップg)は、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返してもよい。
【0065】
そうすることで、候補の素数の素数性がどうであろうと、ステップe)からg)の一定の実行時間を有することができる。
【0066】
別の態様によると、本発明は、少なくとも1つのコンピュータのメモリに直接ロード可能なコンピュータプログラム製品に関し、それは、前記製品がコンピュータ上で起動されたとき、本明細書にて上で説明されたステップa)からh)を遂行するための、ソフトウェアコード命令を含む。
【0067】
別の態様によると、本発明は、処理システムと暗号プロセッサとを備えるコンピューティングシステムによって実行されたとき、本明細書にて上で説明されたステップa)からh)を遂行する、実行可能なコンピュータコードを記憶する、非一時的コンピュータ可読媒体に関する。