JP4825199B2 - 情報セキュリティ装置及び楕円曲線演算装置 - Google Patents
情報セキュリティ装置及び楕円曲線演算装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- 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
-
- 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/32—Cryptographic 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/3247—Cryptographic 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/3252—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7261—Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital 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(差分電力解析攻撃)と呼ばれる解読方法では、暗号処理を行う際の暗号モジュールにおける電力消費量を副情報として用いる。
以下の記述では、上記のような暗号処理時における暗号モジュールの電力消費量の変化、すなわち、電力波形を手がかりにして、暗号鍵を解析する解読方法を総称して、「電力解析攻撃」と呼ぶ。なお、タイミング攻撃については、非特許文献1に、電力解析攻撃については、非特許文献2に詳しく述べられている。
(楕円曲線暗号の単純電力解析攻撃)
楕円曲線暗号の復号化処理において、正整数である秘密鍵ksと暗号文の一部である楕円曲線上の点Cのスカラ倍点ks*Cを計算する。ここで、ks*Cは、ks個の点Cを加算することにより得られる楕円曲線上の点を表す。この計算方法として例えば、非特許文献5の69ページにおける符号付Window法が知られている。以下では、符号付Window法について説明する。なお、以下では、Windowの幅を3ビットとする。
ステップS8021:c←0
ステップS8022:v_c>2^2であるか判定。v_c>2^2である場合、ステップS8023へ。それ以外は、ステップS8024へ。
ステップS8024:w_c←v_c
ステップS8025:c←c+1
ステップS8026:c>b+1であるか判定。c>b+1である場合、ステップS803へ。それ以外は、ステップS8022へ。
ステップ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へ。
ステップS8041:c←b+1
ステップS8042:w_c=0であるか判定。w_c=0である場合は、c←c−1。
ステップ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)とに対する楕円曲線の加算の結果である。
上記方法では、スカラ倍点を整数列{w_i}とテーブル{P_i}を用いて計算している。ステップS8047ではw_c=0の場合は、楕円曲線の演算を実行していない。また、ステップS8042では、w_c=0である場合は、楕円曲線の演算を行わず、cをデクリメントするため、その分、楕円曲線の演算を実行しないことになる。このように、w_c=0の場合は、そうでない場合と処理が異なる。
以下に、楕円曲線の2倍算と楕円曲線の加算の公式を示す。この公式について非特許文献4に詳しく述べられている。ここでは、点の座標をJacobian座標として、楕円曲線の演算(加算及び2倍算)を行う。
(a)楕円曲線の加算公式
P1=(X1,Y1,Z1),P2=(X2,Y2,Z2)に対して、P3=P1+P2=(X3,Y3,Z3)とする。
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である。
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倍算とは、2乗算及び乗算の回数が異なるため、暗号モジュールにおける消費電力の波形が異なる。したがって、電力波形を観測することにより、楕円曲線の2倍算、加算の演算の順序を解析することが可能になる。その解析結果から、w_c=0の場合の有無を攻撃者が知ることができる。さらに、攻撃者は、w_c=0であるか否かの情報から秘密鍵ksの探索空間を狭めることが可能になる。
上記の単純電力解析攻撃では、w_c=0の場合に計算処理が異なることを利用している。そこで、この攻撃から防御するためには、w_c=0の場合にダミーの計算処理を追加することにより、w_c=0の場合とそうでない場合の計算処理を同じにすればよい。具体的には、以下のアルゴリズムで計算する。
ステップS9021:c←0
ステップS9022:v_c>2^2であるか判定。v_c>2^2である場合、ステップS9023へ。それ以外は、ステップS9024へ。
ステップS9024:w_c←v_c
ステップS9025:c←c+1
ステップS9026:c>b+1であるか判定。c>b+1である場合、ステップS903へ。それ以外は、ステップS9022へ。
ステップ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へ。
ステップ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へ。
ステップ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)とに対する楕円曲線の加算の結果である。
上記単純電力攻撃に対する対策方法では、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の場合と同じ演算を実行していることになる。
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
本発明は、単純電力解析攻撃に対する耐性は保持しつつ、使用するテーブル量を削減することができる情報セキュリティ装置、楕円曲線演算装置、方法及びコンピュータプログラムを提供することを目的とする。
このように、本発明によると、従来技術と比較して、加算又は減算において用いられる点を少なくすることができ、使用するテーブル量を削減することができる。
この構成によると、従来技術における場合と同じ演算結果が得られ、かつ、加算又は減算において用いる点の数を少なくすることができる。
ここで、取得した前記桁は、3ビット長であり、前記桁の値wが2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、加算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、前記桁の値wが4である場合に、対応する乗算手段は、楕円曲線E上の2倍算、加算、2倍算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、前記桁の値wが−2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、減算及び2倍算をこの順序で行い、前記減算は、前記点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を減ずる演算であるとしてもよい。
ここで、前記加算又は前記減算及び前記2倍算は、それぞれ、同じ順序で同じ種類の演算を実行するように、ダミーの演算を含むとしてもよい。
この構成によると、加算又は減算及び2倍算は、それぞれ、同じ順序で同じ種類の演算を実行するので、電力波形を手がかりにして、解析しようとしても、加算又は減算及び2倍算において、同様の電力波形が出力され、2者を明確に区別することが困難となる。こうして、電力解析攻撃に対抗することができる。
ここで、前記情報セキュリティ装置は、暗号化装置であって、点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の実施の形態としてのポイント発行システム10について説明する。
1.1 ポイント発行システム10の構成
ポイント発行システム10は、図1に示すように、ICカード100及びポイント発行装置200から構成されている。
ここで、ポイントは、利用者が商品を購入したりサービスの提供を受けた場合に、販売者やサービス提供者から受け取る特典情報であり、次に利用者が商品を購入したりサービスの提供を受ける際に、販売者やサービス提供者への対価の支払いの一部又は全部として利用される。
ポイント発行装置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を求めよ、という問題である。
x*G=G+G+G+・・・+G
離散対数問題を公開鍵暗号の安全性の根拠とするのは、多くの元を有する有限体GF(p)に対して、上記問題は極めて難しいからである。
ポイント発行装置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は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、キーボードなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、ポイント発行装置200は、その一部の機能を達成する。
情報記憶部205は、素数p、素数pを法とする剰余体Fp上で定義された楕円曲線E(Fp)上のベースポイントB及び楕円曲線E(Fp)の係数を記憶している。また、生成されたポイントPmを記憶するための領域を備えている。
前記楕円曲線E(Fp)は、一例として、y2=x3+a×x+bであり、前記係数は、a及びbである。
公開鍵Kp=秘密鍵ks*ベースポイントB
(2)制御部204
制御部204は、前記特典情報としてのポイントPmを生成し、生成したポイントPmを情報記憶部205に書き込む。次に、暗号処理部202に対して、ポイントPmを暗号化してICカード100へ送信することを示す指示を出力する。
通信部203は、暗号処理部202又は制御部204の制御の基に、ICカード100との間で、情報の送受信を行う。
入力受付部206は、ポイント発行装置200の操作者からの情報又は指示の入力を受け付け、入力を受け付けた情報又は指示を制御部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は、情報記憶部205からポイントPmを読み出し、読み出したポイントPmと受け取ったべき倍点r*Kpのx座標値とに排他的論理和を施して、第2暗号文s2=ポイントPm xor (べき倍点r*Kpのx座標値)を生成する。ここで、「xor」は、排他的論理和を示す演算子である。
(5)楕円曲線演算部208
楕円曲線演算部208は、上述したように、入力部230、べき倍係数格納部221、分割情報生成部222、分割情報格納部223、被演算値格納部224、テーブル生成部225、楕円曲線加算部226、楕円曲線2倍算部227、テーブル格納部228、スカラ倍演算部229及び出力部231から構成されている。
べき倍係数格納部221は、ただ1個のべき倍係数kを記憶するための領域を備えている。べき倍係数kは、スカラであり、べき倍係数kのビット数は、lenであるとする。
また、被演算値格納部224は、ただ1個の被べき倍点Gを記憶するための領域を備えている。被べき倍点Gは、楕円曲線上の点である。
入力部230は、暗号処理部202からべき倍係数kを受け取り、べき倍係数格納部221に既にべき倍係数が記憶されている場合には、受け取ったべき倍係数kをべき倍係数格納部221において上書きし、べき倍係数格納部221にべき倍係数が記憶されていない場合には、受け取ったべき倍係数kをべき倍係数格納部221に書き込む。
出力部231は、スカラ倍演算部229からべき倍点k*Cを受け取り、受け取ったべき倍点k*Cを暗号処理部202へ出力する。
分割情報格納部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}を生成する。
分割情報生成部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は、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>b+1であるか否かを判定し、c>b+1である場合(ステップS137でYES)、整数列{w_i}を分割情報として分割情報格納部223に格納し(ステップS138)、分割情報の生成の処理を終了する。c≦b+1である場合(ステップS137でNO)、ステップS133へ戻って処理を繰り返す。
楕円曲線加算部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へ出力する。
本実施の形態では、楕円曲線加算部226及び楕円曲線2倍算部227において使用される演算及びその順序が同じになるように、ダミー演算が追加される。
以下では、ダミー演算が「ダミー演算である」と明確に分かるようにするため、ダミー演算を結果の代入先を変数Dにより示す。なお、本実施の形態で使用する楕円曲線加算及び楕円曲線2倍算はJacobian座標に対するものである。Jacobian座標については非特許文献4に詳しく述べられている。
・Sqr(X):Xの2乗算を示す。
・Mul(X,Y):XとYの乗算を示す。なお、X=Yの場合においても、Mul(X,Y)と記載している場合は、Sqr(X)を用いて2乗算を行うのではなく、同じXの乗算として計算を行う。
・Mul3(X):Xと3との乗算を示す。
・Mul4(X):Xと4との乗算を示す。
・Mul8(X):Xと8との乗算を示す。
・Sub(X,Y)XからYを引く減算を示す。
以下に、楕円曲線加算部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倍算の動作を、図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)。
図4及び図5に示すように、楕円曲線加算部226と楕円曲線2倍算部227とは、同じ順序で同じ演算を実行していることがわかる。
(5−6)テーブル格納部228
テーブル格納部228は、テーブル生成部225により生成された楕円曲線上の点を1個以上格納するための領域を備えている。
テーブル生成部225は、以下に説明するように、楕円曲線上の点からなるテーブル{P_i}を生成し、生成したテーブル{P_i}をテーブル格納部228へ格納する。
ここで、テーブル{P_i}は、1個以上の楕円曲線上の点P_i(i=1、2、3、・・・)を含む。
テーブル生成部225は、被演算値格納部224から、被べき倍点Cを読み出し、テーブル生成部225は、P_1←C及びQ←ECD(C)を演算する(ステップS141)。
次に、テーブル生成部225は、i←i+1を算出し(ステップS143)、2sw-2 を算出し、i>2sw-2 であるか否かを判断する。i>2sw-2である場合には(ステップS144)、テーブル生成の処理を終了する。
ここで、ECAは、楕円曲線上の加算を示し、楕円曲線加算部226を用いて計算することを示している。例えば、ECA(A,B)は、楕円曲線上の点A及び点Bに対して算出された加算の演算結果を示し、ECD(A)=A+Bである。テーブル生成部225は、楕円曲線加算部226に対して、楕円曲線上の点A及び点B並びに加算の指示を出力し、楕円曲線加算部226から加算の演算結果を受け取る。
上記の処理より、P_i=(2×i−1)*Cとなっていることがわかる。
sw=3、4及び5の場合において、テーブル生成部225により生成されるテーブル{P_i}の一例を、それぞれ、図7、図8及び図9に示す。
(5−8)スカラ倍演算部229
スカラ倍演算部229は、分割情報格納部223に格納されている整数列{w_i}とテーブル格納部228に格納されているテーブル{P_i}を用いて、以下に示すようにして、べき倍係数kに対して、k倍した点k*Cを計算する。
スカラ倍演算部229による演算の手順について、図10〜図11に示すフローチャートを用いて説明する。
スカラ倍演算部229の初期演算部244は、c←b+1を算出する(ステップS151)。ここで、cは、処理回数を計数するカウンタ変数であり、レジスタ部245が有するレジスタにより構成されている。bは、上述したように、「(len/sw以上の最も小さい整数)−1」である。レジスタ部245は、また、後述する変数D及び変数Rをそれぞれ構成する2個のレジスタを有している。
次に、取得部241は、P_(w_c)を取得し、スカラ倍演算部229の初期演算部244は、R←P_(w_c)を演算し(ステップS154)、繰返制御部243は、c←c−1を演算する(ステップS155)。
c≧0である場合は(ステップS156)、取得部241は、P_(w_c)を取得し、スカラ倍演算部229の選択部242は、w_cの値に応じて(ステップS157)、以下の処理を行う。
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=0の場合(ステップS157)、選択部242は、Window演算部254を選択し、Window演算部254は、R←ECD(R),R←ECD(R),R←ECD(R),D←ECA(R,P_1)を演算する(ステップS164)。
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=4の場合(ステップS157)、選択部242は、Window演算部258を選択し、Window演算部258は、R←ECD(R),R←ECA(R,P_1),R←ECD(R),R←ECD(R)を演算する(ステップS168)。
(ステップS161〜S168における各演算について)
ここで、図11のステップS161〜S168における各演算の意味について、図12に示す演算変換表320を用いて説明する。
ここで、w_cの値に応じて、なされる複数の演算を、便宜上、Window演算と呼ぶこととする。
また、Window演算に含まれるECA及びECDを、便宜上、基本演算と呼ぶ。
次に、w_cが各値をとる場合について、従来のWindow演算、スカラ倍演算部229によるWindow演算、基本演算順序及び基本演算回数について説明する。
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演算基本に含まれる基本演算の種類とその数とを一致させるためのものである。
これは、23 R=2×(2×(2×R))であることによる。
従って、w_c=0に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、ダミーの加算の順序で、複数の基本演算が行われる。(ステップS164参照)
このように、w_c=0に対するスカラ倍演算部229によるWindow演算に含まれる基本演算の個数は、「4」である。
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」である。
ここで、「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倍算、加算の順序で、複数の基本演算が行われる。
(c)w_c=2の場合
w_c=2に対する従来のWindow演算は、「R←23 R+2C」である。「R←23 R+2C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに2Cを加算することを示している。
2(22 R+C)=23 R+2Cであることにより、w_c=2に対する従来のWindow演算による結果と、スカラ倍演算部229によるWindow演算による結果とは、同一であることが分かる。
これは、2(22 R+C)=2×(2×(2×R)+C)であることによる。
従って、w_c=2に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、加算、2倍算の順序で、複数の基本演算が行われる。
このように、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に対する従来の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演算に含まれる基本演算の個数は、「4」である。
(e)w_c=4の場合
w_c=4に対する従来のWindow演算は、「R←23 R+4C」である。「R←23 R+4C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに4Cを加算することを示している。
22 (2R+C)=23 R+4Cであることにより、w_c=4に対する従来のWindow演算による結果と、スカラ倍演算部229によるWindow演算による結果とは、同一であることが分かる。
これは、22 (2R+C)=2×2×((2×R)+C))であることによる。
従って、w_c=4に対するスカラ倍演算部229によるWindow演算では、2倍算、加算、2倍算、2倍算の順序で、複数の基本演算が行われる。
このように、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に対する従来の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演算に含まれる基本演算の個数は、「4」である。
(g)w_c=−2の場合
w_c=−2に対する従来のWindow演算は、「R←23 R−2C」である。「R←23 R−2C」は、変数Rの値を、Windowの幅の示すビット(ここでは、3ビット)だけ、上位にシフトし、その後、変数Rに−2Cを加算する(つまり、変数Rから2Cを減算する)ことを示している。
2(22 R−C)=23 R−2Cであることにより、w_c=−2に対する従来のWindow演算による結果と、スカラ倍演算部229によるWindow演算による結果とは、同一であることが分かる。
これは、2(22 R−C)=2×(2×(2×R)+(−C))であることによる。
従って、w_c=−2に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、加算(ここでは減算)、2倍算の順序で、複数の基本演算が行われる。
このように、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に対する従来の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演算に含まれる基本演算の個数は、「4」である。
1.4 楕円曲線演算部208の動作
楕円曲線演算部208の動作について、図13に示すフローチャートを用いて説明する。
次に、分割情報生成部222は、べき倍係数kから分割情報である整数列{w_i}を生成し、生成した整数列{w_i}を分割情報格納部223に格納する(ステップS123)。
次に、スカラ倍演算部229は、分割情報格納部223に格納されている整数列{w_i}とテーブル格納部228に格納されているテーブル{P_i}とを使用して、べき倍点k*Cを計算する(ステップS125)。
1.5 ICカード100の構成
ICカード100は、図1に示すように、秘密鍵記憶部101、復号処理部102、通信部103、制御部104、情報記憶部105及び楕円曲線演算部108から構成されている。
(1)情報記憶部105及び秘密鍵記憶部101
情報記憶部105は、素数p、楕円曲線E(Fp)の係数及びベースポイントBを記憶している。また、生成された復号ポイントPm’を記憶するための領域を備えている。
(2)通信部103
通信部103は、ポイント発行装置200から第1暗号文s1及び第2暗号文s2を受信する。第1暗号文s1及び第2暗号文s2を受信すると、制御部104に対して、受信した旨を制御部104に対して通知する。また、受信した第1暗号文s1及び第2暗号文s2を復号処理部102へ出力する。
制御部104は、通信部103から第1暗号文s1及び第2暗号文s2を受信した旨の通知を受け取る。前記通知を受け取ると、復号処理部102に対して、第1暗号文s1及び第2暗号文s2を復号して復号ポイントを生成することを示す指示を出力する。
(4)復号処理部102
復号処理部102は、制御部104から、第1暗号文s1及び第2暗号文s2を復号して復号ポイントを生成することを示す指示を受け取る。また、通信部103から第1暗号文s1及び第2暗号文s2を受け取る。
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に一致することが分かる。
(5)楕円曲線演算部108
楕円曲線演算部108は、ポイント発行装置200が有する楕円曲線演算部208と同一の構成を有しているので、詳細な説明を省略する。
1.6 ポイント発行システム10の動作
ポイント発行システム10の動作について、図14に示すフローチャートを用いて説明する。
以下に示す動作は、ポイント発行装置200がポイントを発行する前に行われる。
ICカード100の復号処理部102は、秘密鍵ksを生成し、生成した秘密鍵ksを秘密鍵記憶部101へ書き込む(ステップS101)。次に、復号処理部102は、情報記憶部105からベースポイントBを読み出し、生成した前記秘密鍵ksと読み出したべースポイントBに楕円べき倍演算を施して、公開鍵Kp=ks*Bを生成する。この際、楕円べき倍演算は、楕円曲線演算部108により行われる(ステップS102)。次に、復号処理部102は、生成した公開鍵Kpを通信部103を介して、ポイント発行装置200へ送信する(ステップS103)。
ここでは、ICカード100が秘密鍵ksを生成し、生成した秘密鍵ksを基にして公開鍵Kpを生成し、生成した公開鍵Kpをポイント発行装置200へ送信するとしているが、次に示すようにしてもよい。
鍵管理装置は、ICカード100から秘密鍵ksを安全に取得し、取得した秘密鍵ksを記憶する秘密鍵記憶部と、ベースポイントBを記憶しているベースポイント記憶部と、秘密鍵記憶部から秘密鍵ksを読み出し、ベースポイント記憶部からベースポイントBを読み出し、秘密鍵ksとベースポイントBとを用いて、公開鍵Kp=ks*Bを生成する楕円曲線演算部と、生成した公開鍵Kpをポイント発行装置200へ送信する送信部とを備える。ここで、鍵管理装置が有する楕円曲線演算部は、ICカード100が有する楕円曲線演算部と同一である。
ポイント発行装置200の制御部204は、ポイントPmを生成し、生成したポイントPmを情報記憶部205に書き込み、次に、暗号処理部202に対して、ポイントPmを暗号化してICカード100へ送信することを示す指示を出力する(ステップS111)。
復号処理部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)。
2.実施の形態2
本発明に係る別の実施の形態としてのデジタル署名システム(図示していない)について説明する。
ユーザA装置、ユーザB装置及び管理センタ装置は、それぞれ、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その一部の機能を達成する。
ここで、情報を確実に扱うとは、例えば、情報を二者間で通信する場合において、送信者が送信した情報が、改変されることなく、受信者に届くようにすることを言う。
ここで、素数pを法とする剰余体Fp上で定義された楕円曲線E(Fp)を想定し、Eの位数をqとする。また、Bは、楕円曲線E上のベースポイントである。
以下において、デジタル署名システムの動作について図15に示すフローチャートを用いて説明する。
(秘密鍵xA及び公開鍵YAの生成)
ユーザA装置は、秘密鍵xAを生成する(ステップS201)。
次に、管理センタ装置は、素数p、楕円曲線Eの係数及びベースポイントBを公開し(ステップS204、ステップS207)、インターネットを介して、公開鍵YAをユーザB装置へ送信する(ステップS205)。
ユーザ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装置へ送信するメッセージである。
ユーザ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装置の身元が確認できなかったこととなる。
本発明に係るまた別の実施の形態としての鍵共有システム(図示していない)について説明する。
鍵共有システムは、ユーザA装置(鍵利用装置とも呼ぶ)、ユーザB装置(鍵利用装置とも呼ぶ)及び管理センタ装置(管理装置とも呼ぶ)から構成されており(それぞれの装置を図示していない)、ユーザA装置、ユーザB装置及び管理センタ装置は、それぞれ、インターネットを介して接続されている。ユーザA装置、ユーザB装置及び管理センタ装置は、それぞれ、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。
ここで、情報を安全に扱うとは、上述したように、例えば、情報を二者間で通信する場合において、当該情報が第三者に知られないようにすることを言う。
管理センタ装置は、楕円曲線E(Fp)の係数及びベースポイントBを選択する選択部と、選択した楕円曲線Eの係数、ベースポイントB及び素数pを記憶しているパラメタ記憶部と、素数p、楕円曲線E(Fp)及びベースポイントGを公開する公開部とを備えている。
ユーザA装置は、管理センタ装置から、素数p、楕円曲線Eの係数及びベースポイントBを取得するパラメタ取得部と、乱数を用いて、秘密鍵xAを設定する秘密鍵設定部と、公開鍵YA=xA*Bを算出する公開鍵算出部と、算出した公開鍵YAをユーザB装置へ送信する送信する公開鍵送信部と、ユーザB装置から、公開鍵YBを受信する公開鍵受信部と、共有鍵xA*YB=(xA×xB)*Bを算出する共有鍵算出部と、公開鍵算出部及び共有鍵算出部の指示により、楕円曲線上の点の楕円べき倍演算を行う楕円曲線演算部とを備える。
ユーザB装置は、管理センタ装置から、素数p、楕円曲線Eの係数及びベースポイントBを取得するパラメタ取得部と、乱数を用いて、秘密鍵xBを設定する秘密鍵設定部と、公開鍵YB=xB*Bを算出する公開鍵算出部と、算出した公開鍵YBをユーザA装置へ送信する送信する公開鍵送信部と、ユーザA装置から、公開鍵YAを受信する公開鍵受信部と、共有鍵xB*YA=(xB×xA)*Bを算出する共有鍵算出部と、公開鍵算出部及び共有鍵算出部の指示により、楕円曲線上の点の楕円べき倍演算を行う楕円曲線演算部とを備える。
以下において、鍵共有システムの動作について図16に示すフローチャートを用いて説明する。
管理センタ装置は、楕円曲線Eの係数及びベースポイントBを選択し(ステップS311)、素数p、楕円曲線Eの係数及びベースポイントBを公開する(ステップS312)。
一方、ユーザB装置は、秘密鍵xBを設定し(ステップS321)、公開鍵YB=xB*Bを算出し(ステップS322)、公開鍵YBをユーザA装置へ送信する(ステップS323)。
一方、ユーザB装置は、共有鍵xB*YA=(xB×xA)*Bを算出する(ステップS324)。
ここで、共有鍵xB*YA=(xB×xA)*B
=(xA×xB)*B
=共有鍵xA*YB
である。
6.実施の形態1の効果
実施の形態1におけるポイント発行装置200が有する楕円曲線演算部208において、楕円曲線加算部226及び楕円曲線2倍算部227は、それぞれ同じ順序で同じ演算を実行しているため(図4〜図5を参照)、電力波形を解析する攻撃者は、電力波形から楕円曲線加算及び楕円曲線2倍算のどちらを実行しているかが区別できない。
7.その他の変形例
上記に説明した各実施の形態は、本発明の実施の一例であり、本発明はこれらの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(2)実施の形態では、sw=3としたが、swを2や4以上の値としてもよい。このとき、スカラ倍演算部229において、w_cの値に応じたwindow演算(図10〜図11のステップS157、ステップS161〜S168に相当)は、以下のようになる。
(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)とする。
また、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)となる。
ここで、Windowの幅は「4ビット」であるので、w_cは、16個の値「0」、「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」、「−7」、「−6」、「−5」「−4」、「−3」、「−2」及び「−1」のいずれかをとる。
(a)w_c=0の場合
w_c=0に対する従来のWindow演算は、「R←24 R」である。「R←24 R」は、変数Rの値を、Windowの幅の示すビット(ここでは、4ビット)だけ、上位にシフトすることを示している。
これは、24 R=2×(2×(2×(2×R)))であることによる。
従って、w_c=0に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、2倍算、ダミーの加算の順序で、複数の基本演算が行われる。
(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」である。
また、w_c=1、3、5、7、−7、−5、−3、−1の場合におけるスカラ倍演算部229によるWindow演算は、従来のWindow演算と同一である。
このように、この場合におけるスカラ倍演算部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」である。
また、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に対するスカラ倍演算部229によるWindow演算では、2倍算、2倍算、2倍算、加算、2倍算の順序で、複数の基本演算が行われる。
w_c=4、6、8、−6、−4、−2の場合についても、図17に示す通りである。
(4)各実施の形態では、べき倍係数をすべてswビットの一定ビット列ごとに分割して、swビットの分割情報を生成しているが、これに限らない。ビット数が一定でなくてもよい。分割情報のビット数が一定でない場合、分割情報を用いたスカラ倍演算部の演算処理も一定回数でなくてもよい。この場合は、分割情報ごとの演算処理の回数は、分割情報のビット長に依存してもよいが、それ以外の分割情報のビット長以外の情報には依存しない。
また、分割情報のビット数がbビット長である場合に(ここで、a≠b)、分割情報の値に対応するwindow演算部は、(b+1)回の演算を順次行う。ここで、前記複数の演算のうち(b−t+1)番目の演算は、楕円曲線E上の前記加算であり、他の演算は、楕円曲線E上の2倍算である。
(6)各実施の形態では、方程式はy^2=x^3+a×x+bの形をしたワイヤーシュトラス型の楕円曲線を使用しており、Jacobian座標を使用しているが、これだけには限らない。例えば、他の座標(Projective座標)を使用してもよい。その場合においてもダミー演算を付加して、楕円曲線加算と楕円曲線2倍算の区別をできなくしてもよい。また、楕円曲線2倍算を楕円曲線加算に置き換えて演算可能なHessian楕円(ヘッセ型楕円)やJacobian楕円(ヤコビ型楕円)を使用してもよい。その場合は、楕円曲線加算及び楕円曲線2倍算の内部の演算にダミー演算はなくてもよい。
(8)本発明は、各実施の形態の楕円曲線演算部を楕円ElGamal暗号、PSEC−KEMやその他の楕円曲線またはその他の代数曲線上の暗号方式に適用してもよい。
例えば、暗号方式の暗号化アルゴリズムにおける秘密鍵をべき倍係数としたへぎ倍演算に、各実施の形態の楕円曲線演算部を適用し、暗号方式の復号化アルゴリズムにおける秘密鍵をべき倍係数としたへぎ倍演算に、各実施の形態の楕円曲線演算部を適用してもよい。
上述したように、楕円曲線上の署名方式の署名生成アルゴリズムにおける乱数をべき倍係数としたべき倍演算に楕円曲線演算部を適用してもよい。
(9)実施の形態1のポイント発行システム10では、利用者が商品を購入したりサービスの提供を受けた場合に、販売者やサービス提供者から受け取る特典情報であり、次に利用者が商品を購入したりサービスの提供を受ける際に、販売者やサービス提供者への対価の支払いの一部又は全部として利用されるポイントを秘密通信の対象とし、ポイント発行装置200は、生成したポイントを暗号化し、暗号化ポイントをICカード100へ送信し、ICカード100は、暗号化ポイントを復号して復号ポイントを生成し、生成した復号ポイントを記憶するようにしている。
次に示すような金銭の決済システムに適用することもできる。
例えば、通貨の代わりに用いることができる電子マネーを秘密通信の対象とし、ICカードは、電子マネーを記憶しており、利用者が、商品を購入する際に、ICカードは、商品の購入額に相当する電子マネーを暗号化して送信し、また、内部に記憶している電子マネーから送信した分を減じる。ポイント発行装置200に代えて同様の構成を有するレジスタ装置は、暗号化電子マネーを受信し、受信した暗号化電子マネーを復号して電子マネーを再生し、記憶する。
上記の各装置は、素数pを法とする剰余体F上で定義された楕円曲線E上の離散対数問題を根拠として、楕円曲線E上の点Cに、素数p未満の正整数である係数kを乗じて点k*Cを算出する楕円曲線演算を用いて、情報を安全に扱う情報セキュリティ装置である。
このようなデジタル署名や署名検証において、楕円曲線上の離散対数問題が安全性の根拠として用いれ、楕円べき倍演算が行われる。この楕円べき倍演算を行う各装置は、楕円曲線演算部208と同一の楕円曲線演算部を備えている。
(11)秘密通信の対象は、上記のようなポイントや電子マネーなどには限定されない。
上記における暗号化及び復号化において、楕円曲線上の離散対数問題が安全性の根拠として用いられ、楕円べき倍演算が行われる。この楕円べき倍演算を行うコンテンツ暗号化装置とコンテンツ再生装置は、楕円曲線演算部208と同一の楕円曲線演算部を備えている。
この場合に、コンテンツは、コンテンツ鍵により、後述する共通鍵暗号方式を用いて、暗号化され、復号される。
(12)上記のコンテンツ配信システムにおいて、デジタル著作物を暗号化する際に用いる暗号化技術として、例えば、DES(Data EncryptionStandard)又はAES(Advanced Encryption Standard)を用いるとしてもよい。DES及びAESなどの暗号化技術は、いわゆる共通鍵暗号方式(又は秘密鍵暗号方式)と呼ばれる。
実施の形態3に示す鍵共有システムは、この課題を解消するための手段を提供する。
実施の形態3に示す鍵共有システムにより、コンテンツ暗号化装置(実施の形態3のユーザA装置に相当する)とコンテンツ再生装置(実施の形態3のユーザB装置に相当する)との間で、第三者に知られることなく、秘密鍵を共有し、その後は、共有鍵暗号方式による暗号化アルゴリズムを適用し、コンテンツ暗号化装置において、共有している秘密鍵を用いて、デジタル著作物を暗号化して暗号化デジタル著作物を生成し、次に、コンテンツ再生装置において、共有している秘密鍵を用いて、暗号化デジタル著作物を復号する。
(13)上記の各実施の形態及び変形例は、次に示すような場合において適用される。
(a)各実施の形態及び変形例は、秘密のメッセージ伝送において適用される。これについては、上記において、秘密通信として説明をした。
(d)各実施の形態及び変形例は、硬貨投げ(ビットコミットメントとも呼ばれる)において適用される。硬貨投げとは、例えば、別々の市に住む2人のチェスプレーヤが、電子メールで、誰が白を持つのかを決めることである。
(f)各実施の形態及び変形例は、零知識証明において適用される。零知識証明とは、例えば、ある人が、数論的あるいは組合せ論的問題を解くことに成功したことを、解が何であるかのわずかの情報さえ与えることなく、他人にこのことを納得させることを言う。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(FieldProgrammable Gate Array)やLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、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乗算及び前記加算の順序が同じであることを特徴とする。
ここで、前記楕円曲線演算装置は、さらに1以上の予め与えられた正整数に対して、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果のそれぞれをテーブルに格納するテーブル生成部を備え、前記楕円曲線加算部で使用する2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブルに格納されている前記スカラ倍点であるとしてもよい。
ここで、前記楕円曲線2倍算部は、さらに計算結果に影響のないダミーとなる前記乗算を実行するダミー乗算手段を有するとしてもよい。
ここで、前記楕円曲線2倍算部は、さらに定義体の元の2乗算した結果を、前記元と前記元の乗算を使用して得る2乗算代替手段を有するとしてもよい。
ここで、前記分割情報生成部は、複数のswビットの前記分割情報を生成し、前記スカラ倍演算部は、(sw+1)回の演算処理を実行し、前記分割情報wが0以外かつ、前記分割情報wが2^t(tは非負整数)で割り切れて、2^(t+1)で割り切れない場合に、(sw−t+1)番目の前記演算処理は前記楕円曲線加算部を使用し、その他の前記演算処理は前記楕円曲線2倍算部を使用するとしてもよい。
ここで、前記楕円曲線演算方法は、さらに1以上の予め与えられた正整数に対して、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果のそれぞれをテーブルに格納するテーブル生成ステップを含み、前記楕円曲線加算ステップで使用する2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブルに格納されている前記スカラ倍点であるとしてもよい。
ここで、前記正整数は奇数であるとしてもよい。
ここで、前記分割情報生成ステップは、複数のswビットの前記分割情報を生成し、前記スカラ倍演算ステップは、(sw+1)回の演算処理を実行し、前記分割情報wが0以外かつ、前記分割情報wが2^t(tは非負整数)で割り切れて、2^(t+1)で割り切れない場合に、(sw−t+1)番目の前記演算処理は前記楕円曲線加算ステップを使用し、その他の前記演算処理は前記楕円曲線2倍算ステップを使用するとしてもよい。
ここで、前記楕円曲線演算方法は、さらに1以上の予め与えられた正整数に対して、前記正整数をスカラとする前記楕円曲線上の点のスカラ倍点を計算し、その結果のそれぞれをテーブルに格納するテーブル生成ステップを含み、前記楕円曲線加算ステップで使用する2個の前記楕円曲線上の点の内、少なくとも一つは前記テーブルに格納されている前記スカラ倍点であるとしてもよい。
ここで、前記正整数は奇数であるとしてもよい。
ここで、前記分割情報生成ステップは、複数のswビットの前記分割情報を生成し、前記スカラ倍演算ステップは、(sw+1)回の演算処理を実行し、前記分割情報wが0以外かつ、前記分割情報wが2^t(tは非負整数)で割り切れて、2^(t+1)で割り切れない場合に、(sw−t+1)番目の前記演算処理は前記楕円曲線加算ステップを使用し、その他の前記演算処理は前記楕円曲線2倍算ステップを使用するとしてもよい。
(19)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明を構成する各装置、各方法及び各コンピュータプログラムは、情報を安全に確実に扱う必要があるあらゆる産業において、経営的に、また継続的及び反復的に使用することができる。また、本発明を構成する各装置は、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
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)
- 素数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倍算である
ことを特徴とする情報セキュリティ装置。 - 前記情報セキュリティ装置は、さらに、点Qを初期の加算点とし、加算点へ2*Qを加算して新たな加算点を得ることを繰り返すことにより、点Qを除く2sw-1 個の加算点を生成するテーブル生成手段を含み、
非負整数tが存在する場合に、当該桁の値wに対応する前記乗算手段は、点Qにw/2t 又は|w/2t |を乗じて得られる点として、前記テーブル生成手段により生成された前記加算点を用いる
ことを特徴とする請求項1に記載の情報セキュリティ装置。 - 取得した前記桁は、3ビット長であり、
前記桁の値wが2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、加算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、
前記桁の値wが4である場合に、対応する乗算手段は、楕円曲線E上の2倍算、加算、2倍算及び2倍算をこの順序で行い、前記加算は、前記点Cを加える演算であり、
前記桁の値wが−2である場合に、対応する乗算手段は、楕円曲線E上の2倍算、2倍算、減算及び2倍算をこの順序で行い、前記減算は、前記点Cを減ずる演算である
ことを特徴とする請求項1に記載の情報セキュリティ装置。 - 取得した前記桁は、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に記載の情報セキュリティ装置。 - 前記加算又は前記減算及び前記2倍算は、それぞれ、同じ順序で同じ種類の演算を実行するように、ダミーの演算を含む
ことを特徴とする請求項1に記載の情報セキュリティ装置。 - 取得した前記桁がaビット長である場合に、前記非負整数tが存在するときに、前記桁の値wに対応する前記乗算手段は、(a+1)回の演算を順次行い、前記複数の演算のうち(a−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算であり、
取得した前記桁がbビット長である場合に、前記非負整数tが存在するときに、前記桁の値wに対応する前記乗算手段は、(b+1)回の演算を順次行い、前記複数の演算のうち(b−t+1)番目の演算は、楕円曲線E上の前記加算又は前記減算であり、他の演算は、楕円曲線E上の2倍算である
ことを特徴とする請求項1に記載の情報セキュリティ装置。 - 前記情報セキュリティ装置は、暗号化装置であって、
点k*Cを算出する楕円曲線演算を用いて、情報を暗号化する
ことを特徴とする請求項1に記載の情報セキュリティ装置。 - 前記情報セキュリティ装置は、復号装置であって、
点k*Cを算出する楕円曲線演算を用いて、暗号化された情報を復号する
ことを特徴とする請求項1に記載の情報セキュリティ装置。 - 前記情報セキュリティ装置は、デジタル署名生成装置であって、
点k*Cを算出する楕円曲線演算を用いて、情報にデジタル署名を施す
ことを特徴とする請求項1に記載の情報セキュリティ装置。 - 前記情報セキュリティ装置は、デジタル署名検証装置であって、
点k*Cを算出する楕円曲線演算を用いて、デジタル署名の検証を行う
ことを特徴とする請求項1に記載の情報セキュリティ装置。 - 前記情報セキュリティ装置は、鍵共有装置であって、
点k*Cを算出する楕円曲線演算を用いて、他の鍵共有装置との間で、共有する鍵を生成する
ことを特徴とする請求項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倍算である
ことを特徴とする楕円曲線演算装置。 - 素数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倍算である
ことを特徴とする集積回路。 - 素数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倍算である
ことを特徴とする方法。 - 素数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に記載のコンピュータプログラム。
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)
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)
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)
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 |
-
2006
- 2006-04-25 JP JP2007514728A patent/JP4825199B2/ja not_active Expired - Fee Related
- 2006-04-25 EP EP06732308A patent/EP1879164A1/en not_active Withdrawn
- 2006-04-25 CN CNA2006800218560A patent/CN101198998A/zh active Pending
- 2006-04-25 US US11/912,112 patent/US7940927B2/en active Active
- 2006-04-25 WO PCT/JP2006/308598 patent/WO2006118092A1/ja active Application Filing
Patent Citations (4)
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 |