JP2020509407A - 暗号アプリケーションのための素数を生成する方法 - Google Patents

暗号アプリケーションのための素数を生成する方法 Download PDF

Info

Publication number
JP2020509407A
JP2020509407A JP2019545254A JP2019545254A JP2020509407A JP 2020509407 A JP2020509407 A JP 2020509407A JP 2019545254 A JP2019545254 A JP 2019545254A JP 2019545254 A JP2019545254 A JP 2019545254A JP 2020509407 A JP2020509407 A JP 2020509407A
Authority
JP
Japan
Prior art keywords
prime
radix
determined
candidate
small
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.)
Granted
Application number
JP2019545254A
Other languages
English (en)
Other versions
JP7055142B2 (ja
Inventor
ベルザチ,アレクサンドル
ルスレ,ミレーヌ
Original Assignee
タレス・ディス・フランス・エス・ア
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 タレス・ディス・フランス・エス・ア filed Critical タレス・ディス・フランス・エス・ア
Publication of JP2020509407A publication Critical patent/JP2020509407A/ja
Application granted granted Critical
Publication of JP7055142B2 publication Critical patent/JP7055142B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7204Prime number generation or prime number testing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Mathematics (AREA)
  • Signal Processing (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本発明は、素数を生成し、それを暗号アプリケーションにおいて使用するための方法に関し:a)少なくとも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)前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても、前記算出された剰余yPBが割り切れないとき、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返すステップと、h)全ての決定された基数Bについて、前記決定された基数Bについて前記決定された小さい素数のうちのいずれによっても、決定された基数について算出された前記剰余yPBが割り切れないとき、前記候補YPに、既知の厳密な確率的素数判定法を実行し、既知の厳密な確率的素数判定法が成功したとき、前記素数候補YPを記憶し、前記記憶された素数候補YPを前記暗号アプリケーションにおいて使用する、ステップとを含む。

Description

本発明は、暗号アプリケーションのための素数生成の分野、および関連する暗号装置の分野に関し、より詳細には、いずれのGCD計算も必要としない、互いに素の性質のテストを使用する、高速の素数生成に関する。
暗号化または暗号キー生成等の暗号アプリケーションは、素数に依存することが多い。そのため、そのような暗号アプリケーションを遂行する、スマートカードのようなセキュアデバイス等の装置は、素数を生成しなければならず、これは、そのような装置に埋め込まれた最も資源を消費する演算の一つである。候補の数字の素数性は、ミラーラビンテスト等の厳密な確率的素数判定法(rigorous probable primality test)を使用して、テストされることが多い。そのようなテストは非常にコストがかかるため、候補は、それらの互いに素の性質を、わずかな既知の小さい素数を用いてテストすることによって、事前に除去することができる。
そのような互いに素の性質のテストは、最大公約数(GCD)計算に基づくことが多い。それにもかかわらず、そのようなGCD計算は、それ自体が、特に、限られた処理能力の装置、および/または高速な除算器を持たないCPUについては、相当コストがかかり得る。暗号アプリケーションの枠組みにおけるGCD計算は、セキュリティ上のリスクを誘発することがあり、何故なら、GCD計算の漏出が、RSAプライベートキー等の秘密鍵を取得するために悪用され得るからである。
そのため、GCD計算を必要とせずに、セキュアに、限られた処理能力要件で、素数を生成することができる暗号アプリケーション、および関連する装置が必要である。
この目的のために、第一の態様によると、本発明は、素数を生成し、それを暗号アプリケーションにおいて使用するための方法に関し:
a)少なくとも1つのハードウェアプロセッサと、テスト素数性回路(test primality circuit)と、メモリ回路とを備える処理システムを介して、少なくとも1つの2進数である基数Bを決定し、Bは小さいサイズb=log(B)ビットを有し、および、各決定された基数Bについて、iを整数として、少なくとも1つの小さい素数pを、B mod pi=1であるように、決定するステップと、
b)前記ハードウェアプロセッサを介して、素数候補Yを選択するステップと、
c)前記ハードウェアプロセッサを介して、選択された素数候補Yを、前記決定された2進数である基数の中から選択された基数Bで分解:Y=Σy するステップと、
d)前記ハードウェアプロセッサを介して、前記選択された基数について、yPB=Σyのように、候補Yから剰余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が割り切れないことを証明したとき、前記テスト素数性回路を介して、前記候補Yに、既知の厳密な確率的素数判定法を実行し、既知の厳密な確率的素数判定法が成功したとき、前記素数候補Yを前記メモリ回路に記憶し、暗号プロセッサを介して、前記記憶された素数候補Yを前記暗号アプリケーションにおいて使用する、ステップと、
を含む方法。
これが、候補の素数と複数の素数との互いに素の性質を、この候補の素数と複数の素数のいずれのGCDも算出することなく、効率的にテストすることと;最終的に、素数をより低コストで決定して、そしてそれを暗号アプリケーションにおいて使用することとを可能にする。
第1の態様による方法は、
− ステップf)において、前記算出された剰余yPBが、前記選択された小さい素数で割り切れるとき、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされるまで、前記テスト素数性回路を介して、上記のステップe)を反復的に繰り返すステップと、
− ステップg)において、前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数のうちの1つで割り切れ、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされたとき、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返すステップと、
を含んでもよい。
これが、候補の素数が素数であろうとなかろうと、それのテスト工程の実行時間を一定にすることを可能にする。
第1の態様による方法は、
i)前記算出された剰余yPBが、選択された小さい素数で割り切れるとき、または、既知の厳密な確率的素数判定法が失敗したとき、前記既知の厳密な確率的素数判定法が成功するまで、新しい素数候補について、ステップd)からh)を反復的に繰り返すステップであって、新しい素数候補Yおよび選択された基数Bについて、前記剰余yPBが、別の素数候補および前記選択された基数Bについて以前に算出された剰余を、所定の増分でインクリメントすることにより算出される、ステップを含んでもよい。
それは、候補の素数が破棄された後、最終的に素数が見つかるまで、新しい候補の素数をテストし続けることを可能にする。
前記記憶された素数候補Yを前記暗号アプリケーションにおいて使用するステップは、前記暗号プロセッサを介して、前記暗号アプリケーションを実行して、前記記憶された素数候補Yを使用してデータをセキュアにするステップ、および/または、前記暗号プロセッサを介して、前記記憶された素数候補Yを使用して、暗号キーを生成するステップ、のうちの少なくとも1つを含んでもよい。
剰余算出の合計算出が、ランダムな順番で遂行されてもよい。
ランダムな順番を使用することが、テストすべき候補の素数に関して、情報が攻撃者に漏れることを防ぐことを可能にする。
前記基数が、異なる決定された小さい素数の数が最大になるように決定されてもよい。
それは、厳密な確率的素数判定法を遂行する前に、決定される基数の数、したがって、遂行すべき候補の素数の分解の回数、を増やすことなく、候補の素数が素数ではないことを検出する機会を最大にすることを可能にする。
前記基数が、処理システムのワードサイズに基づき決定されてもよい。
基数を決定するそのような手法は、方法のステップの実施の効率を向上させる。
前記算出された剰余yPBが1つの小さい素数pで割り切れるか否かをテストするステップが、バレットのモジュラリダクションを使用して遂行されてもよい。
そのようなリダクションは、乗算演算によるワード分割演算を置き換え、したがって、そのようなテストのコストを低減させる。
決定された基数Bについて、前記決定された小さい素数pが、B mod p=1であるような、3と541との間の全ての素数を含んでもよい。
決定された素数についてそのような小さい値を選択することが、素数候補が基数Bで分解されるときの素数候補ワードの合計が、決定された素数で割り切れるか否かをテストするコストを低くする。
前記決定された2進数である基数が、16、24、28、32、36、44、48、52、60、64のうちのサイズを持つことができる。
前記既知の厳密な確率的素数判定法が、ミラーラビンテストまたはフェルマーテストを含んでもよい。
第2の態様によると、本発明は、少なくとも1つのコンピュータのメモリに直接ロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で起動されるとき第1の態様による方法のステップを遂行するための、ソフトウェアコード命令を含む、コンピュータプログラム製品に関する。
第3の態様によると、本発明は、処理システムと暗号プロセッサとを備える暗号装置によって実行されたとき第1の態様による方法を遂行する、実行可能なコンピュータコードを記憶する、非一時的コンピュータ可読媒体に関する。
第4の態様によると、本発明は、
− 少なくとも1つのハードウェアプロセッサと、テスト素数性回路と、前記素数候補Yを記憶するように構成されたメモリ回路とを有する処理システム、ならびに、
− 暗号プロセッサを備え、
前記処理システムおよび暗号プロセッサが、第1の態様による方法のステップを実行するように構成される、暗号装置に関する。
上述の目的および関連する目的を達成するために、1つまたは複数の実施形態が、以下において十分に説明され、特許請求の範囲において特に指摘される特徴を備える。
以下の説明および添付の図面は、例示の態様を詳細に記載するものであり、本実施形態の原理が採用されてよい種々の方法のうちのいくつかを示す。他の利点および新規な特徴は、図面と併せて検討されることにより、以下の詳細な説明から明らかになり、開示される実施形態は、全てのそのような態様およびその等価物を含むことが意図される。
本発明の一実施形態に係る暗号装置の概略図である。 本発明の一実施形態に係る暗号アプリケーションにおける、素数を生成し、それを暗号アプリケーションにおいて使用するための方法を概略的に示す図である。
以下に詳細に示す説明では、本発明が実践されてもよい特定の実施形態を、例示として示す添付の図面を参照する。これらの実施形態は、当業者が本発明を実践することができるように、十分に詳細に説明されている。本発明の種々の実施形態が、異なってはいるが、必ずしも相互排他的ではない、ということを理解されたい。例えば、一実施形態に関連して本明細書に説明される特別な特徴、構造、または特性は、本発明の精神および範囲から逸脱することなく他の実施形態において実現されてもよい。加えて、開示される各実施形態における個々の要素の、設置または配置が、本発明の精神および範囲から逸脱することなく変形されてもよいことを、理解されたい。以下に詳細に示す説明は、したがって、制限するものとして考慮されるのでなく、本発明の範囲は、添付の請求項によってのみ、適切に解釈されて、請求項に権限があるあらゆる均等物と併せて、定義される。
以下の説明では、x^yおよびxの形式の表記は、共にべき乗演算に使用される。
本発明は、いずれのGCD計算も用いない高速の素数生成を備えた、暗号アプリケーションのための方法および関連する暗号装置、を提供することを目的とする。
第1の態様によると、本発明は、図1に示すような暗号装置に関する。そのような暗号装置1は、素数を生成するように構成される処理システム2を備えることができる。処理システム2は、ここで以下に記載される方法に従い、既知の小さい素数を用いて、候補の素数の互いに素の性質をテストするテスト素数性回路3を備えてもよい。処理システム2はまた、前記方法において素数を生成するために必要な他の処理タスクを遂行するハードウェアプロセッサ4と、少なくとも生成された素数を記憶するメモリ回路5とを備える。
そのような暗号装置はまた、処理システム2によって生成される素数に基づく秘密鍵の生成等の暗号アプリケーションを遂行する暗号プロセッサ6を含んでもよい。
処理システム2のハードウェアプロセッサ4および暗号プロセッサ6は、別個のものであってもよいし、素数生成と暗号アプリケーションの両方に使用されるただ一つの共通のプロセッサであってもよい。
第2の態様によると、本発明は、そのような暗号装置1によって遂行される、素数を生成し、それを暗号アプリケーションにおいて使用する方法に関する。資源の消費が限定された状態で素数を生成するために、前記方法は、既存の方法で行うように、既知の小さい素数に対して、互いに素の性質のテストを使用する。しかし、そのような互いに素の性質のテストを遂行するためにGCDを算出する代わりに、本発明に係る方法では、以下の段落で説明するように、いくつかの素数の特別な数学的な性質を利用する。
サイズがb=log(B)の2進数である基数Bと、素数候補Yとを考える。素数候補Yは、基数Bで、Y=Σy、と表すことができる。素数候補Yと素数pの互いに素の性質を調べることは、Yがpiで割り切れるか否かをテストすること、すなわち、Y mod pi=0であるか否かをテストすることと等価である。
mod pは、以下の式を用いて異なる形式で表すこともできる:
mod p=(Σy)mod p=(Σy(B mod p)mod p
いくつかの2進数である基数について、B mod p=1であるような、1つ以上の素数pが存在することが分かる。その場合、Y mod pは、Y mod p=Σy mod pと表すこともできる。そのため、B mod p=1であるような素数pで、Yが割り切れるか否かのテストは、Yが基数Bで分解されるときのYワードの合計をただ算出し、次に、その合計がそのような素数pで割り切れるか否かをテストすることによって、達成されうる。
その結果、ある2進数である基数について、B mod p=1という属性を実証した素数候補と素数の間の、互いに素の性質を、そのような合計の算出によって、前記素数候補と前記素数のGCDを算出することによるよりも相当速く、テストすることができる。
そのような属性を利用して素数を生成して、暗号アプリケーションにおいて使用するために、本発明の第2の態様による方法は、以下に説明され、図2に示されるステップを含むことができる。
決定するステップa)において、処理システム2が、少なくとも1つの2進数である基数Bであって、小さいサイズb=log(B)ビットを有するBを決定し、各決定された基数Bについて、iを整数として、少なくとも1つの小さい素数pをB mod p=1であるように、決定してもよい。
第1の実施形態において、決定するステップa)の中で、処理システムは、種々の基数について、どの素数がB mod p=1を実証するのかを実証し、少なくとも1つの2進数である基数Bと、処理システムがB mod p=1であることを実証した少なくとも1つの小さい素数pとを選択するために計算を遂行することができる。
第2の実施形態において、そのような実証は、決定するステップa)が遂行される前に、場合によっては処理システム2とは別のシステムにより、遂行されてもよく、基数Bおよび、B mod p=1であるような小さい素数pが、処理システム2のメモリ回路に記憶されてもよい。その場合、決定するステップa)の中で、処理システムが、記憶された基数Bと、基数Bのそれぞれ1つに関連する小さい素数とをメモリ回路から単に読み込んでもよい。
上記に示したように、B mod p=1という属性のおかげで、素数候補と決定された素数のそれぞれとの互いに素の性質を、素数候補とそのような決定された素数のGCD計算のコストよりも相当低いコストで、素数候補が基数Bで分解されるときの素数候補ワードの合計をただ算出し、次に、この合計がそのような素数pで割り切れるか否かをテストすることにより決定することができる。
例示するように、決定された2進数である基数は、16、24、28、32、36、44、48、52、60および64のうちのサイズbを有することができる。基数は、処理システムのワードサイズに基づき決定されてもよい。
一実施形態において、2進数である基数は、異なる決定された小さい素数の数が最大になるよう決定されてもよい。素数候補と、B mod p=1を実証する少なくとも1つの素数との互いに素の性質をテストする、基数Bの数を限定することが望ましい。そのようなテストは、実際には、素数候補を各基数Bで分解することが必要であり、なんらかのコストがかかる。残念ながら、異なる2進数である基数Bは、B mod p=1を実証する1つ以上の素数を共通に有する。そのため、所与の数の2進数である基数Bについて、素数候補となるべく多くの素数との互いに素の性質をテストできるために、2進数である基数Bは注意深く選択され、選択された基数についてB mod p=1を実証する決定された素数の数が最大になるようにする。
素数候補が素数で割り切れる可能性は、この素数が大きいほど低いので、候補の素数が最小の素数で割り切れることについて、最初にテストされる。一例として、決定された基数Bについて、前記決定された小さい素数pは、B mod p=1であるような100個の最初の素数、すなわち、3と541との間の全ての素数を含むことができる。
別の例として、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
の中からであってもよい。
選択ステップb)において、処理システム2のハードウェアプロセッサ4は、素数候補Yを選択してもよい。
分解ステップc)において、ハードウェアプロセッサは、前記決定された2進数である基数から選択された基数Bで、選択された素数候補Yを分解:Y=Σy してもよい。
そして、算出するステップd)において、ハードウェアプロセッサは、前記選択された基数Bについて、yPB=Σyのように、候補Yから剰余yPBを算出してもよい。この式で表されるように、そのような剰余は、選択された基数BでYが分解されるときの、Yワードの合計である。攻撃者へ情報が漏れるのを防ぐために、剰余算出の合計算出は、ランダムな順番で遂行される。
そして、テストするステップe)において、テスト素数性回路3は、前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数の中から選択された1つの小さい素数pで、割り切れるか否かをテストする。選択された小さい素数pおよび選択された基数Bが、B mod p=1を実証するので、剰余に対するそのようなテストは、候補の素数Yが、選択された小さい素数pと互いに素である否かをテストすることと等価である。
テストするステップe)の結果が、剰余yPBは、選択された小さい素数pで割り切れないということであるとき、候補の素数Yが、選択された小さい素数pと互いに素であることを意味する。その場合、候補の素数Yは、未だ有効な候補の素数であり、候補の素数Yと基数Bについて選択された他の小さい素数との互いに素の性質が、テストされるべきである。
方法は、次に、第1の繰り返しステップf)を含んでもよく、その間、前記算出された剰余yPBが、前記選択された小さい素数で割り切れない間は、ステップe)にて遂行されるテストが、前記選択された基数Bについて、前記算出された剰余yPBが、前記決定された小さい素数のうちのいずれによっても割り切れないことを証明するまで、テスト素数性回路が上記のステップe)を反復的に繰り返してよい。そうすることによって、テストするステップe)の各繰り返しにおいて、算出された剰余yPBは、前記選択された基数Bについて前記決定された小さい素数の中から選択された新しい小さい素数pで割り切れることについて、テストされる。候補の素数Yと、選択された基数Bについて決定された小さい素数pとの互いに素の性質は、候補の素数Yが、決定された小さい素数のうちの1つで割り切れ、したがって素数ではないとわかるまで、または、候補の素数Yが、基数Bについて選択された全ての小さい素数pと互いに素であるとわかるまで、こうして小さい素数について次々にテストされる。
ステップe)にて遂行されるテストが、前記算出された剰余yPBは、前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても割り切れないということを証明したとき、候補の素数Yは、未だ有効な候補の素数であり、候補の素数Yと、他の基数とB mod p=1を実証する他の小さい素数との互いに素の性質が、テストされるべきである。方法は次に、第2の繰り返しステップg)を含んでもよく、その間、ステップc)からf)が、前記決定された2進数である基数のうちの各基数Bについて、反復的に繰り返される。そうすることによって、分解ステップc)および算出するステップd)の各反復において、素数候補が、決定された2進数である基数のうちの新しい基数Bで分解され、その剰余が、新しい基数について算出される。そして、ステップe)およびf)が、候補の素数Yと、新しい選択された基数Bについて決定された小さい素数pとの互いに素の性質を、小さい素数について次々に、テストすることを可能にする。
全ての決定された基数Bについて、ステップe)において繰り返し遂行されるテストが、決定された基数について算出された前記剰余yPBは、前記決定された基数について前記決定された小さい素数のうちのいずれによっても割り切れないことを証明したとき、候補の素数Yは、全ての決定された基数について決定された全ての小さい素数と、互いに素である。方法は次に、実行ステップh)を含んでもよく、その間、テスト素数性回路が、前記候補Yに、既知の厳密な確率的素数判定法を実行する。そのような厳密な確率的素数判定法は、例えば、ミラーラビンテストまたはフェルマーテストであってもよい。
既知の厳密な確率的素数判定法が成功したとき、実行ステップh)はまた、素数候補Yを処理システム2のメモリ回路5に記憶するステップと、暗号プロセッサ6を介して、前記記憶された素数候補Yを前記暗号アプリケーションにおいて使用するステップとを含んでもよい。
一例として、前記記憶された素数候補Yを暗号アプリケーションにおいて使用するステップは、前記暗号プロセッサを介して、前記暗号アプリケーションを実行して、前記記憶された素数候補Yを使用してデータをセキュアにするステップ、および/または、前記暗号プロセッサを介して、前記記憶された素数候補Yを使用して、暗号キーを生成するステップ、のうちの少なくとも1つを含んでもよい。
上で説明されたステップa)からh)では、このように、より少ないコストで、素数候補と前記小さい素数のGCDを算出することなく、素数候補の複数の小さい素数に対して互いに素の性質を効率的にテストすることを可能にする。
テストするステップe)にて遂行される互いに素の性質のテストのコストをさらに下げるためには、前記算出された剰余yPBが、小さい素数pで割り切れるか否かをテストするステップは、バレットのモジュラリダクションを使用して遂行されてもよい。そのようなリダクションは、実際は、相当低いコストとなることが多い乗算演算により、ワード分割を置き換える。
テストするステップe)の反復のどこかで、算出された剰余yPBが、選択された小さい素数pで割り切れることがわかるかもしれない。実行ステップh)において、既知の厳密な確率的素数判定法が、失敗することもある。両方の場合において、テストされた素数候補は、実際に素数ではない。それで、新しい候補の素数をテストすることが望ましい。方法は、第3の繰り返しステップi)を含んでもよく、その間、ステップd)からh)が、前記既知の厳密な確率的素数判定法が成功するまで、新しい素数候補について反復的に繰り返される。そのような新しい素数候補について、決定された基数Bごとに、新しい素数候補の剰余が最終的には必要である。
第1の実施形態において、そのような剰余は、分解するステップc)のように、新しい素数候補を各基数で分解すること、および、上記で説明したように、各基数で表される新しい候補の素数のワードの合計を算出すること、によって算出されてもよい。
第2の実施形態において、新しい素数候補Yおよび選択された基数Bについて、剰余yPBは、別の前の素数候補および前記選択された基数Bについて以前に算出された剰余を、所定の増分でインクリメントすることにより、算出されてもよい。そのような所定の増分は、前記選択された基数Bで表される、前の素数候補と新しい素数候補との差分のワードの合計と等しい。そうすることが、コストがかかり得る、新しい素数候補全体を分解することに代えて、小さいと考えられる2つの候補の素数の差分のみを、選択された基数Bで分解することにより、剰余を算出することを可能にする。
テストするステップe/において、算出された剰余yPBが、選択された小さい素数で割り切れるとわかったとき、素数候補は実際に素数ではない。第1の実施形態において、方法は、終了してもよいし、新しい候補の素数をテストするために上で説明された第3の繰り返しステップi/にジャンプしてもよい。これは、テストされた候補の素数が素数でないことを、実行時間をただ見ることにより、方法の実行を監視している攻撃者に分からせてしまう、という欠点がある。
したがって、第2の実施形態において、全ての決定された基数について決定された全ての小さい素数との互いに素の性質は、テストするステップe)にて遂行されるテストの結果がどうであろうと、テストされる。そうするために:
− 第1の繰り返しステップf)において、前記算出された剰余yPBが前記選択された小さい素数で割り切れるとき、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされるまで、テスト素数性回路は、上記のステップe)を反復的に繰り返してもよい。
− 前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数のうちの1つで割り切れ、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされたとき、第2の繰り返しステップg)は、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返してもよい。
そうすることで、候補の素数の素数性がどうであろうと、ステップe)からg)の一定の実行時間を有することができる。
別の態様によると、本発明は、少なくとも1つのコンピュータのメモリに直接ロード可能なコンピュータプログラム製品に関し、それは、前記製品がコンピュータ上で起動されたとき、本明細書にて上で説明されたステップa)からh)を遂行するための、ソフトウェアコード命令を含む。
別の態様によると、本発明は、処理システムと暗号プロセッサとを備えるコンピューティングシステムによって実行されたとき、本明細書にて上で説明されたステップa)からh)を遂行する、実行可能なコンピュータコードを記憶する、非一時的コンピュータ可読媒体に関する。

