JP2009229615A - データ処理システム及びデータ処理方法 - Google Patents
データ処理システム及びデータ処理方法 Download PDFInfo
- Publication number
- JP2009229615A JP2009229615A JP2008072723A JP2008072723A JP2009229615A JP 2009229615 A JP2009229615 A JP 2009229615A JP 2008072723 A JP2008072723 A JP 2008072723A JP 2008072723 A JP2008072723 A JP 2008072723A JP 2009229615 A JP2009229615 A JP 2009229615A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- data processing
- integer
- prime number
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/3033—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7204—Prime number generation or prime number testing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Abstract
【解決手段】暗号鍵の生成システムは、多数の小さい素数を再構成するための演算ユニット、小さい素数によって整数が割り切れるかを点検するための篩ユニット、整数の表現を変えるための再符号化ユニット、及び素数性判定テストユニットを備える。篩ユニットは最初に演算ユニットによって再構成される小さい素数によって整数が割り切れることを点検し、これによって「不適当な」素数候補を取り除く。その後、残りの素数候補は素数性判定テストユニットを使用してテストされる。このとき、再構成ユニットを使用して素数候補の表現が変換され、変換された表現形態を用いて素数性判定テストユニットが判定する。これにより、大きなメモリ容量を必要とすることなく、素数性判定のための演算処理数を減少することができる。
【選択図】図4
Description
先ず、以下の説明で使用する語の定義と表記法について述べる。AまたはBのような大文字の変数は、例えば1024ビットの整数のように、大きな整数を意味する。xまたはyのような小文字で示される変数は、一般的に32ビットよりも小さなビット長の小さな整数を意味する。
先ず素数生成回路を主眼に説明する。
図1にはICカードのブロックダイヤグラムが示される。ICカード901は、少なくとも以下の部品を備えている。即ち、入出力インタフェース931、鍵生成ユニット912及び署名生ユニット913を含む暗号化ユニット911、そして、少なくとも秘密鍵922、公開鍵923及びデジタル証明書924が記憶されるメモリ921を備える。特に制限されないが、実施の形態1では暗号化ユニット911をハードウェアロジックで構成することを想定している。
図2は、RSA対応のICカード902の典型的な使用例が示される。最初に、RSAの鍵は、ICカード901のステップ1011において発生する。RSAの鍵は秘密鍵922および公開鍵923から成る。そして、それらはメモリ921に保存される。その後、ICカード901はステップ1012でカード発行元ホスト903に、公開鍵923を送る。その後、デジタル証明書924が発行されることによって公開鍵が確認される。デジタル証明書924は、ステップ1013でICカードに送り返されて、メモリ921に保存される。
図3には素数生成ユニット914の具体例が示される。図1の鍵生成ユニット912は素数P,Qを生成するために素数生成ユニット914を有する。P,Qに関してはP*Qが公開法数Nに等しい、という関係を持っている。素数P又はQを生成するために素数生成ユニット914は最初のランダムな候補Pinitを採り、候補Pinitよりも大きな第1の素数Pを見つける。素数生成ユニット914は3つのサブユニット、即ち、フェルマーテストユニット1111、ビット配列ユニット1131および小さい素数生成ユニット1161を有し、それらは素数生成制御ユニット1102によって起動され制御される。素数生成制御ユニット1102の詳細な機能については図4を参照しながら後述する。
図4には素数生成制御ユニット1102の詳細が例示される。初期候補PinitはレジスタP1123にコピーされ、最初にビット配列B[0],…,B[b-1]は全て1にセットされる。ステップ1202、1203および1204において、ビット配列は、テーブルT 1163に格納された第1のt素数によって初期化される。より正確には、ステップ1204で、1つの小さい素数zは、テーブルTから読み出されて、小さい素数レジスタ1171へコピーされる。それから、小さい素数zがビットアレイフィルユニット1132によって使用されることにより、ビット配列1141が更新され、適当な位置に0が書き込まれ、不適当な候補が除去される。このビットアレイフィルユニットの詳細は図7に示される。
フェルマーテストについて説明する。フェルマーテストは基数Bおよび素数候補Pを入力し、BP-1 mod Pを演算する。仮に演算結果が1でなければ、素数候補Pは合成整数ということになる。演算結果が1であれば、Pはほぼ間違いなく素数ということになる。BP-1 mod Pはデータ処理上高コストの処理であり、ビット配列で多くの不適当な候補が除去されるときでも、フェルマーテストの対象にされるべき多くの正しい候補がまだ残っている。その意味で、フェルマーテストにおける処理速度の改善は非常に魅力的である。
この例では整数P=1971577が素数定判テストに供されるものとする。ここで、Pの値は16進法で表される。二進数において、Pは21ビットでP=(111100001010101111001)2とする。jの第1の値は、Pの最上位側の10ビット、すなわち、j=(1111000010)2=962となる。Aは2962即ち2進標記で末尾に962個のゼロを伴った(1000…000)2に初期化される。カウンタiは10にされる。この後、10回連続的にA2 mod Pの演算が行われ、これによってAは値824444を含むことになる。
ミラーラビンテストとフェルマーテストの両方が素数性の確率的な判定テストである。仮のそれらのテスト結果が失敗あるなら、テストされた整数は絶対的に合成数であるといえる。しかしながら、テスト結果が成功ある場合は、テストされた整数は多分素数であると推定されるだけであり、絶対的に素数であるとは言えない。両方のテストにとって、その結果を失敗とする多くの整数、即ち合成数が存在するが、それには時々そのテストで成功の結果を出す合成数を含んでいる。幸いにも、そのような合成数は多くは無い。特にミラー-ラビンテストの場合には非常に少ない。特に、基数2を用いるミラーラビンテストでそのような誤りを生ずる16ビット整数zは2047, 3277, 4033, 4681, 8321, 15841, 29341, 42799, 49141, 52633である。結果として、ミラーラビンテストが上記の整数の一つでもない16ビット整数zに対して「成功」のテスト結果を返すならば、そのzは絶対的な確実性を持って素数であるといえる。
小さい素数テーブルT 1163には、17個の第1小さい素数T[0]=3、T[1]=5、T[2]=7、T[3]=11、T[4]=13、T[5]=17、T[6]=23、T[7]=29、T[8]=31、T[9]=37、T[10]=41、T[11]=43、T[12]=47、T[13]=53、T[14]=59、T[15]=61、T[16]=67が格納されていると仮定する。小さい素数かもしれいな整数はz=69=(0000000001000101)2である。zは基数2を用いるミラーラビンテストを欺くことができる16ビット整数の一つでは無いから、テストは、z-1=(0000000001000100)2における末尾の0の数から1を引いた数であるj、即ちj=1を伴った計算から始めることができる。次に、アキュムレータxは1に初期化され、カウンタiは15に初期化される。i=6までは、z-1の走査されたビットが全てゼロであり、アキュムレータの値は修正されない。繰り返しi=6において、xはステップ1415の左シフトの後に2になり、その後、4回二乗演算と1回の左シフトが行われる。その結果として、ステップ1422では、xは値41を採る。xが1または68と異なるので、もう1回二乗演算が行われ、xは25になり、まだ68とは異なる。この時点で、テストは「失敗」を返す。これは、z=69=3*23が合成数だからであると予想される。
ビット配列は、小さい素数によって割り切れた候補P=Pinit+2iである合成数を除去するためのエラトステネス(Eratosthenes)のふるいによって示唆される周知の方法である。ビット配列法の大まかな考えは、小さい素数zのためにPinit mod zを計算して、P=Pinit+2i mod z = 0(Pはzによって割り切れる)のような全ての位置iのためのビット配列においてB[i]に0を書き込むことである。図7にはビット配列の適当な位置でゼロを書く方法が説明されている。
この例では、ビット配列1141はサイズb=64を有し、そして、小さい素数テーブル1163は16の小さい素数、すなわち、T[0]=3、T[1]=5、T[2]=7、T[3]=11、T[4]=13、T[5]=17、T[6]=23、T[7]=29、T[8]=31、T[9]=37、T[10]=41、T[11]=43、T[12]=47、T[13]=53、T[14]=59、T[15]=61)を格納する。最初の候補1103の入力は512ビットの奇数であると仮定する。例えば、
Pinit=7256779693106507655490693859171076267003739588425074050256021409526725926274029082141310206427691245639055995711774350480838509929519895128627108485116697、
である。
B=(1111111111111111111111111111111111111111111111111111111111111111)2
となる。Bは64ビットから成る。最初に、素数生成制御ユニットは、小さい素数テーブルT[0],…,T[15]を使用しているビット配列の適当な位置にゼロを書き込む。例えば、T[0]=3およびPinit mod 3 = 1である。1は奇数であり、それ故に、そのビットアレイにおいて(3-1)/2=1の位置で0を書き、そして、位置1+3=4および4+3=7の位置でそうする。T[0]=3によって篩にかけた後に、ビット配列は、
B=(1011011011011011011011011011011011011011011011011011011011011011)2
になる。テーブルTの全ての小さい素数のためにその手順を繰り返して、ビット配列は、
B=(1001011000000001010011000010000001010010000001011001000010000010)2
になる。これによって、フェルマーテストで18ビットだけはまだ1にセットされることが確かめられる整数Pinit+2iに対応する、より小さいインデックスiの値があることが解る。B[0]=1だから、Pinitはフェルマーテストで確かめられなければならない。
B=(1001011000000001010011000010000001010010000000011001000010000010)2
になる。
B=(0001011000000000000000000000000001000010000000011000000010000000)2
になる。その果として、最初のフェルマーテストの後、ビットアレイには8個が残されるだけとなる。
P=7256779693106507655490693859171076267003739588425074050256021409526725926274029082141310206427691245639055995711774350480838509929519895128627108485116703
である。値Pinit+6はレジスタP 1123に格納される、そして、フェルマーテストは2^(Pinit+5) mod Pinit+6の計算を始める。累乗計算の間、新規な小さい素数がビット配列における多くのゼロ以外のエントリを除去するために生成されることができる。しかし、この例では、512の追加的な小さい素数についてさえ、どんなゼロも配列には書かれない。幸いにも、第2のフェルマーテスト2^(Pinit+5) mod Pinit+6の結果は1であり、実際に、Pinit+6は素数である。この点で、素数生成ユニット914は、Pinit+6の値を返す。
本発明は、上記の実施の形態1で説明した内容に限定されない。例えば、上記システムは、携帯電話、PDA、そして公開鍵暗号方式を利用して限られた計算機リソースやメモリリソースを用いる如何なる電子デバイスにも使用されることが可能である。累乗のタイプは異なることがありえる。例えば、累乗の剰余乗算ユニットの代わりに、モンゴメリー乗算装置が利用されることも可能である。小さい素数の再構成の方法は、上記の例で説明した内容に限定されない。例えば、2とは異なる基数を伴ったミラーラビンテストを利用したり、フェルマーテストやその他のコンビネーションテストのような異なったテストを利用したりすることも可能である。同様に、ミラーラビンやスロベイストラーゼン(Solovay-Strassen)テストのように、素数候補に対する異なった素数性判定テストも採用可能である。、更に、再構成の種類はウインドウ方法に限定されず、NAF(Non Adjacement Form)又はFANの再構成法、或いは、その他の適当な再構成法を用いることも可能である。
オンボードの暗号生成に着目した説明を行う。
図8には携帯式電子装置(携帯機器)101が示され、例えばICカード、或いはセキュリティ機能が強化されたデバイスである。携帯機器101は、その入出力インタフェース131を介してネットワーク141に接続され、データ142を送り、データ143を受信することができる。このネットワーク141を通して、携帯機器10はATM 151、コンピュータ153又は他の携帯機器154と通信することができる。ネットワーク141の上の通信路でのセキュリティがなければ、メッセージは悪意のあるユーザによって横取りされることがある。したがって、携帯機器にはセキュリティ機構が搭載される必要がある。これらのセキュリティ機構は、メッセージ暗号化およびデジタル署名を含み、そして、実施の形態2では、事実上の標準であるRSAと称される公開鍵暗号法が適用される。
メッセージをデジタル的に署名するかまたは解読するために携帯機器101上のRSA暗号システムを使用する前に、RSA 鍵ペア(keypair)を発生しなければならない。上記したように、携帯機器上で鍵ペアを生成することは有意義である。図9にはその手順が詳細に記載されている。鍵ペア生成の入力201は、n(公開法数Nのビット長)、p(秘密素数Pのビット長)、q(秘密素数Qのビット長)、E(公開べき定数)、b(1ビットアレイのサイズ)、予め定められたテーブルT[0],…,T[t-1])、及びmri(ミラーラビン繰り返しの数)を含む。
図9において、ステップ213および223では、素数P及びQ、秘密鍵素子DP =E-1mod P-1、DQ =E-1mod Q-1が発生される。この素数生成手順に対する入力301は、最初の偶数乱数Pinit(またはQinit)、公開ベキ指数E、ビット配列B[0],…,B[b-1])、及びmri(ミラーラビンテストのための繰り返しの数)である。
tのための最適値があり、それは、素数生成手順の速度を最大にするように篩にかけるために使われる小さい素数の数である。即ち、一方において、より小さな素数で、ビットアレイからより多くの要素が篩にかけられることができ、それはより洗練された素数判定テストを呼び出す回数を減らし、他方において、より小さな素数zを使用することはビットアレイにおけるP mod zと書き込み操作の減少に帰結する。しかしながら、小さな素数の最適数は、典型的に大きく、1,000以上である。
図11において、小さい素数zと関連するモンゴメリー定数r=2p mod zの計算は、ステップ402および414で実行される。図12はその手順を詳細に例示する。この手順への入力は、素数候補Pのビット長p、および小さい素数zである。小さい素数zは小さいので、そのビット長は通常16ビット未満であり、小さい素数zに関連した全ての演算はCPU 122によって容易に処理することができる。ここではモンゴメリー乗算コプロセッサ123の使用は必要ではない。結果として、モンゴメリー定数の計算は、コプロセッサ動作に並列させることが可能になる。
楕円曲線暗号の場合、累乗演算の速度を改善することが良く知られている。例えばNon-Adjacent Form(NAF))のようなべき乗数のための符号表現を使用する。NAFは、単純なバイナリの累乗より高速で、再計算を必要としない。しかしながら、楕円曲線累乗とRSA累乗との間には大きな違いがある。すなわち、前者の場合、位置の逆転を殆ど演算コスト無く得ることができるが、後者の場合、若干の整数の反転演算に大きな演算コストを要する。符号表現における負数に反転演算が必要になるから、この方法は通常、RSAのためには不適当と考えられる。
[ケース1 ]:(Pi+1Pi)=(11)2は(Si)=(0)に再構成され、iは i-1にセットされる。
[ケース2 ]:(Pi+1PiPi-1)=(011)2は(SiSi-1)=(1)に再構成され、iは i-1にセットされる。
[ケース3 ]:(Pi+1PiPi-1)=(010)2は(Si)=(01)に再構成され、iは i-2にセットされる。
[ケース4 ]:(Pi+1Pi)=(00)2は(Si)=(0)に再構成され、iは i-1にセットされる。
[ケース5 ]:(Pi+1PiPi-1)=(100)2は(SiSi-1)=(-1)に再構成され、iは i-1にセットされる。
[ケース6 ]:(Pi+1PiPi-1)=(101)2は(Si)=(0-1)に再構成され、iは i-2にセットされる。
ケース1および4の場合、1回の二乗演算(square)がコプロセッサ123で行われる。ケース2の場合、1回の二乗演算がコプロセッサ123で行われ、CPUで1回の左シフト演算が行われる。ケース5の場合、1回の二乗演算がコプロセッサ123で行われ、CPUで1回の右シフト演算が行われる。ケース3の場合、2回の二乗演算がコプロセッサ123で行われ、CPUで1回の左シフトが行われる。ケース6の場合、2回の二乗演算がコプロセッサ123で行われ、CPUで1回の右シフトが行われる。
[ ケース1 ] Pi+1=0なら、検出されたケース1に対応するビット処理が行われる。ケース1は1つのモントゴメリー乗算処理だけを要求し、他の処理は必要とされず、次のビットの値がチェックされる。Pi+1=0である場合、ビットPi-1はケース2および3を区別するために点検されなければならない。したがって、ステップ622で、ビットPi-1の値が点検される。
[ケース2 ] Pi-1=0の場合、検出されたケース2に対応されるビット処理が行われる。それゆえに、ステップ623でコプロセッサレジスタA 115のデータがCPU12により1ビットが右にシフトされる。シフト操作の後、レジスタA 115のデータはpビットよりも多くなる。すなわち、この場合、ステップ625で必要に応じて何回もPはAから減じられなければならない。
[ケース3 ] Pi-1=1の場合、検出されたケース3に対応されるビット処理が行われる。ステップ641で更にモンゴメリ乗算が行われ、カウンタiがもう1回デクリメントとされる。その後、コプロセッサレジスタA 115のデータがステップ623で左に1ビットシフトされ、ステップ625においてAがpビットよりも多いならば、PがAから減算される。しかしながら、i=1である場合、代わりにケース2が実行される。Pi=0である場合、ビットPi+1の値はステップ631において点検される。それによる点検内容は以下の通りである。
[ケース4 ] Pi+1=0の場合、更なる動作は必要とされない。Pi+1=1である場合、ケース5および6を区別するためにPi-1が点検されなければならない。
[ケース5 ] Pi-1=0の場合、Aは1ビット右へシフトされる。Aが偶数の場合、その最下位ビットは0であり、Aはステップ635でCPU122によって直接シフトされる。しかし、Aが奇数の場合、Pはステップ634でCPU 122によってAに加算される。AとPの両方とも奇数だから、A+Pは偶数であり、ステップ635で右へシフトされる。
[ケース6 ] Pi-1=1の場合、モントゴメリー乗算が行われ、カウンタiはステップ642でデクリメントされ、その後、ステップ633に続く右シフトが行われる。
この例では、整数P=109が素数性の判定対象であると仮定する。ベキ乗の剰余乗算2108 mod 109は、図13によるフェルマーテストを使用して計算される。二進数で、108=(1101100)2、であり、、二進法に基づく左シフトを備えたフェルマーテストは3つの左シフトを行い、これはその最上位ビットの1に加えて1の桁が更に3桁あるからである。他方、108のFAN表現は108=(100-10-100)であり、2つの右シフトだけがある。
[ i=5 ]の場合、レジスタAはMontMult(A,A,P)=MontMult(38,38,109)=76によって更新される。次のP5=1、P6=1、そして、対応する再符号は0であり、したがって、更なる操作は必要とされない。
[ i=4 ]の場合、レジスタAは、MontMult(76,76,109)=86によって更新される。次のP4=0、P5=1、P3=1、そして、対応する再符号が0-1である。レジスタAはMontMult(86,86,109)=68で更新され、カウンタiはデクリメントされる。68は偶数であるから、直接右シフトA>>1が実行され、レジスタAは34に更新される。
[ i=2 ]の場合、Aは、MontMult(34,34,109)=101に更新される。次のP2=1、P3=1、そして、対応する再符号は0である。
[ i=1 ]の場合、Aは、MontMult(101,101,109)=55によって更新される。次のP1=0、P2=1、P0=0、そして、対応する再符号は-1にある。レジスタAは偶数であるから、109がAに加えられ、右シフトが計算され、その結果、A=82を得る。
ミラーラビンテストにおいてP-1は2j+1*Dと書かれる。ここで、j+1はP-1のバイナリの表現における末尾の0の数である。第1に、ある基数Bのために、累乗B←XD mod Pが計算される。XD mod P=1である場合、Pは多分素数であるだろう。他方、B=XD mod Pが1でない場合、Bは-1と比較される。Bが-1でない場合、Bはj回二乗演算され、各々の二乗演算の後、再び演算結果が-1と比較される。それら二乗演算を1つ行った後、B=-1のとき、フェルマーテストは停止され、Pはたぶん素数であるとい結果が得られる。そうでなければPは合成数である。
本発明は、上記の実施の形態2で説明した内容に限定されない。例えば、図8の携帯機器は携帯電話、PDA、および公開鍵暗号を使用し且つコンピュータリソースとメモリリソースが限られたその他種々の電子デバイスであってよい。特に、携帯機器はモンゴメリー乗算コプロセッサを備えている必要はない。種類の異なるコプロセッサであってもよい。例えば古典的な剰余乗算コプロセッサであってもよいし、コプロセッサを用いずにソフトウェアによりCPUが実現する剰余乗算処理であてもよい。
931 入出力インタフェース
912 鍵生成ユニット
911 暗号化ユニット
922 秘密鍵
924 デジタル証明書
921 メモリ
941 ネットワーク
904 ATM
905 カードリーダ
902 ホストシステム(銀行ホスト)
903 ホストシステム(カード発行元ホスト)
923 公開鍵
914 素数生成ユニット
1111 フェルマーテストユニット
1131 ビット配列ユニット
1161 小さい素数生成ユニット
1102 素数生成制御ユニット
1123 素数候補P
1121 レジスタA
1122 レジスタB
1113 剰余乗算ユニット
1102 フェルマーテスト制御ユニット
1113 ビット配列ユニット
1141 ビットアレイ
1132 ビットアレイフィルユニット
1163 小さい素数テーブル
1162 ミラーラビンユニット
1171 メモリレジスタ
101 携帯式電子装置(携帯機器)
131 入出力インタフェース
141 ネットワーク
151 ATM
153 コンピュータ
154 携帯機器
111 メモリ
132,133入出力インタフェース
121 データ処理部
122 CPU
123 モンゴメリー乗算コプロセッサ
124 RNG
Claims (30)
- 整数の素数を判定するデータ処理システムであって、
前記整数の新たな表現を生成する再符号化ユニット、
複数の剰余演算操作を行うための剰余演算操作ユニット、
ループ制御ユニット、及び
入力整数の合成数又は素数を判定する判定ユニットを有し、
前記再符号化ユニットは、入力整数の複数のビットをスキャンし、前記スキャンされたビットにしたがって前記剰余演算操作ユニットによって演算される剰余演算操作を選択する、データ処理システム。 - 前記剰余演算操作ユニットは剰余乗算ユニットを含む、請求1記載のデータ処理システム。
- 前記剰余演算操作ユニットはモンゴメリー乗算ユニットである、請求項2記載のデータ処理システム。
- 前記剰余演算操作ユニットは古典的な乗算ユニットである、請求項2記載のデータ処理システム。
- 前記再符号化ユニットは、2w(Wは正の整数)の表現形態に整数を再符号化する、請求項2記載のデータ処理システム。
- 前記剰余演算操作ユニットは更に、左シフト回路、減算回路、右シフト回路、及び加算回路を有する、請求項2記載のデータ処理処システム。
- 前記再符号化ユニットは、NAFの表現形態に整数を再符号化する、請求項6記載のデータ処理システム。
- 前記再符号化ユニットは、FANの表現形態に整数を再符号化する、請求項6記載のデータ処理システム。
- 整数の素数を判定するためのデータ処理方法であって、コンピュータ装置を用いて実行される第1乃至第4処理を含み、
第1処理は、前記整数の複数ビットをスキャンする処理であり、
前記第2処理は、前記スキャンされたビットに従って少なくとも一つの剰余演算処理を選択する処理であり、
前記第3処理は選択された剰余演算処理を実行する処理であり、
前記第4処理は前記剰余演算処理の結果に基づいて前記整数の素数を決める処理である、データ処理方法。 - 前記スキャンされるビット数は予め決定され、
前記第3処理は、前記整数の全ビットに対して、剰余二乗演算と剰余乗算とを繰り返し行う処理を含む、請求項9記載のデータ処理方法。 - 前記剰余乗算の一つの乗算は2の累乗である、請求項10記載のデータ処理方法。
- 前記スキャンされるビットは符号付きで表現され、
前記第3処理は、前記整数の前記符号付き表現の全ての桁に対して、前記整数の符号付き表現の桁をスキャンし、剰余二乗演算を行ない、1の桁の場合には剰余左シフト、−1の桁の場合には剰余右シフトする処理を繰り返し行なう処理を含む、請求項9記載のデータ処理方法。 - 前記整数の少なくとも3ビットイがスキャンされ、
前記整数の全ビットに対して、前記第1処理、前記第2処理及び前記第3処理が繰り返される、請求項9記載のデータ処理方法。 - 前記第3処理は、
前記スキャンされたビットの最初の2ビットが01又は10のとき剰余二乗演算を1回行い、
前記スキャンされたビットが011のとき剰余二乗演算と剰余左シフトをそれぞれ1回行い、
前記スキャンされたビットが010のとき剰余二乗演算を2回行い且つ剰余左シフトを1回行い、
前記スキャンされたビットが100のとき剰余二乗演算と剰余右シフトをそれぞれ1回行い、
前記スキャンされたビットが101のとき剰余二乗演算を2回行い且つ剰余右シフトを1回行う、処理を含む、請求項13記載のデータ処理方法。 - 複数の小さい素数による整数の割算の剰余を計算するデータ処理システムであって、
前記小さい素数を生成する計算ユニットと、
前記整数と前記生成された小さい素数とから前記剰余を計算する剰余演算ユニットとを含み、
前記小さい素数は前記計算ユニットによって再構成される、データ処理システム。 - 前記剰余演算ユニットは古典的な剰余乗算ユニットである、請求項15記載のデータ処理システム。
- 前記剰余演算ユニットはモンゴメリー乗算ユニットである、請求項15記載のデータ処理システム。
- 前記小さい素数モンゴメリー定数を演算するためのモンゴメリ定数演算ユニットを更に含む請求項17記載のデータ処理システム。
- 前記計算ユニットは、連続する素数の間の差のテーブルを格納するためのメモリユニットと、
小さい素数を格納するためのメモリユニットと、
追加ユニットとを有し、
前記追加ユニットは前記小さい素数と前記差のテーブルの要素とを加算する演算を行う、請求項15記載のデータ処理システム。 - 前記計算ユニットは、
小整数を格納するメモリユニットと、
素数性のテストユニットと、
更新ユニットとを有し、
前記小整数は前記素数性テストユニットイによって素数性がテストされ前記、小整数は当該小整数が素数でなない場合に前記更新ユニットによって更新される、請求項15記載のデータ処理システム。 - 前記素数性テストユニットはミラーラビンテストユニットを含む、請求項20記載のデータ処理システム。
- 前記素数性テストユニットはフェルマーテストニットを含む、請求項20記載のデータ処理システム。
- 複数の小さい素数による整数の割算の剰余を計算するデータ処理方法であって、
一つの小さい素数を再構成する処理と、
前記再構成された小さい素数によって前記整数の割算の剰余を計算する処理とを含む、データ処理方法。 - モンゴメリー定数を算出するステップをさらに含む、請求項23記載のデータ処理方法。
- 少なくとも一つの小さい素数を再構成するステップと剰余を算出するステップとが並列的に実行される。請求項23記載のデータ処理方法。
- 少なくとも一つの小さい素数を再構成するステップ、剰余を算出するステップ及びモンゴメリ定数を算出するステップが並列的に実行される請求項24記載のデータ処理方法。
- 少なくとも一つの小さい素数を再構成するステップは、
連続する小さい素数間の差のテーブルを格納する処理と、
小さい素数を格納する処理と、
前記小さい素数の追加と前記差のテーブルの要素とを算出する処理と、を含む請求項23記載のデータ処理方法。 - 少なくとも一つの小さい素数を再構成するステップは、
小整数を格納する処理と、
前記小整数の素数性を判定する処理と、
前記小整数が素数でない場合に当該小整数を更新する処理と、を含む請求項23記載のデータ処理方法。 - 前記小整数の素数性を判定する処理はミラーラビンテストを行なう処理を含む請求項28記載のデータ処理方法。
- 前記小整数の素数性を判定する処理はフェルマーテストを行なう処理を含む請求項28記載のデータ処理方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008072723A JP5328186B2 (ja) | 2008-03-21 | 2008-03-21 | データ処理システム及びデータ処理方法 |
US12/366,679 US8374345B2 (en) | 2008-03-21 | 2009-02-06 | Data processing system and data processing method |
EP09250320A EP2104031A3 (en) | 2008-03-21 | 2009-02-09 | Prime number generation device and method |
CN2011104102369A CN102393813A (zh) | 2008-03-21 | 2009-02-10 | 数据处理系统以及数据处理方法 |
CN2009100058675A CN101540672B (zh) | 2008-03-21 | 2009-02-10 | 数据处理系统以及数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008072723A JP5328186B2 (ja) | 2008-03-21 | 2008-03-21 | データ処理システム及びデータ処理方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2009229615A true JP2009229615A (ja) | 2009-10-08 |
JP2009229615A5 JP2009229615A5 (ja) | 2011-04-21 |
JP5328186B2 JP5328186B2 (ja) | 2013-10-30 |
Family
ID=40638135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008072723A Expired - Fee Related JP5328186B2 (ja) | 2008-03-21 | 2008-03-21 | データ処理システム及びデータ処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8374345B2 (ja) |
EP (1) | EP2104031A3 (ja) |
JP (1) | JP5328186B2 (ja) |
CN (2) | CN101540672B (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009258460A (ja) * | 2008-04-18 | 2009-11-05 | Renesas Technology Corp | データ処理装置 |
JP2011095284A (ja) * | 2009-10-27 | 2011-05-12 | Nippon Telegr & Teleph Corp <Ntt> | パラメータ設定装置、離散対数計算装置、事前計算装置、パラメータ設定方法、離散対数計算方法、事前計算方法、プログラム |
JP2013113978A (ja) * | 2011-11-28 | 2013-06-10 | Renesas Electronics Corp | 半導体装置及びicカード |
Families Citing this family (26)
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 |
GB2480259A (en) * | 2010-05-10 | 2011-11-16 | Etsem Ltd | Data sequence encryption using primes generated from random natural numbers |
CN102546162A (zh) * | 2010-12-29 | 2012-07-04 | 北京数字太和科技有限责任公司 | 一种数据安全处理方法 |
JP5601382B2 (ja) * | 2011-02-09 | 2014-10-08 | 富士通株式会社 | 組み込み機器における情報処理装置、情報処理方法及び情報処理プログラム |
CN102325024A (zh) * | 2011-09-26 | 2012-01-18 | 飞天诚信科技股份有限公司 | 一种生成大素数的方法和装置 |
DE102011117219A1 (de) * | 2011-10-28 | 2013-05-02 | Giesecke & Devrient Gmbh | Bestimmen eines Divisionsrests und Ermitteln von Primzahlkandidaten für eine kryptographische Anwendung |
DE102011117236A1 (de) * | 2011-10-28 | 2013-05-02 | Giesecke & Devrient Gmbh | Effiziente Primzahlprüfung |
DE102011117237A1 (de) * | 2011-10-28 | 2013-05-02 | Giesecke & Devrient Gmbh | Effiziente modulare Inversion mit Primzahltest |
EP2791783B1 (fr) * | 2011-12-15 | 2019-04-17 | Inside Secure | Procédé de génération de nombres premiers prouvés adapté aux cartes a puce |
US9083703B2 (en) * | 2012-03-29 | 2015-07-14 | Lockheed Martin Corporation | Mobile enterprise smartcard authentication |
WO2014051459A1 (en) | 2012-09-28 | 2014-04-03 | Intel Corporation | Loop vectorization methods and apparatus |
US10270748B2 (en) | 2013-03-22 | 2019-04-23 | Nok Nok Labs, Inc. | Advanced authentication techniques and applications |
US9396320B2 (en) | 2013-03-22 | 2016-07-19 | Nok Nok Labs, Inc. | System and method for non-intrusive, privacy-preserving authentication |
US9887983B2 (en) | 2013-10-29 | 2018-02-06 | Nok Nok Labs, Inc. | Apparatus and method for implementing composite authenticators |
CN103227987B (zh) * | 2013-04-08 | 2016-05-04 | 哈尔滨工程大学 | 一种异构传感网认证组密钥管理方法 |
EP3082033B1 (en) * | 2015-04-17 | 2017-08-30 | Nxp B.V. | Modular exponentiation using look-up tables |
CN104767622B (zh) * | 2015-04-20 | 2018-08-14 | 努比亚技术有限公司 | 加密方法及装置 |
US10769635B2 (en) | 2016-08-05 | 2020-09-08 | Nok Nok Labs, Inc. | Authentication techniques including speech and/or lip movement analysis |
US10637853B2 (en) | 2016-08-05 | 2020-04-28 | Nok Nok Labs, Inc. | Authentication techniques including speech and/or lip movement analysis |
CN108242994B (zh) * | 2016-12-26 | 2021-08-13 | 阿里巴巴集团控股有限公司 | 密钥的处理方法和装置 |
US10248553B2 (en) * | 2017-07-14 | 2019-04-02 | International Business Machines Corporation | Test methodology for detection of unwanted cryptographic key destruction |
US11868995B2 (en) | 2017-11-27 | 2024-01-09 | Nok Nok Labs, Inc. | Extending a secure key storage for transaction confirmation and cryptocurrency |
US11831409B2 (en) | 2018-01-12 | 2023-11-28 | Nok Nok Labs, Inc. | System and method for binding verifiable claims |
GB2574613B (en) * | 2018-06-12 | 2020-07-22 | Advanced Risc Mach Ltd | Device, system, and method of generating and handling cryptographic parameters |
US11792024B2 (en) | 2019-03-29 | 2023-10-17 | Nok Nok Labs, Inc. | System and method for efficient challenge-response authentication |
CN113900476A (zh) * | 2021-10-11 | 2022-01-07 | 吴鸿邦 | 一种高效分解素数与合成破译rsa密码的新型算法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240128A (ja) * | 1996-12-26 | 1998-09-11 | Toshiba Corp | 暗号装置、暗号鍵生成方法及び暗号鍵管理方法、並びに素数生成装置及び素数生成方法 |
JP2003122251A (ja) * | 2001-10-10 | 2003-04-25 | Sony Corp | 暗号情報生成方法と暗号情報生成装置、暗号情報生成プログラム及び記録媒体 |
US20040028223A1 (en) * | 2002-08-09 | 2004-02-12 | Marc Joye | Generation of a random number that is non-divisible by a set of prime numbers |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW419925B (en) * | 1998-01-27 | 2001-01-21 | Mitsubishi Electric Corp | Method and apparatus for arithmetic operation and recording medium thereof |
US7080254B1 (en) * | 1999-10-01 | 2006-07-18 | France Telecom | Method, system, device for proving authenticity of an entity or integrity of a message |
FR2820905B1 (fr) * | 2001-02-09 | 2005-02-18 | Gemplus Card Int | Dispositif et procede de traitement de valeurs numeriques, notamment sous forme non-adjacente |
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 |
US6718536B2 (en) * | 2002-06-21 | 2004-04-06 | Atmel Corporation | Computer-implemented method for fast generation and testing of probable prime numbers for cryptographic applications |
US7346637B2 (en) * | 2003-07-31 | 2008-03-18 | Indian Institute Of Technology | Polynomial time deterministic method for testing primality of numbers |
DE10357749B4 (de) | 2003-12-10 | 2007-12-20 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in Bezug auf eine Mehrzahl von Primzahlen |
CN101099328B (zh) * | 2004-11-11 | 2011-05-18 | 塞尔蒂卡姆公司 | 定制的静态Diffie-Helman群 |
EP1901575A2 (en) | 2006-09-15 | 2008-03-19 | Innovative Sonic Limited | Method and apparatus for setting serving grant in a wireless communications system |
US8005210B2 (en) * | 2007-06-30 | 2011-08-23 | Intel Corporation | Modulus scaling for elliptic-curve cryptography |
US7986779B2 (en) * | 2007-06-30 | 2011-07-26 | Intel Corporation | Efficient elliptic-curve cryptography based on primality of the order of the ECC-group |
-
2008
- 2008-03-21 JP JP2008072723A patent/JP5328186B2/ja not_active Expired - Fee Related
-
2009
- 2009-02-06 US US12/366,679 patent/US8374345B2/en not_active Expired - Fee Related
- 2009-02-09 EP EP09250320A patent/EP2104031A3/en not_active Withdrawn
- 2009-02-10 CN CN2009100058675A patent/CN101540672B/zh not_active Expired - Fee Related
- 2009-02-10 CN CN2011104102369A patent/CN102393813A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240128A (ja) * | 1996-12-26 | 1998-09-11 | Toshiba Corp | 暗号装置、暗号鍵生成方法及び暗号鍵管理方法、並びに素数生成装置及び素数生成方法 |
JP2003122251A (ja) * | 2001-10-10 | 2003-04-25 | Sony Corp | 暗号情報生成方法と暗号情報生成装置、暗号情報生成プログラム及び記録媒体 |
US20040028223A1 (en) * | 2002-08-09 | 2004-02-12 | Marc Joye | Generation of a random number that is non-divisible by a set of prime numbers |
Non-Patent Citations (7)
Title |
---|
CSNG200401880004; 内山成憲: '"素数判定アルゴリズム"' 電子情報通信学会誌 第86巻,第9号, 20030901, p.703-708, 社団法人電子情報通信学会 * |
CSNH200400193001; 石井晋司,大山勝一,田中清人: '"2,048ビット公開鍵暗号プロセッサ"' NTT R&D 第47巻,第3号, 19980310, p.261(17)-268(24), 社団法人電気通信協会 * |
CSNJ200710013105; 武田雄人,清水將吾,大場充: '"ミラー・レービン素数判定アルゴリズムの高速化"' FIT2006 第5回情報科学技術フォーラム 一般講演論文集 第4分冊, 20060821, p.259-260, 社団法人電子情報通信学会、社団法人情報処理学会 * |
JPN6013023197; 石井晋司,大山勝一,田中清人: '"2,048ビット公開鍵暗号プロセッサ"' NTT R&D 第47巻,第3号, 19980310, p.261(17)-268(24), 社団法人電気通信協会 * |
JPN6013023199; 武田雄人,清水將吾,大場充: '"ミラー・レービン素数判定アルゴリズムの高速化"' FIT2006 第5回情報科学技術フォーラム 一般講演論文集 第4分冊, 20060821, p.259-260, 社団法人電子情報通信学会、社団法人情報処理学会 * |
JPN6013023203; 内山成憲: '"素数判定アルゴリズム"' 電子情報通信学会誌 第86巻,第9号, 20030901, p.703-708, 社団法人電子情報通信学会 * |
JPN7013001801; 吉野雅之,桶屋勝幸: '"lビットのモンゴメリ乗算器を用いた2lビットRSA暗号の公開鍵演算の高速化"' 2008年暗号と情報セキュリティシンポジウム 2C3 実装(2), 20080122, 2C3-4, 社団法人電子情報通信学会 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009258460A (ja) * | 2008-04-18 | 2009-11-05 | Renesas Technology Corp | データ処理装置 |
JP2011095284A (ja) * | 2009-10-27 | 2011-05-12 | Nippon Telegr & Teleph Corp <Ntt> | パラメータ設定装置、離散対数計算装置、事前計算装置、パラメータ設定方法、離散対数計算方法、事前計算方法、プログラム |
JP2013113978A (ja) * | 2011-11-28 | 2013-06-10 | Renesas Electronics Corp | 半導体装置及びicカード |
Also Published As
Publication number | Publication date |
---|---|
US20090245507A1 (en) | 2009-10-01 |
CN102393813A (zh) | 2012-03-28 |
CN101540672B (zh) | 2013-06-26 |
US8374345B2 (en) | 2013-02-12 |
JP5328186B2 (ja) | 2013-10-30 |
EP2104031A2 (en) | 2009-09-23 |
EP2104031A3 (en) | 2012-02-08 |
CN101540672A (zh) | 2009-09-23 |
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 | |
US10361854B2 (en) | Modular multiplication device and method | |
US7903811B2 (en) | Cryptographic system and method for encrypting input data | |
US6038581A (en) | Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed | |
US20020186837A1 (en) | Multiple prime number generation using a parallel prime number search algorithm | |
US9520995B2 (en) | Efficient prime-number check | |
JP4137385B2 (ja) | 公開鍵および秘密鍵による暗号化方法 | |
US9680647B2 (en) | Method of using a token in cryptography | |
JP2010277085A (ja) | Rsaアルゴリズムにおける素数生成の保護 | |
US20030152218A1 (en) | Cryptography method on elliptic curves | |
US8548161B2 (en) | Crytographically transforming data text | |
US9042543B2 (en) | Method for arbitrary-precision division or modular reduction | |
EP1443699A1 (en) | Information processing means and IC card | |
US6609141B1 (en) | Method of performing modular inversion | |
JP2007187908A (ja) | サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法 | |
JP4664514B2 (ja) | 素数生成装置及びプログラム | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
JP3939586B2 (ja) | フォワードセキュア電子署名方法、その装置、プログラム及びその記録媒体 | |
JP4836676B2 (ja) | 素数生成プログラム | |
KR102348797B1 (ko) | Rsa 암호화 시스템의 rsa 회로 모듈 | |
US20230388134A1 (en) | Systems and methods of improved modular inversion with digital signatures | |
KR20090090881A (ko) | 센서 모트에서의 효율적인 타원 곡선 암호 연산 방법, 그장치 및 이를 기록한 기록매체 | |
JPH07193565A (ja) | 疑似乱数を用いた通信方法とその装置 | |
JP2007212768A (ja) | 楕円曲線暗号における事前計算テーブル作成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100527 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110308 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130523 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130625 |
|
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: 20130718 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130723 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5328186 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 |
|
LAPS | Cancellation because of no payment of annual fees |