JP5407352B2 - 復号処理装置、復号処理プログラム、復号処理方法 - Google Patents
復号処理装置、復号処理プログラム、復号処理方法 Download PDFInfo
- Publication number
- JP5407352B2 JP5407352B2 JP2009008464A JP2009008464A JP5407352B2 JP 5407352 B2 JP5407352 B2 JP 5407352B2 JP 2009008464 A JP2009008464 A JP 2009008464A JP 2009008464 A JP2009008464 A JP 2009008464A JP 5407352 B2 JP5407352 B2 JP 5407352B2
- Authority
- JP
- Japan
- Prior art keywords
- mod
- value
- power
- calculated
- calculating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
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
- G06F7/723—Modular exponentiation
-
- 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/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
-
- 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/08—Randomization, e.g. dummy operations or using noise
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Description
(指数のビット長)×(法のビット長)×(法のビット長)
に比例する。例えば、p、qが1024-bit、nが2048-bitのRSA暗号の場合、dのビット長は2048-bitである。なぜなら、e×d=1(mod(p-1)(q-1))すなわちd=e-1(mod(p-1)(q-1))であり、dの値は0<d<(p-1)×(q-1)であるので、dのビット長は(p-1)(q-1)と同じ、つまり2048-bitである。この場合、指数剰余演算に必要な計算量は、
2048×2048×2048=8589934592
である。一般的にCRTなしのRSA復号においては、指数のビット長は法のビット長とほぼ同一となる。つまりCRTなしのRSA復号の計算量は、法のビット長の3乗に比例する。
(CRT-1) 暗号文cに対する法p,qによる剰余演算(図15, 301, 302)
(CRT-2) 法p,qによるべき乗剰余演算(図15, 303, 304)
(CRT-3) 法p,qのべき乗剰余結果から、法nのべき乗剰余結果の算出(CRT合成) (図15, 305)
CRTあり復号処理の計算の大部分(95%以上)は、CRT-2に示されるべき乗剰余処理であるが、これはcp=c(mod p)もしくはcq=c(mod q)を基数、個人鍵dp=d(mod (p-1))もしくはdq=d(mod (q-1))を指数、素数pもしくはqを法としたべき乗剰余演算である。法p、qのビット長はnの半分つまり1024-bitであり、指数dp、dqのビット長もdの半分つまり1024-bitである。よって、303 もしくは304に示すべき乗剰余処理の計算量は
1024×1024×1024=1073741824
である。つまり、2048-bitのべき乗剰余処理の1/8である。1/8の計算量の処理を2回繰り返すので、CRTあり復号処理の計算量は、CRTなしの計算量の(1/8)×2=1/4である。
(SPAの概略)
ここで、SPAの概略について説明する。SPAは、単一の電力波形を観察し、得られた情報を用いることで、暗号デバイス内部の個人鍵を推定する攻撃である。暗号処理の内容と、消費電力波形の形状に相関がある暗号デバイスに対して有効な攻撃である。
SPAを用いた、CRTあり復号をターゲットとした電力解析攻撃(以下、攻撃1)について説明する。
if (X<Y) then output X as Z
if (X≧Y) then calculate Z=X (mod Y) and output Z
の処理を行う(以下、この処理をMOD_ALGと称す)。
次に、DPAについて説明する。DPAは、複数の電力波形を観察し、それらの複数の消費電力間の差分を取ることで、暗号デバイス内部の個人鍵を推定する攻撃である。DPAは、暗号デバイス内部でread, writeされるデータと消費電力の間に相関がある環境において有効である。一般的に、消費電力は暗号デバイス内部でread, writeされるデータに含まれるバイナリ形式のデータの’1’に比例して大きくなる、という性質が知られている。DPAはこの性質を利用することで、個人鍵を求めることができる。
DPAを用いたCRTなし復号をターゲットとした電力解析攻撃(以降、攻撃2)について説明する。RSA暗号に対するDPA攻撃のうち、最もポピュラーな方法として、べき乗剰余処理cd(mod n)を実行する際の消費電力を測定することで、指数dを求める攻撃が知られている。これは、図14に示すCRTなし復号に対して有効な攻撃である。これらの個人鍵が攻撃者に漏洩した場合、任意の暗号文を復号できるため、RSA暗号の安全性を保つことができない。つまり、素数p,qと同様に、個人鍵dはSPA,DPAの攻撃から保護すべき重要な資産である。
(処理1) m = 1×w[b2](mod n) = cb2(mod n)
(処理2) m = (w[b2])4(mod n) = c4b2(mod n)
(処理3) m = ((w[b2])4)×w[b1](mod n) = c4b2ab1(mod n)
(処理4) m = (((w[b2])4)×w[b1])4(mod n) = c16b2c4b1(mod n)
(処理5) m = (((w[b2])4)×w[b1])4×w[b0] (mod n) = c16b2c4b1 cb0(mod n)=cd (mod n)
502. 2-bit値b2の値がb'2であると予想し、b2=b'2と判定されるまで、以下の(1),(2)に記される手順を繰り返す。
(1) (処理 1)の中間データvに着目し、予想したb'2からm=ai b2'(mod n)の値をシミュレートし、P(ai,time)(i=1,2,..,N)を以下の2つの集合G1,G0に分類する。
・G1 = [P(ai,time)| ai b'2(mod n)の最下位ビット=1]
・G0 = [P(ai,time)| ai b'2(mod n)の最下位ビット=0]
(2) G1,G0から、Δ=(G1の平均電力) - (G0の平均電力) で表される電力差分曲線Δを作成する。その結果、例えば図19(A)のような時間-電力曲線で示すような電力消費であるものに対し、図19(B)のようなスパイクが出現した場合、b2=b'2と判定し(b2の推定に成功)、図19(C)のような平坦な曲線であればb2≠b'2と判定する。
503. 2-bit値b1の値がb'1であると予想し、b1=b'1と判定されるまで、以下の(1),(2)に記される手順を繰り返す。
(1) (処理3)の中間データvに着目し、既に推定したb2及び予想したb'1からm=ai 4b2ai b1'(mod n)の値をシミュレートし、P(ai,time)(i=1,2,..,N)を以下の2つの集合G1,G0に分類する。
・G1 = [P(ai,time)| ai 4b2ai b'1(mod n)の最下位ビット=1]
・G0 = [P(ai,time)| ai 4b2ai b'1(mod n)の最下位ビット=0]
(2) G1,G0から、Δ=(G1の平均電力)-(G0の平均電力)で表される電力差分曲線Δを作成する。その結果、図19(B)のようなスパイクが出現した場合、b1=b'1と判定し(b1の推定に成功)、図19(C)のような平坦な曲線であればb1≠b'1と判定する。
504. 2-bit値b0の値がb'0であると予想し、b0=b'0と判定されるまで、以下の(1)、(2)に記される手順を繰り返す。
(1) (処理5)の中間データvに着目し、推定に成功したb2、b1及び予想したb'0からm=ai 16b2ai 4b1ai b0'(mod n)の値をシミュレートし、P(ai,time)(i=1,2,..,N)を以下の2つの集合G1,G0に分類する。
・G1 = [P(ai,time)| ai 16b2ai 4b1ai b'0(mod n)の最下位ビット=1]
・G0 = [P(ai,time)| ai 16b2ai 4b1ai b'0(mod n)の最下位ビット=0]
(2) G1,G0から、Δ=(G1の平均電力)-(G0の平均電力)で表される電力差分曲線Δを作成する。その結果図19(B)のようなスパイクが出現した場合、b0=b'0と判定し(b0の推定に成功)、図19(C)のような平坦な曲線であればb0≠b'0と判定する。
次に、DPAを用いたCRTあり復号をターゲットとした電力解析攻撃(以下、攻撃3と称す)について説明する。CRTあり復号処理における(CRT-1)、すなわち素数p,qによる暗号文(基数)cの剰余演算に対するSPAによる攻撃はすでに説明したとおりである。この処理に対しては、DPAも実行可能である。SPAによる攻撃の場合、攻撃者が制御し、暗号デバイスに対して入力した基数cに対して、c≧pであるか、c<pであるかどうかの判別を単発の消費電力波形によって行っていた。これに対して、DPAを用いた攻撃の場合、暗号デバイスに対して入力した基数cに対して、c+ε<pであるかどうかの判別を、複数の消費電力波形間の差分を用いて行う。ただし、εはエラーパラメータである。c+ε<pの判別に成功した場合、図16に示す二分探索法を用いることでpの値の候補を絞り込むことができる。ただし、図16の探索を用いても、pの候補数はε+π以下にならない。しかし、pの候補が総当り可能な程度に小さな値(例えばε+π<240)であれば、ε+πはpの値を絞り込むための大きな問題とはならない。
図14、図15に示すRSA暗号処理に関して、攻撃1、攻撃2、攻撃3に記したSPA, DPAによる攻撃法が知られている。これらの攻撃に対して、対策も同様に知られている。以下では、攻撃1,2,3に対する、従来知られた2種類の対策法(以下、対策1、対策2)について説明を行う。
対策1を図21に示す。図21は、1101, 1102が(CRT-1)に対応する処理であり、1103, 1104,1105, 1106が(CRT-2)に対応する処理であり、1107, 1108が(CRT-3)に対応する処理である。
攻撃2に対する防御法として、多数の対策法が知られている。いずれの対策法にも共通することは、cd (mod n)の計算を実行する際に、暗号デバイス内部で乱数を発生させた上で、この乱数を用いて、cd (mod n)の計算過程で発生する中間データをランダム化する処理を含んでいることである。
ここで、従来知られる対策1、対策2の特徴に関してまとめる。対策1(すなわち図15への対策)は、攻撃1、3に対して有効であり、計算量に関する追加コストは図15のものと等倍、メモリに関する追加コストは3(log2n)/2ビット(≧1536ビット)となる。尚、対策1は、定数R、Rp、Rqが全固体共通の場合、R、Rp、Rqの漏洩により全固体が脆弱となる問題を含んでいる。一方、対策2(すなわち図14への対策)は、攻撃2に対して有効であり、計算量に関する追加コストは図14の(log2n+20)/(log2n)倍、メモリに関する追加コストは(20+log2n)ビット(≧1044ビット)となる。
以上のように、図14、図15に示したRSA復号処理に対して、攻撃1、2、3に示した攻撃法が知られているが、それらは対策1、2にて示した従来の対策法によって防ぐことができる。つまり、従来知られた攻撃1、2、3は、従来知られた対策法1、2によって防ぐことができる。
攻撃3に示される図15に示すCRTあり復号処理への攻撃を拡張することで、新しい攻撃法が考えられる。攻撃3は、図15の301、302に示す、cp:=c (mod p)、 cq := c (mod q)に示す剰余演算をターゲットとしている。この処理をターゲットとすることで、攻撃者が制御可能なcに対する剰余演算を行い、図20に示すDPAをベースとした攻撃法を用いることで、素数pに対してc<p-εの判定(εはエラーパラメータ、1000程度の小さな値)を行うことができ、この情報を用いることで、素数pの候補を総当り可能な個数までに絞り込むことができる。
また対策2は、CRTあり復号処理への対策ではないが、べき乗剰余に対する対策であるため、図15の303, 304のべき乗剰余処理に適用することができる。ただし、この適用を行ったとしても、攻撃4を防ぐことはできない。なぜなら、図23に示すように、べき乗剰余の中間データをランダム化するが、最終的に計算される値は常に一定であり、この処理を図15の303, 304のべき乗剰余処理に適用した場合、mp=cdp (mod p), mq=cdq (mod q)が計算されることになる。よって、攻撃4は実行可能である。このように、従来の対策法1、2は攻撃4に対する耐性がないという問題を有している。
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成部と、前記合成部によって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除部と、を備える。
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成ステップと、前記合成ステップによって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除ステップと、をコンピュータに実行させる。
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成ステップと、前記合成ステップによって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除ステップと、をコンピュータが実行する方法である。
(課題1)攻撃4に対して脆弱である。
との課題を解決する対策法について記載する。また、本実施の形態が提供する対策法は、単に上記攻撃4を防ぐだけではなく、対策に伴う計算量・メモリの追加コストを最小限とするという優れた特徴を有する。本発明の対策法について説明する前に、攻撃4を防ぐ基本となる対策法を前提技術として説明する。この対策法も、基数の値を変更する、というアイデアに基づいているが、このような基数を変更するというアイデアでは、攻撃4に対策することはできても、別の問題点を有することについても説明する。その後、本実施の形態による攻撃4への対策法を説明する。
図1に前提技術となる対策法(以下、対策3)を示す。これは、基数cに対してそのままCRTあり復号演算を実行するのではなく、乱数Sを発生し(1601)、c×S(mod n)によるランダム化を行った上でCRTあり復号による演算処理CRT_DEC(c×S (mod n))を実行し、結果をワーク変数領域Wに格納する(1602)。その結果、W=(c×S)d (mod n)が計算される。この乱数Sによるランダム化を解除するために乱数Sの逆数によるCRTあり復号演算をCRT_DEC(S-1 (mod n))により実行し、結果をmに格納する。その結果、m=S-d (mod n)が計算される。最後に、m:=W×m (mod n)により、m:= (c×S)d × S-d = cd (mod n)の演算を行い、ランダム化を解除した結果をmに格納する。
(課題2)図15で示した、対策なしの方法の2倍の計算量が必要。
(課題3)追加メモリとして、(3log2n)/2(≧1536ビット)のメモリ領域が必要。
となる。
上記前提技術の課題を解決するための復号処理装置について、図2にハードウェア構成の一例を、図3に機能ブロックの一例を示す。
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する。
ms×(cs(mod n))(mod n)
を演算することで、平文mを算出する。
m:= (c×R)d ×(R-1)d (mod n)
で表される計算を実行している。すなわち、(c×R)dで表されるランダム化された値を解除し、cd (mod n)に戻すために、(R-1)d (mod n)で表される値を必要としている。この値を得るために、前提技術の対策ではCRT復号処理をさらに1回実行するため計算量の増大を招いた。つまり、基数のランダム化を実行するためには、追加コストとして計算量、もしくはメモリ領域が必要である。
(EXTEND_DPA):素数pに対し、復号処理装置10がxg (mod p)の計算処理を行う場合、この処理の消費電力を利用したDPAを実行することで、pの全体のビット値の上位1/gのビット値を攻撃者は得ることができる。
m'p = (xe)dp - s (mod p) = (xe)dp×(xe)-s=x(1-es) (mod p) = y(es - 1) (mod p)
(ただし、y=x-1 (mod n )であり、x-1 (mod p)と等しい。)
を得るからである。本実施の形態の対策処理は上記の計算処理を含むため、この計算処理に攻撃4の拡張型DPAを実行した場合でも、漏洩するpの部分的なビット値は上位1/2未満に抑える必要がある。(EXTEND_DPA)を適用することで、e×s - 1 > 2が安全性のための条件であることがわかる。すなわち、e×s>3が、この拡張型の攻撃を用いた場合でも、RSA暗号の安全性を保つための条件である。
図4におけるアルゴリズムによって、sの与え方が2通り(乱数 or 定数)、および1906に示すcs (mod n)の計算法が3通り(バイナリ法使用によるlog2s回乗算2通り、もしくはs回乗算の1通り)、2×3=6通りの実施例を考えることができる。以下ではそれぞれについて説明する。cs (mod n)をバイナリ法で計算する方法では、計算量が2×log2sに減少する代わりに、log2nビットのワーク変数を追加で1つ必要とする。そのため、log2nビットの追加メモリが必要となるが、このワークメモリを追加した場合でも、(課題3)に記されるような3(log2n)/2ビットの追加メモリより少ないため優れた方法である。s=2,3程度の小さなパラメータを用いる限りは、cs(mod n)の計算のためにs回乗算を行う実施例の方が、ワークメモリを必要せず、乗算回数もほぼ同等のため効率的である。
実施例1で使用するアルゴリズムを図7に示す。本実施例においては、sを定数として与え、かつcs (mod n)を計算するために、cをs回乗算する方法を用いている(2106)。図15に示したCRTあり復号処理との違いは、2103,2104にて定数sを用いた指数のシフト処理を実行していること、このシフト結果をCRT合成後に解除するために、2106においてcをs回乗算していることである。
実施例2で使用するアルゴリズムを図8に示す。本実施例においては、sを乱数として与え(2200)、かつcs (mod n)を計算するために、cをs回乗算する方法を用いている(2206)。図3に示したCRTあり復号処理との違いは、2203,2204にて定数sを用いた指数のランダム化処理を実行していること、このランダム化結果をCRT合成後に解除するために、2206においてcをs回乗算していることである。
実施例3で使用するアルゴリズムを図9に示す。本実施例においては、sを定数として与え、かつcs (mod n)を計算するために、left-to-rightバイナリ法を用いることで2×log2s回乗算する方法を用いている(2307-2310)。
実施例4で使用するアルゴリズムを図10に示す。本実施例においては、sを定数として与え、かつcs (mod n)を計算するために、right-to-leftバイナリ法を用いることで2×log2s回乗算する方法を用いている(2407-2410)。
追加の計算量コストは、right-to-leftバイナリ法を実行するための計算量であり、2×log2sによって与えられる。T=log2nと表記した場合、2403, 2404のべき乗剰余に必要な計算量は、2×(T/2)3=T3/4であるのに対し、cを法nに関して1回乗算するための計算コストは、(法nのビット長)×(法nのビット長)であるので、これを2×log2s回実行する場合2×log2s×T2となる。つまり、基本的な計算量T3/4に対して、追加の計算量は(2×log2s)×T2であり、これらの比率は(2×log2s×T2)/(T3/4)=(8×log2s)/Tである。例えば、T=log2n=1024とした場合、sに8ビットの値を用いたときは、追加の計算量の比率は64/1024<0.07であり、7%程度の増加である。追加の計算量の全体の計算量に対しての影響は無視できるほど小さい。
実施例5で使用するアルゴリズムを図11に示す。本実施例においては、sを乱数として与え、かつcs (mod n)を計算するために、left-to-rightバイナリ法を用いることで2×log2s回乗算する方法を用いている(2507-2510)。
実施例6で使用するアルゴリズムを図12に示す。本実施例においては、sを乱数として与え、かつcs (mod n)を計算するために、right-to-leftバイナリ法を用いることで2×log2s回乗算する方法を用いている(2607-2610)。
本実施の形態による効果を、以下に説明する。本発明を用いることで、課題1、課題2,課題3の全てを解決することができ、また、シフト値であるパラメータsの漏洩があった場合でも、安全性を保つことができる。
(付記1) 素数である第1素数p、第2素数q、および公開鍵e、個人鍵dを用いて、暗号文cを復号し平文mを算出する復号処理装置であって、
d(mod(p−1))で演算される値dpを数値sでシフト演算した値を指数とし、c(mod p)で演算される値cpを基数とし、前記第1素数pを法としたべき乗剰余演算を行うことで値m’pを算出する第1べき乗剰余演算部と、
d(mod(q−1))で演算される値dqを数値sでシフト演算した値を指数とし、c(mod q)で演算される値cqを基数とし、前記第2素数qを法としたべき乗剰余演算を行うことで値m’qを算出する第2べき乗剰余演算部と、
前記第1べき乗剰余演算部、前記第2べき乗剰余演算部によって算出されたm’p、m’qと、p-1(mod q)の演算結果である個人鍵uとを用いて、
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成部と、
前記合成部によって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除部と、
を備える復号処理装置。
(付記2) 付記1に記載の復号処理装置において、
前記第1べき乗剰余演算部、前記第2べき乗剰余演算部、および前記シフト解除部は、2ビットに収まる乱数を前記数値sとすることを特徴とする復号処理装置。
(付記3) 付記1に記載の復号処理装置において、
前記第1べき乗剰余演算部、前記第2べき乗剰余演算部、および前記シフト解除部は、2ビットに収まる定数を前記数値sとすることを特徴とする復号処理装置。
(付記4) 付記1に記載の復号処理装置において、
前記シフト解除部は、left-to-rightバイナリ法によってcs(mod n)を算出し、前記平文mを算出することを特徴とする復号処理装置。
(付記5) 付記1に記載の復号処理装置において、
前記シフト解除部は、right-to-leftバイナリ法を用いて前記平文mを算出することを特徴とする復号処理装置。
(付記6) 素数である第1素数p、第2素数q、および公開鍵e、個人鍵dを用いて、暗号文cを復号し平文mを算出する処理をコンピュータに実行させる復号処理プログラムであって、
d(mod(p−1))で演算される値dpを数値sでシフト演算した値を指数とし、c(mod p)で演算される値cpを基数とし、前記第1素数pを法としたべき乗剰余演算を行うことで値m’pを算出する第1べき乗剰余演算ステップと、
d(mod(q−1))で演算される値dqを数値sでシフト演算した値を指数とし、c(mod q)で演算される値cqを基数とし、前記第2素数pを法としたべき乗剰余演算を行うことで値m’qを算出する第2べき乗剰余演算ステップと、
前記第1べき乗剰余演算ステップ、前記第2べき乗剰余演算ステップによって算出されたm’p、m’qと、p-1(mod q)の演算結果である個人鍵uとを用いて、
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成ステップと、
前記合成ステップによって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除ステップと、
をコンピュータに実行させる復号処理プログラム。
(付記7) 付記6に記載の復号処理プログラムにおいて、
前記第1べき乗剰余演算ステップ、前記第2べき乗剰余演算ステップ、および前記シフト解除ステップは、2ビットに収まる乱数を前記数値sとすることを特徴とする復号処理プログラム。
(付記8) 付記6に記載の復号処理プログラムにおいて、
前記第1べき乗剰余演算ステップ、前記第2べき乗剰余演算ステップ、および前記シフト解除ステップは、2ビットに収まる定数を前記数値sとすることを特徴とする復号処理プログラム。
(付記9) 付記6に記載の復号処理プログラムにおいて、
前記シフト解除ステップは、left-to-rightバイナリ法によってcs(mod n)を算出し、前記平文mを算出することを特徴とする復号処理プログラム。
(付記10) 付記6に記載の復号処理プログラムにおいて、
前記シフト解除ステップは、right-to-leftバイナリ法を用いて前記平文mを算出することを特徴とする復号処理プログラム。
(付記11) 素数である第1素数p、第2素数q、および公開鍵e、個人鍵dを用いて、暗号文cを復号し平文mを算出する復号処理方法であって、
d(mod(p−1))で演算される値dpを数値sでシフト演算した値を指数とし、c(mod p)で演算される値cpを基数とし、前記第1素数pを法としたべき乗剰余演算を行うことで値m’pを算出する第1べき乗剰余演算ステップと、
d(mod(q−1))で演算される値dqを数値sでシフト演算した値を指数とし、c(mod q)で演算される値cqを基数とし、前記第2素数qを法としたべき乗剰余演算を行うことで値m’qを算出する第2べき乗剰余演算ステップと、
前記第1べき乗剰余演算ステップ、前記第2べき乗剰余演算ステップによって算出されたm’p、m’qと、p-1(mod q)の演算結果である個人鍵uとを用いて、
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成ステップと、
前記合成ステップによって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除ステップと、
をコンピュータが実行する復号処理方法。
(付記12) 付記11に記載の復号処理方法において、
前記第1べき乗剰余演算ステップ、前記第2べき乗剰余演算ステップ、および前記シフト解除ステップは、2ビットに収まる乱数を前記数値sとすることを特徴とする復号処理方法。
(付記13) 付記11に記載の復号処理方法において、
前記第1べき乗剰余演算ステップ、前記第2べき乗剰余演算ステップ、および前記シフト解除ステップは、2ビットに収まる定数を前記数値sとすることを特徴とする復号処理方法。
(付記14) 付記11に記載の復号処理方法において、
前記シフト解除ステップは、left-to-rightバイナリ法によってcs(mod n)を算出し、前記平文mを算出することを特徴とする復号処理方法。
(付記15) 付記11に記載の復号処理方法において、
前記シフト解除ステップは、right-to-leftバイナリ法を用いて前記平文mを算出することを特徴とする復号処理方法。
Claims (7)
- 素数である第1素数p、第2素数q、および個人鍵dを用いて、暗号文cを復号し平文mを算出する復号処理装置であって、
d(mod(p−1))で演算される値dpを数値sでシフト演算した値を指数とし、c(mod p)で演算される値cpを基数とし、前記第1素数pを法としたべき乗剰余演算を行うことで値m’pを算出する第1べき乗剰余演算部と、
d(mod(q−1))で演算される値dqを数値sでシフト演算した値を指数とし、c(mod q)で演算される値cqを基数とし、前記第2素数qを法としたべき乗剰余演算を行うことで値m’qを算出する第2べき乗剰余演算部と、
前記第1べき乗剰余演算部、前記第2べき乗剰余演算部によって算出されたm’p、m’qと、p−1(mod q)の演算結果である個人鍵uとを用いて、
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成部と、
前記合成部によって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除部と、
を備える復号処理装置。 - 請求項1に記載の復号処理装置において、
前記第1べき乗剰余演算部、前記第2べき乗剰余演算部、および前記シフト解除部は、2ビットに収まる乱数を取得し、該乱数を前記数値sとすることを特徴とする復号処理装置。 - 請求項1に記載の復号処理装置において、
前記第1べき乗剰余演算部、前記第2べき乗剰余演算部、および前記シフト解除部は、2ビットに収まる定数を取得し、該定数を前記数値sとすることを特徴とする復号処理装置。 - 請求項1に記載の復号処理装置において、
前記シフト解除部は、left-to-rightバイナリ法によってcs(mod n)を算出し、前記平文mを算出することを特徴とする復号処理装置。 - 請求項1に記載の復号処理装置において、
前記シフト解除部は、right-to-leftバイナリ法を用いて前記平文mを算出することを特徴とする復号処理装置。 - コンピュータを第1べき乗剰余演算部、第2べき乗剰余演算部、合成部及びシフト解除部として機能させ、素数である第1素数p、第2素数q、および個人鍵dを用いて、暗号文cを復号し、平文mを算出する処理を前記コンピュータに実行させる復号処理プログラムであって、
前記第1べき乗剰余演算部が、d(mod(p−1))で演算される値dpを数値sでシフト演算した値を指数とし、c(mod p)で演算される値cpを基数とし、前記第1素数pを法としたべき乗剰余演算を行うことで値m’pを算出する第1べき乗剰余演算ステップと、
前記第2べき乗剰余演算部が、d(mod(q−1))で演算される値dqを数値sでシフト演算した値を指数とし、c(mod q)で演算される値cqを基数とし、前記第2素数qを法としたべき乗剰余演算を行うことで値m’qを算出する第2べき乗剰余演算ステップと、
前記合成部が、前記第1べき乗剰余演算ステップ、前記第2べき乗剰余演算ステップによって算出されたm’p、m’qと、p−1(mod q)の演算結果である個人鍵uとを用いて、
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成ステップと、
前記シフト解除部が、前記合成ステップによって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除ステップと、
を実行する復号処理プログラム。 - 第1べき乗剰余演算部、第2べき乗剰余演算部、合成部及びシフト解除部として機能するコンピュータにおいて、素数である第1素数p、第2素数q、および個人鍵dを用いて、暗号文cを復号し、平文mを算出する復号処理方法であって、
前記第1べき乗剰余演算部が、d(mod(p−1))で演算される値dpを数値sでシフト演算した値を指数とし、c(mod p)で演算される値cpを基数とし、前記第1素数pを法としたべき乗剰余演算を行うことで値m’pを算出する第1べき乗剰余演算ステップと、
前記第2べき乗剰余演算部が、d(mod(q−1))で演算される値dqを数値sでシフト演算した値を指数とし、c(mod q)で演算される値cqを基数とし、前記第2素数qを法としたべき乗剰余演算を行うことで値m’qを算出する第2べき乗剰余演算ステップと、
前記合成部が、前記第1べき乗剰余演算ステップ、前記第2べき乗剰余演算ステップによって算出されたm’p、m’qと、p−1(mod q)の演算結果である個人鍵uとを用いて、
((u×(m’q−m’p)(mod q))×p+m’p
を演算することで値msを算出する合成ステップと、
前記シフト解除部が、前記合成ステップによって算出された値msを用いて、
ms×(cs(mod n))(mod n)
を演算することで、前記平文mを算出するシフト解除ステップと、
を有する復号処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009008464A JP5407352B2 (ja) | 2009-01-19 | 2009-01-19 | 復号処理装置、復号処理プログラム、復号処理方法 |
US12/689,670 US8280042B2 (en) | 2009-01-19 | 2010-01-19 | Decryption processor and decryption processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009008464A JP5407352B2 (ja) | 2009-01-19 | 2009-01-19 | 復号処理装置、復号処理プログラム、復号処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010166463A JP2010166463A (ja) | 2010-07-29 |
JP5407352B2 true JP5407352B2 (ja) | 2014-02-05 |
Family
ID=42582258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009008464A Expired - Fee Related JP5407352B2 (ja) | 2009-01-19 | 2009-01-19 | 復号処理装置、復号処理プログラム、復号処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8280042B2 (ja) |
JP (1) | JP5407352B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5573964B2 (ja) * | 2010-12-27 | 2014-08-20 | 富士通株式会社 | 暗号処理装置および方法 |
JP5742960B2 (ja) * | 2011-10-31 | 2015-07-01 | 富士通株式会社 | 暗号装置と方法およびプログラム |
EP2779519A1 (en) * | 2013-03-11 | 2014-09-17 | Thomson Licensing | A method and a device for fault-resistant exponentiation in cryptographic systems |
US9338144B2 (en) * | 2014-02-19 | 2016-05-10 | Raytheon Bbn Technologies Corp. | System and method for operating on streaming encrypted data |
DE102015211108A1 (de) * | 2015-06-17 | 2016-12-22 | Robert Bosch Gmbh | Vorrichtung und Verfahren zur Ausführung eines Rechenverfahrens |
CN106411519B (zh) * | 2016-11-01 | 2019-01-25 | 北京百度网讯科技有限公司 | 用于rsa解密的处理器及用于rsa解密处理器的控制方法 |
CN109921892A (zh) * | 2019-01-15 | 2019-06-21 | 中国科学院信息工程研究所 | 一种基于测试向量的多维度侧信道泄露评估方法和*** |
US11201732B1 (en) * | 2020-06-23 | 2021-12-14 | Qassim Mohammed Soliman Al Mahmoud | Private and public key exchange method preventing man-in-the-middle attack without electronic certificate and digital signature |
CN116647318A (zh) * | 2022-02-16 | 2023-08-25 | 瑞昱半导体股份有限公司 | 防御密码***时间攻击的方法及密码***处理电路 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5675653A (en) * | 1995-11-06 | 1997-10-07 | Nelson, Jr.; Douglas Valmore | Method and apparatus for digital encryption |
JP3525209B2 (ja) * | 1996-04-05 | 2004-05-10 | 株式会社 沖マイクロデザイン | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
AU2557399A (en) * | 1998-01-02 | 1999-07-26 | Cryptography Research, Inc. | Leak-resistant cryptographic method and apparatus |
JP2000165375A (ja) * | 1998-11-30 | 2000-06-16 | Hitachi Ltd | 情報処理装置、icカード |
FR2791496B1 (fr) | 1999-03-26 | 2001-10-19 | Gemplus Card Int | Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de crytographie a cle publique de type courbe elliptique |
FR2800478B1 (fr) * | 1999-10-28 | 2001-11-30 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique |
US6978016B2 (en) * | 2000-12-19 | 2005-12-20 | International Business Machines Corporation | Circuits for calculating modular multiplicative inverse |
JP3785044B2 (ja) * | 2001-01-22 | 2006-06-14 | 株式会社東芝 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
KR20020071327A (ko) * | 2001-03-06 | 2002-09-12 | 미션텔레콤 주식회사 | 씨알티를 이용한 하이래딕스 알에스에이 모듈로 멱승 처리기 |
JP4199937B2 (ja) * | 2001-03-06 | 2008-12-24 | 株式会社日立製作所 | 耐タンパー暗号処理方法 |
JP4086503B2 (ja) | 2002-01-15 | 2008-05-14 | 富士通株式会社 | 暗号演算装置及び方法並びにプログラム |
JP2004004341A (ja) * | 2002-05-31 | 2004-01-08 | Toshiba Corp | べき乗剰余計算装置、べき乗剰余計算方法及びプログラム |
US20080019508A1 (en) * | 2005-05-03 | 2008-01-24 | Jesse Lipson | Public key cryptographic methods and systems with rebalancing |
US7903814B2 (en) * | 2007-07-26 | 2011-03-08 | Samsung Electronics Co., Ltd. | Enhancing the security of public key cryptosystem implementations |
-
2009
- 2009-01-19 JP JP2009008464A patent/JP5407352B2/ja not_active Expired - Fee Related
-
2010
- 2010-01-19 US US12/689,670 patent/US8280042B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8280042B2 (en) | 2012-10-02 |
JP2010166463A (ja) | 2010-07-29 |
US20100232603A1 (en) | 2010-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5407352B2 (ja) | 復号処理装置、復号処理プログラム、復号処理方法 | |
US7536011B2 (en) | Tamper-proof elliptic encryption with private key | |
US7853013B2 (en) | Cryptographic method and system for encrypting input data | |
JP4671571B2 (ja) | 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ | |
US9749135B2 (en) | Encrypting device, encrypting method, and recording medium | |
Medwed et al. | Template attacks on ECDSA | |
JP4668931B2 (ja) | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 | |
Itoh et al. | A practical countermeasure against address-bit differential power analysis | |
JP4909403B2 (ja) | 安全にデータを求める方法 | |
JPWO2005008955A1 (ja) | 個人鍵を用いた耐タンパ暗号処理 | |
JP5365624B2 (ja) | 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置 | |
JP2001337599A (ja) | 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体 | |
CN107040362A (zh) | 模乘设备和方法 | |
KR20090006176A (ko) | 평문 판정 방법 | |
EP2211265B1 (en) | Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method | |
KR20100113130A (ko) | 비대칭 암호화를 위한 대응조치 방법 및 디바이스 | |
EP3503459A1 (en) | Device and method for protecting execution of a cryptographic operation | |
JP2011510579A (ja) | 署名ダイアグラムを用いた非対称暗号方式のための対策方法およびデバイス | |
JP5261088B2 (ja) | 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法 | |
EP1443699A1 (en) | Information processing means and IC card | |
Abarzúa et al. | Survey on performance and security problems of countermeasures for passive side-channel attacks on ECC | |
Dubeuf et al. | ECDSA passive attacks, leakage sources, and common design mistakes | |
JP2007187908A (ja) | サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法 | |
KR101513012B1 (ko) | 오류 주입과 전력 분석을 조합한 공격에 강인한 멱승 방법 | |
Feng et al. | Efficient comb elliptic curve multiplication methods resistant to power analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111006 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130514 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130711 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130730 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130917 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131008 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131021 |
|
LAPS | Cancellation because of no payment of annual fees |