Claims (14)

  1. 素数を生成し、それを暗号アプリケーションにおいて使用するための方法であって、
    a)少なくとも1つのハードウェアプロセッサ(4)と、テスト素数性回路(3)と、メモリ回路(5)とを備える処理システム(2)を介して、少なくとも1つの2進数である基数Bを決定し、Bは小さいサイズb=log(B)ビットを有し、および、各決定された基数Bについて、iを整数として、少なくとも1つの小さい素数pを、B mod p=1であるように、決定するステップと、
    b)前記ハードウェアプロセッサ(4)を介して、素数候補Yを選択するステップと、
    c)前記ハードウェアプロセッサを介して、選択された素数候補Yを、前記決定された2進数である基数の中から選択された基数BでY=Σyと分解するステップと、
    d)前記ハードウェアプロセッサを介して、前記選択された基数Bについて、yPB=Σyのように、候補Yから剰余yPBを算出するステップと、
    e)前記テスト素数性回路(3)を介して、前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数の中から選択された1つの小さい素数pで、割り切れるか否かをテストするステップと、
    f)前記算出された剰余yPBが、前記選択された小さい素数で割り切れない間、ステップe)にて遂行されるテストが、前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても、前記算出された剰余yPBが割り切れないことを証明するまで、前記テスト素数性回路を介して、上記のステップe)を反復的に繰り返すステップと、
    g)ステップe)にて遂行されるテストが、前記選択された基数Bについて前記決定された小さい素数のうちのいずれによっても、前記算出された剰余yPBが割り切れないことを証明したとき、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返すステップと、
    h)全ての決定された基数Bについて、ステップe)にて遂行されるテストが、前記決定された基数Bについて前記決定された小さい素数のうちのいずれによっても、決定された基数について算出された前記剰余yPBが割り切れないことを証明したとき、前記テスト素数性回路を介して、前記候補Yに、既知の厳密な確率的素数判定法を実行し、既知の厳密な確率的素数判定法が成功したとき、前記素数候補Yを前記メモリ回路(5)に記憶し、暗号プロセッサ(6)を介して、前記記憶された素数候補Yを前記暗号アプリケーションにおいて使用する、ステップと、
    を含む方法。
  2. − ステップf)において、前記算出された剰余yPBが、前記選択された小さい素数で割り切れるとき、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされるまで、前記テスト素数性回路を介して、上記のステップe)を反復的に繰り返すステップと、
    − ステップg)において、前記算出された剰余yPBが、前記選択された基数Bについて前記決定された小さい素数のうちの1つで割り切れ、前記算出された剰余yPBが割り切れることが、前記選択された基数Bについて前記決定された小さい素数全てに対してテストされたとき、前記決定された2進数である基数のうちの各基数Bについて、ステップc)からf)を反復的に繰り返すステップと、
    を含む、請求項1に記載の方法。
  3. i)前記算出された剰余yPBが、選択された小さい素数で割り切れるとき、または、既知の厳密な確率的素数判定法が失敗したとき、前記既知の厳密な確率的素数判定法が成功するまで、新しい素数候補について、ステップd)からh)を反復的に繰り返すステップであって、新しい素数候補Yおよび選択された基数Bについて、前記剰余yPBが、別の素数候補および前記選択された基数Bについて以前に算出された剰余を、所定の増分でインクリメントすることにより算出される、ステップを含む、請求項1に記載の方法。
  4. 前記記憶された素数候補Yを前記暗号アプリケーションにおいて使用するステップは、前記暗号プロセッサ(6)を介して、前記暗号アプリケーションを実行して、前記記憶された素数候補Yを使用してデータをセキュアにするステップ、および/または、前記暗号プロセッサを介して、前記記憶された素数候補Yを使用して、暗号キーを生成するステップ、のうちの少なくとも1つを含む、請求項1に記載の方法。
  5. 剰余算出の合計算出が、ランダムな順番で遂行される、請求項1に記載の方法。
  6. 前記基数が、異なる決定された小さい素数の数が最大になるように決定される、請求項1に記載の方法。
  7. 前記基数が、処理システムのワードサイズに基づき決定される、請求項1に記載の方法。
  8. 前記算出された剰余yPBが1つの小さい素数pで割り切れるか否かをテストするステップが、バレットのモジュラリダクションを使用して遂行される、請求項1に記載の方法。
  9. 決定された基数Bについて、前記決定された小さい素数pが、B mod p=1であるような、3と541との間の全ての素数を含む、請求項1に記載の方法。
  10. 前記決定された2進数である基数が、16、24、28、32、36、44、48、52、60、64のうちのサイズを持つ、請求項1に記載の方法。
  11. 前記既知の厳密な確率的素数判定法が、ミラーラビンテストまたはフェルマーテストを含む、請求項1に記載の方法。
  12. 少なくとも1つのコンピュータのメモリに直接ロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で起動されたとき、請求項1に記載の方法のステップを遂行するための、ソフトウェアコード命令を含む、コンピュータプログラム製品。
  13. 処理システム(2)と暗号プロセッサ(6)とを備える暗号装置(1)によって実行されたとき、請求項1に記載の方法を遂行する、実行可能なコンピュータコードを記憶する、非一時的コンピュータ可読媒体。
  14. 暗号装置(1)であって、
    − 少なくとも1つのハードウェアプロセッサ(4)と、テスト素数性回路(3)と、前記素数候補Yを記憶するように構成されたメモリ回路(5)とを有する処理システム(2)と、
    − 暗号プロセッサ(6)とを備え、
    前記処理システム(2)および暗号プロセッサ(6)が、請求項1に記載の方法のステップを実行するように構成される、暗号装置(1)。
JP2019545254A 2017-02-21 2018-02-09 暗号アプリケーションのための素数を生成する方法 Active JP7055142B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17305191.3A EP3364592A1 (en) 2017-02-21 2017-02-21 Method for generating a prime number for a cryptographic application
EP17305191.3 2017-02-21
PCT/EP2018/053247 WO2018153684A1 (en) 2017-02-21 2018-02-09 Method for generating a prime number for a cryptographic application

Publications (2)

Publication Number Publication Date
JP2020509407A true JP2020509407A (ja) 2020-03-26
JP7055142B2 JP7055142B2 (ja) 2022-04-15

Family

ID=58800753

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019545254A Active JP7055142B2 (ja) 2017-02-21 2018-02-09 暗号アプリケーションのための素数を生成する方法

Country Status (7)

Country Link
US (1) US11281433B2 (ja)
EP (2) EP3364592A1 (ja)
JP (1) JP7055142B2 (ja)
KR (1) KR102311943B1 (ja)
CN (1) CN110495133B (ja)
CA (1) CA3053213C (ja)
WO (1) WO2018153684A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3562092A1 (en) * 2018-04-26 2019-10-30 Thales Dis Design Services Sas Method for generating on-board a cryptographic key using a physically unclonable function
US11411732B2 (en) * 2020-04-17 2022-08-09 Juniper Networks, Inc. Prime number generation for encryption

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003122251A (ja) * 2001-10-10 2003-04-25 Sony Corp 暗号情報生成方法と暗号情報生成装置、暗号情報生成プログラム及び記録媒体
JP2005128832A (ja) * 2003-10-24 2005-05-19 Sony Corp データ処理装置と剰余演算回路
JP2011123356A (ja) * 2009-12-11 2011-06-23 Oki Semiconductor Co Ltd 素数生成装置、素数生成方法、及び素数生成プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6445797B1 (en) * 1998-12-16 2002-09-03 Secure Choice Llc Method and system for performing secure electronic digital streaming
US7120248B2 (en) * 2001-03-26 2006-10-10 Hewlett-Packard Development Company, L.P. Multiple prime number generation using a parallel prime number search algorithm
FR2879866B1 (fr) * 2004-12-22 2007-07-20 Sagem Procede et dispositif d'execution d'un calcul cryptographique
US20090319804A1 (en) * 2007-07-05 2009-12-24 Broadcom Corporation Scalable and Extensible Architecture for Asymmetrical Cryptographic Acceleration
DE102011117236A1 (de) * 2011-10-28 2013-05-02 Giesecke & Devrient Gmbh Effiziente Primzahlprüfung
US9596080B2 (en) * 2011-12-15 2017-03-14 Inside Secure Method of generating prime numbers proven suitable for chip cards
US9800407B2 (en) * 2013-08-30 2017-10-24 Qualcomm Incorporated Methods and apparatuses for prime number generation and storage
CN105373366B (zh) * 2015-10-12 2018-11-09 武汉瑞纳捷电子技术有限公司 一种生成大素数的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003122251A (ja) * 2001-10-10 2003-04-25 Sony Corp 暗号情報生成方法と暗号情報生成装置、暗号情報生成プログラム及び記録媒体
JP2005128832A (ja) * 2003-10-24 2005-05-19 Sony Corp データ処理装置と剰余演算回路
JP2011123356A (ja) * 2009-12-11 2011-06-23 Oki Semiconductor Co Ltd 素数生成装置、素数生成方法、及び素数生成プログラム

Also Published As

Publication number Publication date
JP7055142B2 (ja) 2022-04-15
CN110495133B (zh) 2023-07-07
US20200057611A1 (en) 2020-02-20
CA3053213A1 (en) 2018-08-30
CN110495133A (zh) 2019-11-22
US11281433B2 (en) 2022-03-22
CA3053213C (en) 2022-05-31
KR102311943B1 (ko) 2021-10-12
KR20190127704A (ko) 2019-11-13
EP3364592A1 (en) 2018-08-22
EP3586471B1 (en) 2021-01-20
WO2018153684A1 (en) 2018-08-30
EP3586471A1 (en) 2020-01-01

Similar Documents

Publication Publication Date Title
CN107040362B (zh) 模乘设备和方法
US9577826B2 (en) Method of generating proven prime numbers suitable for being implemented in a smart card
US9520995B2 (en) Efficient prime-number check
US20150270965A1 (en) Method of using a token in cryptography
US20130218937A1 (en) Arithmetic apparatus, elliptic scalar multiplication method of arithmetic apparatus, elliptic scalar multiplication program, residue operation method of arithmetic apparatus, and residue operation program
US11902432B2 (en) System and method to optimize generation of coprime numbers in cryptographic applications
US20220085999A1 (en) System and method to optimize decryption operations in cryptographic applications
JP7055142B2 (ja) 暗号アプリケーションのための素数を生成する方法
US20220085998A1 (en) System and method to generate prime numbers in cryptographic applications
US9182943B2 (en) Methods and devices for prime number generation
US10536262B2 (en) Electronic generation device
Duta et al. Framework for evaluation and comparison of primality testing algorithms
US9419793B2 (en) Method for generating large prime number in embedded system
KR102024557B1 (ko) 소수 검사 기법의 최적 조합 검색 방법 및 장치
JP2016130939A (ja) 乱数生成装置、乱数生成方法、およびプログラム
KR101423947B1 (ko) 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법
KR102200132B1 (ko) 오일러체를 이용한 소수 검사 방법 및 장치
Ueno et al. Constructing Sliding Windows Leak from Noisy Cache Timing Information of OSS-RSA.
US20220400005A1 (en) Generating prime numbers
JP4861272B2 (ja) 楕円曲線暗号演算装置、方法、プログラム
Seibert Integer Factorization using the Quadratic Sieve
Filmus Factorization Methods: Very Quick Overview
JP2003029632A (ja) 素数生成方法および装置並びにプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210401

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220119

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220119

C11 Written invitation by the commissioner to file amendments

Free format text: JAPANESE INTERMEDIATE CODE: C11

Effective date: 20220201

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220314

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220315

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: 20220329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220405

R150 Certificate of patent or registration of utility model

Ref document number: 7055142

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150