JP2013113978A - 半導体装置及びicカード - Google Patents
半導体装置及びicカード Download PDFInfo
- Publication number
- JP2013113978A JP2013113978A JP2011259083A JP2011259083A JP2013113978A JP 2013113978 A JP2013113978 A JP 2013113978A JP 2011259083 A JP2011259083 A JP 2011259083A JP 2011259083 A JP2011259083 A JP 2011259083A JP 2013113978 A JP2013113978 A JP 2013113978A
- Authority
- JP
- Japan
- Prior art keywords
- prime
- random number
- semiconductor device
- generation unit
- integer
- 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
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- 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/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- 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/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- 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
-
- 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/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
- G06F2207/7242—Exponent masking, i.e. key masking, e.g. A**(e+r) mod n; (k+r).P
-
- 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/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
- G06F2207/7247—Modulo masking, e.g. A**e mod (n*r)
-
- 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
- G06F7/723—Modular exponentiation
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
【解決手段】素数性判定におけるべき剰余演算において、従来の指数のランダム化に加え、法をもランダム化する。乱数発生部により発生した乱数をランダム化数として、法生成部と指数生成部に入力する。法生成部と指数生成部は、ランダム化数を用いて素数候補Pをランダム化し、ランダム化された法R1と指数R2を生成する。ランダム化された法R1と指数R2を用いて素数性判定のためのべき剰余演算を実行し、その結果に基づいて、素数性候補Pの素数性を判定する。半導体装置の素数性判定中の消費電力が、判定対象の素数候補の値と無相関となり、サイドチャネル攻撃による素数の漏えいを防止することができる。
【選択図】図1
Description
〔数1〕 Aφ(N) mod N = 1
が成立する。ここではφはオイラー関数である。Pが素数である場合、φ(P)=P-1であり、べき剰余A(P-1) mod Pの結果は1であることが保証されている。
〔数2〕AP-1= 1 mod P
ここで、「AP-1= 1 mod P」は、べき剰余AP-1 mod Pの結果が1であることを示す式で、当業者において汎用されている表現形式である。
〔数3〕 Ar(P-1)= 1 mod P
である。一方、任意の乱数sを使ってランダム化された法sPの場合、一般に、
〔数4〕 AP-1≠1 mod sP
〔数5〕 Ar(P-1)≠1 mod sP
である。素数候補Pが素数であっても、乱数sとの積sPは素数でないため、フェルマテストによりPの素数性を判定することができない。
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
乱数発生部(1)と法生成部(2)と指数生成部(3)とべき剰余演算部(4)と判定部(5)とを含んで構成され、入力された素数候補(P)の素数性判定を行う半導体装置であって、各構成要素は以下の動作を行う。
乱数発生部(1)と法生成部(2)と指数生成部(3)とべき剰余演算部(4)と判定部(5)とを含んで構成され、入力された素数候補(P)の素数性判定を行う半導体装置であって、各構成要素は以下の動作を行う。
項2の半導体装置であって、ランダム化数生成部(6)をさらに備え、前記乱数発生部は、第1の乱数を発生して前記ランダム化数生成部に入力し、前記ランダム化数生成部は、前記第1の乱数が素数のとき、前記第1の乱数を前記ランダム化数として生成する。
項2の半導体装置であって、ランダム化数生成部(6)をさらに備え、前記乱数発生部は、第2の乱数を発生して前記ランダム化数生成部に入力し、前記ランダム化数生成部は、前記ランダム化数を以下の方法で算出する。
前記ランダム化数生成部(6)は、前記第2の乱数が下記条件1乃至3のすべてを満たすとき、前記第2の乱数を前記ランダム化数として生成する。
項2、3、または4の半導体装置であって、前記素数候補(P)が少なくとも1個の素数で割り切れるか否かの判定を行う。
乱数発生部(1)とランダム化数生成部(6)と法生成部(2)と指数生成部(3)とべき剰余演算部(4)と判定部(5)を含んで構成され、入力される素数候補の素数性判定を行う半導体装置であって、各構成要素は以下の動作を行う。
項6の半導体装置であって、各構成要素は以下の動作を行う。
項6の半導体装置であって、べき剰余演算の底を、前記ランダム化数と前記素数候補の積と互いに素の整数とする(744)。
乱数発生部(1)と法生成部(2)と指数生成部(3)とべき剰余演算部(4)と判定部(5)を含んで構成され、入力される素数候補(P)の素数性判定を行う半導体装置であって、各構成要素は以下の動作を行う。
項9の半導体装置であって、各構成要素は以下の動作を行う。
または1+P(P-1 mod r) (r-2) mod rP
またはP-1+P(P-1 mod r) (2-P) mod rP
のいずれか1つと一致する場合(842)、前記素数候補が素数であるという暫定判断を行う。
項9または10の半導体装置であって、ランダム化数生成部(6)をさらに備え、前記ランダム化数生成部は、以下の条件を満たすときに、前記第5の乱数を前記ランダム化数として生成する。
べき剰余演算を含む素数性判定を行う半導体装置において、素数候補(P)と乱数(r)の積(rP)を前記べき剰余演算の法とする半導体装置である。
項12の半導体装置において、前記素数候補と前記乱数に基づいて算出した値を前記べき剰余演算の指数とする。
項1乃至13のいずれかの半導体装置であって、前記素数性判定を伴って2個の素数(P, Q)を生成し、
前記2個の素数に基づいて公開鍵および秘密鍵を出力するRSA暗号鍵生成を行う(391、392、691、692)。
項1乃至13のいずれかの半導体装置を含むICカード(100)であって、CPU(101)とコプロセッサ(102)と乱数発生回路(103)とメモリ(105、106)とを備える。
項15のICカードであって、前記メモリ(106)に、RSA鍵生成プログラム(124、524)およびまたは素数テーブル(534)が格納されている。
項1乃至13のうちいずれかの半導体装置を含むICカードであって、トランザクションに先立って、前記素数性判定を伴って秘密鍵と公開鍵を生成し(201)、前記公開鍵を、ICカード端末を介して接続されている鍵サーバーに送信する(202)。
実施の形態について更に詳述する。
図1は、本発明の一実施形態に係る半導体装置のブロック図である。
図1は、本発明の一実施形態に係る半導体装置のブロック図であり、図6は、その動作例を表すフローチャートである。図6は、ステップ400の小さい素数を生成するランダム化向け整数生成とステップ440のフェルマテストの2つの部分を含む。まず、フェルマテスト(ステップ440)について説明する。
〔数6〕 A(r-1)(P-1) mod rP
判定部5は、素数候補の素数性を判定する。より具体的には、べき剰余演算部の演算結果が、1のときは「パス」を出力し、1以外のときは「フェイル」を出力する(ステップ450)。
〔数7〕 φ(rP) = (r-1)(P-1)
である。ここで、φはオイラー関数である。
〔数8〕 GCD(A,rP) = 1
〔数9〕 A(r-1)(P-1) = Aφ(rP) = 1 mod rP
したがって、べき剰余A(r-1)(P-1) mod rPが1か否かを判定することにより、素数候補Pの素数性を判定することができる。
上記実施形態2において、ランダム化数rを素数とすることにより、誤判定確率を下げることができ、信頼性を向上することができることを指摘した。そもそも本願発明が素数性判定を目的としているので、その入力に素数を要求することは、自己矛盾しているように思われるが、素数性判定の対象とする数は一般的に512ビットかそれ以上のビット数の大きな素数であるのに対し、ランダム化に必要な素数は16ビット程度の小さい素数ですむ。ランダム化数rとして16ビットの素数を生成する方法について、図6を用いて説明する。ただし、この技術思想は、16ビットに限定されるものではなく、より大きなビット数の素数生成にも拡張することができる。
以上説明した実施の形態2の小さい素数を生成するランダム化向け整数生成(ステップ400)とフェルマテスト(ステップ440)の動作を、具体的数値を例示して説明する。RSA暗号では512ビットかそれ以上の素数を使用することが望ましいが、理解しやすいよう、256ビットの整数の素数性判定について例示する。
r = 3 mod 5, (ステップ412)
r = 3 mod 7, (ステップ413)
r = 4 mod 11, (ステップ414)
r = 0 mod 13, (ステップ415)
r = 0 mod 13なので, r は素数ではない。
r = 3 mod 5, (ステップ412)
r = 2 mod 7, (ステップ413)
r = 10 mod 11, (ステップ414)
r = 5 mod 13(ステップ415)
rは小さい素数3、5、7、11、13のいずれによっても割り切ることができない。
T = 17r-1 mod r = 20245 である。よって、rは底17のフェルマテストにフェイルとなり(ステップ422)、rは素数ではないことがわかる。
r = 2 mod 5, (ステップ412)
r = 1 mod 7, (ステップ413)
r = 10 mod 11, (ステップ414)
r = 12 mod 13, (ステップ415)
rは3、5、7、11、13のいずれによっても割り切ることができない。
T = 17r-1 mod r = 1 である。よって、rは底17のフェルマテストにパスとなる(ステップ422)。
rP=0xbab5×0xd69cb0535ebbe48312596ae3ba8ca2f5
rP=0x9c8594e53dc67edfcc00f0e2088d13d53939
である。
(r-1)(P-1)=0xbab4×0xd69cb0535ebbe48312596ae3ba8ca2f4
(r-1)(P-1) = 0x9c84be488d732023e77dde889da95947db90
である。
乱数を発生し、底Aとする(ステップ443)。
底Aはrによって割り切ることができないか否かを確認すると(ステップ444)、
A mod r = 0xef9273ffcbf07692b8ae10dfc282824556f mod 0xbab5 = 0x84ac
であり、底Aはrによって割り切ることができないことがわかる。
ランダム化されたべき剰余演算
A(r-1)(P-1) = 0x49fd654061ce69cc0278cd67a1a3b414dac0 mod rP
を計算することができる。
P=0xd69cb0535ebbe48312596ae3ba8ca2f7
である。
r = 2 mod 5, (ステップ412)
r = 3 mod 7, (ステップ413)
r = 3 mod 11, (ステップ414)
r = 1 mod 13, (ステップ415)
rは3、5、7、11、13のいずれによっても割り切ることができない。
T = 17r-1 mod r = 1 である。よって、rは底17のフェルマテストにパスとなる(ステップ422)。
rP=0xc41f×0xd69cb0535ebbe48312596ae3ba8ca2f7
rP=0xa469f3f92ea053b505ebaeaa4c6743ccd7e9
である。
(r-1)(P-1)=0xc41e×0xd69cb0535ebbe48312596ae3ba8ca2f6
(r-1)(P-1) =a4691d5c7e4cf4f921689c50e183893f70d4
である。
乱数を発生し、底Aとする(ステップ443)。
底Aはrによって割り切ることができないか否かを確認すると(ステップ444)、
A mod r = 0x6079d470762925c9d0382d34d776548a891e mod 0xc41f = 0x96c8
であり、底Aはrによって割り切ることができないことがわかる。
べき剰余演算(ステップ444)
A(r-1)(P-1) = 1 mod rP
の結果は1であるので、「パス」と判定することができる(ステップ445)。
P=0xd69cb0535ebbe48312596ae3ba8ca2f7
は、実際に素数である。
図3は、本実施形態に係る半導体装置の一例であるICカード、およびそのICカードが利用されるシステムを例示したブロック図である。
〔数10〕 S = H(M)D mod N
を計算する。ここで、H(M)はハッシュ関数である。このべき剰余はコプロセッサ102で計算される。
このシステムにおけるRSAトランザクションについて、図4を引用して説明する。
〔数11〕 S1 = H(M1)D mod N
である。ここで、H(M1)はハッシュ関数プログラム122で計算されたM1のハッシュ値、DはRSA暗号秘密鍵133、Nは公開法132である。RSA署名は、べき剰余計算用のコプロセッサ102を使用してRSA暗号プログラム123によって計算される。
〔数12〕 V1 = S1E mod N
が計算される。V1はステップ216においてトランザクションM1のハッシュ値H(M1)と比較される。値が等しい場合、トランザクションM1が行われる。RSA暗号システムの性質により、
〔数13〕 (H(M)D)E = H(M) mod N
である。よって、端末は信頼できる署名を受け付ける。
実施形態2のRSA暗号鍵生成の例を、図5を引用して説明する。
図6で示したRSA暗号鍵生成技術は、素数性判定のために多くの呼び出しを必要とし、コストのかかる多くのべき剰余を行う結果となる。べき剰余の回数を減らすため、篩分け技術がよく用いられる。篩分けとは最初の小さい素数によって素数候補の可分性をチェックすることを言う。素数候補が小さい素数で割り切れる場合、それは明らかに素数ではなく、アルゴリズムは素数性判定を行うことなく次の候補を探索することができる。
実施形態2は、ランダム化数rを素数とすることにより、偽陰性と偽陽性の過誤が発生する確率を低減することができるものである。逆に言うと、素数以外の数をランダム化数とすると、過誤が発生する確率が上昇することになる。本実施形態では、素数以外のランダム化数を用いて、フェルマテストをランダム化する実施の形態について説明する。小さい素数のテーブルを備え、そのテーブルを使って法をランダム化するランダム化数r1と指数をランダム化するランダム化数r2の組み合わせを生成する。ランダム化数r1とr2が素数でなくても、以下に述べる一定の関係を満たして生成された組み合わせであれば、フェルマテストが原理的に発生させてしまう過誤の確率を増加させることなく、ランダム化することができる。
本来は最小の素数は2であるが、奇数の乱数を想定しているので、3を最小の素数として扱うこととしている。
〔数14〕 r1 = r[1]t[1]r[2]t[2]r[3]t[3]・・・r[k]t[k]
例えば、t[1] = 4、t[2] = 2、それ以外のt[i] = 0のとき、r1 = 34×52 = 2025となる。
〔数15〕 T = AR2 mod R1
べき剰余演算の結果T = 1の場合パスと判定され、T≠1の場合はフェイルと判定される(ステップ750)。
〔数16〕 φ(ab) = φ(a)φ(b)
ここで、φはオイラー関数であり、GCD(a, b)は整数aと整数bの最大公約数を求める関数である。
〔数17〕 φ(r[j]t[j]) = (r[j]-1)r[j]t[j]-1
である。
〔数18〕 Aφ(R1) = 1 mod R1
となる。
〔数19〕 φ(R1)
= φ(Pr[1]t[1]r[2]t[2]・・・r[k]t[k])
= φ(P)φ(r[1]t[1])φ(r[2]t[2])・・・φ(r[k]t[k])
= (P-1)(r[1]-1)r[1]t[1]-1(r[2]-1)r[2]t[2]-1・・・(r[k]-1)r[k]t[k]-1
= R2
したがって、素数候補Pが素数であれば、GCD(A,R1) = 1であるので、
〔数20〕 AR2 = Aφ(R1) = 1 mod R1
が成立する。
〔数21〕 r[1] = 3, r[2] = 5, r[3] = 7, r[4] = 11, r[5] = 13
初めに、R1とR2を1に初期化し、t[1] = t[2] = t[3] = t[4] = t[5] = 0に初期化する。図9においては、R1が64ビットを繰り返すアルゴリズムであるとして説明したが、簡略化のため、R1が16ビットを超えたときに繰り返しを打ち切るものとして説明する。
〔数22〕 t[1] = 1, t[2] = 3, t[3] = 1, t[4] = 2, t[5] = 0
これは、ランダム化数R1が数14によって以下のように計算されたことを意味する。
〔数23〕 R1 = r[1]t[1]r[2]t[2]r[3]t[3]r[4]t[4]r[5]t[5]
= 315371112130
= 317625
同様に、ランダム化数R2は、以下のように計算されたことになる。
〔数24〕 R2 = (r[1]-1)r[1]t[1]-1
×(r[2]-1)r[2]t[2]-1
×(r[3]-1)r[3]t[3]-1
×(r[4]-1)r[4]t[4]-1
×(r[5]-1)r[5]t[5]-1
= (3-1)30×(5-1)52×(7-1)70×(11-1)111
= 132000
図7は、本実施形態に係る半導体装置の一例であるICカード、およびそのICカードが利用されるシステムを例示したブロック図である。実施形態2のハードウェア構成例と比較して、不揮発性メモリ106に格納されているRSA暗号鍵生成プログラム524が異なり、プログラムに最大公約数を算出するGCDプログラム525が、またデータに小さい素数のテーブルr[1]・・・r[k]534が、それぞれ追加されている点が異なる。
フェルマテストと同様に、ミラー・ラビンテストも確率的素数性判定法である。
・Pが素数であるとき、任意の底Aの場合、Pはミラー・ラビンテストをパスすることができる。
・Pが素数でないとき、ミラー・ラビンテストをパスするPより小さい整数Aの数はP/4より少ない。
〔数25〕 I = (P mod r)r-2 mod r =P-1 mod r(ステップ831)
〔数26〕 B = 1+PI{(r-2) mod R1}(ステップ832)
〔数27〕 C = P-1+PI{(2-P) mod R1}(ステップ833)
BとCは、ミラー・ラビンテストの判定に用いるための補助値である。
〔数28〕 P-1 = 2sP'
次に、1 < A < Pを満たす乱数Aが生成され、素数性判定のため、下式のべき剰余が演算される。
〔数29〕 T = AP' mod P
その結果Tが、1またはP-1と等しければパスと判定し、いずれとも等しくない場合には、さらに、下式の2乗演算をs-1回繰り返し、1度でも結果がP-1に等しければ、パスと判定する。
〔数30〕 T = T2 mod P
さらに、上記数28から数30の一連の演算と判定を、rとAをランダムに変えながら所定回数行い、その過程がすべてパスになることをもって最終的に素数と判定することにより、信頼度を向上している。
〔数31〕 (r-1)(P-1) = 2sR2
次に底Aを生成する。従来1 < A < Pを満たす乱数をAとしたが、素数候補をランダム化するため、ステップ834において、1 < A < R1を満たす乱数を底Aとして生成し、底Aがランダム化数rの倍数になっていないことを条件として付加するため、ステップ835を行っている。
〔数32〕 A(r-1)(P-1) = Aφ(R1) = 1 mod R1
本実施形態のべき剰余は、ミラー・ラビンテストのランダム化を目的としているので、ランダム化されたR2を指数とするものであるから、ステップ841および下式に示すように、べき剰余演算の指数と法が置き換えられている。
〔数33〕 T = AR2 mod R1
従来のミラー・ラビンテストでは、Tを1またはP-1と比較したが、本実施形態ではR1 = rPのようにランダム化されているので、従来1またはP-1の2通りだった期待値が4通りになる。その期待値を求める方法を説明する。
〔数34〕 T = b+P{P-1 mod r}{(a-b) mod rP}
である。結果として、Pが素数の場合には、ステップ841および数33のべき剰余の結果は、以下の4通りとなる。
〔数35〕 b = 1、a = 1の場合、
T = 1
〔数36〕 b = 1、a = -1 = r-1の場合、
T = 1+P(P-1mod r)(r-2) mod rP= 補助数B
〔数37〕 b = -1 = P-1、A = 1の場合、
T = P-1+P(P-1mod r)(2-P) mod rP= 補助数C
〔数38〕 b = -1 = P-1、A = -1 = r-1の場合、
T = rP-1 = R1-1
なお、上記数学は法Nが規定された有限体であるので、-1 = N-1である。
〔数39〕 T = T2 mod R1
をs-1回繰り返すうちの1つの結果が少なくとも1回、
〔数40〕 T = P-1+P(P-1mod r)(2-P) mod R1 = 補助数C
となれば、パスと判定する(ステップ845)。
〔実施形態4のハードウェア構成例など〕
本実施形態は、実施形態1〜3に対して、素数性判定のアルゴリズムのみについて変更したものであるので、ハードウェア(図3)、相互関係(図4)、RSA暗号鍵生成プログラム(図5)はまったく同様である。
2 指数生成部
3 法生成部
4 べき剰余演算部
5 判定部
6 ランダム化数生成部
100 ICカード
101 CPU
102 コプロセッサ
103 乱数発生回路(RNG)
105 RAM
106 不揮発性メモリ
120 プログラム
124 524 RSA鍵生成プログラム
130 データ
534 素数テーブル
311 351 611 651 素数候補生成
331 371 631 671 素数性判定を実行
400 810 小さい素数生成
700 ランダム化数生成
440 740 フェルマテスト
820 ミラー・ラビンテスト
441 741 821 ランダム化された法を計算
442 742 822 ランダム化された指数を計算
445 745 841 べき剰余を計算
450 750 842 べき剰余演算結果の判定
Claims (17)
- 乱数発生部と法生成部と指数生成部とべき剰余演算部と判定部を含んで構成され、入力される素数候補の素数性判定を行う半導体装置であって、
前記乱数発生部は、第1の乱数を発生してランダム化数として生成し、
前記法生成部は、前記素数候補と前記ランダム化数とに基づいて第1整数を生成し、
前記指数生成部は、第2整数を生成し、
前記べき剰余演算部は、前記第1整数を法とし、前記第2整数を指数とするべき剰余演算を実行し、
前記判定部は、前記べき剰余演算部の出力に基づいて前記素数候補の素数性を判定する、
半導体装置。 - 乱数発生部と法生成部と指数生成部とべき剰余演算部と判定部を含んで構成され、入力される素数候補の素数性判定を行う半導体装置であって、
前記乱数発生部は、第1の乱数を発生してランダム化数として生成し、
前記法生成部は、前記素数候補と前記ランダム化数の積を第1整数として生成し、
前記指数生成部は、前記素数候補から1を減じた数と前記ランダム化数から1を減じた数との積を第2整数として生成し、
前記べき剰余演算部は、前記第1整数を法とし、前記第2整数を指数とするべき剰余演算を実行し、
前記判定部は、前記べき剰余演算部の出力に基づいて前記素数候補の素数性を判定する、
半導体装置。 - 請求項2記載の半導体装置であって、ランダム化数生成部をさらに備え、
前記乱数発生部は、前記第1の乱数を発生して前記ランダム化数生成部に入力し、
前記ランダム化数生成部は、前記第1の乱数が素数のとき、前記第1の乱数を前記ランダム化数として生成する、
半導体装置。 - 請求項2記載の半導体装置であって、ランダム化数生成部をさらに備え、
前記乱数発生部は、所定値L以下の第2の乱数を発生して、前記ランダム化数発生部に入力し、
前記ランダム化数生成部は、前記第2の乱数が前記条件1乃至3のすべてを満たすとき、前記第2の乱数を前記ランダム化数として生成するものであって、
条件1は、前記第2の乱数が所定値Aより小さい素数を因数に持たないことであり、
条件2は、前記所定値Aを底とし、前記第2の乱数から1を減じた数を指数とし、前記第2の乱数を法としたべき剰余演算の結果が1であることであり、
条件3は、前記第2の乱数と、前記所定値L以下の整数であって、前記所定値Aを底とし前記整数から1を減じた数を指数とし前記整数を法としたべき剰余演算の結果が1であるが素数ではない整数のすべてと前記第2の乱数と比較して、前記第2の乱数がそのいずれとも異なるものであることである、
半導体装置。 - 請求項2記載の半導体装置であって、
前記素数候補が少なくとも1個の素数で割り切れるか否かの判定を行い、
前記判定結果が割り切れる場合には次の素数候補を生成し、
前記判定結果が割り切れない場合には、前記素数候補を前記法生成部と前記指数生成部に出力する、
半導体装置。 - 乱数発生部とランダム化数生成部と法生成部と指数生成部とべき剰余演算部と判定部を含んで構成され、入力される素数候補の素数性判定を行う半導体装置であって、
前記乱数発生部は、1個以上の第4の乱数列を発生し、
前記ランダム化数生成部は、前記第4の乱数列に基づいて算出される整数を指数とする素因数演算によりランダム化数を生成し、
前記法生成部は、前記素数候補と前記ランダム化数との積である第1整数を生成し、
前記指数生成部は、第2整数を生成し、
前記べき剰余演算部は、前記第1整数を法とし、前記第2整数を指数とするべき剰余演算を実行し、
前記判定部は、前記べき剰余演算部の出力に基づいて前記素数候補の素数性を判定する、
半導体装置。 - 請求項6記載の半導体装置であって、
前記乱数発生部は、値が1以上k以下の乱数を指数指定乱数として出力し、
前記ランダム化数生成部は、k個の互いに相違する素数を格納するk個の要素からなる第1の配列と前記素数のそれぞれに対応する指数を格納するk個の要素からなる第2の配列とを備え、
前記指数指定乱数によって指定された回数を前記第2の配列の要素の値とし、
前記第1の配列の各要素の値である素数に、前記第2の配列の対応する要素の値を指数とするべき乗演算によりk個の整数を算出し、前記k個の整数の積を算出して前記ランダム化数として出力する、
半導体装置。 - 請求項6記載の半導体装置であって、
べき剰余演算の底を、前記ランダム化数と前記素数候補の積と互いに素の整数とする、
半導体装置。 - 乱数発生部と法生成部と指数生成部とべき剰余演算部と判定部を含んで構成され、入力される素数候補の素数性判定を行う半導体装置であって、
前記乱数発生部は、第5の乱数をランダム化数として生成し、
前記法生成部は、前記素数候補と前記ランダム化数との積を第1整数として生成し、
前記指数生成部は、前記ランダム化数から1を減じた数と前記第1の素数候補から1を減じた数との積を素因数分解して、式(r−1)(P−1)=2sP’を満たす最大の整数s及び整数P’を算出し、前記整数P’を第2整数として生成し、
前記べき剰余演算部は、前記第1整数を法とし、前記第2整数を指数とするべき剰余演算を実行し、
前記判定部は、前記べき剰余演算部の出力に基づいて前記素数候補の素数性を判定する、
半導体装置。 - 請求項9記載の半導体装置であって、
前記乱数発生部により第6の乱数を発生し、
前記第6の乱数は、前記ランダム化数で割り切れない数となるように選び、
前記べき剰余演算部は、前記第6の乱数を底とし前記第1整数を法とし前記第2整数を指数とするべき剰余演算を実行し、
前記判定部は、前記べき剰余演算の結果が、1またはrP−1
または1+P(P−1 mod r)(r−2) mod rP
またはP−1+P(P−1 mod r)(2−P) mod rP
のいずれか1つと一致する場合、前記素数候補が素数であるという暫定判断をし、
前記素数候補が素数であるという暫定判断が維持される限り、前記乱数発生部により第5の乱数を発生して新たなランダム化数rとし、第6の乱数を発生して新たな底Aとし、繰り返し回数が所定回数に達するまで繰り返すことにより素数性を判定する、
半導体装置。 - 請求項9記載の半導体装置であって、前記ランダム化数生成部をさらに備え、
前記乱数発生部は、第5の乱数を発生して、前記ランダム化数生成部に入力し、
前記ランダム化数生成部は、
前記第5の乱数が、32ビットで且つ最下位2ビットがともに1であり、
前記第5の乱数が、底を2とするミラー・ラビンテストと底を7とするミラー・ラビンテストと底を61とするミラー・ラビンテストとのすべてをパスするときに、
前記第5の乱数を前記ランダム化数として生成する、
半導体装置。 - べき剰余演算を含む素数性判定を行う半導体装置において、
素数候補と乱数の積を前記べき剰余演算の法とする、
半導体装置。 - 請求項12記載の半導体装置において、
前記素数候補と前記乱数に基づいて算出した値を前記べき剰余演算の指数とする、
半導体装置。 - 請求項1記載の半導体装置であって、
前記素数性判定を伴って2個の素数を生成し、
前記2個の素数に基づいて公開鍵および秘密鍵を出力するRSA暗号鍵生成を行う、
半導体装置。 - 請求項1記載の半導体装置を含むICカードであって、
CPUとコプロセッサと乱数発生回路とメモリとを備え、
前記コプロセッサは前記べき剰余演算を実行し、
前記乱数発生回路は、前記乱数発生部を構成し、もしくはこれに基礎となる乱数を供給する、
ICカード。 - 請求項15記載のICカードであって、
前記メモリに、RSA鍵生成プログラムおよびまたは素数テーブルが格納されている、
ICカード。 - 請求項1記載の半導体装置を含むICカードであって、
トランザクションに先立って、前記素数性判定を伴って秘密鍵と公開鍵を生成し、
前記公開鍵を、ICカード端末を介して接続されている鍵サーバーに送信する、
ICカード。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011259083A JP5848106B2 (ja) | 2011-11-28 | 2011-11-28 | 半導体装置及びicカード |
US13/686,884 US8817980B2 (en) | 2011-11-28 | 2012-11-27 | Semiconductor device and IC card |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011259083A JP5848106B2 (ja) | 2011-11-28 | 2011-11-28 | 半導体装置及びicカード |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013113978A true JP2013113978A (ja) | 2013-06-10 |
JP5848106B2 JP5848106B2 (ja) | 2016-01-27 |
Family
ID=48709586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011259083A Expired - Fee Related JP5848106B2 (ja) | 2011-11-28 | 2011-11-28 | 半導体装置及びicカード |
Country Status (2)
Country | Link |
---|---|
US (1) | US8817980B2 (ja) |
JP (1) | JP5848106B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015188148A (ja) * | 2014-03-26 | 2015-10-29 | 大日本印刷株式会社 | 暗号鍵生成装置及びプログラム |
EP4117224A1 (fr) * | 2021-07-06 | 2023-01-11 | IDEMIA France | Procédé de génération d'un élément d'une clé cryptographique, procédé de traitement cryptographique, dispositif de traitement cryptographique et programme d'ordinateur associés |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591618B (zh) * | 2011-12-23 | 2014-12-10 | 飞天诚信科技股份有限公司 | 一种在嵌入式系统中生成大素数的方法 |
CN107004084B (zh) * | 2014-12-08 | 2021-08-10 | 密码研究公司 | 用于加密操作的乘法掩码 |
EP3220304B1 (en) * | 2016-02-22 | 2018-11-07 | Eshard | Method of testing the resistance of a circuit to a side channel analysis |
WO2018015464A1 (en) * | 2016-07-21 | 2018-01-25 | Nagravision S.A. | Method and device to verify if a number is prime |
CN110710154B (zh) * | 2017-05-26 | 2024-04-19 | 微芯片技术股份有限公司 | 用于使设备操作模糊化的系统、方法和装置 |
CN108055128B (zh) * | 2017-12-18 | 2021-11-19 | 数安时代科技股份有限公司 | Rsa密钥的生成方法、装置、存储介质及计算机设备 |
KR102510077B1 (ko) | 2018-04-24 | 2023-03-14 | 삼성에스디에스 주식회사 | 부채널 공격에 안전한 연산 장치 및 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002278450A (ja) * | 2001-03-14 | 2002-09-27 | Toshiba Corp | 素数生成装置、方法及びプログラム |
US20080226064A1 (en) * | 2007-03-12 | 2008-09-18 | Atmel Corporation | Chinese remainder theorem - based computation method for cryptosystems |
JP2009229615A (ja) * | 2008-03-21 | 2009-10-08 | Renesas Technology Corp | データ処理システム及びデータ処理方法 |
JP2010277085A (ja) * | 2009-05-28 | 2010-12-09 | Proton World Internatl Nv | Rsaアルゴリズムにおける素数生成の保護 |
JP2011059690A (ja) * | 2009-09-09 | 2011-03-24 | Proton World Internatl Nv | サイドチャネル攻撃に対する素数生成の保護 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69840959D1 (de) * | 1997-12-17 | 2009-08-20 | Nippon Telegraph & Telephone | Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen. |
TWI244610B (en) * | 2001-04-17 | 2005-12-01 | Matsushita Electric Ind Co Ltd | Information security device, prime number generation device, and prime number generation method |
US7149763B2 (en) * | 2002-09-09 | 2006-12-12 | Gemplus | Method for generating a random prime number within a predetermined interval |
US7346637B2 (en) * | 2003-07-31 | 2008-03-18 | Indian Institute Of Technology | Polynomial time deterministic method for testing primality of numbers |
WO2005064843A1 (ja) * | 2003-12-26 | 2005-07-14 | Matsushita Electric Industrial Co.,Ltd. | 素数算出装置及び方法並びに鍵発行システム |
FR2888690A1 (fr) * | 2005-07-13 | 2007-01-19 | Gemplus Sa | Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe |
WO2007046402A1 (ja) * | 2005-10-19 | 2007-04-26 | Matsushita Electric Industrial Co., Ltd. | 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路 |
US8774400B2 (en) * | 2008-01-03 | 2014-07-08 | Spansion Llc | Method for protecting data against differntial fault analysis involved in rivest, shamir, and adleman cryptography using the chinese remainder theorem |
-
2011
- 2011-11-28 JP JP2011259083A patent/JP5848106B2/ja not_active Expired - Fee Related
-
2012
- 2012-11-27 US US13/686,884 patent/US8817980B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002278450A (ja) * | 2001-03-14 | 2002-09-27 | Toshiba Corp | 素数生成装置、方法及びプログラム |
US20080226064A1 (en) * | 2007-03-12 | 2008-09-18 | Atmel Corporation | Chinese remainder theorem - based computation method for cryptosystems |
JP2009229615A (ja) * | 2008-03-21 | 2009-10-08 | Renesas Technology Corp | データ処理システム及びデータ処理方法 |
JP2010277085A (ja) * | 2009-05-28 | 2010-12-09 | Proton World Internatl Nv | Rsaアルゴリズムにおける素数生成の保護 |
JP2011059690A (ja) * | 2009-09-09 | 2011-03-24 | Proton World Internatl Nv | サイドチャネル攻撃に対する素数生成の保護 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015188148A (ja) * | 2014-03-26 | 2015-10-29 | 大日本印刷株式会社 | 暗号鍵生成装置及びプログラム |
EP4117224A1 (fr) * | 2021-07-06 | 2023-01-11 | IDEMIA France | Procédé de génération d'un élément d'une clé cryptographique, procédé de traitement cryptographique, dispositif de traitement cryptographique et programme d'ordinateur associés |
FR3125189A1 (fr) * | 2021-07-06 | 2023-01-13 | Idemia France | Procédé de génération d'un élément d'une clé cryptographique, procédé de traitement cryptographique, dispositif de traitement cryptographique et programme d'ordinateur associes |
Also Published As
Publication number | Publication date |
---|---|
US8817980B2 (en) | 2014-08-26 |
JP5848106B2 (ja) | 2016-01-27 |
US20130182839A1 (en) | 2013-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5848106B2 (ja) | 半導体装置及びicカード | |
Gueron et al. | Fast prime field elliptic-curve cryptography with 256-bit primes | |
JP5328186B2 (ja) | データ処理システム及びデータ処理方法 | |
KR101089121B1 (ko) | 빠른 집합 검증 방법 및 그 장치 | |
US9596080B2 (en) | Method of generating prime numbers proven suitable for chip cards | |
US20120207298A1 (en) | Apparatus and method for calculating a result in a scalar multiplication | |
US20210256165A1 (en) | Protecting parallel multiplication operations from external monitoring attacks | |
Campbell Sr | Evaluation of post-quantum distributed ledger cryptography | |
JP6110577B1 (ja) | サイドチャネル情報漏洩に抵抗する楕円曲線点乗算手順 | |
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 | |
US10721056B2 (en) | Key processing method and device | |
KR20040068472A (ko) | 위조로부터 전자칩을 보호하는 공용키 암호화 방법 | |
Lee et al. | An efficient DPA countermeasure with randomized montgomery operations for DF-ECC processor | |
CN101925875A (zh) | 用于非对称加密的对策方法和设备 | |
Kuang et al. | A new quantum-safe multivariate polynomial public key digital signature algorithm | |
JP2004304800A (ja) | データ処理装置におけるサイドチャネル攻撃防止 | |
WO2009091748A1 (en) | Modular reduction using a special form of the modulus | |
Dong et al. | sDPF-RSA: Utilizing floating-point computing power of GPUs for massive digital signature computations | |
Seo | Compact implementations of Curve Ed448 on low‐end IoT platforms | |
Sghaier et al. | Fast hardware implementation of ECDSA signature scheme | |
Sim et al. | A study on the side-channel analysis trends for application to IoT devices | |
JP2011123356A (ja) | 素数生成装置、素数生成方法、及び素数生成プログラム | |
CN110495133B (zh) | 用于生成用于密码应用的素数的方法 | |
Knežević et al. | Signal processing for cryptography and security applications | |
Seo et al. | All the polynomial multiplication you need on RISC-V |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140827 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150312 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150402 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150519 |
|
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: 20151112 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151126 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5848106 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |