JP4825199B2 - 情報セキュリティ装置及び楕円曲線演算装置 - Google Patents

情報セキュリティ装置及び楕円曲線演算装置 Download PDF

Info

Publication number
JP4825199B2
JP4825199B2 JP2007514728A JP2007514728A JP4825199B2 JP 4825199 B2 JP4825199 B2 JP 4825199B2 JP 2007514728 A JP2007514728 A JP 2007514728A JP 2007514728 A JP2007514728 A JP 2007514728A JP 4825199 B2 JP4825199 B2 JP 4825199B2
Authority
JP
Japan
Prior art keywords
elliptic curve
point
digit
doubling
multiplication
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
Application number
JP2007514728A
Other languages
English (en)
Other versions
JPWO2006118092A1 (ja
Inventor
裕一 布田
なつめ 松崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2007514728A priority Critical patent/JP4825199B2/ja
Publication of JPWO2006118092A1 publication Critical patent/JPWO2006118092A1/ja
Application granted granted Critical
Publication of JP4825199B2 publication Critical patent/JP4825199B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Description

本発明は、電力消費量の計測による電力解析攻撃に対抗でき、情報を安全、確実に扱うことができる情報セキュリティ技術に関する。
近年、ハードウェアあるいはソフトウェアにより実装された暗号モジュールにおいて暗号処理が行われる際に、当該暗号処理における様々な副情報を手がかりにして、当該暗号処理において用いられている暗号鍵の解析を行う各種の解読法が考案されている。
例えば、タイミング攻撃と呼ばれる解読方法では、暗号モジュールにおいて暗号処理に要する時間が、当該暗号処理において用いられている暗号鍵の値により、わずかではあるが異なることを利用して、当該暗号鍵の解読を行う。また、SimplePower Analysis(単純電力解析攻撃)、やDifferential Power Analysis(差分電力解析攻撃)と呼ばれる解読方法では、暗号処理を行う際の暗号モジュールにおける電力消費量を副情報として用いる。
これらの解読方法は、近年、高性能な計測機器が安価で手に入るようになった背景もあって、ICカードのような暗号モジュールが実装された実際の製品に対しても解析が可能であることが報告されている。
以下の記述では、上記のような暗号処理時における暗号モジュールの電力消費量の変化、すなわち、電力波形を手がかりにして、暗号鍵を解析する解読方法を総称して、「電力解析攻撃」と呼ぶ。なお、タイミング攻撃については、非特許文献1に、電力解析攻撃については、非特許文献2に詳しく述べられている。
次に、楕円曲線暗号への単純電力解析攻撃について説明する。なお、楕円曲線暗号については、非特許文献5に詳しく述べられており、また、楕円ElGamal暗号や楕円DSA署名方式に関しては、非特許文献3に詳しく述べられている。
(楕円曲線暗号の単純電力解析攻撃)
楕円曲線暗号の復号化処理において、正整数である秘密鍵ksと暗号文の一部である楕円曲線上の点Cのスカラ倍点ks*Cを計算する。ここで、ks*Cは、ks個の点Cを加算することにより得られる楕円曲線上の点を表す。この計算方法として例えば、非特許文献5の69ページにおける符号付Window法が知られている。以下では、符号付Window法について説明する。なお、以下では、Windowの幅を3ビットとする。
ステップS801:v←ksとし、v=v_0+v_1×2^3+v_2×2^6+・・・+v_b×2^(b×3)となるようにv_0,v_1,v_2,・・・,v_bをとる。さらに、v_(b+1)←0とする。ここで、bは(len/3以上の最も小さい整数)−1、lenはvのビット数、「×」は整数の乗算、x^yはxのy乗を示している。例えば、len=52の場合は、b=18−1=17である。
ステップS802:以下のステップS8021〜S8026で、整数列{w_i}(i=1,2,..,b+1)を生成する。
ステップS8021:c←0
ステップS8022:v_c>2^2であるか判定。v_c>2^2である場合、ステップS8023へ。それ以外は、ステップS8024へ。
ステップS8023:w_c←v_c−2^3,v_(c+1)←v_(c+1)+1,ステップS8025へ。
ステップS8024:w_c←v_c
ステップS8025:c←c+1
ステップS8026:c>b+1であるか判定。c>b+1である場合、ステップS803へ。それ以外は、ステップS8022へ。
ステップS803:以下のステップS8031〜S8035で、テーブル{P_i}を生成する。
ステップS8031:P_0←O,P_2←Dob(C)。ここで、Oは楕円曲線の零元であり、Dobは楕円曲線の2倍算を示し、Dob(C)はCの2倍点である。
ステップS8032:c←3
ステップS8033:P_c←P_(c−1)+C
ステップS8034:c←c+1
ステップS8035:c>2^2=4であるか判定。c>2^2である場合、ステップS804へ。それ以外は、ステップS8033へ。
ステップS804:以下のステップS8041〜S8047で、スカラ倍点Rを計算する。
ステップS8041:c←b+1
ステップS8042:w_c=0であるか判定。w_c=0である場合は、c←c−1。
ステップS8043:R←P_(w_c)
ステップS8044:c←c−1
ステップS8045:c<0であるか判定。c<0である場合は、ステップS805へ。
ステップS8046:R←Dob(Dob(Dob(P_(w_c))))
ステップS8047:w_cが正、負または0であるか判定する。w_c<0である場合は、R←Add(R,−P_(−w_c))、w_c>0である場合は、R←Add(R,P_(w_c))、w_c=0の場合は何もしない。ステップS8044へ。ここで、Addは、楕円曲線の加算であり、Add(R,P_(w_c))は、RとP_(w_c)とに対する楕円曲線の加算の結果である。
ステップS805:Rを出力し終了。
上記方法では、スカラ倍点を整数列{w_i}とテーブル{P_i}を用いて計算している。ステップS8047ではw_c=0の場合は、楕円曲線の演算を実行していない。また、ステップS8042では、w_c=0である場合は、楕円曲線の演算を行わず、cをデクリメントするため、その分、楕円曲線の演算を実行しないことになる。このように、w_c=0の場合は、そうでない場合と処理が異なる。
(楕円曲線の2倍算と楕円曲線の加算の公式)
以下に、楕円曲線の2倍算と楕円曲線の加算の公式を示す。この公式について非特許文献4に詳しく述べられている。ここでは、点の座標をJacobian座標として、楕円曲線の演算(加算及び2倍算)を行う。
(a)楕円曲線の加算公式
P1=(X1,Y1,Z1),P2=(X2,Y2,Z2)に対して、P3=P1+P2=(X3,Y3,Z3)とする。
X3=−H^3−2×U1×H^2+r^2
Y3=−S1×H^3+r×(U1×H^2−X3)
Z3=Z1×Z2×H
ただし、U1=X1×Z2^2,U2=X2×Z1^2,S1=Y1×Z2^3,S2=Y2×Z1^3、H=U1−U2,r=S2−S1である。
(b)楕円曲線の2倍算公式
P1=(X1,Y1,Z1)に対して、P4=2*P1=(X4,Y4,Z4)とする。
X4=T
Y4=−8×Y1^4+M×(S−T)
Z4=2×Y1×Z1
ただし、S=4×X1×Y1^2,M=3×X1^2+a×Z1^4,T=−2S+M^2である。
上記より、楕円曲線加算において、2乗算が4回実行され、乗算が12回実行される。それに比べて、楕円曲線2倍算では、2乗算が6回実行され、乗算が4回実行される。
このように、楕円曲線加算と楕円曲線2倍算とは、2乗算及び乗算の回数が異なるため、暗号モジュールにおける消費電力の波形が異なる。したがって、電力波形を観測することにより、楕円曲線の2倍算、加算の演算の順序を解析することが可能になる。その解析結果から、w_c=0の場合の有無を攻撃者が知ることができる。さらに、攻撃者は、w_c=0であるか否かの情報から秘密鍵ksの探索空間を狭めることが可能になる。
(従来の楕円曲線暗号の単純電力解析攻撃に対する対策方法)
上記の単純電力解析攻撃では、w_c=0の場合に計算処理が異なることを利用している。そこで、この攻撃から防御するためには、w_c=0の場合にダミーの計算処理を追加することにより、w_c=0の場合とそうでない場合の計算処理を同じにすればよい。具体的には、以下のアルゴリズムで計算する。
ステップS901:v←ks、v=v_0+v_1×2^3+v_2×2^6+…+v_b×2^(b×3)となるようにv_0,v_1,v_2,…,v_bをとる。さらにv_(b+1)←0とする。ここで、bは(len/3以上の最も小さい整数)−1、lenはvのビット数、“×”は整数の乗算、x^yはxのy乗を示している。例えば、len=52の場合は、b=18−1=17である。
ステップS902:以下のステップS9021〜S9026で、整数列{w_i}(i=1,2,..,b+1)を生成する。
ステップS9021:c←0
ステップS9022:v_c>2^2であるか判定。v_c>2^2である場合、ステップS9023へ。それ以外は、ステップS9024へ。
ステップS9023:w_c←v_c−2^3,v_(c+1)←v_(c+1)+1,ステップS9025へ。
ステップS9024:w_c←v_c
ステップS9025:c←c+1
ステップS9026:c>b+1であるか判定。c>b+1である場合、ステップS903へ。それ以外は、ステップS9022へ。
ステップS903:以下のステップS9031〜S9035で、テーブル{P_i}を生成する。
ステップS9031:P_0←O,P_2←Dob(C)。
ステップS9032:c←3
ステップS9033:P_c←P_(c−1)+C
ステップS9034:c←c+1
ステップS9035:c>2^2=4であるか判定。c>2^2である場合、ステップS904へ。それ以外は、ステップS9033へ。
ステップS904:以下のステップで、スカラ倍点Rを計算。
ステップS9041:c←b+1
ステップS9042:w_c=0であるか判定。w_c=0である場合は、D←Dob(Dob(Dob(C))),D←Add(R,C),c←c−1。
ステップS9043:R←P_(w_c)
ステップS9044:c←c−1
ステップS9045:c<0であるか判定。c<0である場合は、ステップS905へ。
ステップS9046:R←Dob(Dob(Dob(P_(w_c))))
ステップS9047:w_cが正、負または0であるか判定する。w_c<0である場合は、R←Add(R,−P_(−w_c))、w_c>0である場合は、R←Add(R,P_(w_c))、w_c=0の場合は、D←Add(R,C)。ステップS9044へ。ここで、Addは、楕円曲線の加算であり、Add(R,P_(w_c))は、RとP_(w_c)とに対する楕円曲線の加算の結果である。
ステップS905:Rを出力し終了。
上記単純電力攻撃に対する対策方法では、Dは計算結果に関係しないダミーの点であり、ステップS9042及びステップS9047で実行するQの演算はダミー演算となる。ステップS9042ではw_c=0の場合は、3回のダミーの楕円曲線2倍算と1回のダミーの楕円曲線加算を実行する。w_c=0でない場合においても、ステップS9046の3回の楕円曲線2倍算、ステップS9047で1回の楕円曲線加算を実行するため、w_c=0の場合と、w_c≠0の場合で同じ演算を実行していることになる。また、ステップS9047においてw_c=0の場合はダミーの加算を実行しており、w_c≠0の場合と同じ演算を実行していることになる。
したがって、上記単純電力攻撃に対する対策方法では、w_c=0の場合も、w_c≠0の場合と同じ演算を実行するため、電力波形が同じになり、攻撃者がw_c=0であるか否かの情報を電力波形から知ることができなくなる。
Paul C. Kocher, " Timing attacks on implementations ofDiffie-Hellman,RSA,DSS,and Other Systems " ,In Neal Koblitz, editor,CRYPTO'96, LNCS 1109, Springer-Verlag,1996,pp.104-113. P. Kocher,J. Jaffe,and B. Jun," Differential PowerAnalysis" ,Advances in Cryptology -CRYPTO '99,LNCS,1666,Springer-Verlag,1999,pp.388-397. 岡本龍明、山本博資、「現代暗号」、産業図書(1997年) A. Miyaji,T. Ono and H. Cohen,"Efficient elliptic curveexponentiation",ICICS'97,Springer-Verlag,1999,pp.282-291. I.Blake,G.Seroussi and N.Smart,"Elliptic Curves inCryptography",London Mathematical Society Lecture Note Series265,CAMBRIDGE UNIVERSITY PRESS,1999
上述した単純電力攻撃に対する対策方法では、P_1=P以外にP_2,P_3,P_4の3点をテーブルに格納している。しかしながら、ICカードなどのリソースが限られている状況では、テーブル量を小さくしたいとの要望がある。
本発明は、単純電力解析攻撃に対する耐性は保持しつつ、使用するテーブル量を削減することができる情報セキュリティ装置、楕円曲線演算装置、方法及びコンピュータプログラムを提供することを目的とする。
上記目的を達成するために、本発明は、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全又は確実に扱う情報セキュリティ装置であって、楕円曲線E上の点Cを記憶している点記憶手段と、係数kの全桁の値を記憶している桁記憶手段と、桁記憶手段から1個の桁の値wを取得する取得手段と、取得した前記桁により表現しうる値の種類の数と同数の乗算手段と、取得した前記桁の値wに対応する乗算手段を選択する選択手段と、係数kの全ての桁について、前記取得手段、前記選択手段及び前記乗算手段に対して、1個の桁の値wの取得と、取得した桁の値wに対応する乗算手段の選択と、選択された乗算手段による乗算とを繰り返すように制御する繰返制御手段とを備え、各乗算手段は、楕円曲線E上において、前記点Cに取得した前記桁の値wを乗じて得られた乗算結果を、当該桁に相応する位置において加算し、取得した前記桁の値wが2tで割り切れ、2t+1 で割り切れない条件を満たす非負整数tが存在する場合に、当該桁の値wに対応する前記乗算手段は、楕円曲線E上において、点Qにw/2tを乗じて得られる点の加算又は点Qに|w/2t |を乗じて得られる点の減算を含む演算を行うことを特徴とする。
ここで、点記憶手段は、実施の形態の被演算値格納部224に相当し、桁記憶手段は、分割情報格納部223に相当し、取得手段は、取得部241に相当し、選択手段は、選択部242に相当し、複数の乗算手段は、それぞれ、Window演算部251〜258に相当し、繰返制御手段は、繰返制御部243に相当する。また、実施の形態におけるWindowを、ここでは、桁と表現している。
この構成によると、当該桁の値wに対応する前記乗算手段は、楕円曲線E上において、点Qにw/2t を乗じて得られる点の加算又は点Qに|w/2t|を乗じて得られる点の減算を含む演算を行うので、例えば、各桁のビット長が3である場合に、加算又は減算で用いられる点は、Cを除いて、3*Cのみであり、各桁のビット長が4である場合に、加算又は減算で用いられる点は、Cを除いて、3*C、5*C及び7*Cのみである。
従来技術によると、例えば、各桁のビット長が3である場合に、加算又は減算で用いられる点は、Cを除いて、2*C、3*C及び4*Cであり、各桁のビット長が4である場合に、加算又は減算で用いられる点は、点Cを除いて、2*C、3*C、4*C、5*C、6*C、7*C及び8*Cである。
このように、本発明によると、従来技術と比較して、加算又は減算において用いられる点を少なくすることができ、使用するテーブル量を削減することができる。
ここで、取得した前記桁は、swビット長であり、前記非負整数tが存在する場合に、前記桁の値wに対応する前記乗算手段は、(sw+1)回の演算を順次行い、前記複数の演算のうち(sw−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算であるとしてもよい。
この構成によると、従来技術における場合と同じ演算結果が得られ、かつ、加算又は減算において用いる点の数を少なくすることができる。
ここで、前記情報セキュリティ装置は、さらに、点Qを初期の加算点とし、加算点へ2*Qを加算して新たな加算点を得ることを繰り返すことにより、点Qを除く2sw-1個の加算点を生成するテーブル生成手段を含み、非負整数tが存在する場合に、当該桁の値wに対応する前記乗算手段は、点Qにw/2t 又は|w/2t|を乗じて得られる点として、前記テーブル生成手段により生成された前記加算点を用いるとしてもよい。
この構成によると、テーブル生成手段により2sw-1 個の加算点が算出されているので、乗算手段における演算回数を減らすことができる。
ここで、取得した前記桁は、3ビット長であり、前記桁の値wが2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、加算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、前記桁の値wが4である場合に、対応する乗算手段は、楕円曲線E上の2倍算、加算、2倍算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、前記桁の値wが−2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、減算及び2倍算をこの順序で行い、前記減算は、前記点Cを減ずる演算であるとしてもよい。
この構成によると、加算又は減算で用いられる点は、Cを除いて、3*Cのみであり、従来技術と比較して、使用するテーブル量を削減することができる。
ここで、取得した前記桁は、4ビット長であり、前記桁の値wが2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、2倍算、加算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、前記桁の値wが4である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、加算、2倍算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、前記桁の値wが6である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、2倍算、加算及び2倍算をこの順序で行い、前記加算は、点3*Cを加える演算であり、前記桁の値wが8である場合に、対応する乗算手段は、楕円曲線E上の2倍算、加算、2倍算、2倍算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、前記桁の値wが−6である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、2倍算、減算及び2倍算をこの順序で行い、前記減算は、点3*Cを減ずる演算であり、前記桁の値wが−4である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、減算、2倍算及び2倍算をこの順序で行い、前記減算は、点Cを減ずる演算であり、前記桁の値wが−2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、2倍算、減算及び2倍算をこの順序で行い、前記減算は、点Cを減ずる演算であるとしてもよい。
この構成によると、加算又は減算で用いられる点は、Cを除いて、3*C、5*C及び7*Cのみであり、従来技術と比較して、使用するテーブル量を削減することができる。
ここで、前記加算又は前記減算及び前記2倍算は、それぞれ、同じ順序で同じ種類の演算を実行するように、ダミーの演算を含むとしてもよい。
この構成によると、加算又は減算及び2倍算は、それぞれ、同じ順序で同じ種類の演算を実行するので、電力波形を手がかりにして、解析しようとしても、加算又は減算及び2倍算において、同様の電力波形が出力され、2者を明確に区別することが困難となる。こうして、電力解析攻撃に対抗することができる。
ここで、取得した前記桁がaビット長である場合に、前記非負整数tが存在するときに、前記桁の値wに対応する前記乗算手段は、(a+1)回の演算を順次行い、前記複数の演算のうち(a−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算であり、取得した前記桁がbビット長である場合に、前記非負整数tが存在するときに、前記桁の値wに対応する前記乗算手段は、(b+1)回の演算を順次行い、前記複数の演算のうち(b−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算であるとしてもよい。
この構成によると、異なるビット長の桁が混在すると想定する場合においても演算を行うことができる。
ここで、前記情報セキュリティ装置は、暗号化装置であって、点k*Cを算出する楕円曲線演算を用いて、情報を暗号化するとしてもよい。
この構成によると、情報の暗号化の際の電力解析攻撃に対抗することができる。
ここで、前記情報セキュリティ装置は、復号装置であって、点k*Cを算出する楕円曲線演算を用いて、暗号化された情報を復号するとしてもよい。
この構成によると、暗号化された情報を復号する際の電力解析攻撃に対抗することができる。
ここで、前記情報セキュリティ装置は、デジタル署名生成装置であって、点k*Cを算出する楕円曲線演算を用いて、情報にデジタル署名を施すとしてもよい。
この構成によると、デジタル署名の生成の際の電力解析攻撃に対抗することができる。
ここで、前記情報セキュリティ装置は、デジタル署名検証装置であって、点k*Cを算出する楕円曲線演算を用いて、デジタル署名の検証を行うとしてもよい。
この構成によると、デジタル署名の検証の際の電力解析攻撃に対抗することができる。
ここで、前記情報セキュリティ装置は、鍵共有装置であって、点k*Cを算出する楕円曲線演算を用いて、他の鍵共有装置との間で、共有する鍵を生成するとしてもよい。
この構成によると、鍵共有の際の電力解析攻撃に対抗することができる。
また、本発明は、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算装置であって、楕円曲線E上の点Cを記憶している点記憶手段と、係数kの全桁の値を記憶している桁記憶手段と、桁記憶手段から1個の桁の値wを取得する取得手段と、取得した前記桁により表現しうる値の種類の数と同数の乗算手段と、取得した前記桁の値wに対応する乗算手段を選択する選択手段と、係数kの全ての桁について、前記取得手段、前記選択手段及び前記乗算手段に対して、1個の桁の値wの取得と、取得した桁の値wに対応する乗算手段の選択と、選択された乗算手段による乗算とを繰り返すように制御する繰返制御手段とを備え、各乗算手段は、楕円曲線E上において、前記点Cに取得した前記桁の値wを乗じて得られた乗算結果を、当該桁に相応する位置において加算し、取得した前記桁の値wが2tで割り切れ、2t+1 で割り切れない条件を満たす非負整数tが存在する場合に、当該桁の値wに対応する前記乗算手段は、楕円曲線E上において、点Qにw/2tを乗じて得られる点の加算又は点Qに|w/2t |を乗じて得られる点の減算を含む演算を行うことを特徴とする。
この構成によると、従来技術と比較して、加算において用いられる点を少なくすることができ、使用するテーブル量を削減することができる。
以上説明したように、本発明の情報セキュリティ装置及び楕円曲線演算装置によると、単純電力解析攻撃の耐性を保持しつつ、従来技術と比較して、使用するテーブル量を削減することができるという優れた効果を奏する。
1.実施の形態1
本発明に係る1の実施の形態としてのポイント発行システム10について説明する。
1.1 ポイント発行システム10の構成
ポイント発行システム10は、図1に示すように、ICカード100及びポイント発行装置200から構成されている。
ポイント発行装置200の操作者によりICカード100がポイント発行装置200に装着され、ポイント発行装置200は、ポイントを生成し、生成したポイントに暗号化アルゴリズムを施して暗号化ポイントを生成し、生成した暗号化ポイントをICカード100へ送信する。
ここで、ポイントは、利用者が商品を購入したりサービスの提供を受けた場合に、販売者やサービス提供者から受け取る特典情報であり、次に利用者が商品を購入したりサービスの提供を受ける際に、販売者やサービス提供者への対価の支払いの一部又は全部として利用される。
ICカード100は、暗号化ポイントを受け取り、受け取った暗号化ポイントに前記暗号化に対応する復号アルゴリズムを施して、復号ポイントを生成し、生成した復号ポイントを内部に記憶する。
ポイント発行装置200及びICカード100は、それぞれ、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全に扱う情報セキュリティ装置である。
ここで、情報を安全に扱うとは、例えば、情報を二者間で通信する場合において、当該情報が第三者に知られないようにすることを言い、この通信は、秘密の通信とも呼ばれる。
1.2 公開鍵暗号方式と離散対数問題
本実施の形態では、上記の暗号アルゴリズム及び復号アルゴリズムは、楕円曲線上の演算を用いる公開鍵暗号方式によるものである。
公開鍵暗号方式を用いる秘密通信では、暗号化鍵と復号化鍵とが異なり、復号化鍵は秘密にするが、暗号化鍵は公開する。
この公開鍵暗号方式の安全性の根拠として、楕円曲線上において定義される離散対数問題が用いられる。なお、離散対数問題については、ニイルコブリッツ著 ”ア コウス イン ナンバア セオリイ アンド クリプトグラヒイ”(NealKoblitz , " A Course in Number theory and Cryptography",Springer-Verlag,1987)に詳しく述べられている。
次に、楕円曲線上の離散対数問題について、以下に述べる。
楕円曲線上の離散対数問題とは、
E(GF(p))を有限体GF(p)上で定義された楕円曲線とし、楕円曲線Eの位数が大きな素数で割り切れる場合に、楕円曲線Eに含まれる元Gをベースポイントとする。このとき、楕円曲線Eに含まれる与えられた元Yに対して、
Y=x*G
となる整数xが存在するならば、xを求めよ、という問題である。
ここで、pは素数、GF(p)はp個の元を持つ有限体である。また、この明細書において、記号*は、楕円曲線に含まれる元を複数個加算する演算を示し、x*Gは、次式に示すように、楕円曲線に含まれる元Gをx個加算することを意味する。
x*G=G+G+G+・・・+G
離散対数問題を公開鍵暗号の安全性の根拠とするのは、多くの元を有する有限体GF(p)に対して、上記問題は極めて難しいからである。
1.3 ポイント発行装置200の構成
ポイント発行装置200は、図1に示すように、公開鍵記憶部201、暗号処理部202、通信部203、制御部204、情報記憶部205、入力受付部206、表示部207及び楕円曲線演算部208から構成されている。
また、楕円曲線演算部208は、図2に示すように、入力部230、べき倍係数格納部221、分割情報生成部222、分割情報格納部223、被演算値格納部224、テーブル生成部225、楕円曲線加算部226、楕円曲線2倍算部227、テーブル格納部228、スカラ倍演算部229及び出力部231から構成されている。
ポイント発行装置200は、ポイントを生成し、生成したポイントを暗号化してICカード100に書き込む装置であるとともに、商品の販売の際に、販売額を計算し、計算した販売額を表示し、レシートを印刷し、生成した前記ポイントを内部に記憶し、利用者から支払われる代金の保管などを行う金銭レジスタ装置でもある。
ポイント発行装置200は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、キーボードなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、ポイント発行装置200は、その一部の機能を達成する。
(1)情報記憶部205及び公開鍵記憶部201
情報記憶部205は、素数p、素数pを法とする剰余体Fp上で定義された楕円曲線E(Fp)上のベースポイントB及び楕円曲線E(Fp)の係数を記憶している。また、生成されたポイントPmを記憶するための領域を備えている。
前記楕円曲線E(Fp)は、一例として、y2=x3+a×x+bであり、前記係数は、a及びbである。
公開鍵記憶部201は、後述する秘密鍵(私有鍵)ksに対応して生成された公開鍵Kpを記憶している。ここで、公開鍵Kpは、ICカード100又は鍵管理装置により、以下に示す式により算出されたものである。
公開鍵Kp=秘密鍵ks*ベースポイントB
(2)制御部204
制御部204は、前記特典情報としてのポイントPmを生成し、生成したポイントPmを情報記憶部205に書き込む。次に、暗号処理部202に対して、ポイントPmを暗号化してICカード100へ送信することを示す指示を出力する。
(3)通信部203、入力受付部206及び表示部207
通信部203は、暗号処理部202又は制御部204の制御の基に、ICカード100との間で、情報の送受信を行う。
入力受付部206は、ポイント発行装置200の操作者からの情報又は指示の入力を受け付け、入力を受け付けた情報又は指示を制御部204へ出力する。
表示部207は、制御部204の制御により、様々な情報を表示する。
(4)暗号処理部202
暗号処理部202は、制御部204から、ポイントPmを暗号化してICカード100へ送信することを示す指示を受け取る。
前記指示を受け取ると、暗号処理部202は、乱数rを生成し、ベースポイントBを情報記憶部205から読み出し、次に、生成した乱数rをべき倍係数kとして、楕円曲線演算部208の入力部230へ出力し、読み出したベースポイントBを被べき倍点Cとして、入力部230へ出力する。次に、楕円曲線演算部208の出力部231から、演算結果としてべき倍点k*C=r*Bを受け取り、第1暗号文s1=べき倍点r*Bとする。
次に、暗号処理部202は、公開鍵記憶部201から公開鍵Kpを読み出し、次に、生成した乱数rをべき倍係数kとして、入力部230へ出力し、読み出した公開鍵kpを被べき倍点Cとして、入力部230へ出力する。次に、出力部231から、演算結果としてべき倍点k*C=r*Kpを受け取る。
次に、暗号処理部202は、情報記憶部205からポイントPmを読み出し、読み出したポイントPmと受け取ったべき倍点r*Kpのx座標値とに排他的論理和を施して、第2暗号文s2=ポイントPm xor (べき倍点r*Kpのx座標値)を生成する。ここで、「xor」は、排他的論理和を示す演算子である。
次に、暗号処理部202は、生成した第1暗号文s1及び第2暗号文s2を通信部203を介して、ICカード100へ送信する。
(5)楕円曲線演算部208
楕円曲線演算部208は、上述したように、入力部230、べき倍係数格納部221、分割情報生成部222、分割情報格納部223、被演算値格納部224、テーブル生成部225、楕円曲線加算部226、楕円曲線2倍算部227、テーブル格納部228、スカラ倍演算部229及び出力部231から構成されている。
(5−1)べき倍係数格納部221及び被演算値格納部224
べき倍係数格納部221は、ただ1個のべき倍係数kを記憶するための領域を備えている。べき倍係数kは、スカラであり、べき倍係数kのビット数は、lenであるとする。
また、被演算値格納部224は、ただ1個の被べき倍点Gを記憶するための領域を備えている。被べき倍点Gは、楕円曲線上の点である。
(5−2)入力部230及び出力部231
入力部230は、暗号処理部202からべき倍係数kを受け取り、べき倍係数格納部221に既にべき倍係数が記憶されている場合には、受け取ったべき倍係数kをべき倍係数格納部221において上書きし、べき倍係数格納部221にべき倍係数が記憶されていない場合には、受け取ったべき倍係数kをべき倍係数格納部221に書き込む。
また、入力部230は、暗号処理部202から被べき倍点Cを受け取り、被演算値格納部224に既に被べき倍点が記憶されている場合には、受け取った被べき倍点Cを被演算値格納部224において上書きし、被演算値格納部224に被べき倍点が記憶されていない場合には、受け取った被べき倍点Cを被演算値格納部224に書き込む。
出力部231は、スカラ倍演算部229からべき倍点k*Cを受け取り、受け取ったべき倍点k*Cを暗号処理部202へ出力する。
(5−3)分割情報格納部223
分割情報格納部223は、後述する(b+1)個の整数w_i(i=1、2、3、・・・、b+1)からなる整数列{w_i}を記憶するための領域を備えている。
(5−4)分割情報生成部222
分割情報生成部222は、べき倍係数格納部221からべき倍係数kを読み出し、以下に示すようにして、読み出したべき倍係数kから分割情報である整数w_i(i=1、2、3、・・・、b+1)からなる整数列{w_i}を生成する。
ここで、w_iは、swビットの符号付整数値である。swは、符号付Window法によるWindowの幅であり、一例として、sw=3である。この場合、w_iは「−3」、「−2」、「−1」、「0」、「1」、「2」、「3」及び「4」のいずれかの値を取る。bは、「(len/sw以上の最も小さい整数)−1」であり、lenは、後述する変数vのビット数であり、「×」は、整数の乗算を示す演算子であり、「x^y」は、xのy乗を示す演算である。
例えば、len=52の場合は、b=18−1=17である。なお、以下では、一例として、sw=3としているが、swは、「2」でもよいし、「4」以上でもよい。
分割情報生成部222の動作について、図3に示すフローチャートを用いて説明する。
分割情報生成部222は、べき倍係数kを変数vに代入し(v←ks)、v=v_0+v_1×2^sw+v_2×2^(2×sw)+・・・+v_b×2^(b×sw)となるように、v_0,v_1,v_2,・・・,v_bをとる。さらにv_(b+1)←0とする(ステップS131)。ここで、v_i(i=0、1、2、・・・、b)は、swビットである。
次に、分割情報生成部222は、カウンタ変数cに0を代入する(c←0)(ステップS132)。
次に、分割情報生成部222は、v_c>2^(sw−1)であるか判定し、v_c>2^(sw−1)である場合(ステップS133でYES)、w_c←v_c−2^3及びv_(c+1)←v_(c+1)+1を算出する(ステップS134)。v_c≦2^(sw−1)である場合(ステップS133でNO)、w_cへv_cを代入する(w_c←v_c)(ステップS135)。
次に、分割情報生成部222は、c←c+1を算出する(ステップS136)。
次に、分割情報生成部222は、c>b+1であるか否かを判定し、c>b+1である場合(ステップS137でYES)、整数列{w_i}を分割情報として分割情報格納部223に格納し(ステップS138)、分割情報の生成の処理を終了する。c≦b+1である場合(ステップS137でNO)、ステップS133へ戻って処理を繰り返す。
(5−5)楕円曲線加算部226及び楕円曲線2倍算部227
楕円曲線加算部226は、テーブル生成部225又はスカラ倍演算部229から、楕円曲線上の2点P1=(X1,Y1,Z1)及びP2=(X2,Y2,Z2)並びにこれらの点の加算の指示を受け取り、受け取ったP1=(X1,Y1,Z1)及びP2=(X2,Y2,Z2)に対して、以下に示すようにして、P1とP2とを楕円曲線上で加算して点P3=P1+P2=(X3,Y3,Z3)を計算し、次に、計算した点P3をテーブル生成部225又はスカラ倍演算部229へ出力する。
また、楕円曲線2倍算部227は、テーブル生成部225又はスカラ倍演算部229から、楕円曲線上の点P1=(X1,Y1,Z1)及び点P1の2倍算の指示を受け取り、受け取った点P1=(X1,Y1,Z1)に対して、以下に示すようにして、楕円曲線上で点P1に2倍算を施して、点P1の2倍点である点P4=2*P1=(X4,Y4,Z4)を計算し、次に、計算した点P4をテーブル生成部225又はスカラ倍演算部229へ出力する。
(楕円曲線加算部226による加算の詳細及び楕円曲線2倍算部227による2倍算の詳細)
本実施の形態では、楕円曲線加算部226及び楕円曲線2倍算部227において使用される演算及びその順序が同じになるように、ダミー演算が追加される。
以下では、ダミー演算が「ダミー演算である」と明確に分かるようにするため、ダミー演算を結果の代入先を変数Dにより示す。なお、本実施の形態で使用する楕円曲線加算及び楕円曲線2倍算はJacobian座標に対するものである。Jacobian座標については非特許文献4に詳しく述べられている。
楕円曲線加算部226及び楕円曲線2倍算部227の詳細の演算について説明する前に、使用される演算関数を以下に定義する。
・Sqr(X):Xの2乗算を示す。
・Mul(X,Y):XとYの乗算を示す。なお、X=Yの場合においても、Mul(X,Y)と記載している場合は、Sqr(X)を用いて2乗算を行うのではなく、同じXの乗算として計算を行う。
・Mul2(X):Xと2との乗算を示す。
・Mul3(X):Xと3との乗算を示す。
・Mul4(X):Xと4との乗算を示す。
・Mul8(X):Xと8との乗算を示す。
・Sub(X,Y)XからYを引く減算を示す。
(楕円曲線加算部226による加算の動作)
以下に、楕円曲線加算部226による加算の動作を、図4及び図5に示すフローチャートを用いて説明する。
楕円曲線加算部226は、以下に示すステップに従って、加算を行う。
Z22←Sqr(Z2) (ステップS401)、
D←Mul4(X1) (ステップS402)、
U1←Mul(X1,Z22) (ステップS403)、
Z12←Sqr(Z1) (ステップS404)、
D←Mul2(Y1) (ステップS405)、
Z13←Mul(Z22,Z1) (ステップS406)、
Z23←Mul(Z22,Z2) (ステップS407)、
U2←Mul(X2,Z12) (ステップS408)、
S1←Mul(Y1,Z23) (ステップS409)、
S2←Mul(Y2,Z13) (ステップS410)、
D←Mul3(Z12) (ステップS411)、
H←Sub(U2,U1) (ステップS412)、
H2←Sqr(H) (ステップS413)、
U1H←Mul(U1,H2) (ステップS414)、
U2H←Mul2(U1H) (ステップS415)、
r←Sub(S2,S1) (ステップS416)、
r2←Sqr(r) (ステップS417)、
D←Mul8(r) (ステップS418)、
UHX←Sub(U1H,X3) (ステップS419)、
H3←Mul(H2,H) (ステップS420)、
S1H3←Mul(S1,H3) (ステップS421)、
rH←Sub(r2,H3) (ステップS422)、
X3←Sub(rH,U2H) (ステップS423)、
Z1Z2←Mul(Z1,Z2) (ステップS424)、
Z3←Mul(Z1Z2,H) (ステップS425)、
rU←Mul(r,UHX) (ステップS426)、
Y3←Sub(rU,S1H3) (ステップS427)。
(楕円曲線2倍算部227による2倍算の動作)
以下に、楕円曲線2倍算部227による2倍算の動作を、図4及び図5に示すフローチャートを用いて説明する。
楕円曲線加算部226は、以下に示すステップに従って、2倍算を行う。
Y12←Sqr(Y1) (ステップS501)、
X41←Mul4(X1) (ステップS502)、
S←Mul(X41,Y12) (ステップS503)、
X12←Sqr(X1) (ステップS504)、
Y21←Mul2(Y1) (ステップS505)、
Z4←Mul(Y21,Z1) (ステップS506)、
Z12←Mul(Z1,Z1) (ステップS507)、
Z14←Mul(Z12,Z12) (ステップS508)、
D←Mul(Y1,Z12) (ステップS509)、
aZ14←Mul((−a),Z14) (ステップS510)、
X32←Mul3(X12) (ステップS511)、
M←Sub(X32,aZ14) (ステップS512)、
M2←Sqr(M) (ステップS513)、
D←Mul(S,M2) (ステップS514)、
S2←Mul2(S) (ステップS515)、
X4←Sub(M2,S2) (ステップS516)、
Y14←Sqr(Y12) (ステップS517)、
Y814←Mul8(Y14) (ステップS518)、
ST←Sub(S,X4) (ステップS519)、
MST←Mul(M,ST) (ステップS520)、
D←Mul(D,MST) (ステップS521)、
Y4←Sub(MST,Y814) (ステップS522)、
D←Sub(Y4,S2) (ステップS523)、
D←Mul(Z1,Z12) (ステップS524)、
D←Mul(D,M) (ステップS525)、
D←Mul(X4,ST) (ステップS526)、
D←Sub(D,Y4) (ステップS527)。
なお、ステップS510で現れる(−a)は、楕円曲線の方程式をy^2=x^3+a×x+bとしたときのパラメータaの負の値であり、予め計算しておく。
図4及び図5に示すように、楕円曲線加算部226と楕円曲線2倍算部227とは、同じ順序で同じ演算を実行していることがわかる。
(5−6)テーブル格納部228
テーブル格納部228は、テーブル生成部225により生成された楕円曲線上の点を1個以上格納するための領域を備えている。
(5−7)テーブル生成部225
テーブル生成部225は、以下に説明するように、楕円曲線上の点からなるテーブル{P_i}を生成し、生成したテーブル{P_i}をテーブル格納部228へ格納する。
ここで、テーブル{P_i}は、1個以上の楕円曲線上の点P_i(i=1、2、3、・・・)を含む。
テーブル生成部225によるテーブル{P_i}の生成の動作について、図6に示すフローチャートを用いて、説明する。
テーブル生成部225は、被演算値格納部224から、被べき倍点Cを読み出し、テーブル生成部225は、P_1←C及びQ←ECD(C)を演算する(ステップS141)。
ここで、ECDは、楕円曲線上の2倍算を示し、楕円曲線2倍算部227を用いて計算することを示している。例えば、ECD(A)は、楕円曲線上の点Aに対して算出された2倍算の演算結果を示し、ECD(A)=2*Aである。テーブル生成部225は、楕円曲線2倍算部227に対して、楕円曲線上の点C及び2倍算の指示を出力し、楕円曲線2倍算部227から2倍算の演算結果を受け取る。
次に、テーブル生成部225は、カウンタ変数iに対して、i←1を算出する(ステップS142)。
次に、テーブル生成部225は、i←i+1を算出し(ステップS143)、2sw-2 を算出し、i>2sw-2 であるか否かを判断する。i>2sw-2である場合には(ステップS144)、テーブル生成の処理を終了する。
i>2sw-2 でない場合には(ステップS144)、テーブル生成部225は、P_i←ECA(P_(i−1),Q)を算出する。つまり、ECA(P_(i−1),Q)=P_(i−1)+Qを算出する(ステップS145)。
ここで、ECAは、楕円曲線上の加算を示し、楕円曲線加算部226を用いて計算することを示している。例えば、ECA(A,B)は、楕円曲線上の点A及び点Bに対して算出された加算の演算結果を示し、ECD(A)=A+Bである。テーブル生成部225は、楕円曲線加算部226に対して、楕円曲線上の点A及び点B並びに加算の指示を出力し、楕円曲線加算部226から加算の演算結果を受け取る。
次に、テーブル生成部225は、P_iをテーブル格納部228に格納し(ステップS146)、ステップS143へ戻って処理を繰り返す。
上記の処理より、P_i=(2×i−1)*Cとなっていることがわかる。
sw=3、4及び5の場合において、テーブル生成部225により生成されるテーブル{P_i}の一例を、それぞれ、図7、図8及び図9に示す。
sw=3の場合には、図7に示すように、テーブル311{P_i}={3C}である。また、sw=4の場合には、図8に示すように、テーブル312{P_i}={3C、5C、7C}である。さらに、sw=5の場合には、図9に示すように、テーブル313{P_i}={3C、5C、7C、9C、11C、13C、15C}である。
(5−8)スカラ倍演算部229
スカラ倍演算部229は、分割情報格納部223に格納されている整数列{w_i}とテーブル格納部228に格納されているテーブル{P_i}を用いて、以下に示すようにして、べき倍係数kに対して、k倍した点k*Cを計算する。
スカラ倍演算部229は、図18に示すように、取得部241、選択部242、繰返制御部243、Window演算部251、252、253、254、255、256、257、258、初期演算部244、レジスタ部245及び演算値出力部246から構成されている。
スカラ倍演算部229による演算の手順について、図10〜図11に示すフローチャートを用いて説明する。
なお、下記の説明において、ECAは、楕円曲線加算部226による加算である。スカラ倍演算部229は、加算を行う際に、楕円曲線加算部226に対して、楕円曲線上の2点及び加算の指示を出力し、楕円曲線加算部226から加算の演算結果を受け取る。また、ECDは、楕円曲線2倍算部227による2倍算である。スカラ倍演算部229は、2倍算を行う際に、楕円曲線2倍算部227に対して、楕円曲線上の1点及び2倍算の指示を出力し、楕円曲線2倍算部227から2倍算の演算結果を受け取る。
また、下記においては、一例としてWindowの幅が「3ビット」であるものとして、つまり、sw=3であるとして、説明している。
スカラ倍演算部229の初期演算部244は、c←b+1を算出する(ステップS151)。ここで、cは、処理回数を計数するカウンタ変数であり、レジスタ部245が有するレジスタにより構成されている。bは、上述したように、「(len/sw以上の最も小さい整数)−1」である。レジスタ部245は、また、後述する変数D及び変数Rをそれぞれ構成する2個のレジスタを有している。
次に、スカラ倍演算部229の初期演算部244は、w_c=0であるか否かを判定する。w_c=0である場合(ステップS152)、D←ECD(C),D←ECD(D),D←ECD(D),D←ECA(R,C),c←c−1を演算する(ステップS153)。
次に、取得部241は、P_(w_c)を取得し、スカラ倍演算部229の初期演算部244は、R←P_(w_c)を演算し(ステップS154)、繰返制御部243は、c←c−1を演算する(ステップS155)。
次に、スカラ倍演算部229の繰返制御部243は、c<0であるか否かを判定し、c<0である場合は(ステップS156)、演算値出力部246は、Rを出力部231へ出力し(ステップS158)、演算処理を終了する。
c≧0である場合は(ステップS156)、取得部241は、P_(w_c)を取得し、スカラ倍演算部229の選択部242は、w_cの値に応じて(ステップS157)、以下の処理を行う。
w_c=−3の場合(ステップS157)、選択部242は、Window演算部251を選択し、Window演算部251は、R←ECD(R),R←ECD(R),R←ECD(R),R←ECA(R,−P_2)を演算する(ステップS161)。
w_c=−2の場合(ステップS157)、選択部242は、Window演算部252を選択し、Window演算部252は、R←ECD(R),R←ECD(R),R←ECA(R,−P_1),R←ECD(R)を演算する(ステップS162)。
w_c=−1の場合(ステップS157)、選択部242は、Window演算部253を選択し、Window演算部253は、R←ECD(R),R←ECD(R),R←ECD(R),R←ECD(R,−P_1)を演算する(ステップS163)。
w_c=0の場合(ステップS157)、選択部242は、Window演算部254を選択し、Window演算部254は、R←ECD(R),R←ECD(R),R←ECD(R),D←ECA(R,P_1)を演算する(ステップS164)。
w_c=1の場合(ステップS157)、選択部242は、Window演算部255を選択し、Window演算部255は、R←ECD(R),R←ECD(R),R←ECD(R),R←ECA(R,P_1)を演算する(ステップS165)。
w_c=2の場合(ステップS157)、選択部242は、Window演算部256を選択し、Window演算部256は、R←ECD(R),R←ECD(R),R←ECA(R,P_1),R←ECD(R)を演算する(ステップS166)。
w_c=3の場合(ステップS157)、選択部242は、Window演算部257を選択し、Window演算部257は、R←ECD(R),R←ECD(R),R←ECD(R),R←ECA(R,P_2)を演算する(ステップS167)。
w_c=4の場合(ステップS157)、選択部242は、Window演算部258を選択し、Window演算部258は、R←ECD(R),R←ECA(R,P_1),R←ECD(R),R←ECD(R)を演算する(ステップS168)。
次に、ステップS155へ戻って処理を繰り返す。
(ステップS161〜S168における各演算について)
ここで、図11のステップS161〜S168における各演算の意味について、図12に示す演算変換表320を用いて説明する。
ここで、w_cの値に応じて、なされる複数の演算を、便宜上、Window演算と呼ぶこととする。
例えば、ステップS164において、なされるR←ECD(R),R←ECD(R),R←ECD(R)及びD←ECA(R,P_1)が、1個のWindow演算であり、ステップS165において、なされるR←ECD(R),R←ECD(R),R←ECD(R)及びR←ECA(R,P_1)が、1個のWindow演算である。
また、Window演算に含まれるECA及びECDを、便宜上、基本演算と呼ぶ。
演算変換表320は、一例としてWindowの幅が「3ビット」である場合において、つまり、sw=3である場合において、取り得るw_cの値毎に、当該w_cの値と、これに対応する従来のWindow演算と、これに対応するスカラ倍演算部229によるWindow演算(本発明に関連するWindow演算)と、スカラ倍演算部229によるWindow演算に含まれる基本演算の演算順序を示す基本演算順序と、Window演算に含まれる基本演算の個数を示す基本演算回数との関係を示している。
ここで、一例としてWindowの幅は「3ビット」であるので、w_cは、8個の値「0」、「1」、「2」、「3」、「4」、「−3」、「−2」及び「−1」のいずれかをとる。
次に、w_cが各値をとる場合について、従来のWindow演算、スカラ倍演算部229によるWindow演算、基本演算順序及び基本演算回数について説明する。
(a)w_c=0の場合
w_c=0に対する従来のWindow演算は、「R←23 R」である。「R←23 R」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトすることを示している。
一方、w_c=0に対するスカラ倍演算部229によるWindow演算は、「R←23 R」及び「D←R+C」である。ここで、「R←23R」については、上述した通りである。また、「D←R+C」は、ダミーの加算であり、w_c=0の場合におけるWindow演算に含まれる基本演算の種類とその数と、他の場合における(つまり、w_c≠0の場合における)Window演算基本に含まれる基本演算の種類とその数とを一致させるためのものである。
ここで、「R←23 R」は、スカラ倍演算部229において、R←2×R、R←2×R、R←2×R、により、演算される。
これは、23 R=2×(2×(2×R))であることによる。
従って、w_c=0に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、ダミーの加算の順序で、複数の基本演算が行われる。(ステップS164参照)
このように、w_c=0に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
(b)w_c=1の場合
w_c=1に対する従来のWindow演算は、「R←23 R+C」である。「R←23 R+C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数RにCを加算することを示している。
また、w_c=1に対するスカラ倍演算部229によるWindow演算は、「R←23 R+C」である。
このように、w_c=1に対する従来のWindow演算と、スカラ倍演算部229によるWindow演算とは、同一である。
ここで、「R←23 R+C」は、スカラ倍演算部229において、R←2×R、R←2×R、R←2×R、R←R+Cにより、演算される。(ステップS165参照)
従って、w_c=1に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、加算の順序で、複数の基本演算が行われる。
このように、w_c=1に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
(c)w_c=2の場合
w_c=2に対する従来のWindow演算は、「R←23 R+2C」である。「R←23 R+2C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに2Cを加算することを示している。
一方、w_c=2に対するスカラ倍演算部229によるWindow演算は、「R←2(22 R+C)」である。
2(22 R+C)=23 R+2Cであることにより、w_c=2に対する従来のWindow演算による結果と、スカラ倍演算部229によるWindow演算による結果とは、同一であることが分かる。
ここで、「R←2(22 R+C)」は、スカラ倍演算部229において、R←2×R、R←2×R、R←R+C、R←2×Rにより、演算される。(ステップS166参照)
これは、2(22 R+C)=2×(2×(2×R)+C)であることによる。
従って、w_c=2に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、加算、2倍算の順序で、複数の基本演算が行われる。
ここで、前記加算は、点Cにw_c/2t を乗じて得られる点の加算である。
このように、w_c=2に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
(d)w_c=3の場合
w_c=3に対する従来のWindow演算は、「R←23 R+3C」である。「R←23 R+3C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに3Cを加算することを示している。
また、w_c=3に対するスカラ倍演算部229によるWindow演算は、「R←23 R+3C」である。
このように、w_c=3に対する従来のWindow演算と、スカラ倍演算部229によるWindow演算とは、同一である。
ここで、「R←23 R+3C」は、スカラ倍演算部229において、R←2×R、R←2×R、R←2×R、R←R+3C、により演算される。(ステップS167参照)
これは、23 R+3C=2×(2×(2×R))+3Cであることによる。
従って、w_c=3に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、加算の順序で、複数の基本演算が行われる。
このように、w_c=3に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
(e)w_c=4の場合
w_c=4に対する従来のWindow演算は、「R←23 R+4C」である。「R←23 R+4C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに4Cを加算することを示している。
一方、w_c=4に対するスカラ倍演算部229によるWindow演算は、「R←22 (2R+C)」である。
2 (2R+C)=23 R+4Cであることにより、w_c=4に対する従来のWindow演算による結果と、スカラ倍演算部229によるWindow演算による結果とは、同一であることが分かる。
ここで、「R←22 (2R+C)」は、スカラ倍演算部229において、R←2×R、R←R+C、R←2×R、R←2×Rにより、演算される。(ステップS168参照)
これは、22 (2R+C)=2×2×((2×R)+C))であることによる。
従って、w_c=4に対するスカラ倍演算部229によるWindow演算では、2倍算、加算、2倍算、2倍算の順序で、複数の基本演算が行われる。
ここで、前記加算は、点Cにw_c/2t を乗じて得られる点の加算である。
このように、w_c=4に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
(f)w_c=−3の場合
w_c=−3に対する従来のWindow演算は、「R←23 R−3C」である。「R←23 R−3C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに−3Cを加算する(つまり、変数Rから3Cを減算する)ことを示している。
また、w_c=−3に対するスカラ倍演算部229によるWindow演算は、「R←23 R+3C」である。
このように、w_c=−3に対する従来のWindow演算と、スカラ倍演算部229によるWindow演算とは、同一である。
ここで、「R←23 R−3C」は、スカラ倍演算部229において、R←2×R、R←2×R、R←2×R、R←R+(−3C)、により演算される。(ステップS161参照)
これは、23 R−3C=2×(2×(2×R))+(−3C)であることによる。
従って、w_c=−3に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、加算(ここでは減算)の順序で、複数の基本演算が行われる。
このように、w_c=−3に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
(g)w_c=−2の場合
w_c=−2に対する従来のWindow演算は、「R←23 R−2C」である。「R←23 R−2C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに−2Cを加算する(つまり、変数Rから2Cを減算する)ことを示している。
一方、w_c=−2に対するスカラ倍演算部229によるWindow演算は、「R←2(22 R−C)」である。
2(22 R−C)=23 R−2Cであることにより、w_c=−2に対する従来のWindow演算による結果と、スカラ倍演算部229によるWindow演算による結果とは、同一であることが分かる。
ここで、「R←2(22 R−C)」は、スカラ倍演算部229において、R←2×R、R←2×R、R←R+(−C)、R←2×Rにより、演算される。(ステップS162参照)
これは、2(22 R−C)=2×(2×(2×R)+(−C))であることによる。
従って、w_c=−2に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、加算(ここでは減算)、2倍算の順序で、複数の基本演算が行われる。
ここで、前記減算は、点Cに|w_c/2t |を乗じて得られる点の減算である。
このように、w_c=−2に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
(h)w_c=−1の場合
w_c=−1に対する従来のWindow演算は、「R←23 R−C」である。「R←23 R−C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに−Cを加算する(つまり、変数RからCを減算する)ことを示している。
また、w_c=−1に対するスカラ倍演算部229によるWindow演算は、「R←23 R−C」である。
このように、w_c=−1に対する従来のWindow演算と、スカラ倍演算部229によるWindow演算とは、同一である。
ここで、「R←23 R−C」は、スカラ倍演算部229において、R←2×R、R←2×R、R←2×R、R←R+(−C)、により演算される。(ステップS163参照)
これは、23 R−3C=2×(2×(2×R))+(−C)であることによる。
従って、w_c=−1に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、加算(ここでは、減算)の順序で、複数の基本演算が行われる。
このように、w_c=−1に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
1.4 楕円曲線演算部208の動作
楕円曲線演算部208の動作について、図13に示すフローチャートを用いて説明する。
入力部230は、暗号処理部202からべき倍係数kを受け取り、受け取ったべき倍係数kをべき倍係数格納部221に書き込み(ステップS121)、暗号処理部202から被べき倍点Cを受け取り、受け取った被べき倍点Cを被演算値格納部224に書き込む(ステップS122)。
次に、分割情報生成部222は、べき倍係数kから分割情報である整数列{w_i}を生成し、生成した整数列{w_i}を分割情報格納部223に格納する(ステップS123)。
次に、テーブル生成部225は、被べき倍点Cを用いてテーブル{P_i}を生成し、テーブル{P_i}をテーブル格納部228に格納する(ステップS124)。
次に、スカラ倍演算部229は、分割情報格納部223に格納されている整数列{w_i}とテーブル格納部228に格納されているテーブル{P_i}とを使用して、べき倍点k*Cを計算する(ステップS125)。
次に、出力部231は、スカラ倍演算部229からべき倍点k*Cを受け取り、受け取ったべき倍点k*Cを暗号処理部202へ出力する(ステップS126)。
1.5 ICカード100の構成
ICカード100は、図1に示すように、秘密鍵記憶部101、復号処理部102、通信部103、制御部104、情報記憶部105及び楕円曲線演算部108から構成されている。
ICカード100は、具体的には、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、ICカード100は、その一部の機能を達成する。
(1)情報記憶部105及び秘密鍵記憶部101
情報記憶部105は、素数p、楕円曲線E(Fp)の係数及びベースポイントBを記憶している。また、生成された復号ポイントPm’を記憶するための領域を備えている。
秘密鍵記憶部101は、秘密鍵ksを記憶している。
(2)通信部103
通信部103は、ポイント発行装置200から第1暗号文s1及び第2暗号文s2を受信する。第1暗号文s1及び第2暗号文s2を受信すると、制御部104に対して、受信した旨を制御部104に対して通知する。また、受信した第1暗号文s1及び第2暗号文s2を復号処理部102へ出力する。
(3)制御部104
制御部104は、通信部103から第1暗号文s1及び第2暗号文s2を受信した旨の通知を受け取る。前記通知を受け取ると、復号処理部102に対して、第1暗号文s1及び第2暗号文s2を復号して復号ポイントを生成することを示す指示を出力する。
(4)復号処理部102
復号処理部102は、制御部104から、第1暗号文s1及び第2暗号文s2を復号して復号ポイントを生成することを示す指示を受け取る。また、通信部103から第1暗号文s1及び第2暗号文s2を受け取る。
前記指示を受け取ると、復号処理部102は、秘密鍵記憶部101から秘密鍵ksを読み出し、次に、受け取った第1暗号文s1を被べき倍点kとして、楕円曲線演算部108へ出力し、読み出した秘密鍵ksをべき倍係数Cとして、楕円曲線演算部108へ出力する。次に、楕円曲線演算部108から演算結果ks*s1を受け取り、復号ポイントPm’=第2暗号文s2 xor (演算結果ks*s1のx座標値)を計算する。
ここで、
Pm’=s2 xor (ks*s1のx座標値)
=(Pm xor (r*Kpのx座標値))
xor (ks・r*Bのx座標値)
=Pm xor(r・ks*Bのx座標値) xor (r・ks*Bのx座標値)
=Pm
従って、復号ポイントPm’は、ポイントPmに一致することが分かる。
次に、復号処理部102は、生成した復号ポイントPm’を情報記憶部105へ書き込む。
(5)楕円曲線演算部108
楕円曲線演算部108は、ポイント発行装置200が有する楕円曲線演算部208と同一の構成を有しているので、詳細な説明を省略する。
楕円曲線演算部108は、復号処理部102から、被べき倍点k及びべき倍係数Cを受け取り、べき倍点k*Cを算出し、算出したべき倍点k*Cを復号処理部102へ出力する。
1.6 ポイント発行システム10の動作
ポイント発行システム10の動作について、図14に示すフローチャートを用いて説明する。
(1)秘密鍵ks及び公開鍵Kpの生成の動作
以下に示す動作は、ポイント発行装置200がポイントを発行する前に行われる。
ICカード100の復号処理部102は、秘密鍵ksを生成し、生成した秘密鍵ksを秘密鍵記憶部101へ書き込む(ステップS101)。次に、復号処理部102は、情報記憶部105からベースポイントBを読み出し、生成した前記秘密鍵ksと読み出したべースポイントBに楕円べき倍演算を施して、公開鍵Kp=ks*Bを生成する。この際、楕円べき倍演算は、楕円曲線演算部108により行われる(ステップS102)。次に、復号処理部102は、生成した公開鍵Kpを通信部103を介して、ポイント発行装置200へ送信する(ステップS103)。
ポイント発行装置200の暗号処理部202は、ICカード100から通信部203を介して、公開鍵Kpを受信し、受信した公開鍵Kpを公開鍵記憶部201へ書き込む(ステップS104)。
ここでは、ICカード100が秘密鍵ksを生成し、生成した秘密鍵ksを基にして公開鍵Kpを生成し、生成した公開鍵Kpをポイント発行装置200へ送信するとしているが、次に示すようにしてもよい。
つまり、ポイント発行システム10は、さらに、鍵管理装置(公開鍵生成装置)を含む。ICカード100は、秘密鍵ksを生成し、生成した秘密鍵ksを内部に記憶する。
鍵管理装置は、ICカード100から秘密鍵ksを安全に取得し、取得した秘密鍵ksを記憶する秘密鍵記憶部と、ベースポイントBを記憶しているベースポイント記憶部と、秘密鍵記憶部から秘密鍵ksを読み出し、ベースポイント記憶部からベースポイントBを読み出し、秘密鍵ksとベースポイントBとを用いて、公開鍵Kp=ks*Bを生成する楕円曲線演算部と、生成した公開鍵Kpをポイント発行装置200へ送信する送信部とを備える。ここで、鍵管理装置が有する楕円曲線演算部は、ICカード100が有する楕円曲線演算部と同一である。
(2)ポイントの発行の動作
ポイント発行装置200の制御部204は、ポイントPmを生成し、生成したポイントPmを情報記憶部205に書き込み、次に、暗号処理部202に対して、ポイントPmを暗号化してICカード100へ送信することを示す指示を出力する(ステップS111)。
暗号処理部202は、制御部204から、ポイントPmを暗号化してICカード100へ送信することを示す指示を受け取ると、乱数rを生成し(ステップS112)、ベースポイントBを情報記憶部205から読み出し、生成した乱数rをべき倍係数として、楕円曲線演算部208へ出力し、読み出したベースポイントBを被べき倍点として、楕円曲線演算部208へ出力し、楕円曲線演算部208から、演算結果としてべき倍点r*Bを受け取り、第1暗号文s1=べき倍点r*Bとする(ステップS113)。
次に、暗号処理部202は、公開鍵記憶部201から公開鍵Kpを読み出し、生成した乱数rをべき倍係数として、楕円曲線演算部208へ出力し、読み出した公開鍵Kpを被べき倍点として、楕円曲線演算部208へ出力し、楕円曲線演算部208から、演算結果としてべき倍点r*Kpを受け取り、暗号処理部202は、情報記憶部205からポイントPmを読み出し、読み出したポイントPmと受け取ったべき倍点r*Kpとを加算して、第2暗号文s2=ポイントPm xor (べき倍点r*Kpのx座標値)を生成する(ステップS114)。
次に、暗号処理部202は、生成した第1暗号文s1及び第2暗号文s2を通信部203を介して、ICカード100へ送信する(ステップS115)。
復号処理部102は、ポイント発行装置200から通信部103を介して、第1暗号文s1及び第2暗号文s2を受け取る(ステップS115)。
次に、復号処理部102は、秘密鍵記憶部101から秘密鍵ksを読み出し、受け取った第1暗号文s1を被べき倍点として、楕円曲線演算部108へ出力し、読み出した秘密鍵ksをべき倍係数として、楕円曲線演算部108へ出力する。楕円曲線演算部108は、ks*s1を演算し、復号処理部102は、楕円曲線演算部108から演算結果ks*s1を受け取り、復号ポイントPm’=第2暗号文s2 xor (演算結果ks*s1のx座標値)を計算する(ステップS116)。
次に、復号処理部102は、計算して得られた復号ポイントPm’を情報記憶部105へ書き込む(ステップS117)。
2.実施の形態2
本発明に係る別の実施の形態としてのデジタル署名システム(図示していない)について説明する。
デジタル署名システムは、ユーザA装置(署名生成装置とも呼ぶ)、ユーザB装置(署名検証装置とも呼ぶ)及び管理センタ装置(管理装置とも呼ぶ)から構成されており(それぞれの装置を図示していない)、ユーザA装置、ユーザB装置及び管理センタ装置は、それぞれ、インターネットを介して接続されている。
ユーザA装置、ユーザB装置及び管理センタ装置は、それぞれ、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その一部の機能を達成する。
ユーザA装置、ユーザB装置及び管理センタ装置は、それぞれ、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を確実に扱う情報セキュリティ装置である。
ここで、情報を確実に扱うとは、例えば、情報を二者間で通信する場合において、送信者が送信した情報が、改変されることなく、受信者に届くようにすることを言う。
ユーザA装置は、デジタル署名データとともにメッセージをユーザB装置へ送信し、ユーザB装置は、デジタル署名データとともにメッセージを受け取り、受け取ったデジタル署名データにより、署名検証を行う。
ここで、素数pを法とする剰余体Fp上で定義された楕円曲線E(Fp)を想定し、Eの位数をqとする。また、Bは、楕円曲線E上のベースポイントである。
ユーザA装置は、秘密鍵xAを生成する秘密鍵生成部と、生成した秘密鍵xAを安全に管理センタ装置へ送信する秘密鍵送信部と、送信すべきメッセージmを記憶しているメッセージ記憶部と、素数p、楕円曲線Eの係数、ベースポイントBを管理センタ装置から受信するパラメタ受信部と、受信した素数p、楕円曲線Eの係数、ベースポイントBを記憶するパラメタ記憶部と、乱数rを生成する乱数生成部と、第1署名データR1=(rx,ry)=r*Bを生成し、s×r=m+rx×XA (mod q) から第2署名データsを計算する署名生成部と、得られた署名データ(R1、s)とメッセージmとをユーザB装置へ送信する送信部と、署名生成部の指示により、楕円曲線上の点の楕円べき倍演算を行う楕円曲線演算部とを備える。
管理センタ装置は、ユーザA装置から、秘密鍵xAを安全に取得する取得部と、素数p、楕円曲線Eの係数、ベースポイントBを記憶しているパラメタ記憶部と、取得した秘密鍵xAを用いて、公開鍵YA=xA*Gを算出する公開鍵算出部と、素数p、楕円曲線Eの係数及びベースポイントGを公開する公開部と、インターネットを介して、公開鍵YAをユーザB装置へ送信する送信部と、公開鍵算出部の指示により、楕円曲線上の点の楕円べき倍演算を行う楕円曲線演算部とを備える。
ユーザB装置は、管理センタ装置から、素数p、楕円曲線Eの係数及びベースポイントGを受信するパラメタ受信部と、取得した素数p、楕円曲線Eの係数及びベースポイントGを記憶するパラメタ記憶部と、管理センタ装置から、公開鍵YAを受信する公開鍵受信部と、受信した公開鍵YAを記憶する公開鍵記憶部と、ユーザA装置から署名データ(R1、S)を受信する署名データ受信部と、ユーザA装置からメッセージmを受信するメッセージ受信部と、ユーザB装置は、S*R1及びm*G+rx*YAを計算し、S*R1=m*G+rx*YAが成立するかどうか判定し、成立する場合には、検証の成功を示す成功情報を出力し、検証に失敗した場合に、検証の失敗を示す失敗情報を出力する検証部と、検証部の指示により、楕円曲線上の点の楕円べき倍演算を行う楕円曲線演算部とを備える。
ユーザA装置、ユーザB装置及び管理センタ装置がそれぞれ、有する楕円曲線演算部は、実施の形態1に示す楕円曲線演算部208と同一である。
以下において、デジタル署名システムの動作について図15に示すフローチャートを用いて説明する。
(秘密鍵xA及び公開鍵YAの生成)
ユーザA装置は、秘密鍵xAを生成する(ステップS201)。
管理センタ装置は、ユーザA装置から、秘密鍵xAを安全に取得し、取得した秘密鍵xAを用いて、公開鍵YA=xA*Bを算出する(ステップS202)。
次に、管理センタ装置は、素数p、楕円曲線Eの係数及びベースポイントBを公開し(ステップS204、ステップS207)、インターネットを介して、公開鍵YAをユーザB装置へ送信する(ステップS205)。
ユーザB装置は、素数p、楕円曲線Eの係数及びベースポイントBを取得し(ステップS204)、公開鍵YAを受信し(ステップS205)、受信した公開鍵YAを内部に記憶する(ステップS206)。
ユーザA装置も、素数p、楕円曲線Eの係数及びベースポイントGを取得する(ステップS207)。
(デジタル署名データの生成と署名検証)
ユーザA装置は、乱数rを生成し(ステップS211)、第1署名データR1=(rx,ry)=r*Bを生成し(ステップS212)、
s×r=m+rx×xA (mod q) から第2署名データsを計算する(ステップS213)。ここで、mは、ユーザA装置からユーザB装置へ送信するメッセージである。
次に、ユーザA装置は、得られた署名データ(R1、s)とメッセージmとをユーザB装置へ送信する(ステップS214)。
ユーザB装置は、ユーザA装置から署名データ(R1、s)とメッセージmとを受信する(ステップS214)。
次に、ユーザB装置は、s*R1及びm*G+rx*YAを計算し(ステップS215)、S*R1=m*G+rx*YAが成立するかどうか判定し(ステップS216)、成立する場合には(ステップS216でYES)、検証に成功し、ユーザA装置の身元の確認ができたこととなる。成立しない場合には(ステップS216でNO)、検証に失敗し、ユーザA装置の身元が確認できなかったこととなる。
5.実施の形態3
本発明に係るまた別の実施の形態としての鍵共有システム(図示していない)について説明する。
鍵共有システムは、ユーザA装置(鍵利用装置とも呼ぶ)、ユーザB装置(鍵利用装置とも呼ぶ)及び管理センタ装置(管理装置とも呼ぶ)から構成されており(それぞれの装置を図示していない)、ユーザA装置、ユーザB装置及び管理センタ装置は、それぞれ、インターネットを介して接続されている。ユーザA装置、ユーザB装置及び管理センタ装置は、それぞれ、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。
ユーザA装置及びユーザB装置は、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全に扱う情報セキュリティ装置である。
ここで、情報を安全に扱うとは、上述したように、例えば、情報を二者間で通信する場合において、当該情報が第三者に知られないようにすることを言う。
ユーザA装置とユーザB装置とは、以下に示すようにして、第三者に知られることなく、同一の共有鍵を取得する。
管理センタ装置は、楕円曲線E(Fp)の係数及びベースポイントBを選択する選択部と、選択した楕円曲線Eの係数、ベースポイントB及び素数pを記憶しているパラメタ記憶部と、素数p、楕円曲線E(Fp)及びベースポイントGを公開する公開部とを備えている。
ここで、素数pを法とする剰余体Fp上で定義された前記楕円曲線Eを想定し、Bは、楕円曲線E上のベースポイントである。
ユーザA装置は、管理センタ装置から、素数p、楕円曲線Eの係数及びベースポイントBを取得するパラメタ取得部と、乱数を用いて、秘密鍵xAを設定する秘密鍵設定部と、公開鍵YA=xA*Bを算出する公開鍵算出部と、算出した公開鍵YAをユーザB装置へ送信する送信する公開鍵送信部と、ユーザB装置から、公開鍵YBを受信する公開鍵受信部と、共有鍵xA*YB=(xA×xB)*Bを算出する共有鍵算出部と、公開鍵算出部及び共有鍵算出部の指示により、楕円曲線上の点の楕円べき倍演算を行う楕円曲線演算部とを備える。
ユーザB装置もユーザA装置と同様の構成を有している。
ユーザB装置は、管理センタ装置から、素数p、楕円曲線Eの係数及びベースポイントBを取得するパラメタ取得部と、乱数を用いて、秘密鍵xBを設定する秘密鍵設定部と、公開鍵YB=xB*Bを算出する公開鍵算出部と、算出した公開鍵YBをユーザA装置へ送信する送信する公開鍵送信部と、ユーザA装置から、公開鍵YAを受信する公開鍵受信部と、共有鍵xB*YA=(xB×xA)*Bを算出する共有鍵算出部と、公開鍵算出部及び共有鍵算出部の指示により、楕円曲線上の点の楕円べき倍演算を行う楕円曲線演算部とを備える。
ユーザA装置及びユーザB装置がそれぞれ有する楕円曲線演算部は、実施の形態1のポイント発行装置200が有する楕円曲線演算部と同一である。
以下において、鍵共有システムの動作について図16に示すフローチャートを用いて説明する。
管理センタ装置は、楕円曲線Eの係数及びベースポイントBを選択し(ステップS311)、素数p、楕円曲線Eの係数及びベースポイントBを公開する(ステップS312)。
ユーザA装置は、秘密鍵xAを設定し(ステップS301)、公開鍵YA=xA*Bを算出し(ステップS302)、公開鍵YAをユーザB装置へ送信する(ステップS303)。
一方、ユーザB装置は、秘密鍵xBを設定し(ステップS321)、公開鍵YB=xB*Bを算出し(ステップS322)、公開鍵YBをユーザA装置へ送信する(ステップS323)。
ユーザA装置は、共有鍵xA*YB=(xA×xB)*Bを算出する(ステップS304)。
一方、ユーザB装置は、共有鍵xB*YA=(xB×xA)*Bを算出する(ステップS324)。
ここで、共有鍵xB*YA=(xB×xA)*B
=(xA×xB)*B
=共有鍵xA*YB
である。
こうして、ユーザA装置とユーザB装置とは、第三者に知られることなく、同一の共有鍵を取得することができる。
6.実施の形態1の効果
実施の形態1におけるポイント発行装置200が有する楕円曲線演算部208において、楕円曲線加算部226及び楕円曲線2倍算部227は、それぞれ同じ順序で同じ演算を実行しているため(図4〜図5を参照)、電力波形を解析する攻撃者は、電力波形から楕円曲線加算及び楕円曲線2倍算のどちらを実行しているかが区別できない。
また、スカラ倍演算部229では、カウンタcに対するw_cの値によらず、楕円曲線加算と楕円曲線2倍算の演算回数の合計が4回と同じであるため、べき倍係数の値によらず、楕円曲線加算と楕円曲線2倍算の演算回数の合計は同じになっている。したがって、攻撃者が演算回数を知った場合においても、べき倍係数に関する情報が攻撃者に漏れない。そのため、実施の形態1は、単純電力解析攻撃に対して安全である。
また、Windowの幅sw=3の場合、テーブル格納部228のテーブルに格納される点は、P_1=Cを除いて、P_2=3*Cのみの1点である。従来の単純電力解析攻撃対策方法では、テーブルに格納される点は、P_1=Cを除いて、P_2,P_3,P_4の3点であり、本実施の形態1では、従来方法より、テーブルサイズを1/3に削減している。
実施の形態1では、swビットの分割情報ごとに演算回数の合計を一定にしているが、1個のべき倍係数についての演算全体で演算回数の合計を一定になるようにしてもよい。この場合、1個のべき倍係数についての演算全体で演算回数を調整するためには、演算回数を計測しながら、演算処理を行う。この場合に比べて、実施の形態1では、swビットごとに演算回数の合計を一定にしており、1個のべき倍係数についての演算全体でも演算回数に注意する必要がなく、制御が容易になるというさらなる効果がある。
上記の効果は、実施の形態2及び3についても同様である。
7.その他の変形例
上記に説明した各実施の形態は、本発明の実施の一例であり、本発明はこれらの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)実施の形態1において、テーブル生成部225は、楕円曲線加算部226及び楕円曲線2倍算部227を使用して、楕円曲線加算及び楕円曲線2倍算を計算しているが、テーブル生成部225が、楕円曲線加算部226及び楕円曲線2倍算部227におけるダミー演算を除去した通常の楕円曲線加算及び楕円曲線2倍算を実行するとしてもよい。
(2)実施の形態では、sw=3としたが、swを2や4以上の値としてもよい。このとき、スカラ倍演算部229において、w_cの値に応じたwindow演算(図10〜図11のステップS157、ステップS161〜S168に相当)は、以下のようになる。
w_cの値に応じたwindow演算では、(sw+1)回の基本演算が行われる。
(i)w_cが0以外の場合で、かつ、w_cが2^tで割り切れて、2^(t+1)で割り切れないことを満たす非負整数tが存在する場合、(sw+1)回の基本演算のうち、最初から(sw−t+1)番目の基本演算をR←ECA(R,sgn(w_c)*P_((abs(w_c/2^t)+1)/2))とし、(sw+1)回の基本演算のうち、その他のsw回の基本演算をR←ECD(R)とする。
ここで、sgn(w_c)は、w_cの符号である。w_c>0の場合、sgn(w_c)=1、w_c<0の場合、sgn(w_c)=−1である。
また、abs(w_c)はw_cの絶対値である。
(ii)w_c=0の場合は、R←ECD(R)の基本演算をsw回行う、その後、D←ECA(R,P_1)を実行する。例えば、sw=5,w_c=−12の場合、R←ECD(R),R←ECD(R),R←ECD(R),R←ECA(R,−P_2),R←ECD(R),R←ECD(R)となる。
sw=2の場合は、P_1を除いて、テーブルに含まれる点は存在しないので、新たに点を計算してテーブルの要素を求める必要はない。このため、テーブル生成部225による処理を含めてテーブル生成部225及びテーブル格納部228は、無くてもよい。この場合は、テーブルサイズは、P_1以外の点がないため、0となり、テーブル削減度合の効果が顕著となる。
(3)sw=3の場合の演算変換表320を図12に示している。ここでは、sw=4の場合の演算変換表330を図17に示す。
ここで、Windowの幅は「4ビット」であるので、w_cは、16個の値「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」、「−7」、「−6」、「−5」「−4」、「−3」、「−2」及び「−1」のいずれかをとる。
次に、w_cが各値をとる場合について、従来のWindow演算、スカラ倍演算部229によるWindow演算、基本演算順序及び基本演算回数について説明する。
(a)w_c=0の場合
w_c=0に対する従来のWindow演算は、「R←24 R」である。「R←24 R」は、変数Rの値を、Windowの幅の示すビット(ここでは、4ビット)だけ、上位にシフトすることを示している。
一方、w_c=0に対するスカラ倍演算部229によるWindow演算は、「R←24 R」及び「D←R+C」である。ここで、「R←24R」については、上述した通りである。また、「D←R+C」は、ダミーの加算であり、w_c=0の場合におけるWindow演算に含まれる基本演算の種類とその数と、他の場合における(つまり、w_c≠0の場合における)Window演算基本に含まれる基本演算の種類とその数とを一致させるためのものである。
ここで、「R←24 R」は、スカラ倍演算部229において、R←2×R、R←2×R、R←2×R、R←2×R、により、演算される。
これは、24 R=2×(2×(2×(2×R)))であることによる。
従って、w_c=0に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、2倍算、ダミーの加算の順序で、複数の基本演算が行われる。
このように、w_c=0に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「5」である。
(b)w_c=1、3、5、7、−7、−5、−3、−1の場合
w_c=1、3、5、7、−7、−5、−3、−1の場合、それぞれ、従来のWindow演算は、「R←24 R+C」、「R←24 R+3C」、「R←24R+5C」、「R←24 R+7C」、「R←24 R−7C」、「R←24 R−5C」、「R←24R−3C」、「R←24 R−1C」である。
「R←24 R+C」は、変数Rの値を、Windowの幅の示すビット(ここでは、4ビット)だけ、上位にシフトし、その後、変数RにCを加算することを示している。その他の演算についても同様である。
また、w_c=1、3、5、7、−7、−5、−3、−1の場合におけるスカラ倍演算部229によるWindow演算は、従来のWindow演算と同一である。
この場合におけるスカラ倍演算部229による各Window演算では、2倍算、2倍算、2倍算、2倍算、加算の順序で、複数の基本演算が行われる。
このように、この場合におけるスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「5」である。
(c)w_c=2、4、6、8、−6、−4、−2の場合
w_c=2、4、6、8、−6、−4、−2の場合、それぞれ、従来のWindow演算は、「R←24 R+2C」、「R←24 R+4C」、「R←24R+6C」、「R←24 R+8C」、「R←24 R−6C」、「R←24 R−4C」、「R←24R−2C」である。
「R←24 R+2C」は、変数Rの値を、Windowの幅の示すビット(ここでは、4ビット)だけ、上位にシフトし、その後、変数Rに2Cを加算することを示している。その他の演算についても同様である。
また、w_c=2、4、6、8、−6、−4、−2の場合におけるスカラ倍演算部229によるWindow演算は、それぞれ、「R←2(23 R+C)」、「R←22(22 R+C)」、「R←2(23 R+3C)」、「R←23 (2R+C)」、「R←2(23R−3C)」、「R←22 (22 R−C)」、「R←2(23 R−C)」である。これらの演算結果は、従来のWindow演算による結果と、同一である。
ここで、例えば、w_c=2の場合における「R←2(23 R+C)」は、スカラ倍演算部229において、R←2×R、R←2×R、R←2×R、R←R+C、R←2×Rにより、演算される。
従って、w_c=2に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、加算、2倍算の順序で、複数の基本演算が行われる。
このように、w_c=2に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「5」である。
w_c=4、6、8、−6、−4、−2の場合についても、図17に示す通りである。
(4)各実施の形態では、べき倍係数をすべてswビットの一定ビット列ごとに分割して、swビットの分割情報を生成しているが、これに限らない。ビット数が一定でなくてもよい。分割情報のビット数が一定でない場合、分割情報を用いたスカラ倍演算部の演算処理も一定回数でなくてもよい。この場合は、分割情報ごとの演算処理の回数は、分割情報のビット長に依存してもよいが、それ以外の分割情報のビット長以外の情報には依存しない。
分割情報のビット数がaビット長である場合に、分割情報の値に対応するwindow演算部は、(a+1)回の演算を順次行う。ここで、前記複数の演算のうち(a−t+1)番目の演算は、楕円曲線E上の前記加算であり、他の演算は、楕円曲線E上の2倍算である。
また、分割情報のビット数がbビット長である場合に(ここで、a≠b)、分割情報の値に対応するwindow演算部は、(b+1)回の演算を順次行う。ここで、前記複数の演算のうち(b−t+1)番目の演算は、楕円曲線E上の前記加算であり、他の演算は、楕円曲線E上の2倍算である。
(5)各実施の形態では、w_c=0の場合は、sw回のR←ECD(R)の基本演算の後、D←ECA(R,P_1)を実行しているが、ダミーの演算処理は他の点との加算であってもよいし、楕円曲線2倍算であってもよい。
(6)各実施の形態では、方程式はy^2=x^3+a×x+bの形をしたワイヤーシュトラス型の楕円曲線を使用しており、Jacobian座標を使用しているが、これだけには限らない。例えば、他の座標(Projective座標)を使用してもよい。その場合においてもダミー演算を付加して、楕円曲線加算と楕円曲線2倍算の区別をできなくしてもよい。また、楕円曲線2倍算を楕円曲線加算に置き換えて演算可能なHessian楕円(ヘッセ型楕円)やJacobian楕円(ヤコビ型楕円)を使用してもよい。その場合は、楕円曲線加算及び楕円曲線2倍算の内部の演算にダミー演算はなくてもよい。
(7)各実施の形態では、楕円曲線を使用してべき倍演算を実行しているが、超楕円曲線またはその他の代数曲線のヤコビアン群のべき倍演算を実行してもよい。
(8)本発明は、各実施の形態の楕円曲線演算部を楕円ElGamal暗号、PSEC−KEMやその他の楕円曲線またはその他の代数曲線上の暗号方式に適用してもよい。
例えば、暗号方式の暗号化アルゴリズムにおける秘密鍵をべき倍係数としたへぎ倍演算に、各実施の形態の楕円曲線演算部を適用し、暗号方式の復号化アルゴリズムにおける秘密鍵をべき倍係数としたへぎ倍演算に、各実施の形態の楕円曲線演算部を適用してもよい。
また、楕円DSA署名方式、楕円ElGamal署名方式、楕円NR署名方式、楕円MR署名方式、楕円PV署名方式、楕円AO署名方式などの楕円曲線上の署名方式、もしくは、代数曲線上の署名方式に、各実施の形態の楕円曲線演算部を適用してもよい。
上述したように、楕円曲線上の署名方式の署名生成アルゴリズムにおける乱数をべき倍係数としたべき倍演算に楕円曲線演算部を適用してもよい。
楕円ElGamal暗号や楕円DSA署名方式に関しては、非特許文献3が詳しい。
(9)実施の形態1のポイント発行システム10では、利用者が商品を購入したりサービスの提供を受けた場合に、販売者やサービス提供者から受け取る特典情報であり、次に利用者が商品を購入したりサービスの提供を受ける際に、販売者やサービス提供者への対価の支払いの一部又は全部として利用されるポイントを秘密通信の対象とし、ポイント発行装置200は、生成したポイントを暗号化し、暗号化ポイントをICカード100へ送信し、ICカード100は、暗号化ポイントを復号して復号ポイントを生成し、生成した復号ポイントを記憶するようにしている。
しかし、秘密通信の対象は、上記のポイントには限定されない。
次に示すような金銭の決済システムに適用することもできる。
例えば、通貨の代わりに用いることができる電子マネーを秘密通信の対象とし、ICカードは、電子マネーを記憶しており、利用者が、商品を購入する際に、ICカードは、商品の購入額に相当する電子マネーを暗号化して送信し、また、内部に記憶している電子マネーから送信した分を減じる。ポイント発行装置200に代えて同様の構成を有するレジスタ装置は、暗号化電子マネーを受信し、受信した暗号化電子マネーを復号して電子マネーを再生し、記憶する。
また、上記のICカードに代えて、美術館や博物館などの各種施設を利用のためのICカードタイプの電子チケットが、上記のように、電子マネーに相当する情報を記憶しているとしてもよい。各種施設の入り口に設けられた入場管理装置は、各種施設の利用料金に相当する額の電子マネーを要求し、前記電子チケットは、要求された額の電子マネーを暗号化して送信し、入場管理装置は、暗号化電子マネーを受信し、受信した暗号化電子マネーを復号して電子マネーを生成し、記憶するとしてもよい。
また、鉄道、バスなどの交通機関を利用する際に用いられるICカードタイプのICカード乗車券が、上記のように、電子マネーに相当する情報を記憶しているとしてもよい。交通機関の駅の入り口に設けられた入場管理装置は、当該駅を識別する識別情報を送信し、ICカード乗車券は、前記識別情報を受信し、記憶する。交通機関の駅の出口に設けられた出場管理装置は、前記識別情報をICカード乗車券から受信し、受信した識別情報と当該出場管理装置が設けられた駅とを用いて、料金表により乗車料金を算出し、算出した乗車料金に相当する額の電子マネーを要求し、ICカード乗車券は、要求された額の電子マネーを暗号化して送信し、出場管理装置は、暗号化電子マネーを受信し、受信した暗号化電子マネーを復号して電子マネーを生成し、記憶する。
上記における暗号化及び復号化において、楕円曲線上の離散対数問題が安全性の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各装置は、楕円曲線演算部208と同一の楕円曲線演算部を備えている。
上記の各装置は、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全に扱う情報セキュリティ装置である。
(10)上記のような金銭の決済システムにおいて、送信される金銭の額、送信元、送信先などについては、その正当性の証明が要求される場合がある。このような場合において、実施の形態2に示すデジタル署名や署名検証が適用される。
このようなデジタル署名や署名検証において、楕円曲線上の離散対数問題が安全性の根拠として用いれ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各装置は、楕円曲線演算部208と同一の楕円曲線演算部を備えている。
上記の各装置は、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を確実に扱う情報セキュリティ装置である。
(11)秘密通信の対象は、上記のようなポイントや電子マネーなどには限定されない。
本発明は、コンテンツ暗号化装置とコンテンツ再生装置とから構成されるコンテンツ配信システムにおいて適用され、例えば、映画、動画像、音声、音楽、小説、データベースなどのデジタル情報を秘密通信の対象としてもよい。これらのコンテンツは、コンテンツ供給者から利用者に対して、これらのコンテンツを記録している記録媒体を販売したり、レンタルすることにより、提供される。また、デジタル放送やインターネットを介して、コンテンツ供給者から利用者に提供される。
コンテンツ供給者の有するコンテンツ暗号化装置は、デジタル著作物である映画を暗号化してDVDに記録する。利用者の有するコンテンツ再生装置は、DVDから暗号化デジタル著作物を読み出し、復号して、映画を生成し、生成した映画を音声及び映像として再生して、表示及び出力する。
上記における暗号化及び復号化において、楕円曲線上の離散対数問題が安全性の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行うコンテンツ暗号化装置とコンテンツ再生装置は、楕円曲線演算部208と同一の楕円曲線演算部を備えている。
上記の例において、コンテンツを暗号化及び復号するためのコンテンツ鍵を、実施の形態1に示す秘密通信の対象としてもよい。この場合、コンテンツ鍵は、実施の形態1に示す方法と同様にして、暗号化され、また復号される。
この場合に、コンテンツは、コンテンツ鍵により、後述する共通鍵暗号方式を用いて、暗号化され、復号される。
上記の各装置は、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全に扱う情報セキュリティ装置である。
(12)上記のコンテンツ配信システムにおいて、デジタル著作物を暗号化する際に用いる暗号化技術として、例えば、DES(Data EncryptionStandard)又はAES(Advanced Encryption Standard)を用いるとしてもよい。DES及びAESなどの暗号化技術は、いわゆる共通鍵暗号方式(又は秘密鍵暗号方式)と呼ばれる。
上記のコンテンツ配信システムにおいて、このような共通鍵暗号方式を採用する場合に、コンテンツ配信システムを構成する暗号化装置と再生装置との間で、いかにして安全に同一の秘密鍵を共有するかが課題となる。
実施の形態3に示す鍵共有システムは、この課題を解消するための手段を提供する。
実施の形態3に示す鍵共有システムにより、コンテンツ暗号化装置(実施の形態3のユーザA装置に相当する)とコンテンツ再生装置(実施の形態3のユーザB装置に相当する)との間で、第三者に知られることなく、秘密鍵を共有し、その後は、共有鍵暗号方式による暗号化アルゴリズムを適用し、コンテンツ暗号化装置において、共有している秘密鍵を用いて、デジタル著作物を暗号化して暗号化デジタル著作物を生成し、次に、コンテンツ再生装置において、共有している秘密鍵を用いて、暗号化デジタル著作物を復号する。
上記における鍵共有において、楕円曲線上の離散対数問題が安全性の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行うコンテンツ暗号化装置及びコンテンツ再生装置は、楕円曲線演算部208と同一の楕円曲線演算部を備えている。
(13)上記の各実施の形態及び変形例は、次に示すような場合において適用される。
(a)各実施の形態及び変形例は、秘密のメッセージ伝送において適用される。これについては、上記において、秘密通信として説明をした。
(b)各実施の形態及び変形例は、認証において適用される。認証とは、メッセージが自称どおりの人物によって送られたこと、またメッセージが改竄されなかったということの検証である。また、各実施の形態及び変形例は、身分の証明において適用される。身分の証明とは、例えば、データへのアクセス権、又は施設へのアクセス権(入室権)を持つことの証明、又は自分が主張どおりの人物であることの証明である。さらに、各実施の形態及び変形例は、否認防止において適用される。否認防止とは、例えば、実は何かに同意したのに、同意していないと主張する者に対抗することをいう。
(c)各実施の形態及び変形例は、鍵交換において適用される。鍵交換とは、例えば、2人の人が放送電波を使ってある秘密鍵暗号方式で使うための秘密鍵に同意することである。上記において、鍵共有として説明をした。
(d)各実施の形態及び変形例は、硬貨投げ(ビットコミットメントとも呼ばれる)において適用される。硬貨投げとは、例えば、別々の市に住む2人のチェスプレーヤが、電子メールで、誰が白を持つのかを決めることである。
(e)各実施の形態及び変形例は、秘密分散において適用される。秘密分散とは、例えば、ある秘密の情報が、共に働くk人の人によって利用可能であるが、k−1人の人では、利用できないようにすることを言う。
(f)各実施の形態及び変形例は、零知識証明において適用される。零知識証明とは、例えば、ある人が、数論的あるいは組合せ論的問題を解くことに成功したことを、解が何であるかのわずかの情報さえ与えることなく、他人にこのことを納得させることを言う。
(14)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。つまり、前記マイクロプロセッサは、前記コンピュータプログラムに含まれる各命令を1個ずつ読み出し、読み出した命令を解読し、解読結果に従って動作する。
(15)上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されてもよい。また、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(FieldProgrammable Gate Array)やLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
(16)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(17)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(18)上述したように、本発明は、予め与えられる秘密情報と入力である楕円曲線上の点に対し、楕円曲線上のスカラ倍演算を実行する楕円曲線演算装置であって、前記秘密情報を分割して分割情報を生成する分割情報生成部と、2個の前記楕円曲線上の点に対し、前記楕円曲線の群において加算した結果得られる点を生成する楕円曲線加算部と、1個の前記楕円曲線上の点に対し、前記楕円曲線の群において2倍した結果得られる点を生成する楕円曲線2倍算部と、第1の前記楕円曲線上の点と前記分割情報に基づいて、前記楕円曲線加算部と前記楕円曲線2倍算部を使用して第2の前記楕円曲線上の点を生成するスカラ倍演算部と、を備え、前記スカラ倍演算部は、前記楕円曲線加算部と前記楕円曲線2倍算部を使用する回数を合計した値が前記秘密情報のビット長以外の情報に依らず一定になるように制御し、前記楕円曲線加算部と前記楕円曲線2倍算部の各々は、楕円曲線の定義体における乗算を実行する乗算手段、前記定義体における2乗算を実行する2乗算手段、前記定義体における加算を実行する加算手段を有し、前記楕円曲線加算部と前記楕円曲線2倍算部は、実行する前記乗算、前記2乗算及び前記加算の順序が同じであることを特徴とする。
ここで、前記スカラ倍演算部は、一つの前記分割情報に基づいて、前記楕円曲線加算部と前記楕円曲線2倍算部を使用する回数を合計した値が前記分割情報のビット長以外の情報に依らず一定になるように制御してもよい。
ここで、前記楕円曲線演算装置は、さらに1以上の予め与えられた正整数に対して、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果のそれぞれをテーブルに格納するテーブル生成部を備え、前記楕円曲線加算部で使用する2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブルに格納されている前記スカラ倍点であるとしてもよい。
ここで、前記分割情報生成部は、前記秘密情報を予め与えられたビット数をもつ複数の前記分割情報に分割してもよい。
ここで、前記楕円曲線2倍算部は、さらに計算結果に影響のないダミーとなる前記乗算を実行するダミー乗算手段を有するとしてもよい。
ここで、前記楕円曲線2倍算部は、さらに定義体の元の2乗算した結果を、前記元と前記元の乗算を使用して得る2乗算代替手段を有するとしてもよい。
ここで、前記正整数は奇数であるとしてもよい。
ここで、前記分割情報生成部は、複数のswビットの前記分割情報を生成し、前記スカラ倍演算部は、(sw+1)回の演算処理を実行し、前記分割情報wが0以外かつ、前記分割情報wが2^t(tは非負整数)で割り切れて、2^(t+1)で割り切れない場合に、(sw−t+1)番目の前記演算処理は前記楕円曲線加算部を使用し、その他の前記演算処理は前記楕円曲線2倍算部を使用するとしてもよい。
また、本発明は、予め与えられる秘密情報と入力である楕円曲線上の点に対し、楕円曲線上のスカラ倍演算を実行する楕円曲線演算方法であって、前記秘密情報を分割して分割情報を生成する分割情報生成ステップと、2個の前記楕円曲線上の点に対し、前記楕円曲線の群において加算した結果得られる点を生成する楕円曲線加算ステップと、1個の前記楕円曲線上の点に対し、前記楕円曲線の群において2倍した結果得られる点を生成する楕円曲線2倍算ステップと、第1の前記楕円曲線上の点と前記分割情報に基づいて、前記楕円曲線加算ステップと前記楕円曲線2倍算ステップを使用して第2の前記楕円曲線上の点を生成するスカラ倍演算ステップとを含み、前記スカラ倍演算ステップは、前記楕円曲線加算ステップと前記楕円曲線2倍算ステップを使用する回数を合計した値が前記秘密情報のビット長以外の情報に依らず一定になるように制御し、前記楕円曲線加算ステップと前記楕円曲線2倍算ステップの各々は、楕円曲線の定義体における乗算を実行する乗算手段、前記定義体における2乗算を実行する2乗算手段、前記定義体における加算を実行する加算手段を有し、前記楕円曲線加算ステップと前記楕円曲線2倍算ステップは、実行する前記乗算、前記2乗算及び前記加算の順序が同じであることを特徴とする。
ここで、前記スカラ倍演算ステップは、一つの前記分割情報に基づいて、前記楕円曲線加算部と前記楕円曲線2倍算部を使用する回数を合計した値が前記秘密情報に依らず一定になるように制御するとしてもよい。
ここで、前記楕円曲線演算方法は、さらに1以上の予め与えられた正整数に対して、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果のそれぞれをテーブルに格納するテーブル生成ステップを含み、前記楕円曲線加算ステップで使用する2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブルに格納されている前記スカラ倍点であるとしてもよい。
ここで、前記分割情報生成ステップは、前記秘密情報を予め与えられたビット数をもつ複数の前記分割情報に分割するとしてもよい。
ここで、前記正整数は奇数であるとしてもよい。
ここで、前記分割情報生成ステップは、複数のswビットの前記分割情報を生成し、前記スカラ倍演算ステップは、(sw+1)回の演算処理を実行し、前記分割情報wが0以外かつ、前記分割情報wが2^t(tは非負整数)で割り切れて、2^(t+1)で割り切れない場合に、(sw−t+1)番目の前記演算処理は前記楕円曲線加算ステップを使用し、その他の前記演算処理は前記楕円曲線2倍算ステップを使用するとしてもよい。
また、本発明は、予め与えられる秘密情報と入力である楕円曲線上の点に対し、楕円曲線上のスカラ倍演算を実行する楕円曲線演算装置に実行させるプログラムであって、前記秘密情報を分割して分割情報を生成する分割情報生成ステップと、2個の前記楕円曲線上の点に対し、前記楕円曲線の群において加算した結果得られる点を生成する楕円曲線加算ステップと、1個の前記楕円曲線上の点に対し、前記楕円曲線の群において2倍した結果得られる点を生成する楕円曲線2倍算ステップと、第1の前記楕円曲線上の点と前記分割情報に基づいて、前記楕円曲線加算ステップと前記楕円曲線2倍算ステップを使用して第2の前記楕円曲線上の点を生成するスカラ倍演算ステップとを前記楕円曲線演算装置に実行させ、前記スカラ倍演算ステップは、前記楕円曲線加算ステップと前記楕円曲線2倍算ステップを使用する回数を合計した値が前記秘密情報のビット長以外の情報に依らず一定になるように制御し、前記楕円曲線加算ステップと前記楕円曲線2倍算ステップの各々は、楕円曲線の定義体における乗算を実行する乗算手段、前記定義体における2乗算を実行する2乗算手段、前記定義体における加算を実行する加算手段を有し、前記楕円曲線加算ステップと前記楕円曲線2倍算ステップは、実行する前記乗算、前記2乗算及び前記加算の順序が同じであることを特徴とする。
ここで、前記スカラ倍演算ステップは、一つの前記分割情報に基づいて、前記楕円曲線加算部と前記楕円曲線2倍算部を使用する回数を合計した値が前記秘密情報に依らず一定になるように制御するとしてもよい。
ここで、前記楕円曲線演算方法は、さらに1以上の予め与えられた正整数に対して、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果のそれぞれをテーブルに格納するテーブル生成ステップを含み、前記楕円曲線加算ステップで使用する2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブルに格納されている前記スカラ倍点であるとしてもよい。
ここで、前記分割情報生成ステップは、前記秘密情報を予め与えられたビット数をもつ複数の前記分割情報に分割するとしてもよい。
ここで、前記正整数は奇数であるとしてもよい。
ここで、前記分割情報生成ステップは、複数のswビットの前記分割情報を生成し、前記スカラ倍演算ステップは、(sw+1)回の演算処理を実行し、前記分割情報wが0以外かつ、前記分割情報wが2^t(tは非負整数)で割り切れて、2^(t+1)で割り切れない場合に、(sw−t+1)番目の前記演算処理は前記楕円曲線加算ステップを使用し、その他の前記演算処理は前記楕円曲線2倍算ステップを使用するとしてもよい。
また、本発明は、予め与えられる秘密情報と入力である楕円曲線上の点に対し、楕円曲線上のスカラ倍演算を実行する楕円曲線演算装置の集積回路であって、前記秘密情報を分割して分割情報を生成する分割情報生成部と、2個の前記楕円曲線上の点に対し、前記楕円曲線の群において加算した結果得られる点を生成する楕円曲線加算部と、1個の前記楕円曲線上の点に対し、前記楕円曲線の群において2倍した結果得られる点を生成する楕円曲線2倍算部と、第1の前記楕円曲線上の点と前記分割情報に基づいて、前記楕円曲線加算部と前記楕円曲線2倍算部を使用して第2の前記楕円曲線上の点を生成するスカラ倍演算部と、を備え、前記スカラ倍演算部は、前記楕円曲線加算部と前記楕円曲線2倍算部を使用する回数を合計した値が前記秘密情報のビット長以外の情報に依らず一定になるように制御し、前記楕円曲線加算部と前記楕円曲線2倍算部の各々は、楕円曲線の定義体における乗算を実行する乗算手段、前記定義体における2乗算を実行する2乗算手段、前記定義体における加算を実行する加算手段を有し、前記楕円曲線加算部と前記楕円曲線2倍算部は、実行する前記乗算、前記2乗算及び前記加算の順序が同じであることを特徴とする。
ここで、前記スカラ倍演算部は、一つの前記分割情報に基づいて、前記楕円曲線加算部と前記楕円曲線2倍算部を使用する回数を合計した値が前記秘密情報に依らず一定になるように制御するとしてもよい。
(19)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
以上説明したように、本発明によると、単純電力解析攻撃により安全性を低下することを防ぐことができる。
本発明を構成する各装置、各方法及び各コンピュータプログラムは、情報を安全に確実に扱う必要があるあらゆる産業において、経営的に、また継続的及び反復的に使用することができる。また、本発明を構成する各装置は、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
本発明に係る1の実施の形態としてのポイント発行システム10の構成を示すシステム構成図である。 楕円曲線演算部208の構成を示すブロック図である。 分割情報生成部222の動作を示すフローチャートである。 楕円曲線加算部226による加算の動作及び楕円曲線2倍算部227による2倍算の動作示すフローチャートである。図5へ続く。 楕円曲線加算部226による加算の動作及び楕円曲線2倍算部227による2倍算の動作示すフローチャートである。図4から続く。 テーブル生成部225によるテーブル{P_i}の生成の動作を示すフローチャートである。 sw=3の場合において、テーブル生成部225により生成されるテーブル{P_i}の一例を示す。 sw=4の場合において、テーブル生成部225により生成されるテーブル{P_i}の一例を示す。 sw=5の場合において、テーブル生成部225により生成されるテーブル{P_i}の一例を示す。 スカラ倍演算部229による演算の手順を示すフローチャートである。図11へ続く。 スカラ倍演算部229による演算の手順を示すフローチャートである。図10から続く。 図11のステップS161〜S168における各演算の意味を説明するためのsw=3の場合の演算変換表320である。 楕円曲線演算部208の動作を示すフローチャートである。 ポイント発行システム10の動作を示すフローチャートである。 デジタル署名システムの動作を示すフローチャートである。 鍵共有システムの動作を示すフローチャートである。 sw=4の場合の演算変換表330を示す。 スカラ倍演算部229の構成を示すブロック図である。
符号の説明
10 ポイント発行システム
100 ICカード
101 秘密鍵記憶部
102 復号処理部
103 通信部
104 制御部
105 情報記憶部
108 楕円曲線演算部
200 ポイント発行装置
201 公開鍵記憶部
202 暗号処理部
203 通信部
204 制御部
205 情報記憶部
206 入力受付部
207 表示部
208 楕円曲線演算部
221 べき倍係数格納部
222 分割情報生成部
223 分割情報格納部
224 被演算値格納部
225 テーブル生成部
226 楕円曲線加算部
227 楕円曲線2倍算部
228 テーブル格納部
229 スカラ倍演算部
230 入力部
231 出力部

Claims (16)

  1. 素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全又は確実に扱う情報セキュリティ装置であって、
    楕円曲線E上の点Cを記憶している点記憶手段と、
    係数kの全桁の値を記憶している桁記憶手段と、
    桁記憶手段から1個の桁の値wを取得する取得手段と、
    取得した前記桁により表現しうる値の種類の数と同数の乗算手段と、
    取得した前記桁の値wに対応する乗算手段を選択する選択手段と、
    係数kの全ての桁について、前記取得手段、前記選択手段及び前記乗算手段に対して、1個の桁の値wの取得と、取得した桁の値wに対応する乗算手段の選択と、選択された乗算手段による乗算とを繰り返すように制御する繰返制御手段とを備え、
    各乗算手段は、楕円曲線E上において、前記点Cに取得した前記桁の値wを乗じて得られた乗算結果を、当該桁に相応する位置において加算し、
    取得した前記桁の値wが2t で割り切れ、2t+1 で割り切れない条件を満たす非負整数tが存在する場合に、当該桁の値wに対応する前記乗算手段は、楕円曲線E上において、点Qにw/2t を乗じて得られる点の加算又は点Qに|w/2t |を乗じて得られる点の減算を含む演算を行い、
    取得した前記桁は、swビット長であり、
    前記非負整数tが存在する場合に、前記桁の値wに対応する前記乗算手段は、(sw+1)回の演算を順次行い、前記複数の演算のうち(sw−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算である
    ことを特徴とする情報セキュリティ装置。
  2. 前記情報セキュリティ装置は、さらに、点Qを初期の加算点とし、加算点へ2*Qを加算して新たな加算点を得ることを繰り返すことにより、点Qを除く2sw-1 個の加算点を生成するテーブル生成手段を含み、
    非負整数tが存在する場合に、当該桁の値wに対応する前記乗算手段は、点Qにw/2t 又は|w/2t |を乗じて得られる点として、前記テーブル生成手段により生成された前記加算点を用いる
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  3. 取得した前記桁は、3ビット長であり、
    前記桁の値wが2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、加算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、
    前記桁の値wが4である場合に、対応する乗算手段は、楕円曲線E上の2倍算、加算、2倍算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、
    前記桁の値wが−2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、減算及び2倍算をこの順序で行い、前記減算は、前記点Cを減ずる演算である
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  4. 取得した前記桁は、4ビット長であり、
    前記桁の値wが2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、2倍算、加算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、
    前記桁の値wが4である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、加算、2倍算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、
    前記桁の値wが6である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、2倍算、加算及び2倍算をこの順序で行い、前記加算は、点3*Cを加える演算であり、
    前記桁の値wが8である場合に、対応する乗算手段は、楕円曲線E上の2倍算、加算、2倍算、2倍算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、
    前記桁の値wが−6である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、2倍算、減算及び2倍算をこの順序で行い、前記減算は、点3*Cを減ずる演算であり、
    前記桁の値wが−4である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、減算、2倍算及び2倍算をこの順序で行い、前記減算は、点Cを減ずる演算であり、
    前記桁の値wが−2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、2倍算、減算及び2倍算をこの順序で行い、前記減算は、点Cを減ずる演算である
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  5. 前記加算又は前記減算及び前記2倍算は、それぞれ、同じ順序で同じ種類の演算を実行するように、ダミーの演算を含む
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  6. 取得した前記桁がaビット長である場合に、前記非負整数tが存在するときに、前記桁の値wに対応する前記乗算手段は、(a+1)回の演算を順次行い、前記複数の演算のうち(a−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算であり、
    取得した前記桁がbビット長である場合に、前記非負整数tが存在するときに、前記桁の値wに対応する前記乗算手段は、(b+1)回の演算を順次行い、前記複数の演算のうち(b−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算である
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  7. 前記情報セキュリティ装置は、暗号化装置であって、
    点k*Cを算出する楕円曲線演算を用いて、情報を暗号化する
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  8. 前記情報セキュリティ装置は、復号装置であって、
    点k*Cを算出する楕円曲線演算を用いて、暗号化された情報を復号する
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  9. 前記情報セキュリティ装置は、デジタル署名生成装置であって、
    点k*Cを算出する楕円曲線演算を用いて、情報にデジタル署名を施す
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  10. 前記情報セキュリティ装置は、デジタル署名検証装置であって、
    点k*Cを算出する楕円曲線演算を用いて、デジタル署名の検証を行う
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  11. 前記情報セキュリティ装置は、鍵共有装置であって、
    点k*Cを算出する楕円曲線演算を用いて、他の鍵共有装置との間で、共有する鍵を生成する
    ことを特徴とする請求項1に記載の情報セキュリティ装置。
  12. 素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算装置であって、
    楕円曲線E上の点Cを記憶している点記憶手段と、
    係数kの全桁の値を記憶している桁記憶手段と、
    桁記憶手段から1個の桁の値wを取得する取得手段と、
    取得した前記桁により表現しうる値の種類の数と同数の乗算手段と、
    取得した前記桁の値wに対応する乗算手段を選択する選択手段と、
    係数kの全ての桁について、前記取得手段、前記選択手段及び前記乗算手段に対して、1個の桁の値wの取得と、取得した桁の値wに対応する乗算手段の選択と、選択された乗算手段による乗算とを繰り返すように制御する繰返制御手段とを備え、
    各乗算手段は、楕円曲線E上において、前記点Cに取得した前記桁の値wを乗じて得られた乗算結果を、当該桁に相応する位置において加算し、
    取得した前記桁の値wが2t で割り切れ、2t+1 で割り切れない条件を満たす非負整数tが存在する場合に、当該桁の値wに対応する前記乗算手段は、楕円曲線E上において、点Qにw/2t を乗じて得られる点の加算又は点Qに|w/2t |を乗じて得られる点の減算を含む演算を行い、
    取得した前記桁は、swビット長であり、
    前記非負整数tが存在する場合に、前記桁の値wに対応する前記乗算手段は、(sw+1)回の演算を順次行い、前記複数の演算のうち(sw−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算である
    ことを特徴とする楕円曲線演算装置。
  13. 素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算のための集積回路であって、
    楕円曲線E上の点Cを記憶している点記憶手段と、
    係数kの全桁の値を記憶している桁記憶手段と、
    桁記憶手段から1個の桁の値wを取得する取得手段と、
    取得した前記桁により表現しうる値の種類の数と同数の乗算手段と、
    取得した前記桁の値wに対応する乗算手段を選択する選択手段と、
    係数kの全ての桁について、前記取得手段、前記選択手段及び前記乗算手段に対して、1個の桁の値wの取得と、取得した桁の値wに対応する乗算手段の選択と、選択された乗算手段による乗算とを繰り返すように制御する繰返制御手段とを備え、
    各乗算手段は、楕円曲線E上において、前記点Cに取得した前記桁の値wを乗じて得られた乗算結果を、当該桁に相応する位置において加算し、
    取得した前記桁の値wが2t で割り切れ、2t+1 で割り切れない条件を満たす非負整数tが存在する場合に、当該桁の値wに対応する前記乗算手段は、楕円曲線E上において、点Qにw/2t を乗じて得られる点の加算又は点Qに|w/2t |を乗じて得られる点の減算を含む演算を行い、
    取得した前記桁は、swビット長であり、
    前記非負整数tが存在する場合に、前記桁の値wに対応する前記乗算手段は、(sw+1)回の演算を順次行い、前記複数の演算のうち(sw−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算である
    ことを特徴とする集積回路。
  14. 素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全又は確実に扱う情報セキュリティ装置で用いられる方法であって、
    前記情報セキュリティ装置は、楕円曲線E上の点Cを記憶している点記憶手段と、係数kの全桁の値を記憶している桁記憶手段とを備え、
    前記方法は、
    桁記憶手段から1個の桁の値wを取得する取得ステップと、
    取得した前記桁により表現しうる値の種類の数と同数の乗算ステップと、
    取得した前記桁の値wに対応する乗算ステップを選択する選択ステップと、
    係数kの全ての桁について、前記取得ステップ、前記選択ステップ及び前記乗算ステップに対して、1個の桁の値wの取得と、取得した桁の値wに対応する乗算ステップの選択と、選択された乗算ステップによる乗算とを繰り返すように制御する繰返制御ステップとを含み、
    各乗算ステップは、楕円曲線E上において、前記点Cに取得した前記桁の値wを乗じて得られた乗算結果を、当該桁に相応する位置において加算し、
    取得した前記桁の値wが2t で割り切れ、2t+1 で割り切れない条件を満たす非負整数tが存在する場合に、当該桁の値wに対応する前記乗算ステップは、楕円曲線E上において、点Qにw/2t を乗じて得られる点の加算又は点Qに|w/2t |を乗じて得られる点の減算を含む演算を行い、
    取得した前記桁は、swビット長であり、
    前記非負整数tが存在する場合に、前記桁の値wに対応する前記乗算ステップは、(sw+1)回の演算を順次行い、前記複数の演算のうち(sw−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算である
    ことを特徴とする方法。
  15. 素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全又は確実に扱う情報セキュリティ装置で用いられるコンピュータプログラムであって、
    前記情報セキュリティ装置は、楕円曲線E上の点Cを記憶している点記憶手段と、係数kの全桁の値を記憶している桁記憶手段とを備え、
    前記コンピュータプログラムは、
    コンピュータである前記情報セキュリティ装置に、
    桁記憶手段から1個の桁の値wを取得する取得ステップと、
    取得した前記桁により表現しうる値の種類の数と同数の乗算ステップと、
    取得した前記桁の値wに対応する乗算ステップを選択する選択ステップと、
    係数kの全ての桁について、前記取得ステップ、前記選択ステップ及び前記乗算ステップに対して、1個の桁の値wの取得と、取得した桁の値wに対応する乗算ステップの選択と、選択された乗算ステップによる乗算とを繰り返すように制御する繰返制御ステップとを実行させ、
    各乗算ステップは、楕円曲線E上において、前記点Cに取得した前記桁の値wを乗じて得られた乗算結果を、当該桁に相応する位置において加算し、
    取得した前記桁の値wが2t で割り切れ、2t+1 で割り切れない条件を満たす非負整数tが存在する場合に、当該桁の値wに対応する前記乗算ステップは、楕円曲線E上において、点Qにw/2t を乗じて得られる点の加算又は点Qに|w/2t |を乗じて得られる点の減算を含む演算を行い、
    取得した前記桁は、swビット長であり、
    前記非負整数tが存在する場合に、前記桁の値wに対応する前記乗算ステップは、(sw+1)回の演算を順次行い、前記複数の演算のうち(sw−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算である
    ことを特徴とするコンピュータプログラム。
  16. 前記コンピュータプログラムは、コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項15に記載のコンピュータプログラム。
JP2007514728A 2005-04-27 2006-04-25 情報セキュリティ装置及び楕円曲線演算装置 Expired - Fee Related JP4825199B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007514728A JP4825199B2 (ja) 2005-04-27 2006-04-25 情報セキュリティ装置及び楕円曲線演算装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2005129273 2005-04-27
JP2005129273 2005-04-27
PCT/JP2006/308598 WO2006118092A1 (ja) 2005-04-27 2006-04-25 情報セキュリティ装置及び楕円曲線演算装置
JP2007514728A JP4825199B2 (ja) 2005-04-27 2006-04-25 情報セキュリティ装置及び楕円曲線演算装置

Publications (2)

Publication Number Publication Date
JPWO2006118092A1 JPWO2006118092A1 (ja) 2008-12-18
JP4825199B2 true JP4825199B2 (ja) 2011-11-30

Family

ID=37307892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007514728A Expired - Fee Related JP4825199B2 (ja) 2005-04-27 2006-04-25 情報セキュリティ装置及び楕円曲線演算装置

Country Status (5)

Country Link
US (1) US7940927B2 (ja)
EP (1) EP1879164A1 (ja)
JP (1) JP4825199B2 (ja)
CN (1) CN101198998A (ja)
WO (1) WO2006118092A1 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090327382A1 (en) * 2006-07-25 2009-12-31 Nec Corporation Pseudo-random number generation device, stream encryption device and program
US8625784B2 (en) * 2006-12-22 2014-01-07 Samsung Electronics Co., Ltd. Broadcast encryption method and broadcast decryption method thereof
US8160245B2 (en) * 2007-03-07 2012-04-17 Research In Motion Limited Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting
US8050403B2 (en) * 2007-03-06 2011-11-01 Research In Motion Limited Method and apparatus for generating a public key in a manner that counters power analysis attacks
EP2158719B1 (en) * 2007-06-11 2016-08-03 Nxp B.V. Method of generating a public key for an electronic device and electronic device
US8559625B2 (en) * 2007-08-07 2013-10-15 Inside Secure Elliptic curve point transformations
US8619977B2 (en) * 2008-01-15 2013-12-31 Inside Secure Representation change of a point on an elliptic curve
US8233615B2 (en) * 2008-01-15 2012-07-31 Inside Secure Modular reduction using a special form of the modulus
JP2010049213A (ja) * 2008-08-25 2010-03-04 Toshiba Corp 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
WO2010123114A1 (ja) * 2009-04-24 2010-10-28 日本電信電話株式会社 秘密分散システム、分散装置、分散管理装置、取得装置、それらの処理方法、秘密分散方法、プログラム及び記録媒体
WO2011121661A1 (ja) * 2010-03-31 2011-10-06 富士通株式会社 暗号処理装置および暗号処理方法
WO2012090288A1 (ja) 2010-12-27 2012-07-05 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム
CA2830285C (en) * 2011-03-18 2016-11-08 Blackberry Limited Keyed pv signatures
US9645794B2 (en) * 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
US10361844B2 (en) * 2015-04-20 2019-07-23 Certicom Corp. Generating cryptographic function parameters based on an observed astronomical event
US9531531B2 (en) * 2015-05-06 2016-12-27 Qualcomm Incorporated Methods and devices for fixed execution flow multiplier recoding and scalar multiplication
WO2017007663A1 (en) 2015-07-07 2017-01-12 Tesla Health, Inc Field-invariant quantitative magnetic-resonance signatures
EP3320358A4 (en) * 2015-07-07 2019-07-03 Q Bio, Inc. QUANTITATIVE MAGNETIC RESONANCE SIGNATURES OF INVARIABLE FIELD
US10194829B2 (en) 2015-07-07 2019-02-05 Q Bio, Inc. Fast scanning based on magnetic resonance history
US9958521B2 (en) 2015-07-07 2018-05-01 Q Bio, Inc. Field-invariant quantitative magnetic-resonance signatures
US9665734B2 (en) 2015-09-12 2017-05-30 Q Bio, Inc. Uniform-frequency records with obscured context
US10964412B2 (en) 2015-10-20 2021-03-30 Q Bio, Inc. Population-based medical rules via anonymous sharing
MX2018010045A (es) 2016-02-23 2019-01-21 Nchain Holdings Ltd Intercambio basado en cadena de bloques con tokenizacion.
CN114679282A (zh) 2016-02-23 2022-06-28 区块链控股有限公司 用区块链实施的用于安全投票和分配的计数***和方法
EP3420513A1 (en) 2016-02-23 2019-01-02 Nchain Holdings Limited System and method for controlling asset-related actions via a blockchain
EP4369273A3 (en) 2016-02-23 2024-07-17 nChain Licensing AG A method and system for securing computer software using a distributed hash table and a blockchain
WO2017145002A1 (en) * 2016-02-23 2017-08-31 nChain Holdings Limited Personal device security using elliptic curve cryptography for secret sharing
BR112018016245A2 (pt) 2016-02-23 2018-12-18 Nchain Holdings Ltd método, dispositivo e sistema para determinação de um segredo comum para o intercâmbio seguro de informações e chaves criptoógráficas, sistema para comunicação e programa de computador
CN108781161B (zh) 2016-02-23 2021-08-20 区块链控股有限公司 用于控制和分发数字内容的区块链实现的方法
EP3420669B1 (en) 2016-02-23 2021-03-24 Nchain Holdings Limited Cryptographic method and system for secure extraction of data from a blockchain
EA201891827A1 (ru) 2016-02-23 2019-02-28 Нчейн Холдингс Лимитед Реестр и способ автоматизированного администрирования смарт-контрактов, использующих блокчейн
EP4383643A2 (en) 2016-02-23 2024-06-12 nChain Licensing AG Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
US10222441B2 (en) 2016-04-03 2019-03-05 Q Bio, Inc. Tensor field mapping
US10359486B2 (en) 2016-04-03 2019-07-23 Q Bio, Inc. Rapid determination of a relaxation time
FR3055444B1 (fr) * 2016-08-23 2022-02-04 Maxim Integrated Products Dispositif et procedes de commande de dispositif de cryptage sur courbe elliptique securises
US11650195B2 (en) 2017-02-03 2023-05-16 Q Bio, Inc. Iterative medical testing of biological samples
US10936180B2 (en) 2017-03-16 2021-03-02 Q Bio, Inc. User interface for medical information
US11075763B2 (en) 2019-02-15 2021-07-27 International Business Machines Corporation Compute digital signature authentication sign with encrypted key instruction
US11108567B2 (en) 2019-02-15 2021-08-31 International Business Machines Corporation Compute digital signature authentication verify instruction
US11360166B2 (en) 2019-02-15 2022-06-14 Q Bio, Inc Tensor field mapping with magnetostatic constraint
US11354586B2 (en) 2019-02-15 2022-06-07 Q Bio, Inc. Model parameter determination using a predictive model
US11303456B2 (en) 2019-02-15 2022-04-12 International Business Machines Corporation Compute digital signature authentication sign instruction
US11614509B2 (en) 2019-09-27 2023-03-28 Q Bio, Inc. Maxwell parallel imaging
US11131735B2 (en) 2019-09-27 2021-09-28 Q Bio, Inc. Maxwell parallel imaging
CN111538480B (zh) * 2020-03-26 2022-02-11 郑州信大捷安信息技术股份有限公司 一种用于椭圆曲线密码的倍点运算方法及***
US11614508B1 (en) 2021-10-25 2023-03-28 Q Bio, Inc. Sparse representation of measurements
CN116132049B (zh) * 2023-01-04 2023-09-08 声龙(新加坡)私人有限公司 数据加密的方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337599A (ja) * 2000-05-30 2001-12-07 Hitachi Ltd 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
JP2002528771A (ja) * 1998-10-28 2002-09-03 サーティコム コーポレーション 耐パワーシグニチャーアタック暗号法
JP2003233307A (ja) * 2001-12-04 2003-08-22 Fujitsu Ltd 秘密鍵を用いた耐タンパ暗号処理
JP2005020735A (ja) * 2003-06-26 2005-01-20 Sharp Corp データ処理装置におけるサイドチャネル攻撃防止

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3796993B2 (ja) 1998-12-22 2006-07-12 株式会社日立製作所 楕円曲線暗号実行方法及び装置並びに記録媒体
US7418099B2 (en) * 2002-05-03 2008-08-26 Certicom Corp. Method and apparatus for performing elliptic curve arithmetic

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002528771A (ja) * 1998-10-28 2002-09-03 サーティコム コーポレーション 耐パワーシグニチャーアタック暗号法
JP2001337599A (ja) * 2000-05-30 2001-12-07 Hitachi Ltd 楕円曲線暗号におけるスカラー倍計算方法及び装置、並びに記憶媒体
JP2003233307A (ja) * 2001-12-04 2003-08-22 Fujitsu Ltd 秘密鍵を用いた耐タンパ暗号処理
JP2005020735A (ja) * 2003-06-26 2005-01-20 Sharp Corp データ処理装置におけるサイドチャネル攻撃防止

Also Published As

Publication number Publication date
EP1879164A1 (en) 2008-01-16
JPWO2006118092A1 (ja) 2008-12-18
US7940927B2 (en) 2011-05-10
US20090074179A1 (en) 2009-03-19
CN101198998A (zh) 2008-06-11
WO2006118092A1 (ja) 2006-11-09

Similar Documents

Publication Publication Date Title
JP4825199B2 (ja) 情報セキュリティ装置及び楕円曲線演算装置
JP4671571B2 (ja) 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ
CN101061526B (zh) 密码处理运算装置
JP4906733B2 (ja) 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路
JP4137385B2 (ja) 公開鍵および秘密鍵による暗号化方法
JP5814880B2 (ja) 暗号システム、暗号方法、暗号プログラム及び復号装置
JP2002540483A (ja) 楕円曲線型公開鍵暗号化アルゴリズムを用いる電子構成部品内の対抗措置方法
JP4513752B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JPWO2005098795A1 (ja) コンピュータシステム、コンピュータプログラム及び加算方法
JP2010164904A (ja) 楕円曲線演算処理装置、楕円曲線演算処理プログラム及び方法
JP2004304800A (ja) データ処理装置におけるサイドチャネル攻撃防止
EP1443393B1 (en) Elliptic curve exponentiation that can counter a differential fault attack
KR20050106416A (ko) 암호화 시스템 내의 모듈러 멱승 결과 결정 장치 및 방법
JP2003216026A (ja) 楕円曲線暗号処理方法および楕円曲線暗号処理装置、並びにコンピュータ・プログラム
JP5323196B2 (ja) 演算装置、方法およびプログラム
JP2003255831A (ja) 楕円曲線スカラー倍計算方法及び装置
Steinwandt et al. Attacking a polynomial-based cryptosystem: Polly Cracker
JP4922139B2 (ja) 鍵共有方法、第1装置、第2装置、及び、それらのプログラム
Kayode et al. Efficient RSA cryptosystem decryption based on Chinese remainder theorem and strong prime
KR20170113268A (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
JP4634046B2 (ja) 故障利用攻撃に対抗できる楕円べき倍演算装置及び情報セキュリティ装置
JP2010049211A (ja) 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム
WO2008013154A1 (en) Extension filed multiplication program and extension filed multiplication device
JP2005165290A (ja) Rsa公開鍵生成装置、rsa復号装置及びrsa署名装置
JP2002278450A (ja) 素数生成装置、方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110715

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110909

R150 Certificate of patent or registration of utility model

Ref document number: 4825199

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140916

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees