JPWO2012090289A1 - 暗号処理装置および方法 - Google Patents
暗号処理装置および方法 Download PDFInfo
- Publication number
- JPWO2012090289A1 JPWO2012090289A1 JP2012550616A JP2012550616A JPWO2012090289A1 JP WO2012090289 A1 JPWO2012090289 A1 JP WO2012090289A1 JP 2012550616 A JP2012550616 A JP 2012550616A JP 2012550616 A JP2012550616 A JP 2012550616A JP WO2012090289 A1 JPWO2012090289 A1 JP WO2012090289A1
- Authority
- JP
- Japan
- Prior art keywords
- key
- correction
- power
- point
- value
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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]
-
- 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/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Storage Device Security (AREA)
Abstract
Description
Q3 (mod n)かつP≠Qを満たす選択メッセージペアP,Qを用いた特殊PAにより、攻撃者はdの全体の2/3のビット値を解読できることがわかった。点のスカラー倍算機能を搭載したデバイスに対しても、3P=3QかつP≠Qを満たす選択メッセージペアP,Qを用いた特殊PAにより、同様の攻撃を行うことで攻撃者はdの全体の2/3のビット値を解読できることがわかった。さらにこの攻撃は、3以上の素数αに対してPα= Qα(mod n)かつP≠Q(もしくはαP=αQかつP≠Q)を満たす選択メッセージペアを用いた特殊PAに拡張することができることがわかった。
後述の第1〜第6の実施形態の暗号処理装置は、A&D-always法によるSPA対策機能とランダム化の手法によるDPA対策機能を実装し、かつ特殊PAに対する対策機能を実装した、べき乗剰余演算または楕円曲線上の点に対するスカラー倍算を行う装置である。そこで、第1〜第6の実施形態についての理解を助けるために、まず、べき乗剰余演算および楕円曲線上の演算について説明する。また、第1〜第6の実施形態についての理解を助けるために、第1〜第3の比較例についても説明する。さらに、発明者が発見した、個人鍵dがランダム化されていない場合の特殊PA法と個人鍵dがランダム化されている場合の特殊PA法について説明する。その後、本願の発明者が比較例および特殊PAについての検討から得た知見と、当該知見に基づいて発明者が開発した第1〜第6の実施形態について、順に説明する。
まず、べき乗剰余演算について説明する。RSAおよびDHでは、べき乗剰余演算と呼ばれる処理を用いた演算が行われる。べき乗剰余演算とは、基数a, 指数x, 法nに対して、式(0.1)を計算する演算である。
z=ax (mod n) (0.1)
m=cd (mod n) (0.2)
v=ad (mod n) (0.3)
次に、楕円曲線上の演算について説明する。ECCで使われる楕円曲線のうちで主なものは、素体GF(p)上で定義される式(1.1)の楕円曲線と、2の拡大体GF(2m)上で定義される式(1.2)の楕円曲線である(なお、GFはGalois fieldの略であり、pは素数である)。
ただし、pは素数
a,bは楕円曲線パラメータ(0≦a,b<p)
a,b,x,y∈GF(p)
y2+xy=x3+ax2+b (mod f(x)) (1.2)
ただし、f(x)はGF(2m)の多項式
a,bは楕円曲線パラメータ(0≦a,b<p)
a,b,x,y∈GF(2m)
A+O=O+A=A (1.3)
-A=(x, -y) (1.4)
-A=(x, x+y) (1.5)
A1-A2=A1+(-A2) (1.6)
V=xA (1.7)
を満たす楕円曲線上の点Vを計算する処理である。
V=dA (1.8)
を満たす楕円曲線上の点Vを計算することで、安全な鍵共有を実現する。個人鍵dの値を知らない第三者は正しい共有鍵の値を算出することができない。
K=dAQB=dA(dBG)=dB(dAG)=dBQA (1.9)
このように、数学的に求めることが困難な個人鍵dは、電力解析(Power Analysis;PA)を用いることで容易に解読することができることが知られている。PAの基本メカニズムは、式(0.3)を計算するべき乗剰余演算の処理手順、または式(1.8)を計算する点のスカラー倍算の処理手順に大きな関連がある。以下では、べき乗剰余演算および点のスカラー倍算の演算手順について説明したうえで、べき乗剰余演算およびスカラー倍算に対するPAを説明する。
PAには、単純電力解析(Simple Power Analysis, SPA)と、電力差分解析(Differential Power Analysis, DPA)の2種類がある(図3)。いずれの攻撃も、暗号デバイスの内部状態を電力波形を用いて観察することで、個人鍵を解読する攻撃である。
まず、第1の比較例として、「バイナリ法」について説明する。以下、この方法を第1の比較例と呼ぶ。バイナリ法は、SPA攻撃に対してもDPA攻撃に対しても脆弱である。
例えば、式(0.3)におけるn,a,dが共に1024ビット以上の長さをもつ場合、式(0.3)に記されるべき乗剰余を単純に計算した場合、(mod n)を用いた掛け算をd回必要とするが、21024以上の計算量を必要とするため現実的ではない。この計算量をlog2dに削減するためのテクニックとして、バイナリ法と呼ばれる演算法が知られている。
ここで説明の便宜上、個人鍵dのビット長をuとする。また、個人鍵dのiビット目をd[i]と表記する(0≦i≦u-1)。d[0]が最下位ビット(Least Significant Bit;LSB)でありd[u-1]が最上位ビット(Most Significant Bit;MSB)である。すると、uビットの個人鍵dは、式(2.1)のように表現される。
d=d[u-1]|| …||d[1]||d[0] (2.1)
ここで、“||”は、1ビット以上の長さのビット列同士の連結(concatenation)を示す。
ad (mod n)=a**(2u-1d[u-1]+・・・+21d[1]+20d[0]) (mod n)
= a**(2u-1d[u-1]) (mod n)×・・・a**(21d[1]) (mod n)×a**(20d[0]) (mod n)
ただし、「**」はべき乗演算を示す。 (2.2)
乗算(v:=v×a (mod n))を実行。
d[i] =0の場合:2乗算(v := v×v (mod n))のみを実行。
(2.3)
v=O (2.5)
v=12×a (mod n) (2.6)
v=(12×a)2×a (mod n) (2.7)
v=((12×a)2×a)2 (mod n) (2.8)
v=(((12×a)2×a)2)2 (mod n) (2.9)
v=((((12×a)2×a)2)2)2×a (mod n) (2.10)
v=(((((12×a)2×a)2)2)2×a)2(mod n) (2.11)
v=(((((((12×a)2×a)2)2)2×a)2)2×a (mod n) (2.12)
次に、点のスカラー倍算におけるバイナリ法について説明する。
説明の便宜上、べき乗剰余演算の場合と同様に、個人鍵dのビット長をuとする。また、個人鍵dのiビット目をd[i]と表記する(0≦i≦u-1)。d[0]が最下位ビット(LSB)でありd[u-1]が最上位ビット(MSB)である。これにより、uビットの個人鍵dは、べき乗剰余演算の場合と同様に、前述した式(2.1)のように表現される。
dA=2u-1d[u-1]A+・・・+21d[1]A+20d[0]A (3.1)
d[i] =0の場合:2倍算(v := 2×v)のみを実行。
(3.2)
dA=2(2(2(2(2(2(2O+A)+A)))+A))+A=26A+25A+22A+A (3.3)
V=O (3.4)
V=2O+A (3.5)
V=2(2O+A)+A (3.6)
V=2(2(2O+A)+A) (3.7)
V=2(2(2(2O+A)+A)) (3.8)
V=2(2(2(2(2O+A)+A)))+A (3.9)
V=2(2(2(2(2(2O+A)+A)))+A) (3.10)
V=2(2(2(2(2(2(2O+A)+A)))+A))+A (3.11)
ad[u-1](mod n)→ad[u-1]||d[u-2](mod n)→ad[u-1]||d[u-2] ||d[u-3](mod n)→...
または、
d[u-1]A→(d[u-1]||d[u-2])A→(d[u-1]||d[u-2]||d[u-3])A→...
のように、スカラー値または指数(d)のビットを上位から1つずつ増やしながら、最終的にad (mod n)またはdAを計算する。
C(1)2(mod n)→C(11)2(mod n)→C(110)2(mod n)→C(1101)2(mod n)
または、
(1)2A→(11)2A→(110)2A→(1101)2A
の順に計算を行う。
(DPA-1) 暗号文VとしてV=Mj(j=1,2,…,L)を入力した消費電力
Powj(t) (j=1,2,…,L)を測定する。
ただし、tは時刻情報である。
(DPA-2) i:=u-1;に初期化する
(DPA-3) 攻撃者は、d[i]のビット値を予想する。
予想されたd[i]から、
Gj=(d[u-1]||…||d[i+1]||d[i])Mj
の値をj=1,2,..,Lそれぞれについて計算する。
この計算の結果に応じて、以下に示す基準により、
L個の消費電力データPowj(t)を2つのグループに分類する。
グループ1 :Mjに対し、Gjのx座標(またはy座標、のどちらか
に着目)の最下位ビットが1となるPowj(t)の集合
グループ0 :Mjに対し、Gjのx座標(またはy座標、のどちらか
に着目)の最下位ビットが0となるPowj(t)の集合
(グループ1に属するPowj(t)の平均)−(グループ0に属するPowj(t)の平均)
で示される差分波形Diff(t)を作成する。
その結果、図10(a)に示すようなスパイクが差分波形に現
れる場合、予想したd[i]が正しいと判定し、
図10(b)に示すような平坦な波形の場合、
予想したd[i]が誤っていると判定する。
があるため、(DPA-3)に戻る。i<0の場合、全てのdのビット値
が解読できたので終了する。
SPAに対する対策法のひとつとして、A&D-always法と呼ばれる方法が知られている。以下、この方法を第2の比較例と呼ぶ。A&D-always法は、Add-and-Double-always法の省略であり、個人鍵dのビット値に関係なく、常に2乗算と乗算(べき乗剰余演算の場合)または点の2倍算と加算(点のスカラー倍算の場合)を同じパターンで実行することが特徴である。
個人鍵dのビット長をuとする。また、個人鍵dのiビット目をd[i]と表記する(0≦i≦u-1)。d[0]が最下位ビット(LSB)でありd[u-1]が最上位ビット(MSB)である。これにより、uビットの個人鍵dは、前述した式(2.1)のように表現される。また、べき乗剰余演算における基数をa、法をnとする。出力値v=ad (mod n)である。
個人鍵dの表現は、べき乗剰余演算の場合と同様である。また、点のスカラー倍算における楕円曲線上の点をAとする。出力値v=dAである。
A&D-always法を用いることで、SPAを防ぐことができるが、DPAを防ぐことはできない。DPAへの対策法として、個人鍵dをランダム化する方法が、非特許文献3に開示されている。以下、この方法を、従来法1と呼ぶ。
従来法1従来法2 従来法1は、dを用いたべき乗剰余もしくはスカラー倍算を実行する代わりに、
dj’=d+rj#E (rj:20ビット乱数) (4.1)
を満たすdj’を用いたべき乗剰余もしくはスカラー倍算を実行する。rjは演算を実行するごとに変化する乱数rjであり、#Eは位数と呼ばれるパラメータである。従来法1においては、セキュリティと処理速度のトレードオフを考慮し、乱数rjは20ビットが推奨されている。位数#Eは、べき乗剰余もしくは点のスカラー倍算における周期を表す値である。そして、べき乗剰余演算の場合、
a#E=1 (mod n) (4.2)
の等式が、点のスカラー倍算の場合
#EA=O (4.3)
の等式が、任意のaもしくはAについて成立することが知られている。従来法1を用いることで、dj’の全ビットが乱数rjによってランダム化された値となるため、DPAに対して安全となる。また、#Eの周期性を考慮すると、
adj(mod n)= ad+rj#E =ad ×(a#E)rj=ad ×1=ad(mod n)
および
dj’A=dA+rj(#EA)=dA+O=dA
であり、計算結果は個人鍵dに対する計算結果と一致する。
dj’=ed/rju (4.4)
ej’=d (mod rj) (4.5)
ただし、exuはxの整数部を表す記号であり、例えばe3.3u=3, e7.8u=7, e6u=6である。乱数rjは、従来法1と同様に、演算を実行するごとに変化する20ビット乱数である。 式(4.4)および(4.5)で表されるdj’, ej’を生成することで、dをrjで割ったときの商と余りの値をそれぞれdj’, ej’に与えられる。従来法2では、この生成された値を用いて、
(ari)dj’ ×aej’ (mod n) (4.6)
に示されるべき乗剰余演算、もしくは
dj’(rjA)+ej’A (4.7)
に示される点のスカラー倍算を行う。rj, dj’, ej’の全ビット値はランダム化されているため、DPAに安全な処理を実現することができる。また、dj’, ej’はそれぞれdをrjで割ったときの商と余りの値であるため、
d=dj’×rj+ej (4.8)
が成立する。すなわち、式(4.8)により式(4.6)と(4.7)はそれぞれ
(ari)dj’ ×aej’ (mod n)=adj’rj+ej’ (mod n)=ad (mod n)
dj’(rjA)+ej’A=(dj’ × rj +ej )A=dA
と変形でき、個人鍵dに対する計算結果と一致する。
A&D-always法によるSPA対策法と従来法1に示すDPA対策法の組み合わせによるべき乗剰余演算のアルゴリズムを図16に、A&D-always法によるSPA対策法と従来法2に示すDPA対策法の組み合わせによるべき乗剰余演算のアルゴリズムを図17に示す。
上述の第3の比較例に示されるように、A&D-always法によるSPA対策と、従来法1もしくは従来法2に示すDPA対策を組み合わせることで、SPAとDPAの両方に安全となり、電力解析を完全に防ぐことができると考えられていた。
以下では、本発明が課題とする特殊PAによる攻撃法について説明を行う。
べき乗剰余演算および点のスカラー倍算に対する特殊PA攻撃を説明する。ここでは、A&D-always法によるSPA対策を行う、個人鍵dのランダム化は行われないデバイスを攻撃対象と仮定する。個人鍵dのランダム化を伴うデバイスへの攻撃は、この次に説明する。
・状態0(白色)a状態0(白色)の遷移、d[u-i]=0 (5.1)
・状態0(白色)a状態1(灰色)の遷移、d[u-i]=1 (5.2)
・状態1(灰色)a状態0(白色)の遷移、d[u-i]=1 (5.3)
・p回目の2ビット部分鍵解読が失敗したときに、p+1回目の部分鍵解読が成功することで、p回目の上位ビットが成功することを、本書では上位ビットフォロー解読と呼ぶことにする。
・下位ビットフォロー解読と上位ビットフォロー解読を総合して、フォロービット解読と呼ぶ。
・αの倍数(白色)→αの倍数の遷移、d[u-i]=0 (5.4)
・αの倍数 (白色)→αの倍数ではない(破線枠内)の遷移、d[u-i]=1 (5.5)
・αの倍数ではない(灰色)→αの倍数の遷移、d[u-i]=1 (5.6)
の3種類が、攻撃者にとって観察できる情報であり、かつd[u-i]の値を一意に決定できる遷移である。なぜなら、(5.4)(5.5)(5.6)以外の遷移は、全て破線枠内から破線枠内への遷移であるからである。全体の遷移パターン2αのうち、3パターンが鍵を一意に識別できる遷移であるので、全体の鍵ビットのうち3/(2α)が攻撃者によって解読できることになる。
以上が、A&D-always法によるSPA対策に対する特殊PAである。今までは、攻撃対象が個人鍵dがランダム化されていない場合を想定していた。以下では、個人鍵dをランダム化した場合の特殊PAについて説明する。ランダム化されていない場合と比較して、攻撃者のコストは増えるが、コスト増は現実的な時間内に抑えることができ、かつdをランダム化していない場合と同じ効果を得ることができる。
d= dj’×rj+ej
であるので、rj,dj’,ej’のビット情報から、dの全体のビット値の2/3(α=3)のビット値、もしくは3/(2α)のビット値(αは5以上の素数)を求めることができる。
そこで、以下に説明する第1〜第6の実施形態では、SPAおよびDPAに加えて、特殊PAに対する耐タンパ性をも備えた暗号処理装置および方法を提供するものである。
図37の暗号処理装置3700は、Central Processing Unit(CPU)3701、Read Only Memory(ROM)3702、Random Access Memory(RAM)3703、通信回路3704、および通信インタフェース(I/F)3705を有する。通信回路3704は、通信I/F3705を介して他の装置との間で通信を行う。
特殊PAへの対策を施した図39に示される第1,第2,第3の実施形態の機能構成では、べき乗剰余演算における基数を、定数乗した結果を、新しい基数として演算を行う。
d=c(α)×d’+d” (6.1)
この関係式を使うと、暗号処理のべき乗剰余演算値ad (mod n)は、式(6.2)として表すことができる。
v=ad (mod n)
=a(c(α)d’+d”) (mod n)
=(ac(α))d’×ad” (mod n)
=bd’×ad” (mod n)
=t×u (mod n) (6.2)
式(6.2)より、式(6.1)を満たすように対策用定数C(α)を決定することにより、図39の構成により、確かに暗号処理のべき乗剰余演算値ad (mod n)を出力できることがわかる。
d=(c(α)×r)×d’+d”
=r’d’+d” (6.3)
この関係式を使うと、暗号処理のべき乗剰余演算値ad (mod n)は、式(6.4)として表すことができる。
v=ad (mod n)
=a(r’d’+d”) (mod n)
=(ar’)d’×ad” (mod n)
=bd’×ad” (mod n)
=t×u (mod n) (6.4)
式(6.4)より、式(6.3)を満たすように対策用定数C(α)を決定し、かつ図39の定数乗器3901、個人鍵変換器3904、および補正鍵生成器3907において、対策用定数C(α)の代わりに値r’を使用する。これにより、確かに暗号処理のべき乗剰余演算値ad (mod n)を出力できることがわかる。
PC(α) (mod n) (6.5)
QC(α) (mod n) (6.6)
となるが、想定されたαに対して、式(6.5)と(6.6)は常に同一となる。なぜならば、Pα= Qα(mod n)の等式が成立し、かつC(α)は、想定されたαの値全てに対する公約数であるので、式(6.5)と(6.6)はPα= Qα(mod n)の両辺を整数乗した結果であり、これらは等しくなる。
補正演算器4108は、点のスカラー倍算器4105および4106が出力した各演算結果tおよびuを入力して、加算T+Uの補正演算を実行し、最終的な点のスカラー倍算結果dAに等価な結果を出力する。
v=dA=(c(α)×d’+d”)A
=d’c(α)A+d”A
=d’B+d”A
=T+U (6.7)
式(6.7)より、式(6.1)を満たすように対策用定数C(α)を決定することにより、図41の構成により、確かに暗号処理の点のスカラー倍算値dAを出力できることがわかる。
v= dA=((c(α)×r)×d’+d”)A
=d’(c(α)×r)A+d”A
=d’B+d”A
=T+U (6.8)
式(6.8)より、式(6.3)を満たすように対策用定数C(α)を決定し、かつ図41の定数倍器4101、個人鍵変換器4104、および補正鍵生成器4107において、対策用定数C(α)の代わりに値r’を使用する。これにより、確かに暗号処理の点のスカラー倍算値dAを出力できることがわかる。
C(α)P (6.9)
C(α)Q (6.10)
となるが、想定されたαに対して、式(6.9)と(6.10)は常に同一となる。なぜならば、αP=αQの等式が成立し、かつC(α)は、想定されたαの値全てに対する公約数であるので、式(6.9)と(6.10)はαP=αQの両辺を整数倍した結果であり、これらは等しくなる。
bを基数、d’を指数としたべき乗剰余演算を実行し、t = bd’ (mod n)としてtに与える(ステップ4204)。これは、べき乗剰余演算器3905の機能に対応する。
tと補正値uから、v=t×u (mod n)を計算する(ステップ4206)。これは、補正演算器3908の機能に対応する。
ステップ4205においては、基数aをそのまま用いたべき乗剰余演算が実行され、この処理は特殊PAに対して脆弱である。しかし、このべき乗剰余で用いられる指数は、d”=
d (mod C(α))であり、そのビット長はC(α)のビット長(log2C(α))と同じである。C(α) = 3×5×7=105を用いた場合、特殊PAの攻撃にさらされるビット長はわずかlog2105 = 7ビットであり、個人鍵全体のビット長(1024ビット以上)と比較すると、特殊PAによる攻撃の影響を無視できるほど小さくすることができる。
ステップ4301は、図12の1201行に対応する。
ステップ4302,4306,4307は、図12の1202のfor文のループ処理に対応している。
ステップ4304は、図12の1204行に対応し、乗算を実行する。
ステップ4305は、図12の1205行に対応する。
このフローチャートでは、指数dの値に関係なく、常に2乗算(4303)と乗算(4304)の演算パターンが一定化される。
第2の実施形態の制御処理が第1の実施形態の制御処理と異なる点は、個人鍵dに対して、dをC(a)で割ったときの商と余りの計算処理を、事前処理において個人鍵dを生成するした時点で実行し、それぞれd’とd’’に与える点である(ステップ4500)。これは、式(6.1)および(6.2)に基づく処理であり、図39の個人鍵変換器3904と補正鍵生成器3907の機能に対応する。事前処理として実行することで、べき乗剰余演算を実行するごとに割り算処理の実行を不要とすることができる。
ステップ4205において特殊PAに対して脆弱となるビット数は、第1の実施形態の場合と同様に、わずか7ビット程度である。
第3の実施形態の制御処理が第1の実施形態の制御処理と異なる点は、対策用定数C(α)に乱数rを付加している点である。
その後、20ビットの乱数rが生成される(ステップ4601)。
続いて、事前に生成された個人鍵dに対して、dをr’で割ったときの商と余りを計算し、それぞれd’とd’’に与える(ステップ4603)。これは、式(6.3)および(6.4)に基づく処理であり、個人鍵変換器4104および補正鍵生成器3907の機能に対応する。
その後、図42の場合と同様に、ステップ4204,4205,4206,4207の各処理が順次実行され、式(6.4)に基づく制御処理に従って、最終的なべき乗剰余演算値v=ad (mod n)が出力される。
次に、図41の暗号処理装置4100の具体的な処理を示す第4の実施形態について、以下に説明する。図47は、第4の実施形態の制御処理を示すフローチャートである。以下、このフローチャートの処理について説明する。
Bに対してd’倍する点のスカラー倍算を実行し、T= d’BとしてTに与える(ステップ4704)。これは、点のスカラー倍算器4105の機能に対応する。
Tと補正値Uから、V=T+Uを計算する(ステップ4706)。これは、補正演算器4108の機能に対応する。
ステップ4705においては、点Aをそのまま用いた点のスカラー倍算が実行され、この処理は特殊PAに対して脆弱である。しかし、このべき乗剰余で用いられる指数は、d”= d (mod C(α))であり、そのビット長はC(α)のビット長(log2C(α))と同じである。C(α) = 3×5×7=105を用いた場合、特殊PAの攻撃にさらされるビット長はわずかlog2105 = 7ビットであり、個人鍵全体のビット長(1024ビット以上)と比較すると、特殊PAによる攻撃の影響を無視できるほど小さくすることができる。
ステップ4801は、図15の1501行に対応する。
ステップ4802,4806,4807は、図15の1502のfor文のループ処理に対応している。
ステップ4804は、図15の1504行に対応し、加算を実行する。
ステップ4805は、図15の1505行に対応する。
このフローチャートでは、スカラー値dの値に関係なく、常に2倍算(4803)と加算(4804)の演算パターンが一定化される。
第5の実施形態の制御処理が第4の実施形態の制御処理と異なる点は、個人鍵dに対して、dをC(a)で割ったときの商と余りの計算処理を、事前処理において個人鍵dを生成するした時点で実行し、それぞれd’とd’’に与える点である(ステップ5000)。これは、式(6.1)および(6.7)に基づく処理であり、図41の個人鍵変換器4104と補正鍵生成器4107の機能に対応する。事前処理として実行することで、点のスカラー倍算を実行するごとに割り算処理の実行を不要とすることができる。
ステップ4705において特殊PAに対して脆弱となるビット数は、第4の実施形態の場合と同様に、わずか7ビット程度である。
第6の実施形態の制御処理が第4の実施形態の制御処理と異なる点は、対策用定数C(α)に乱数rを付加している点である。
その後、20ビットの乱数rが生成される(ステップ5101)。
続いて、事前に生成された個人鍵dに対して、dをr’で割ったときの商と余りを計算し、それぞれd’とd’’に与える(ステップ5103)。これは、式(6.3)および(6.8)に基づく処理であり、個人鍵変換器4104および補正鍵生成器4107の機能に対応する。
その後、図47の場合と同様に、ステップ4704,4705,4706,4707の各処理が順次実行され、式(6.8)に基づく制御処理に従って、最終的な点のスカラー倍算値V=dAが出力される。
3701 CPU(Central Processing Unit)
3702 ROM(Read Only Memory)
3703 RAM(Random Access Memory)
3704 通信回路
3705 通信インタフェース(I/F)
3706 バス
3707 電源端子
3708 グランド端子
3711 ECCハードウェア回路
3901 定数乗器
3902、4102 対策用定数記憶部
3903、4103 個人鍵記憶部
3904、4104 個人鍵変換部
3905 べき乗剰余演算器
3906 べき乗剰余演算器
3907、4107 補正鍵生成器
3908、4108 補正演算器
4101 定数倍器
4105 点のスカラー倍算器
4106 点のスカラー倍算器
Claims (10)
- 第1の基数aおよび法nを入力し、前記第1の基数aに対して所定定数を指数とし前記法nに関するべき乗剰余演算を実行し、演算結果を第2の基数bとして出力する定数乗器と、
第1の個人鍵dを入力し、前記第1の個人鍵dを前記所定定数で割った商として第2の個人鍵d’を演算する個人鍵変換器と、
前記第1の個人鍵dを前記所定定数で割った余りとして補正鍵d”を生成する補正鍵生成器と、
前記第2の基数bに対して前記第2の個人鍵d’を指数とし前記法nに関するべき乗剰余演算を実行し、演算結果を出力する第1のべき乗剰余演算器と、
前記第1の基数aに対して前記補正鍵d”を指数とし前記法nに関するべき乗剰余演算を実行し、演算結果を補正値として出力する第2のべき乗剰余演算器と、
前記第1のべき乗剰余演算器が出力する演算結果および前記第2のべき乗剰余演算器が出力する補正値を入力して、前記法nのもとでの乗算処理である補正演算を実行し、前記補正演算の演算結果を、前記第1の基数aに対して前記第1の個人鍵dを指数とし前記法nに関するべき乗剰余演算を実行した場合に得られる暗号処理結果として出力する補正演算器と
を備えることを特徴とする暗号処理装置。 - 第1の楕円曲線上の点Aを入力し、前記第1の点Aに対して所定定数をスカラー値として点のスカラー倍算を実行し、演算結果を第2の楕円曲線上の点Bとして出力する定数倍器と、
第1の個人鍵dを入力し、前記第1の個人鍵dを前記所定定数で割った商として第2の個人鍵d’を演算する個人鍵変換器と、
前記第1の個人鍵dを前記所定定数で割った余りとして補正鍵d”を生成する補正鍵生成器と、
前記第2の点Bに対して前記第2の個人鍵d’をスカラー値として点のスカラー倍算を実行し、演算結果を出力する第1の点のスカラー倍算器と、
前記第1の点Aに対して前記補正鍵d”をスカラー値として点のスカラー倍算を実行し、演算結果を補正値として出力する第2の点のスカラー倍算器と、
前記第1の点のスカラー倍算器が出力する演算結果および前記第2の点のスカラー倍算器が出力する補正値を入力して、楕円曲線上の点の加算処理である補正演算を実行し、前記補正演算の演算結果を、前記第1の点Aに対して前記第1の個人鍵dをスカラー値として点のスカラー倍算を実行した場合に得られる暗号処理結果として出力する補正演算器と、
を備えることを特徴とする暗号処理装置。 - 前記所定定数は1つ以上の素数を公約数とする値を有する、
ことを特徴とする請求項1または2に記載の暗号処理装置。 - 前記所定定数は所定の乱数を公約数とする値を有する、
ことを特徴とする請求項3に記載の暗号処理装置。 - 前記個人鍵変換器および前記補正鍵生成器は、暗号処理に先立って事前に、前記第2の個人鍵d’の演算と、前記補正鍵d”の生成を実行する、
ことを特徴とする請求項1または2に記載の暗号処理装置。 - コンピュータが、
第1の基数aおよび法nを入力し、前記第1の基数aに対して所定定数を指数とし前記法nに関するべき乗剰余演算を実行し、演算結果を第2の基数bとして出力し、
第1の個人鍵dを入力し、前記第1の個人鍵dを前記所定定数で割った商として第2の個人鍵d’を演算し、
前記第1の個人鍵dを前記所定定数で割った余りとして補正鍵d”を生成し、
前記第2の基数bに対して前記第2の個人鍵d’を指数とし前記法nに関する第1のべき乗剰余演算を実行し、演算結果を出力し、
前記第1の基数aに対して前記補正鍵d”を指数とし前記法nに関する第2のべき乗剰余演算を実行し、演算結果を補正値として出力し、
前記第1のべき乗剰余演算の演算結果および前記第2のべき乗剰余演算の演算結果である補正値を入力して、前記法nのもとでの乗算処理である補正演算を実行し、前記補正演算の演算結果を、前記第1の基数aに対して前記第1の個人鍵dを指数とし前記法nに関するべき乗剰余演算を実行した場合に得られる暗号処理結果として出力する、
ことを特徴とする暗号処理方法。 - コンピュータが、
第1の楕円曲線上の点Aを入力し、前記第1の点Aに対して所定定数をスカラー値として点のスカラー倍算を実行し、演算結果を第2の楕円曲線上の点Bとして出力し、
第1の個人鍵dを入力し、前記第1の個人鍵dを前記所定定数で割った商として第2の個人鍵d’を演算し、
前記第1の個人鍵dを前記所定定数で割った余りとして補正鍵d”を生成し、
前記第2の点Bに対して前記第2の個人鍵d’をスカラー値として点の第1のスカラー倍算を実行し、演算結果を出力し、
前記第1の点Aに対して前記補正鍵d”をスカラー値として点の第2のスカラー倍算を実行し、演算結果を補正値として出力し、
前記第1の点のスカラー倍算の演算結果および前記第2の点のスカラー倍算の演算結果である補正値を入力して、楕円曲線上の点の加算処理である補正演算を実行し、前記補正演算の演算結果を、前記第1の点Aに対して前記第1の個人鍵dをスカラー値として点のスカラー倍算を実行した場合に得られる暗号処理結果として出力する、
ことを特徴とする暗号処理方法。 - 前記所定定数は1つ以上の素数を公約数とする値を有する、
ことを特徴とする請求項6または7に記載の暗号処理方法。 - 前記所定定数は所定の乱数を公約数とする値を有する、
ことを特徴とする請求項8に記載の暗号処理方法。 - 暗号処理に先立って事前に、前記第2の個人鍵d’の演算と、前記補正鍵d”の生成を実行する、
ことを特徴とする請求項6または7に記載の暗号処理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/073636 WO2012090289A1 (ja) | 2010-12-27 | 2010-12-27 | 暗号処理装置および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2012090289A1 true JPWO2012090289A1 (ja) | 2014-06-05 |
JP5573964B2 JP5573964B2 (ja) | 2014-08-20 |
Family
ID=46382439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012550616A Expired - Fee Related JP5573964B2 (ja) | 2010-12-27 | 2010-12-27 | 暗号処理装置および方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9130745B2 (ja) |
JP (1) | JP5573964B2 (ja) |
WO (1) | WO2012090289A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016034912A1 (en) | 2014-09-05 | 2016-03-10 | Umm Al-Qura University | Method and apparatus for scalar multiplication secure against differential power attacks |
DE102014222825A1 (de) * | 2014-11-07 | 2016-05-12 | Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik | Vorrichtung und Verfahren zur Multiplikation zur Erschwerung von Seitenkanalangriffen |
CN105357010B (zh) * | 2015-10-08 | 2019-04-02 | 武汉理工大学 | 一种针对计算资源受限装置的密码运算方法 |
CA2984390A1 (en) * | 2016-11-07 | 2018-05-07 | Infosec Global Inc. | Elliptic curve isogeny-based cryptographic scheme |
US10341098B2 (en) * | 2017-01-24 | 2019-07-02 | Nxp B.V. | Method of generating cryptographic key pairs |
JP6834771B2 (ja) * | 2017-05-19 | 2021-02-24 | 富士通株式会社 | 通信装置および通信方法 |
FR3076013B1 (fr) * | 2017-12-21 | 2020-11-06 | Oberthur Technologies | Procede de traitement cryptographique, programme d’ordinateur et dispositif associes |
Family Cites Families (18)
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 | 株式会社 沖マイクロデザイン | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
JP3797808B2 (ja) | 1998-10-27 | 2006-07-19 | 富士通株式会社 | スカラー倍算方法およびその装置 |
JP2000165375A (ja) * | 1998-11-30 | 2000-06-16 | Hitachi Ltd | 情報処理装置、icカード |
JP3796993B2 (ja) * | 1998-12-22 | 2006-07-12 | 株式会社日立製作所 | 楕円曲線暗号実行方法及び装置並びに記録媒体 |
DE19963408A1 (de) * | 1999-12-28 | 2001-08-30 | Giesecke & Devrient Gmbh | Tragbarer Datenträger mit Zugriffsschutz durch Schlüsselteilung |
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 | 株式会社東芝 | べき乗剰余計算装置、べき乗剰余計算方法及び記録媒体 |
JP4199937B2 (ja) * | 2001-03-06 | 2008-12-24 | 株式会社日立製作所 | 耐タンパー暗号処理方法 |
JP4108391B2 (ja) | 2001-12-04 | 2008-06-25 | 富士通株式会社 | 秘密鍵を用いた耐タンパ暗号処理 |
JP4086503B2 (ja) * | 2002-01-15 | 2008-05-14 | 富士通株式会社 | 暗号演算装置及び方法並びにプログラム |
US20080019508A1 (en) * | 2005-05-03 | 2008-01-24 | Jesse Lipson | Public key cryptographic methods and systems with rebalancing |
FR2895609A1 (fr) * | 2005-12-26 | 2007-06-29 | Gemplus Sa | Procede cryptographique comprenant une exponentiation modulaire securisee contre les attaques a canaux caches, cryptoprocesseur pour la mise en oeuvre du procede et carte a puce associee |
US7925011B2 (en) * | 2006-12-14 | 2011-04-12 | Intel Corporation | Method for simultaneous modular exponentiations |
US7903814B2 (en) * | 2007-07-26 | 2011-03-08 | Samsung Electronics Co., Ltd. | Enhancing the security of public key cryptosystem implementations |
WO2009118795A1 (ja) * | 2008-03-28 | 2009-10-01 | 富士通株式会社 | サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法 |
EP2264939B1 (en) | 2008-03-31 | 2015-03-04 | Fujitsu Limited | Encrypting method having countermeasure function against power analyzing attacks |
JP5407352B2 (ja) * | 2009-01-19 | 2014-02-05 | 富士通株式会社 | 復号処理装置、復号処理プログラム、復号処理方法 |
-
2010
- 2010-12-27 WO PCT/JP2010/073636 patent/WO2012090289A1/ja active Application Filing
- 2010-12-27 JP JP2012550616A patent/JP5573964B2/ja not_active Expired - Fee Related
-
2013
- 2013-06-26 US US13/927,634 patent/US9130745B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2012090289A1 (ja) | 2012-07-05 |
JP5573964B2 (ja) | 2014-08-20 |
US20130287209A1 (en) | 2013-10-31 |
US9130745B2 (en) | 2015-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5488718B2 (ja) | 暗号処理装置、暗号処理方法、およびプログラム | |
JP5573964B2 (ja) | 暗号処理装置および方法 | |
JP4668931B2 (ja) | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 | |
JP5412274B2 (ja) | サイドチャネル攻撃からの保護 | |
US9772821B2 (en) | Cryptography method comprising an operation of multiplication by a scalar or an exponentiation | |
JP5001176B2 (ja) | 署名生成装置、署名生成方法及び署名生成プログラム | |
EP1946205B1 (en) | A method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems | |
JP5365624B2 (ja) | 電力解析攻撃への対策機能を備えた復号装置、プログラム、及び復装置を組み込んだ組込機器装置 | |
JPWO2005008955A1 (ja) | 個人鍵を用いた耐タンパ暗号処理 | |
JP2008252299A (ja) | 暗号処理システム及び暗号処理方法 | |
US20190089523A1 (en) | Countermeasure to safe-error fault injection attacks on cryptographic exponentiation algorithms | |
JP2011510579A (ja) | 署名ダイアグラムを用いた非対称暗号方式のための対策方法およびデバイス | |
JP2004163687A (ja) | 楕円曲線暗号装置、楕円曲線暗号プログラム | |
US11496447B1 (en) | Cryptosystem and method with efficient elliptic curve operators for an extraction of EiSi coordinate system | |
CN111480140B (zh) | 计算设备和方法 | |
Chen | FPGA implementation for elliptic curve cryptography over binary extension field | |
Liu et al. | A novel elliptic curve scalar multiplication algorithm against power analysis | |
JP2004053814A (ja) | 楕円曲線暗号装置及び楕円曲線暗号演算方法 | |
Kim et al. | SPA countermeasure based on unsigned left-to-right recodings | |
Joseph | Design and Implementation of High-speed Algorithms for Public-key Cryptosystems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140304 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140418 |
|
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: 20140603 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140616 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5573964 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |