JP5449576B2 - 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム - Google Patents

演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム Download PDF

Info

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
Application number
JP2012550611A
Other languages
English (en)
Other versions
JPWO2012090284A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5449576B2 publication Critical patent/JP5449576B2/ja
Publication of JPWO2012090284A1 publication Critical patent/JPWO2012090284A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/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

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

本発明は、例えば、楕円曲線暗号の電子署名を生成するための演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラムに関するものである。
電子データの作成者を証明するために電子署名を用いる技術がある。
電子署名は、電子データと秘密鍵と乱数とを用いて特定の署名生成アルゴリズムによって作成される。電子署名は電子データと共に通信される。
電子データの受信者は、受信した電子データと、受信した電子署名と、署名者の公開鍵とを用いて特定の署名検証アルゴリズムによって電子データを検証する。つまり、電子データの受信者は、受信した電子署名が公開鍵に対応する秘密鍵を用いて生成されたか否かを判定する。そして、受信した電子署名が公開鍵に対応する秘密鍵を用いて生成されていれば、受信した電子データが秘密鍵の持ち主(署名者)によって作成されたことが証明される。
このため、秘密鍵が他人に知られた場合、電子署名が偽造され、秘密鍵の持ち主に成りすまして電子データが通信される恐れがある。
また、電子署名の生成時に使用された乱数が他人に知られた場合、電子署名と乱数とに基づいて秘密鍵が特定されてしまう。
このため、秘密鍵が知られた場合と同様に、電子署名が偽造され、秘密鍵の持ち主に成りすまして電子データが通信されてしまう。
さらに、電子署名を生成するための演算処理の処理時間をタイミング解析することにより、演算処理で用いられた数値(例えば、秘密鍵や乱数)を求めることができる可能性がある(非特許文献1参照)。
例えば、EC−SchnorrやECDSAなどの楕円曲線暗号の署名生成アルゴリズム(および署名検証アルゴリズム)では、楕円曲線上の点Gを乱数kでスカラー倍する楕円スカラー倍算kGが行われる。楕円曲線暗号の署名生成アルゴリズム(および署名検証アルゴリズム)は非特許文献2に記載されている。
従来の楕円スカラー倍算kGは以下のとおりである。
Figure 0005449576
上記の計算方法をAdd−Double−Always法と呼ぶ。
Add−Double−Always法ではk[t]=1でなければいけないため、乱数kのビット数tが乱数kの値によって変化してしまう。例えば、乱数kを32ビットで表した場合、最上位ビットが1である乱数kのビット数tは「32」であるが、上位12ビットが0である乱数kのビット数tは「20(=32−12)」に変化してしまう。
つまり、乱数kの値によって計算時間に差が生じてしまい、タイミング解析によって乱数kが特定されてしまう可能性がある。
以下に、Add−Double−Always法を変形した楕円スカラー倍算kGを示す。
Figure 0005449576
上記の計算方法ではk[t]=1でなくても構わないため、乱数kのビット数tは固定値であり、乱数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は剰余演算子を示す。
Figure 0005449576
上記の剰余演算において、aが偶数の場合にはシフト演算が1回行われ、aが奇数の場合にはシフト演算と加算とが1回ずつ行われる。
つまり、aの値によって計算時間に差が生じてしまい、タイミング解析によってaが特定され、aに基づいて乱数kが特定されてしまう可能性がある。
以下に、多倍長演算処理で行われるゼロ判定演算を示す。ゼロ判定演算では、多倍長整数bの値がゼロであるか否かを判定する。多倍長整数bは複数のワード(整数値)を連結した値として表される。
Figure 0005449576
上記のゼロ判定演算では、ゼロでないワードの位置が上位であるほど計算時間は短い。
つまり、bの値によって計算時間に差が生じてしまい、タイミング解析によって乱数kが特定されてしまう可能性がある。
Jean−Sebastien Coron: Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems. CHES 1999: 292−302 ISO/IEC JTC 1/SC 27
本発明は、例えば、電子署名を生成するための演算処理を演算処理で用いる数値の違いに関わらず一定の計算時間で処理することにより、タイミング解析を防ぐことを目的とする。
本発明の演算装置は、特定の楕円曲線に含まれる特定点の座標値Gをtビットのビット列で表される特定の乗数値kでスカラー倍算して得られる座標値kGを算出する演算装置において、
前記特定点の座標値Gを2のt乗でスカラー倍して得られる座標値2Gを予め記憶する定数記憶部と、
所定のスカラー倍算変数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から前記定数記憶部に記憶された座標値2Gを減算し、減算して得られた座標値を前記座標値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 Gを減算して得られる座標値を前記多倍長剰余演算部を用いて算出する
ことを特徴とする。
本発明によれば、乱数k(乗数値)の値に関わらず楕円スカラー倍算kGを一定の計算時間で処理し、楕円スカラー倍算kGのタイミング解析を防ぐことができる。
実施の形態1における楕円曲線暗号装置100の構成図。 実施の形態1における電子署名生成方法(EC−Schnorr方式)を示すフローチャート。 実施の形態1における電子署名生成方法(ECDSA方式)を示すフローチャート。 実施の形態1における楕円スカラー倍算方法を示すフローチャート。 実施の形態1における楕円スカラー倍算方法の別例を示すフローチャート。 実施の形態1における楕円曲線暗号装置100のハードウェア資源の一例を示す図。 実施の形態2における楕円曲線暗号装置100の構成図。 実施の形態2における多倍長剰余演算方法を示すフローチャート。 実施の形態3における楕円曲線暗号装置100の構成図。 実施の形態3における多倍長ゼロ判定方法を示すフローチャート。
実施の形態1.
楕円曲線暗号方式を用いて電子署名を生成する楕円曲線暗号装置について説明する。
但し、電子署名の生成は楕円曲線暗号方式を用いた暗号処理の一例である。
図1は、実施の形態1における楕円曲線暗号装置100の構成図である。
実施の形態1における楕円曲線暗号装置100の構成について、図1に基づいて説明する。
楕円曲線暗号装置100(演算装置)は、電子署名生成部110と楕円スカラー倍算部120と装置記憶部190とを備える。
電子署名生成部110は、EC−SchnorrやECDSAなどの楕円曲線暗号を利用した署名生成アルゴリズム(特許文献2参照)を実行し、電子署名を生成する。
電子署名生成部110は、乱数生成部111と署名生成処理部112とを備える。
乱数生成部111は、所定の乱数生成処理により乱数kを生成(算出)する。
乱数kは、tビットのビット列で表される値である。
署名生成処理部112は、楕円スカラー倍算部120により算出される座標値kGを用いて電子署名を生成する。
楕円スカラー倍算部120は、特定の楕円曲線に含まれる特定点の座標値Gを乱数生成部111により生成された乱数k(乗数値)でスカラー倍算して得られる座標値kGを算出する。
楕円スカラー倍算部120は、初期設定部121、スカラー倍算部122およびスカラー倍点出力部123を備える。
初期設定部121は、所定のスカラー倍算変数Rに特定点の座標値Gを設定する。
スカラー倍算部122は、乱数kを表すtビットのビット列を上位から所定数のビット(1ビットまたは複数ビット)ずつ参照する。
スカラー倍算部122は、ビット列を所定数のビットずつ参照する毎にスカラー倍算変数Rを2倍算して得られる座標値を所定の第0作業変数R[0]に設定する。
スカラー倍算部122は、第0作業変数R[0]に設定した値に特定点の座標値Gを所定数倍(1倍または複数倍)した座標値を加算して得られる座標値を所定の第1作業変数R[1]に設定する。
スカラー倍算部122は、参照した所定数のビットの値がゼロであればスカラー倍算変数Rに第0作業変数R[0]を設定し、参照した所定数のビットの値が非ゼロであればスカラー倍算変数Rに第1作業変数R[1]を設定する。
スカラー倍点出力部123は、スカラー倍算部122により設定されたスカラー倍算変数Rから座標値2Gを減算し、減算して得られた座標値を座標値kGとして出力する。
座標値2Gは、特定点の座標値Gを2のt乗でスカラー倍して得られる値である。
装置記憶部190は、楕円曲線暗号装置100で使用される各種データを記憶する。
特定点の座標値G、特定点の座標値Gの位数n、秘密鍵d、座標値2G、メッセージM、乱数k、電子署名は、装置記憶部190に記憶されるデータの一例である。
特定点の座標値G、特定点の座標値Gの位数nおよび秘密鍵dは装置記憶部190に予め記憶される。特定点の座標値Gは「楕円曲線正弦値」とも呼ばれる。
座標値2Gは、特定点の座標値Gに基づいて予め計算され、装置記憶部190に記憶される。
メッセージMは楕円曲線暗号装置100に入力されて装置記憶部190に記憶され、乱数kは乱数生成部111により算出されて装置記憶部190に記憶され、電子署名は署名生成処理部112により生成されて装置記憶部190に記憶される。
以下、特定点の座標値Gを「特定点G」と記し、座標値2Gを「定数値2G」と記し、座標値kGを「スカラー倍点kG」と記す。
図2は、実施の形態1における電子署名生成方法(EC−Schnorr方式)を示すフローチャートである。
EC−Schnorr方式による電子署名生成方法について、図2に基づいて説明する。
電子署名生成部110は、装置記憶部190から特定点G、特定点Gの位数n、秘密鍵dおよびメッセージMを入力し、特定点Gと特定点Gの位数nと秘密鍵dとを用いてメッセージMに対応する電子署名(e,s)を以下のように生成(算出)する。
S111Aにおいて、乱数生成部111は、所定の乱数生成処理を実行し、乱数kを生成(算出)する。但し、乱数kは特定点Gの位数n未満の自然数である。
S111Aの後、S112Aに進む。
S112Aにおいて、署名生成処理部112は、S111Aで生成された乱数kと装置記憶部190から入力した特定点Gとを楕円スカラー倍算部120に入力する。
そして、署名生成処理部112は、楕円スカラー倍算部120により算出されたスカラー倍点kGを所定の変数Pに設定する。以下、変数Pを「スカラー倍点P」という。
楕円スカラー倍算部120によるスカラー倍点kGの算出方法を「楕円スカラー倍算方法」として別途説明する。
S112Aの後、S113Aに進む。
S113Aにおいて、署名生成処理部112は、メッセージMとスカラー倍点Pのx座標値Pxとを結合したメッセージM’(=M||Px)を入力値として所定のハッシュ関数hを計算し、ハッシュ値eを算出する。
実施の形態において、「A||B」はAとBとの連結を意味し、「h(C)」は入力値Cのハッシュ値を算出するためのハッシュ関数を意味する。
S113Aの後、S114Aに進む。
S114Aにおいて、署名生成処理部112は、(d×e+k)を特定点Gの位数nで除算した余りを算出する。以下、S114で算出した余りを「剰余値s」と記す。
実施の形態において、「A mod B」はAをBで割った余りを求める演算を意味する。
署名生成処理部112は、S113Aで算出したハッシュ値eとS114Aで算出した剰余値sとの組み合わせ(e,s)をメッセージMの電子署名として出力する。
S114Aにより、EC−Schnorr方式による電子署名生成処理は終了する。
図3は、実施の形態1における電子署名生成方法(ECDSA方式)を示すフローチャートである。
電子署名生成部110は、図3に示すようなECDSA方式で電子署名を生成しても構わない。
電子署名生成部110は、装置記憶部190から特定点G、特定点Gの位数n、秘密鍵dおよびメッセージMを入力し、特定点Gと特定点Gの位数nと秘密鍵dとを用いてメッセージMに対応する電子署名(Px,s)を以下のように生成(算出)する。
S111Bにおいて、乱数生成部111は、所定の乱数生成処理を実行し、乱数kを生成(算出)する。
S111Bの後、S112Bに進む。
S112Bにおいて、署名生成処理部112は、S111Bで生成された乱数kと装置記憶部190から入力した特定点Gとを楕円スカラー倍算部120に入力する。
そして、署名生成処理部112は、楕円スカラー倍算部120により算出されたスカラー倍点kGを所定の変数P(スカラー倍点P)に設定する。
楕円スカラー倍算部120によるスカラー倍点kGの算出方法を「楕円スカラー倍算方法」として別途説明する。
S112Bの後、S113Bに進む。
S113Bにおいて、署名生成処理部112は剰余値sを算出し、スカラー倍点Pのx座標値Pxと剰余値sとの組み合わせ(Px,s)をメッセージMの電子署名として出力する。
剰余値sの計算式は「s=k−1×(h(M)+Px×d) mod n」で表すことができる。
S113Bにより、ECDSA方式による電子署名生成処理は終了する。
EC−Schnorr方式(図2)およびECDSA方式(図3)の詳細は、非特許文献2に記載されている。
図4は、実施の形態1における楕円スカラー倍算方法を示すフローチャートである。
実施の形態1における楕円スカラー倍算方法について、図4に基づいて説明する。
楕円スカラー倍算部120は、電子署名生成部110から乱数kと特定点Gとを入力し、装置記憶部190から定数値2Gを入力し、以下のようにしてスカラー倍点kGを算出する。
S121Aにおいて、初期設定部121は、所定の変数Rに特定点Gを設定する。以下、変数Rを「スカラー倍算変数R」という。
S121Aの後、S122Aに進む。
S122Aにおいて、スカラー倍算部122は、乱数kを表すビット列のビット数tを所定の変数iに設定する。以下、変数iを「ループ変数i」という。
例えば、乱数kの値を示す変数(ビット列)が32ビットの変数である場合、スカラー倍算部122はループ変数iに「32」を設定する。
以下、乱数kを表すビット列の下位からiビット目の値(ビット値)を「k[i]」と記す。
つまり、乱数kの最上位ビットのビット値は「k[t]」であり、乱数kの最下位ビットのビット値は「k[1]」である。最上位ビットは一番左のビットであって2のt乗を表すビットである。最下位ビットは一番右のビットであって2の0乗を表すビットである。
乱数kの最上位ビットのビット値k[t]は「0」と「1」とのどちらであっても構わない。
S122Aの後、S123Aに進む。
S123Aにおいて、スカラー倍算部122は、スカラー倍算変数Rを2倍し、得られた値「2R」を所定の変数R[0]に設定する。以下、変数R[0]を「第0作業変数R[0]」という。
S123Aの後、S124Aに進む。
S124Aにおいて、スカラー倍算部122は、第0作業変数R[0]に設定した値に特定点Gを加算し、得られた値を所定の変数R[1]に設定する。以下、変数R[1]を「第1作業変数R[1]」という。
S124Aの後、S125Aに進む。
S125Aにおいて、スカラー倍算部122は、ループ変数iに基づいて乱数kの下位からiビット目のビット値k[i]を参照する。
例えば、「i=t」であればスカラー倍算部122は乱数kの最上位ビットk[t]を参照し、「i=1」であればスカラー倍算部122は乱数kの最下位ビットk[1]を参照する。
ビット値k[i]が「0」である場合、スカラー倍算部122は第0作業変数R[0]をスカラー倍算変数Rに設定する。
ビット値k[i]が「1」である場合、スカラー倍算部122は第1作業変数R[1]をスカラー倍算変数Rに設定する。
S125Aの後、S126Aに進む。
S126Aにおいて、スカラー倍算部122はループ変数iから「1」を減算する。
S126Aの後、S127Aに進む。
S127Aにおいて、スカラー倍算部122はループ変数iが「0」であるか否かを判定する。
ループ変数iが「0」である場合、S128Aに進む。
ループ変数iが「0」でない場合、S123Aに戻る。
但し、S127Aの判定はS126Aの後ではなくS123Aの前に行い、S126Aの後にS127Aに戻るようにしても構わない。この場合、S127Aでループ変数iが「0」であればS128Aに進み、ループ変数iが「0」でなければS123Aに進む。
S128Aにおいて、スカラー倍点出力部123は、スカラー倍算変数Rから定数値2Gを減算し、得られたスカラー倍算変数Rの値をスカラー倍点kGとして電子署名生成部110に出力する。
S128Aにより、楕円スカラー倍算処理は終了する。
上記の楕円スカラー倍算処理(図4)では、スカラー倍算変数Rに初期値として無限遠点「0」ではなく特定点Gを設定し(S121A)、最後にスカラー倍算変数Rから初期値に対応する定数値2Gを減じている(S128A)。
これにより、乱数kの値に関わらず一定の計算時間でスカラー倍点kGを算出することができる。例えば、乱数kの最上位ビットが「1」である場合であっても、乱数kの最上位ビットから連続して複数ビットが「0」である場合であっても、スカラー倍点kGの算出に要する計算時間は変わらない。
つまり、楕円スカラー倍算処理は乱数kの値に関わらず一定の計算時間で行われるため、楕円スカラー倍算処理がタイミング解析されることはない。タイミング解析とは、処理時間の時間差を分析することにより処理されたデータを特定する技術である。タイミング解析については非特許文献1に記載されている。
したがって、楕円スカラー倍算処理で用いる乱数kはタイミング解析によって特定できず、乱数kに基づいて電子署名が知られてしまうこともない。
図5は、実施の形態1における楕円スカラー倍算方法の別例を示すフローチャートである。
楕円スカラー倍算部120は、図5に示す方法によってスカラー倍点kGを算出しても構わない。
楕円スカラー倍算部120は、電子署名生成部110から乱数kと特定点Gとを入力し、装置記憶部190から定数値2Gを入力し、以下のようにしてスカラー倍点kGを算出する。
S121Bにおいて、初期設定部121は、スカラー倍算変数Rに特定点Gを設定する。
S121Bの後、S122Bに進む。
S122Bにおいて、スカラー倍算部122は、乱数kを表すビット列のビット数tをループ変数iに設定する。
S122Bの後、S123Bに進む。
S123Bにおいて、スカラー倍算部122は、スカラー倍算変数Rを2倍する。
S123Bの後、S124Bに進む。
S124Bにおいて、スカラー倍算部122は、ループ変数iに基づいて乱数kの下位からiビット目のビット値k[i]を参照し、参照したビット値k[i]が「0」と「1」とのいずれの値であるか判定する。
ビット値k[i]が「0」である場合、S125Bに進む。
ビット値k[i]が「1」である場合、S126Bに進む。
S125Bにおいて、スカラー倍算部122は、スカラー倍算変数Rに特定点Gを加算する。
S125Bの後、S126Bに進む。
S126Bにおいて、スカラー倍算部122はループ変数iから「1」を減算する。
S126Bの後、S127Bに進む。
S127Bにおいて、スカラー倍算部122はループ変数iが「0」であるか否かを判定する。
ループ変数iが「0」である場合、S128Bに進む。
ループ変数iが「0」でない場合、S123Bに戻る。
但し、S127Bの判定はS126Bの後ではなくS123Bの前に行い、S126Bの後にS127Bに戻っても構わない。この場合、S127Bでループ変数iが「0」であればS128Bに進み、ループ変数iが「0」でなければS123Bに進む。
S128Bにおいて、スカラー倍点出力部123は、スカラー倍算変数Rから定数値2Gを減算し、得られたスカラー倍算変数Rの値をスカラー倍点kGとして電子署名生成部110に出力する。
S128Bにより、楕円スカラー倍算処理は終了する。
上記の楕円スカラー倍算処理(図5)においてS123Bではスカラー倍算変数Rの2倍算(2R)をしているが、無限遠点「0」の2倍算と無限遠点「0」以外の値の2倍算とでは計算時間に差が生じてしまう。
しかし、S121Bでスカラー倍算変数Rに無限遠点「0」ではなく特定点Gを初期設定しているため、乱数kの最上位ビットから連続して複数ビットが「0」である場合であってもS123Bで無限遠点「0」を2倍算することはない。つまり、乱数kの値によってS123Bの計算時間に差が生じない。
したがって、乱数kの値によってS123Bの計算時間に差が生じない分、楕円スカラー倍算処理のタイミング解析を困難にすることができる。
図6は、実施の形態1における楕円曲線暗号装置100のハードウェア資源の一例を示す図である。
図6において、楕円曲線暗号装置100は、CPU901(Central Processing Unit)を備えている。CPU901は、バス902を介してROM903とRAM904とに接続され、これらのハードウェアデバイスを制御する。
ROM903またはRAM904には、OS(オペレーティングシステム)、プログラム群、ファイル群が記憶されている。
プログラム群には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、CPU901により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
ファイル群には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
例えば、楕円曲線暗号装置100はICチップとして構成され、電子決済機能を持つ携帯端末またはICカードに搭載される。ICチップには予め個人情報が記憶される。
携帯端末またはICカードが電子決済機能を使用する際、楕円曲線暗号装置100は個人情報の電子署名を生成する。そして、携帯端末またはICカードの無線通信機能は個人情報と電子署名とを所定の電子決済装置に送信する。電子決済装置は電子署名を検証し、個人情報に基づいて電子決済を行う。
また、楕円曲線暗号装置100をパーソナルコンピュータやサーバ装置などの計算機によって構成する場合、楕円曲線暗号装置100はROM903やRAM904の他に、通信ボード、ディスプレイ装置、キーボード、マウス、ドライブ装置、磁気ディスク装置などのハードウェアを備える。CPU901はこれらハードウェアも制御する。
実施の形態1において楕円曲線暗号装置100は電子署名を生成する暗号装置でなくてもよく、楕円スカラー倍算処理(図4、5)は電子署名を生成する処理以外の演算処理で実行してもよい。
つまり、実施の形態1における楕円スカラー倍算処理(図4、5)は、楕円スカラー倍点kG(kは乱数でなくてもよい)を使用するいかなる演算処理に用いても構わない。
図4または図5に示した楕円スカラー倍算処理はバイナリ法と呼ばれるべき乗剰余演算法であるが、楕円スカラー倍算処理としてその他のべき乗剰余演算法(例えば、Comb法)を用いても構わない。Comb法を用いる場合は、図4や図5においてk[i]は1ビットではなく複数ビットを同時に参照することにより、ループ回数をtよりも小さくすることができる。
その他のべき乗剰余演算法を用いる場合であっても、スカラー倍算変数Rに初期値として特定点Gを設定し(図4のS121A参照)、最後にスカラー倍算変数Rから定数値2Gを減算すればよい。これにより、乱数kの値に関わらず一定の計算時間でスカラー倍点kGを算出することができる。
実施の形態2.
多倍長整数の剰余演算を一定の計算時間で行う形態について説明する。
多倍長整数の剰余演算とは、多倍長整数を特定値で除算して余りを算出する処理である。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
図7は、実施の形態2における楕円曲線暗号装置100の構成図である。
実施の形態2における楕円曲線暗号装置100の構成について、図7に基づいて説明する。
楕円曲線暗号装置100は、実施の形態1で説明した構成に加えて、多倍長剰余演算部130を備える。
多倍長剰余演算部130は、特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する。
多倍長剰余演算部130は、多倍長整数判定部131と、剰余演算変数設定部132と、シフト演算部133とを備える。
多倍長整数判定部131は、多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、多倍長整数aが奇数であればテンポラリ変数tempに素数pを設定する。
剰余演算変数設定部132は、多倍長整数aにテンポラリ変数tempを加算し、加算して得られた値を所定の剰余演算変数cに設定する。
シフト演算部133は、剰余演算変数cを1ビット右にシフトし、シフトして得られた値を剰余値rとして出力する。
楕円スカラー倍算部120の初期設定部121は、特定点の座標値Gを示す多倍長整数をスカラー倍算変数Rに設定する(図4のS121A)。
スカラー倍算部122は、スカラー倍算変数Rを2倍算して得られる座標値「2R」を多倍長剰余演算部130を用いて算出する(図4のS123A)。
スカラー倍算部122は、第0作業変数R[0]に特定点の座標値Gを加算して得られる座標値「R[0]+G」を多倍長剰余演算部130を用いて算出する(図4のS124A)。
スカラー倍点出力部123は、スカラー倍算変数Rから座標値2Gを減算して得られる座標値「R−2G」を多倍長剰余演算部130を用いて算出する(図4のS128A)。
以下、特定点の座標値Gを「特定点G」と記し、座標値2Gを「定数値2G」と記す。
図8は、実施の形態2における多倍長剰余演算方法を示すフローチャートである。
実施の形態2における多倍長剰余演算方法について、図8に基づいて説明する。
電子署名の生成や検証などの暗号処理またはその他の暗号処理では、暗号の解読を困難にするために多倍長整数が使用され、多倍長整数を使用した演算処理が行われる。
多倍長整数とは、レジスタのデータサイズに相当する所定のビット数で表すことができる最大の整数値より大きな整数値である。例えば、32ビットマシンでは32ビットで表すことができる最大の整数値(2の32乗−1)より大きな整数値が多倍長整数である。
以下、多倍長整数を使用した演算処理を「多倍長演算処理」という。
通常、多倍長演算処理では、多倍長剰余演算が行われる。
多倍長剰余演算とは、多倍長整数(後述するa)を特定値(後述するp)で除算して余り(後述するr)を求める処理である。
実施の形態1で説明した楕円曲線上の特定点Gの座標値は多倍長整数の一例である。
例えば、楕円スカラー倍算部120はS123A、S124AおよびS128A(図4参照)において多倍長剰余演算部130を呼び出し、多倍長剰余演算部130は図8に示す多倍長剰余演算を実行する。
以下、計算対象の多倍長整数を「a」とし、「a/2」を除算する値を「p」とし、「a/2」を「p」で除算して得られる余りを「剰余値r」とする。「a/2」は多倍長整数aを2で除算した値である。「p」は素数である。剰余値rは0以上p未満の整数値である。
S131において、多倍長整数判定部131は、多倍長整数aが偶数と奇数とのいずれの値であるか判定する。
多倍長整数aが偶数である場合、S132に進む。
多倍長整数aが奇数である場合、S133に進む。
S132において、多倍長整数判定部131は、所定の変数tempに「0」を設定する。以下、変数tempを「テンポラリ変数temp」という。
S132の後、S134に進む。
S133において、多倍長整数判定部131は、テンポラリ変数tempに素数pを設定する。
S133の後、S134に進む。
S134において、剰余演算変数設定部132は、多倍長整数aにテンポラリ変数tempの値を加算し、得られた値を所定の変数cに設定する。以下、変数cを「剰余演算変数c」という。
S134の後、S135に進む。
S135において、シフト演算部133は、剰余演算変数cを表すビット列を1ビット右にシフトし、得られた値を剰余値rとして出力する。
剰余値rは「a/2」を「p」で除算して得られる余りであり、「r=a/2 mod p」という数式で表すことができる。
S135により、多倍長剰余演算処理は終了する。
上記の多倍長剰余演算処理(図8)では、多倍長整数aが偶数と奇数とのいずれの値であっても処理ステップ数は変わらない。
このため、多倍長剰余演算処理において、多倍長整数aが偶数の場合と多倍長整数aが奇数の場合とで計算時間の時間差は生じない。つまり、多倍長剰余演算処理は多倍長整数aの値に関わらず一定の計算時間で行われるため、多倍長剰余演算処理がタイミング解析されることはない。
したがって、多倍長整数aはタイミング解析によって特定できず、多倍長整数aに基づいて乱数kや電子署名などの秘密情報が知られてしまうこともない。
実施の形態2において楕円曲線暗号装置100は電子署名を生成する暗号装置でなくてもよく、多倍長剰余演算処理(図8)は電子署名を生成する処理以外の処理に含まれる多倍長演算処理として実行してもよい。
つまり、実施の形態2における多倍長剰余演算処理(図8)は、電子署名を検証する処理、電子署名と関係しない暗号処理、楕円曲線暗号以外の暗号処理または暗号処理以外の演算処理など、多倍長整数を使用するいかなる演算処理に用いても構わない。
実施の形態3.
多倍長整数のゼロ判定を一定の計算時間で行う形態について説明する。
多倍長整数のゼロ判定とは、多倍長整数の値がゼロと非ゼロとのいずれの値であるかを判定する処理である。
以下、実施の形態1、2と異なる事項について主に説明する。説明を省略する事項については実施の形態1、2と同様である。
図9は、実施の形態3における楕円曲線暗号装置100の構成図である。
実施の形態3における楕円曲線暗号装置100の構成について、図9に基づいて説明する。
楕円曲線暗号装置100は、実施の形態2で説明した構成に加えて、多倍長ゼロ判定部140を備える。
多倍長ゼロ判定部140は、複数の整数値を連結して表される特定の多倍長整数bがゼロであるか否かを判定する。
多倍長ゼロ判定部140は、論理和演算部141とゼロ判定部142とを備える。
論理和演算部141は、多倍長整数bを表す複数の整数値(ワード)の論理和を算出する。
ゼロ判定部142は、論理和演算部141により算出された論理和に基づいて多倍長整数bがゼロであるか否かを判定する。
楕円スカラー倍算部120の初期設定部121は、特定点の座標値Gを示す多倍長整数をスカラー倍算変数Rに設定する(図4のS121A)。
スカラー倍算部122は、スカラー倍算変数Rを2倍算して得られる座標値「2R」を多倍長ゼロ判定部140を用いて算出する(図4のS123A)。
スカラー倍算部122は、第0作業変数R[0]に特定点の座標値Gを加算して得られる座標値「R[0]+G」を多倍長ゼロ判定部140を用いて算出する(図4のS124A)。
スカラー倍点出力部123は、スカラー倍算変数Rから座標値2Gを減算して得られる座標値「R−2G」を多倍長ゼロ判定部140を用いて算出する(図4のS128A)。
以下、特定点の座標値Gを「特定点G」と記し、座標値2Gを「定数値2G」と記す。
図10は、実施の形態3における多倍長ゼロ判定方法を示すフローチャートである。
実施の形態3における多倍長ゼロ判定方法について、図10に基づいて説明する。
通常、多倍長演算処理では、多倍長ゼロ判定処理が行われる。
多倍長ゼロ判定処理とは、多倍長整数bの値がゼロと非ゼロとのいずれの値であるかを判定する処理である。
実施の形態1で説明した楕円曲線上の特定点Gの座標値は多倍長整数の一例である。
例えば、楕円スカラー倍算部120はS123A、S124AおよびS128A(図4参照)において多倍長ゼロ判定部140を呼び出し、多倍長ゼロ判定部140は図10に示す多倍長ゼロ判定処理を実行する。
S141において、論理和演算部141は多倍長整数bを所定の桁数(またはビット数)毎に分割する。例えば、論理和演算部141は、100桁の多倍長整数bを10桁ずつの10個の整数値に分割する。また例えば、論理和演算部141は、96ビットの多倍長整数bを32ビットずつの3つのビット列に分割する。
以下、多倍長整数bを分割して得られた複数の整数値または多倍長整数bを分割して得られた複数のビット列で表される複数の整数値を「ワード」という。
また、多倍長整数bのワード数(分割数)を「w」とし、下位からi番目のワードをb[i]とする。つまり、最上位のワード(先頭ワード)をb[w]とし、最下位のワード(最終ワード)をb[1]とする。
S141の後、S142に進む。
S142において、論理和演算部141は、S141で得られた多倍長整数bの複数ワードの論理和を算出し、算出した論理和を所定の変数ORに設定する。以下、変数ORを「論理和OR」という。実施の形態において、「A|B」はAとBとの論理和を意味する。
したがって、多倍長整数bを構成する複数ワード全ての値が「0」である場合、論理和ORの値は「0」になり、多倍長整数bを構成する複数ワードの少なくともいずれかの値が「0」でない場合、論理和ORの値は「1」になる。
S142の後、S143に進む。
S143において、ゼロ判定部142は、S142で設定された論理和ORの値が「0」と「1」とのいずれの値であるかを判定する。
そして、論理和ORの値が「0」である場合、ゼロ判定部142は多倍長整数bの値がゼロであると判定し、判定結果を出力する。
また、論理和ORの値が「0」でない場合、ゼロ判定部142は多倍長整数bの値がゼロ以外の値(非ゼロ)であると判定し、判定結果を出力する。
S143により、多倍長ゼロ判定処理は終了する。
上記の多倍長ゼロ判定処理(図10)では、多倍長整数bがどのような値であっても処理ステップ数は変わらない。
このため、多倍長ゼロ判定処理において、多倍長整数bの値によって計算時間の時間差は生じない。つまり、多倍長ゼロ判定処理は多倍長整数bの値に関わらず一定の計算時間で行われ、多倍長ゼロ判定処理がタイミング解析されることはない。
したがって、多倍長整数bはタイミング解析によって特定できず、多倍長整数bに基づいて乱数kや電子署名などの秘密情報が知られてしまうこともない。
実施の形態3において楕円曲線暗号装置100は電子署名を生成する暗号装置でなくてもよく、多倍長ゼロ判定処理(図10)は電子署名を生成する処理以外の処理に含まれる多倍長演算処理として実行してもよい。
つまり、実施の形態3における多倍長ゼロ判定処理(図10)は、電子署名を検証する処理、電子署名と関係しない暗号処理、楕円曲線暗号以外の暗号処理または暗号処理以外の演算処理など、多倍長整数を使用するいかなる演算処理に用いても構わない。
100 楕円曲線暗号装置、110 電子署名生成部、111 乱数生成部、112 署名生成処理部、120 楕円スカラー倍算部、121 初期設定部、122 スカラー倍算部、123 スカラー倍点出力部、130 多倍長剰余演算部、131 多倍長整数判定部、132 剰余演算変数設定部、133 シフト演算部、140 多倍長ゼロ判定部、141 論理和演算部、142 ゼロ判定部、190 装置記憶部、901 CPU、902 バス、903 ROM、904 RAM。

Claims (8)

  1. 特定の楕円曲線に含まれる特定点の座標値Gをtビットのビット列で表される特定の乗数値kでスカラー倍算して得られる座標値kGを算出する演算装置において、
    前記特定点の座標値Gを2のt乗でスカラー倍して得られる座標値2Gを予め記憶する定数記憶部と、
    所定のスカラー倍算変数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から前記定数記憶部に記憶された座標値2Gを減算し、減算して得られた座標値を前記座標値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 Gを減算して得られる座標値を前記多倍長剰余演算部を用いて算出する
    ことを特徴とする演算装置。
  2. 前記演算装置は、さらに、
    複数の整数値を連結して表される特定の多倍長整数bがゼロであるか否かを判定する多倍長ゼロ判定部であって、前記多倍長整数bを表す複数の整数値の論理和を算出し、算出した論理和に基づいて前記多倍長整数bがゼロであるか否かを判定する多倍長ゼロ判定部を備え、
    前記スカラー倍算部は、前記スカラー倍算変数Rを2倍算して得られる座標値と、前記第0作業変数R[0]に前記特定点の座標値Gを加算して得られる座標値とを前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出し、
    前記スカラー倍点出力部は、前記スカラー倍算変数Rから前記座標値2Gを減算して得られる座標値を前記多倍長剰余演算部と前記多倍長ゼロ判定部とを用いて算出する
    ことを特徴とする請求項1記載の演算装置。
  3. 前記演算装置は、さらに、
    前記乗数値kとして用いる乱数値を生成し、前記スカラー倍点出力部から出力された座標値kGを用いて電子署名を生成する電子署名生成部
    を備えたことを特徴とする請求項1または請求項2記載の演算装置。
  4. 特定の楕円曲線に含まれる特定点の座標値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乗でスカラー倍して得られる定数値2Gを減算して得られる第三の座標値を前記多倍長剰余演算部を用いて算出し、算出した第三の座標値を前記座標値kGとして出力することを特徴とする演算装置の楕円スカラー倍算方法。
  5. 特定の楕円曲線に含まれる特定点の座標値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乗でスカラー倍して得られる定数値2Gを減算して得られる第三の座標値を前記多倍長剰余演算処理によって算出し算出した第三の座標値を前記座標値kGとして出力するスカラー倍点出力処理と
    をコンピュータに実行させることを特徴とする楕円スカラー倍算プログラム。
  6. 特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する演算装置において、
    前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定する多倍長整数判定部と、
    前記多倍長整数aに前記テンポラリ変数tempを加算し、加算して得られた値を所定の剰余演算変数cに設定する剰余演算変数設定部と、
    前記剰余演算変数cを1ビット右にシフトし、シフトして得られた値を前記剰余値rとして出力するシフト演算部と
    を備えたことを特徴とする演算装置。
  7. 特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する演算装置の剰余演算方法において、
    多倍長整数判定部が、前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定し、
    剰余演算変数設定部が、前記多倍長整数aに前記テンポラリ変数tempを加算し、加算して得られた値を所定の剰余演算変数cに設定し、
    シフト演算部が、前記剰余演算変数cを1ビット右にシフトし、シフトして得られた値を前記剰余値rとして出力する
    ことを特徴とする演算装置の剰余演算方法。
  8. 特定の多倍長整数aを2で除算した値を特定の素数pで除算して得られる余りを剰余値rとして算出する剰余演算プログラムにおいて、
    前記多倍長整数aが偶数であれば所定のテンポラリ変数tempに0を設定し、前記多倍長整数aが奇数であれば前記テンポラリ変数tempに前記素数pを設定する多倍長整数判定処理と、
    前記多倍長整数aに前記テンポラリ変数tempを加算し、加算して得られた値を所定の剰余演算変数cに設定する剰余演算変数設定処理と、
    前記剰余演算変数cを1ビット右にシフトし、シフトして得られた値を前記剰余値rとして出力するシフト演算処理と
    をコンピュータに実行させることを特徴とする剰余演算プログラム。
JP2012550611A 2010-12-27 2010-12-27 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム Expired - Fee Related JP5449576B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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