JP5449576B2 - 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム - Google Patents
演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム Download PDFInfo
- Publication number
- JP5449576B2 JP5449576B2 JP2012550611A JP2012550611A JP5449576B2 JP 5449576 B2 JP5449576 B2 JP 5449576B2 JP 2012550611 A JP2012550611 A JP 2012550611A JP 2012550611 A JP2012550611 A JP 2012550611A JP 5449576 B2 JP5449576 B2 JP 5449576B2
- Authority
- JP
- Japan
- Prior art keywords
- variable
- value
- scalar multiplication
- coordinate value
- unit
- 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
- 238000000034 method Methods 0.000 title claims description 128
- 238000004364 calculation method Methods 0.000 claims description 98
- 238000010586 diagram Methods 0.000 description 9
- 238000012795 verification Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 1
- 239000008000 CHES buffer Substances 0.000 description 1
- MKWKNSIESPFAQN-UHFFFAOYSA-N N-cyclohexyl-2-aminoethanesulfonic acid Chemical compound OS(=O)(=O)CCNC1CCCCC1 MKWKNSIESPFAQN-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
Description
電子署名は、電子データと秘密鍵と乱数とを用いて特定の署名生成アルゴリズムによって作成される。電子署名は電子データと共に通信される。
電子データの受信者は、受信した電子データと、受信した電子署名と、署名者の公開鍵とを用いて特定の署名検証アルゴリズムによって電子データを検証する。つまり、電子データの受信者は、受信した電子署名が公開鍵に対応する秘密鍵を用いて生成されたか否かを判定する。そして、受信した電子署名が公開鍵に対応する秘密鍵を用いて生成されていれば、受信した電子データが秘密鍵の持ち主(署名者)によって作成されたことが証明される。
このため、秘密鍵が知られた場合と同様に、電子署名が偽造され、秘密鍵の持ち主に成りすまして電子データが通信されてしまう。
従来の楕円スカラー倍算kGは以下のとおりである。
Add−Double−Always法ではk[t]=1でなければいけないため、乱数kのビット数tが乱数kの値によって変化してしまう。例えば、乱数kを32ビットで表した場合、最上位ビットが1である乱数kのビット数tは「32」であるが、上位12ビットが0である乱数kのビット数tは「20(=32−12)」に変化してしまう。
つまり、乱数kの値によって計算時間に差が生じてしまい、タイミング解析によって乱数kが特定されてしまう可能性がある。
但し、ステップ2−1において、乱数kの最上位ビットが1である場合には無限遠点の変数R(R=0)の2倍算は1度しか行われず、乱数kの上位の複数ビットが0である場合には無限遠点の変数Rの2倍算は複数回繰り返される。また、無限遠点の変数Rの2倍算と無限遠点でない変数Rの2倍算とでは計算時間が異なる。
このため、乱数kの値によって計算時間に差が生じてしまい、タイミング解析によって乱数kが特定されてしまう可能性がある。
以下に、多倍長演算処理で行われる剰余演算「a/2 mod p」を示す。aは多倍長整数を示し、pは素数を示し、modは剰余演算子を示す。
つまり、aの値によって計算時間に差が生じてしまい、タイミング解析によってaが特定され、aに基づいて乱数kが特定されてしまう可能性がある。
つまり、bの値によって計算時間に差が生じてしまい、タイミング解析によって乱数kが特定されてしまう可能性がある。
前記特定点の座標値Gを2のt乗でスカラー倍して得られる座標値2tGを予め記憶する定数記憶部と、
所定のスカラー倍算変数Rに前記特定点の座標値Gを設定する初期設定部と、
前記乗数値kを表すtビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Rを2倍算して得られる座標値を所定の第0作業変数R[0]に設定し、前記第0作業変数R[0]に設定した座標値に前記特定点の座標値Gを所定数倍した座標値を加算して得られる座標値を所定の第1作業変数R[1]に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Rに前記第0作業変数R[0]を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Rに前記第1作業変数R[1]を設定するスカラー倍算部と、
前記スカラー倍算部により設定されたスカラー倍算変数Rから前記定数記憶部に記憶された座標値2tGを減算し、減算して得られた座標値を前記座標値kGとして出力するスカラー倍点出力部と、
特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する多倍長剰余演算部であって、前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定し、前記多倍長整数aに前記テンポラリ変数tempを加算して得られる値を所定の剰余演算変数cに設定し、設定した剰余演算変数cを1ビット右にシフトして得られる値を前記剰余値rとして出力する多倍長剰余演算部とを備え、
前記初期設定部は、前記特定点の座標値Gを示す多倍長整数を前記スカラー倍算変数Rに設定し、
前記スカラー倍算部は、前記スカラー倍算変数Rを2倍算して得られる座標値と、前記第0作業変数R[0]に前記特定点の座標値Gを加算して得られる座標値とを前記多倍長剰余演算部を用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Rから前記座標値2 t Gを減算して得られる座標値を前記多倍長剰余演算部を用いて算出する
ことを特徴とする。
楕円曲線暗号方式を用いて電子署名を生成する楕円曲線暗号装置について説明する。
但し、電子署名の生成は楕円曲線暗号方式を用いた暗号処理の一例である。
実施の形態1における楕円曲線暗号装置100の構成について、図1に基づいて説明する。
乱数kは、tビットのビット列で表される値である。
スカラー倍算部122は、ビット列を所定数のビットずつ参照する毎にスカラー倍算変数Rを2倍算して得られる座標値を所定の第0作業変数R[0]に設定する。
スカラー倍算部122は、第0作業変数R[0]に設定した値に特定点の座標値Gを所定数倍(1倍または複数倍)した座標値を加算して得られる座標値を所定の第1作業変数R[1]に設定する。
スカラー倍算部122は、参照した所定数のビットの値がゼロであればスカラー倍算変数Rに第0作業変数R[0]を設定し、参照した所定数のビットの値が非ゼロであればスカラー倍算変数Rに第1作業変数R[1]を設定する。
座標値2tGは、特定点の座標値Gを2のt乗でスカラー倍して得られる値である。
特定点の座標値G、特定点の座標値Gの位数n、秘密鍵d、座標値2tG、メッセージM、乱数k、電子署名は、装置記憶部190に記憶されるデータの一例である。
特定点の座標値G、特定点の座標値Gの位数nおよび秘密鍵dは装置記憶部190に予め記憶される。特定点の座標値Gは「楕円曲線正弦値」とも呼ばれる。
座標値2tGは、特定点の座標値Gに基づいて予め計算され、装置記憶部190に記憶される。
メッセージMは楕円曲線暗号装置100に入力されて装置記憶部190に記憶され、乱数kは乱数生成部111により算出されて装置記憶部190に記憶され、電子署名は署名生成処理部112により生成されて装置記憶部190に記憶される。
EC−Schnorr方式による電子署名生成方法について、図2に基づいて説明する。
S111Aの後、S112Aに進む。
そして、署名生成処理部112は、楕円スカラー倍算部120により算出されたスカラー倍点kGを所定の変数Pに設定する。以下、変数Pを「スカラー倍点P」という。
楕円スカラー倍算部120によるスカラー倍点kGの算出方法を「楕円スカラー倍算方法」として別途説明する。
S112Aの後、S113Aに進む。
実施の形態において、「A||B」はAとBとの連結を意味し、「h(C)」は入力値Cのハッシュ値を算出するためのハッシュ関数を意味する。
S113Aの後、S114Aに進む。
実施の形態において、「A mod B」はAをBで割った余りを求める演算を意味する。
署名生成処理部112は、S113Aで算出したハッシュ値eとS114Aで算出した剰余値sとの組み合わせ(e,s)をメッセージMの電子署名として出力する。
S114Aにより、EC−Schnorr方式による電子署名生成処理は終了する。
電子署名生成部110は、図3に示すようなECDSA方式で電子署名を生成しても構わない。
S111Bの後、S112Bに進む。
そして、署名生成処理部112は、楕円スカラー倍算部120により算出されたスカラー倍点kGを所定の変数P(スカラー倍点P)に設定する。
楕円スカラー倍算部120によるスカラー倍点kGの算出方法を「楕円スカラー倍算方法」として別途説明する。
S112Bの後、S113Bに進む。
剰余値sの計算式は「s=k−1×(h(M)+Px×d) mod n」で表すことができる。
S113Bにより、ECDSA方式による電子署名生成処理は終了する。
実施の形態1における楕円スカラー倍算方法について、図4に基づいて説明する。
S121Aの後、S122Aに進む。
例えば、乱数kの値を示す変数(ビット列)が32ビットの変数である場合、スカラー倍算部122はループ変数iに「32」を設定する。
つまり、乱数kの最上位ビットのビット値は「k[t]」であり、乱数kの最下位ビットのビット値は「k[1]」である。最上位ビットは一番左のビットであって2のt乗を表すビットである。最下位ビットは一番右のビットであって2の0乗を表すビットである。
乱数kの最上位ビットのビット値k[t]は「0」と「1」とのどちらであっても構わない。
S123Aの後、S124Aに進む。
S124Aの後、S125Aに進む。
例えば、「i=t」であればスカラー倍算部122は乱数kの最上位ビットk[t]を参照し、「i=1」であればスカラー倍算部122は乱数kの最下位ビットk[1]を参照する。
ビット値k[i]が「1」である場合、スカラー倍算部122は第1作業変数R[1]をスカラー倍算変数Rに設定する。
S126Aの後、S127Aに進む。
ループ変数iが「0」である場合、S128Aに進む。
ループ変数iが「0」でない場合、S123Aに戻る。
S128Aにより、楕円スカラー倍算処理は終了する。
これにより、乱数kの値に関わらず一定の計算時間でスカラー倍点kGを算出することができる。例えば、乱数kの最上位ビットが「1」である場合であっても、乱数kの最上位ビットから連続して複数ビットが「0」である場合であっても、スカラー倍点kGの算出に要する計算時間は変わらない。
つまり、楕円スカラー倍算処理は乱数kの値に関わらず一定の計算時間で行われるため、楕円スカラー倍算処理がタイミング解析されることはない。タイミング解析とは、処理時間の時間差を分析することにより処理されたデータを特定する技術である。タイミング解析については非特許文献1に記載されている。
したがって、楕円スカラー倍算処理で用いる乱数kはタイミング解析によって特定できず、乱数kに基づいて電子署名が知られてしまうこともない。
楕円スカラー倍算部120は、図5に示す方法によってスカラー倍点kGを算出しても構わない。
S121Bの後、S122Bに進む。
S122Bの後、S123Bに進む。
S123Bの後、S124Bに進む。
ビット値k[i]が「0」である場合、S125Bに進む。
ビット値k[i]が「1」である場合、S126Bに進む。
S125Bの後、S126Bに進む。
S126Bの後、S127Bに進む。
ループ変数iが「0」である場合、S128Bに進む。
ループ変数iが「0」でない場合、S123Bに戻る。
S128Bにより、楕円スカラー倍算処理は終了する。
しかし、S121Bでスカラー倍算変数Rに無限遠点「0」ではなく特定点Gを初期設定しているため、乱数kの最上位ビットから連続して複数ビットが「0」である場合であってもS123Bで無限遠点「0」を2倍算することはない。つまり、乱数kの値によってS123Bの計算時間に差が生じない。
したがって、乱数kの値によってS123Bの計算時間に差が生じない分、楕円スカラー倍算処理のタイミング解析を困難にすることができる。
図6において、楕円曲線暗号装置100は、CPU901(Central Processing Unit)を備えている。CPU901は、バス902を介してROM903とRAM904とに接続され、これらのハードウェアデバイスを制御する。
携帯端末またはICカードが電子決済機能を使用する際、楕円曲線暗号装置100は個人情報の電子署名を生成する。そして、携帯端末またはICカードの無線通信機能は個人情報と電子署名とを所定の電子決済装置に送信する。電子決済装置は電子署名を検証し、個人情報に基づいて電子決済を行う。
つまり、実施の形態1における楕円スカラー倍算処理(図4、5)は、楕円スカラー倍点kG(kは乱数でなくてもよい)を使用するいかなる演算処理に用いても構わない。
その他のべき乗剰余演算法を用いる場合であっても、スカラー倍算変数Rに初期値として特定点Gを設定し(図4のS121A参照)、最後にスカラー倍算変数Rから定数値2tGを減算すればよい。これにより、乱数kの値に関わらず一定の計算時間でスカラー倍点kGを算出することができる。
多倍長整数の剰余演算を一定の計算時間で行う形態について説明する。
多倍長整数の剰余演算とは、多倍長整数を特定値で除算して余りを算出する処理である。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
実施の形態2における楕円曲線暗号装置100の構成について、図7に基づいて説明する。
スカラー倍算部122は、スカラー倍算変数Rを2倍算して得られる座標値「2R」を多倍長剰余演算部130を用いて算出する(図4のS123A)。
スカラー倍算部122は、第0作業変数R[0]に特定点の座標値Gを加算して得られる座標値「R[0]+G」を多倍長剰余演算部130を用いて算出する(図4のS124A)。
スカラー倍点出力部123は、スカラー倍算変数Rから座標値2tGを減算して得られる座標値「R−2tG」を多倍長剰余演算部130を用いて算出する(図4のS128A)。
実施の形態2における多倍長剰余演算方法について、図8に基づいて説明する。
多倍長整数とは、レジスタのデータサイズに相当する所定のビット数で表すことができる最大の整数値より大きな整数値である。例えば、32ビットマシンでは32ビットで表すことができる最大の整数値(2の32乗−1)より大きな整数値が多倍長整数である。
以下、多倍長整数を使用した演算処理を「多倍長演算処理」という。
多倍長剰余演算とは、多倍長整数(後述するa)を特定値(後述するp)で除算して余り(後述するr)を求める処理である。
例えば、楕円スカラー倍算部120はS123A、S124AおよびS128A(図4参照)において多倍長剰余演算部130を呼び出し、多倍長剰余演算部130は図8に示す多倍長剰余演算を実行する。
多倍長整数aが偶数である場合、S132に進む。
多倍長整数aが奇数である場合、S133に進む。
S132の後、S134に進む。
S133の後、S134に進む。
S134の後、S135に進む。
剰余値rは「a/2」を「p」で除算して得られる余りであり、「r=a/2 mod p」という数式で表すことができる。
S135により、多倍長剰余演算処理は終了する。
このため、多倍長剰余演算処理において、多倍長整数aが偶数の場合と多倍長整数aが奇数の場合とで計算時間の時間差は生じない。つまり、多倍長剰余演算処理は多倍長整数aの値に関わらず一定の計算時間で行われるため、多倍長剰余演算処理がタイミング解析されることはない。
したがって、多倍長整数aはタイミング解析によって特定できず、多倍長整数aに基づいて乱数kや電子署名などの秘密情報が知られてしまうこともない。
つまり、実施の形態2における多倍長剰余演算処理(図8)は、電子署名を検証する処理、電子署名と関係しない暗号処理、楕円曲線暗号以外の暗号処理または暗号処理以外の演算処理など、多倍長整数を使用するいかなる演算処理に用いても構わない。
多倍長整数のゼロ判定を一定の計算時間で行う形態について説明する。
多倍長整数のゼロ判定とは、多倍長整数の値がゼロと非ゼロとのいずれの値であるかを判定する処理である。
以下、実施の形態1、2と異なる事項について主に説明する。説明を省略する事項については実施の形態1、2と同様である。
実施の形態3における楕円曲線暗号装置100の構成について、図9に基づいて説明する。
スカラー倍算部122は、スカラー倍算変数Rを2倍算して得られる座標値「2R」を多倍長ゼロ判定部140を用いて算出する(図4のS123A)。
スカラー倍算部122は、第0作業変数R[0]に特定点の座標値Gを加算して得られる座標値「R[0]+G」を多倍長ゼロ判定部140を用いて算出する(図4のS124A)。
スカラー倍点出力部123は、スカラー倍算変数Rから座標値2tGを減算して得られる座標値「R−2tG」を多倍長ゼロ判定部140を用いて算出する(図4のS128A)。
実施の形態3における多倍長ゼロ判定方法について、図10に基づいて説明する。
多倍長ゼロ判定処理とは、多倍長整数bの値がゼロと非ゼロとのいずれの値であるかを判定する処理である。
例えば、楕円スカラー倍算部120はS123A、S124AおよびS128A(図4参照)において多倍長ゼロ判定部140を呼び出し、多倍長ゼロ判定部140は図10に示す多倍長ゼロ判定処理を実行する。
以下、多倍長整数bを分割して得られた複数の整数値または多倍長整数bを分割して得られた複数のビット列で表される複数の整数値を「ワード」という。
また、多倍長整数bのワード数(分割数)を「w」とし、下位からi番目のワードをb[i]とする。つまり、最上位のワード(先頭ワード)をb[w]とし、最下位のワード(最終ワード)をb[1]とする。
S141の後、S142に進む。
したがって、多倍長整数bを構成する複数ワード全ての値が「0」である場合、論理和ORの値は「0」になり、多倍長整数bを構成する複数ワードの少なくともいずれかの値が「0」でない場合、論理和ORの値は「1」になる。
S142の後、S143に進む。
そして、論理和ORの値が「0」である場合、ゼロ判定部142は多倍長整数bの値がゼロであると判定し、判定結果を出力する。
また、論理和ORの値が「0」でない場合、ゼロ判定部142は多倍長整数bの値がゼロ以外の値(非ゼロ)であると判定し、判定結果を出力する。
S143により、多倍長ゼロ判定処理は終了する。
このため、多倍長ゼロ判定処理において、多倍長整数bの値によって計算時間の時間差は生じない。つまり、多倍長ゼロ判定処理は多倍長整数bの値に関わらず一定の計算時間で行われ、多倍長ゼロ判定処理がタイミング解析されることはない。
したがって、多倍長整数bはタイミング解析によって特定できず、多倍長整数bに基づいて乱数kや電子署名などの秘密情報が知られてしまうこともない。
つまり、実施の形態3における多倍長ゼロ判定処理(図10)は、電子署名を検証する処理、電子署名と関係しない暗号処理、楕円曲線暗号以外の暗号処理または暗号処理以外の演算処理など、多倍長整数を使用するいかなる演算処理に用いても構わない。
Claims (8)
- 特定の楕円曲線に含まれる特定点の座標値Gをtビットのビット列で表される特定の乗数値kでスカラー倍算して得られる座標値kGを算出する演算装置において、
前記特定点の座標値Gを2のt乗でスカラー倍して得られる座標値2tGを予め記憶する定数記憶部と、
所定のスカラー倍算変数Rに前記特定点の座標値Gを設定する初期設定部と、
前記乗数値kを表すtビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Rを2倍算して得られる座標値を所定の第0作業変数R[0]に設定し、前記第0作業変数R[0]に設定した座標値に前記特定点の座標値Gを所定数倍した座標値を加算して得られる座標値を所定の第1作業変数R[1]に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Rに前記第0作業変数R[0]を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Rに前記第1作業変数R[1]を設定するスカラー倍算部と、
前記スカラー倍算部により設定されたスカラー倍算変数Rから前記定数記憶部に記憶された座標値2tGを減算し、減算して得られた座標値を前記座標値kGとして出力するスカラー倍点出力部と、
特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する多倍長剰余演算部であって、前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定し、前記多倍長整数aに前記テンポラリ変数tempを加算して得られる値を所定の剰余演算変数cに設定し、設定した剰余演算変数cを1ビット右にシフトして得られる値を前記剰余値rとして出力する多倍長剰余演算部とを備え、
前記初期設定部は、前記特定点の座標値Gを示す多倍長整数を前記スカラー倍算変数Rに設定し、
前記スカラー倍算部は、前記スカラー倍算変数Rを2倍算して得られる座標値と、前記第0作業変数R[0]に前記特定点の座標値Gを加算して得られる座標値とを前記多倍長剰余演算部を用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Rから前記座標値2 t Gを減算して得られる座標値を前記多倍長剰余演算部を用いて算出する
ことを特徴とする演算装置。 - 前記演算装置は、さらに、
複数の整数値を連結して表される特定の多倍長整数bがゼロであるか否かを判定する多倍長ゼロ判定部であって、前記多倍長整数bを表す複数の整数値の論理和を算出し、算出した論理和に基づいて前記多倍長整数bがゼロであるか否かを判定する多倍長ゼロ判定部を備え、
前記スカラー倍算部は、前記スカラー倍算変数Rを2倍算して得られる座標値と、前記第0作業変数R[0]に前記特定点の座標値Gを加算して得られる座標値とを前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出し、
前記スカラー倍点出力部は、前記スカラー倍算変数Rから前記座標値2tGを減算して得られる座標値を前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出する
ことを特徴とする請求項1記載の演算装置。 - 前記演算装置は、さらに、
前記乗数値kとして用いる乱数値を生成し、前記スカラー倍点出力部から出力された座標値kGを用いて電子署名を生成する電子署名生成部
を備えたことを特徴とする請求項1または請求項2記載の演算装置。 - 特定の楕円曲線に含まれる特定点の座標値Gをtビットのビット列で表される特定の乗数値kでスカラー倍算して得られる座標値kGを算出する演算装置の楕円スカラー倍算方法において、
前記演算装置は、初期設定部と、スカラー倍算部と、スカラー倍点出力部と、多倍長剰余演算部とを備える装置であり、
前記多倍長剰余演算部は、特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する多倍長剰余演算部であって、前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定し、前記多倍長整数aに前記テンポラリ変数tempを加算して得られる値を所定の剰余演算変数cに設定し、設定した剰余演算変数cを1ビット右にシフトして得られる値を前記剰余値rとして出力する演算部であり、
前記初期設定部が、所定のスカラー倍算変数Rに前記特定点の座標値Gを示す多倍長整数を設定し、
前記スカラー倍算部が、前記乗数値kを表すtビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Rを2倍算して得られる第一の座標値を前記多倍長剰余演算部を用いて算出し、算出した第一の座標値を所定の第0作業変数R[0]に設定し、前記第0作業変数R[0]に設定した第一の座標値に前記特定点の座標値Gを所定数倍した座標値を加算して得られる第二の座標値を前記多倍長剰余演算部を用いて算出し、算出した第二の座標値を所定の第1作業変数R[1]に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Rに前記第0作業変数R[0]を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Rに前記第1作業変数R[1]を設定し、
前記スカラー倍点出力部が、前記スカラー倍算部により設定されたスカラー倍算変数Rから前記特定点の座標値Gを2のt乗でスカラー倍して得られる定数値2tGを減算して得られる第三の座標値を前記多倍長剰余演算部を用いて算出し、算出した第三の座標値を前記座標値kGとして出力することを特徴とする演算装置の楕円スカラー倍算方法。 - 特定の楕円曲線に含まれる特定点の座標値Gをtビットのビット列で表される特定の乗数値kでスカラー倍算して得られる座標値kGを算出するための楕円スカラー倍算プログラムであって、
特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する多倍長剰余演算処理であって、前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定し、前記多倍長整数aに前記テンポラリ変数tempを加算して得られる値を所定の剰余演算変数cに設定し、設定した剰余演算変数cを1ビット右にシフトして得られる値を前記剰余値rとして出力する多倍長剰余演算処理と、
所定のスカラー倍算変数Rに前記特定点の座標値Gを設定する初期設定処理と、
前記乗数値kを表すtビットのビット列を上位から所定数のビットずつ参照し、前記ビット列を所定数のビットずつ参照する毎に前記スカラー倍算変数Rを2倍算して得られる第一の座標値を前記多倍長剰余演算処理によって算出し、算出した第一の座標値を所定の第0作業変数R[0]に設定し、前記第0作業変数R[0]に設定した第一の座標値に前記特定点の座標値Gを所定数倍した座標値を加算して得られる第二の座標値を前記多倍長剰余演算処理によって算出し、算出した第二の座標値を所定の第1作業変数R[1]に設定し、参照した所定数のビットの値がゼロであれば前記スカラー倍算変数Rに前記第0作業変数R[0]を設定し、参照した所定数のビットの値が非ゼロであれば前記スカラー倍算変数Rに前記第1作業変数R[1]を設定するスカラー倍算処理と、
前記スカラー倍算処理により設定されたスカラー倍算変数Rから前記特定点の座標値Gを2のt乗でスカラー倍して得られる定数値2tGを減算して得られる第三の座標値を前記多倍長剰余演算処理によって算出し、算出した第三の座標値を前記座標値kGとして出力するスカラー倍点出力処理と
をコンピュータに実行させることを特徴とする楕円スカラー倍算プログラム。 - 特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する演算装置において、
前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定する多倍長整数判定部と、
前記多倍長整数aに前記テンポラリ変数tempを加算し、加算して得られた値を所定の剰余演算変数cに設定する剰余演算変数設定部と、
前記剰余演算変数cを1ビット右にシフトし、シフトして得られた値を前記剰余値rとして出力するシフト演算部と
を備えたことを特徴とする演算装置。 - 特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する演算装置の剰余演算方法において、
多倍長整数判定部が、前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定し、
剰余演算変数設定部が、前記多倍長整数aに前記テンポラリ変数tempを加算し、加算して得られた値を所定の剰余演算変数cに設定し、
シフト演算部が、前記剰余演算変数cを1ビット右にシフトし、シフトして得られた値を前記剰余値rとして出力する
ことを特徴とする演算装置の剰余演算方法。 - 特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する剰余演算プログラムにおいて、
前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定する多倍長整数判定処理と、
前記多倍長整数aに前記テンポラリ変数tempを加算し、加算して得られた値を所定の剰余演算変数cに設定する剰余演算変数設定処理と、
前記剰余演算変数cを1ビット右にシフトし、シフトして得られた値を前記剰余値rとして出力するシフト演算処理と
をコンピュータに実行させることを特徴とする剰余演算プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/073620 WO2012090284A1 (ja) | 2010-12-27 | 2010-12-27 | 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法、剰余演算プログラム、演算装置のゼロ判定方法およびゼロ判定プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5449576B2 true JP5449576B2 (ja) | 2014-03-19 |
JPWO2012090284A1 JPWO2012090284A1 (ja) | 2014-06-05 |
Family
ID=46382434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012550611A Expired - Fee Related JP5449576B2 (ja) | 2010-12-27 | 2010-12-27 | 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US9176707B2 (ja) |
EP (1) | EP2660796B1 (ja) |
JP (1) | JP5449576B2 (ja) |
KR (1) | KR101439804B1 (ja) |
CN (1) | CN103282950B (ja) |
WO (1) | WO2012090284A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2791856A4 (en) * | 2011-12-15 | 2015-08-19 | Intel Corp | METHOD, DEVICE AND SYSTEM FOR SECURELY SHARING MULTIMEDIA CONTENT FROM SOURCE DEVICE |
US9391773B2 (en) * | 2014-04-04 | 2016-07-12 | Qualcomm Incorporated | Elliptic curve point multiplication procedure resistant to side-channel information leakage |
US9800411B1 (en) * | 2016-05-05 | 2017-10-24 | ISARA Corporation | Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme |
CN106301770A (zh) * | 2016-08-22 | 2017-01-04 | 大唐微电子技术有限公司 | 一种Java卡SM2数字签名验证或信息加密的方法及装置 |
EP3376705A1 (en) * | 2017-03-17 | 2018-09-19 | Koninklijke Philips N.V. | Elliptic curve point multiplication device and method in a white-box context |
EP3866142B1 (en) * | 2018-10-10 | 2023-12-06 | Nippon Telegraph And Telephone Corporation | Secure right shift computation system, secure division system, methods therefor, secure computation apparatus, and program |
JP6690686B2 (ja) * | 2018-11-07 | 2020-04-28 | 日本電気株式会社 | 口座開設システム、口座開設方法、及びプログラム |
CN111756538B (zh) * | 2020-06-28 | 2023-10-13 | 哈尔滨理工大学 | 一种基于素数预处理的ecc标量乘法器的实现方法及装置 |
US12101403B2 (en) | 2022-10-26 | 2024-09-24 | Tencent America LLC | Interleaved scalar multiplication for elliptic curve cryptography |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3210356B2 (ja) * | 1991-03-12 | 2001-09-17 | 富士通株式会社 | データのゼロ判定装置 |
US6304658B1 (en) * | 1998-01-02 | 2001-10-16 | Cryptography Research, Inc. | Leak-resistant cryptographic method and apparatus |
CA2252078C (en) * | 1998-10-28 | 2009-02-17 | Certicom Corp. | Power signature attack resistant cryptographic system |
US6963644B1 (en) | 1999-04-07 | 2005-11-08 | Matsushita Electric Industrial Co., Ltd. | Multi-word arithmetic device for faster computation of cryptosystem calculations |
JP2000353077A (ja) * | 1999-04-07 | 2000-12-19 | Matsushita Electric Ind Co Ltd | 多倍長演算装置 |
JP2003098962A (ja) * | 2001-09-20 | 2003-04-04 | Hitachi Ltd | 楕円曲線スカラー倍計算方法及び装置並びに記録媒体 |
US7308096B2 (en) | 2000-05-30 | 2007-12-11 | Hitachi, Ltd. | Elliptic scalar multiplication system |
JP2004198566A (ja) | 2002-12-17 | 2004-07-15 | Oki Electric Ind Co Ltd | 演算処理装置 |
EP1648111B1 (en) | 2003-07-22 | 2014-01-15 | Fujitsu Limited | Tamper-resistant encryption using a private key |
CN101031944A (zh) * | 2004-09-30 | 2007-09-05 | 索尼株式会社 | 加密计算方法、加密系统和计算机程序 |
US7607019B2 (en) * | 2005-02-03 | 2009-10-20 | Apple Inc. | Small memory footprint fast elliptic encryption |
WO2006077651A1 (ja) | 2005-01-24 | 2006-07-27 | Fujitsu Limited | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 |
US7602907B2 (en) * | 2005-07-01 | 2009-10-13 | Microsoft Corporation | Elliptic curve point multiplication |
JP2010164904A (ja) * | 2009-01-19 | 2010-07-29 | Fujitsu Ltd | 楕円曲線演算処理装置、楕円曲線演算処理プログラム及び方法 |
US8542820B2 (en) * | 2009-02-05 | 2013-09-24 | Infineon Technologies Ag | Apparatus for calculating a result of a scalar multiplication |
-
2010
- 2010-12-27 WO PCT/JP2010/073620 patent/WO2012090284A1/ja active Application Filing
- 2010-12-27 KR KR1020137013286A patent/KR101439804B1/ko active IP Right Grant
- 2010-12-27 JP JP2012550611A patent/JP5449576B2/ja not_active Expired - Fee Related
- 2010-12-27 US US13/879,715 patent/US9176707B2/en not_active Expired - Fee Related
- 2010-12-27 EP EP10861408.2A patent/EP2660796B1/en not_active Not-in-force
- 2010-12-27 CN CN201080070826.5A patent/CN103282950B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2012090284A1 (ja) | 2012-07-05 |
KR20130089653A (ko) | 2013-08-12 |
US9176707B2 (en) | 2015-11-03 |
CN103282950A (zh) | 2013-09-04 |
EP2660796A4 (en) | 2017-05-03 |
US20130218937A1 (en) | 2013-08-22 |
KR101439804B1 (ko) | 2014-09-11 |
CN103282950B (zh) | 2015-11-25 |
EP2660796B1 (en) | 2018-10-31 |
JPWO2012090284A1 (ja) | 2014-06-05 |
EP2660796A1 (en) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5449576B2 (ja) | 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム | |
US8619977B2 (en) | Representation change of a point on an elliptic curve | |
JP4513752B2 (ja) | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム | |
JP2006145945A (ja) | 暗号処理演算方法、および暗号処理装置、並びにコンピュータ・プログラム | |
KR20100113130A (ko) | 비대칭 암호화를 위한 대응조치 방법 및 디바이스 | |
JP2004501385A (ja) | 楕円曲線暗号化方法 | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
WO2009091748A1 (en) | Modular reduction using a special form of the modulus | |
CN105337734B (zh) | 包括错误检测的椭圆曲线加密方法 | |
JP2009505148A (ja) | 暗号化演算における反転操作を行うための回路配置及び方法 | |
US7177422B2 (en) | Elliptic curve encryption processing method, elliptic curve encryption processing apparatus, and program | |
JP5336056B2 (ja) | 高速モンゴメリパワーラダーアルゴリズムを利用する欠陥検出動作を具現するための二進有限体におけるポイント加算方法及び加算演算装置 | |
JP2011123356A (ja) | 素数生成装置、素数生成方法、及び素数生成プログラム | |
KR101990861B1 (ko) | 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치 | |
JP2004163687A (ja) | 楕円曲線暗号装置、楕円曲線暗号プログラム | |
KR102019369B1 (ko) | 단일파형공격을 차단하기 위한 타원곡선 암호화 장치 및 방법 | |
US7480380B2 (en) | Method for efficient generation of modulo inverse for public key cryptosystems | |
JP2004053814A (ja) | 楕円曲線暗号装置及び楕円曲線暗号演算方法 | |
Goud | The statistical properties of ECC keys generated from software libraries | |
JP2000293101A (ja) | 楕円暗号安全性評価装置、その方法及びプログラム記録媒体 | |
JP2008020757A (ja) | 暗号処理装置、および暗号処理演算方法、並びにコンピュータ・プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20131126 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131224 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5449576 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |