JP5301989B2 - 楕円曲線点乗算 - Google Patents

楕円曲線点乗算 Download PDF

Info

Publication number
JP5301989B2
JP5301989B2 JP2008520297A JP2008520297A JP5301989B2 JP 5301989 B2 JP5301989 B2 JP 5301989B2 JP 2008520297 A JP2008520297 A JP 2008520297A JP 2008520297 A JP2008520297 A JP 2008520297A JP 5301989 B2 JP5301989 B2 JP 5301989B2
Authority
JP
Japan
Prior art keywords
setting
comb
bit
integer
odd
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.)
Active
Application number
JP2008520297A
Other languages
English (en)
Other versions
JP2009500676A (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009500676A publication Critical patent/JP2009500676A/ja
Application granted granted Critical
Publication of JP5301989B2 publication Critical patent/JP5301989B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04KSECRET COMMUNICATION; JAMMING OF COMMUNICATION
    • H04K1/00Secret communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Signal Processing (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Description

本発明は、楕円曲線点乗算に関する。
楕円曲線暗号システム(ECC:elliptic curve cryptosystem)は、公開鍵暗号システムの新たに出現したクラスを構成し、スマートカードおよび組み込みシステムなどの応用例において広く適用されている。大部分のECCの安全性は、楕円曲線上の点からなる群に基づいて離散対数問題(discrete logarithm problem)を解くことの困難さに基づいている。楕円曲線が正しく選択された場合、離散対数を見つけるために構成された周知の方法で最良のものは、指数関数的に増加する困難さをもつ。したがって、ECCは、楕円曲線上で離散対数問題を解くための準指数的方法(sub−exponential method)は存在しないという事実を利用する。RSAなどのその他の公開鍵暗号システムと比較して、ECCは、安全性が同じレベルならば、より短い鍵サイズを使用する。これは、記憶、メモリ、および計算能力に対する要求が少ないということになる。
残念なことに、ECCにおける演算の従来の方法は、サイドチャネル攻撃(side−channel attack)に対して脆弱である。サイドチャネル攻撃は、暗号演算中のタイミングまたは電力消費などの観測可能なパラメータを測定して、暗号システム内の秘密情報の全部または一部を推定する。例えば、コーム法(comb method)およびその他の効率的な点乗算方法は、電力解析攻撃(power−analysis attack)に対して脆弱である。電力解析攻撃は、システムによって消費される電力の解析に基づいている。システムによって使用される電力に関する情報は、攻撃者が、システムによって実行される演算に仮説を設け、最終的にシステム内に含まれる秘密について推測を行うことを支援する。
スカラ乗算(scalar multiplication)、例えば、楕円曲線点乗算(elliptic curve point multiplication)は、ECCにおいて重要な役割を果たす。事実、そのような乗算が実行される方法は、異なるサイドチャネル攻撃が有効かどうかにきわめて大きな影響を有する。したがって、改良された方法は、より安全なECCをもたらす。
汎用的な利用の他、楕円曲線点乗算および暗号システムへの具体的な応用例も有する、奇整数および楕円曲線点乗算を記録するために構成されるシステムおよび方法が開示される。一実施例では、記録は、奇整数kを2進表現に変換することによって実行される。2進表現は、例えば、奇整数を表す2のベキの係数とすることができる。2進表現は、その後、コームビットカラム(comb bit−column)として構成され、どのビットカラムも符号付き奇整数になる。別の実施例では、この記録方法を利用して、既知のコーム法と比べて楕円曲線点乗算をより効率的に計算し、保存点をよりわずかしかもたない、コーム法の変形を開示する。開示される点乗算方法は、その後、単純電力解析(SPA:Simple Power Analysis)耐性となるように修正される。
詳細な説明が、添付の図面を参照して説明される。図面において、参照番号の左端の数字は、その参照番号が最初に出現した図面を識別する。異なる図面における同じ参照番号の使用は、類似または同一のアイテムを示す。
[概要]
汎用的な利用及び楕円曲線暗号システムへの具体的な応用例を有する、奇整数および楕円曲線点乗算の記録が開示される。一実施例では、奇数スカラを符号付き非ゼロ表現に変換する符号付き奇数限定記録方法(signed odd−only recoding method)が提示され、この記録方法では、どのコームビットカラム
Figure 0005301989
も、符号付き奇整数になる。別の実施例では、この記録方法を利用して、既知のコーム法と比べて楕円曲線点乗算をより効率的に計算し、保存点(saved points)をよりわずかしかもたない、コーム法の変形を開示する。開示される点乗算方法は、その後、点加算と点減算が楕円曲線システムにおいて実質的に同程度の計算の複雑さをもつという事実を利用することによって、単純電力解析(SPA)耐性となるように修正される。開示されるSPA耐性コーム法は、コーム法の利点を継承するように構成され、事前計算点があらかじめまたは別のところで計算されるとき、その他のSPA耐性窓法(SPA−resistant window method)よりもはるかに高速に動作する。SPA耐性方法をDPA耐性方法に変換する技法と組み合わされると、開示されるSPA耐性コームの実施形態は、すべてのサイドチャネル攻撃に対して安全になる。したがって、本明細書で開示される実施例は、汎用的に有用であるが、特に電力およびコンピューティング資源が貴重であるスマートカードおよび組み込みアプリケーションでの使用に適合される。
[準備]
楕円曲線式は、楕円曲線暗号システム(ECC)の主要な特徴である。体K上の楕円曲線は、そのワイエルシュトラス形式(Weierstrass form)によって、次のように表現できる。
E:y+axy+ay=x+a+ax+a、ここで、a∈F
上の式および「無限遠点(point at infinity)」
Figure 0005301989
を満たす点(x,y)∈Fの集合をE(F)によって示す。コードタンジェントプロセス(chord‐tangent process)を用いると、E(F)は、ゼロを無限遠点
Figure 0005301989
とするアーベル群(Abelian group)を形成する。P(x,y)およびP(x,y)をE上の2つの有限点とする。点加算P(x,y)=P+Pは、次のようにして計算される。
1.x=x=xかつy+y=−(ax+a)ならば、
Figure 0005301989
2.P=P=(x,y)かつ2y≠−(ax+a)ならば、
Figure 0005301989
3.P≠±Pならば、
Figure 0005301989
いくつかの有限体F上の楕円曲線によって生成される群E(F)は、離散対数問題を解くのが非常に困難であるという公開鍵暗号要件を満たす。したがって、ECCは、多くの規格および応用で使用されている。暗号演算の速度を上げるため、楕円曲線点を表すのに射影座標(projective coordinate)が使用される。ヤコビ射影座標(Jacobian projective coordinate)を使用することによって、ワイエルシュトラス式を次の形式で書くことができる。
E:Y+aXYZ+aYZ=X+a+aXZ+a
その場合、無限遠点
Figure 0005301989
は、すべてのθ∈Fについて、(θ,θ,0)によって表される。アフィン点(affine point)(x,y)は、すべてのθ∈Fについて、(θx,θy,θ)によって表され、射影点
Figure 0005301989
は、アフィン点(X/Z,Y/Z)に対応する。射影座標を使用すると、点加算は、より多くの体の乗法演算を行うことと引き換えに、コストのかかる体の逆元演算を行わずに計算することができる。体の乗法演算は、通常、体の逆元演算よりもはるかに高速であり、より高速な楕円曲線点加算を実現する。点がそれ自体に加算される特別な点加算は、2倍算(doubling)と呼ばれる。点の2倍算のコストは、通常、一般的な点の加算のコストとは異なる。
暗号で使用される楕円曲線は、体
Figure 0005301989
または体F上で定義される楕円曲線であり、ここで、mは大きな整数、pは大きな素数である。これら2種類の体の上では、楕円曲線のワイエルシュトラス式は、次のより簡単な形式、すなわち、
Figure 0005301989
上で定義される、
E:y+xy=x+ax+b
またはF上で定義される、
E:y=x+ax+b
に変形されることができ、ここで、pは大きな素数である。これらの式は、点の加算および2倍算を簡単にし、「ショートワイエルシュトラス型(short Weierstrass form)」と呼ばれることがある。実際の暗号における応用では、楕円曲線は、通常、大きな素数位数ρの部分群を有することが必要とされる。楕円曲線暗号システムは、典型的には、E(F)のこの位数ρの部分群の点のみを利用する。
点Pをそれ自体にk回加算することは、スカラ乗算または点乗算と呼ばれ、kを正の整数として、Q=kPと表される。スカラ乗算のための最も簡単で効率的な方法は、kを2進表現に展開する以下の2倍算および加算方法(double−and−add method)である。
図1は、ECCの文脈に適合可能なスカラ乗算の例示的な2倍算および加算方法100を示している。ブロック102において、2倍算および加算方法100への入力は、点Pと、b∈{0,1}であるnビット整数
Figure 0005301989
である。ブロック104において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
である。ブロック106において、iをインデックスとするforループなどのループに入る。ループは、i=n−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック108において、Q=2Qと設定され、ブロック110において、b==1ならば、Q=Q+Pとする。ブロック112において、スカラ乗算の例示的な2倍算および加算方法100は、Q=kPの形式で、Qを返す。
整数kは、(2進)符号付き数字(SD:Signed Digit)表現
Figure 0005301989
で表すことができ、ここで、s∈{−1,0,1}である。非隣接形式(NAF:Non−Adjacent Form)と呼ばれる特別なSD表現は、特に興味を引くものであり、非ゼロの数字が隣り合うことがなく、すなわち、すべてのi≧0について、s×si+1=0となる。どの整数kも、一意のNAFを有し、NAFは、kのすべてのSD表現の中で最も小さい重みを有する。2進表現の期待重みがn/2であるのに比べて、nビット長のNAFの期待重みはn/3である。楕円曲線点減算は、点加算と実質的に同じコストを有する。したがって、図2の加算および減算方法(add−and−subtract method)200は、kについてのNAFを使用すると、2倍算および加算方法100よりも効率的になる。
図2は、スカラ乗算(すなわち点乗算)のための加算および減算方法200を示している。ブロック202において、加算および減算方法200への入力は、点P、及びs∈{−1,0,1}であるnビットNAF整数
Figure 0005301989
を含む。ブロック204において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
である。ブロック206において、iをインデックスとするforループなどのループに入る。ループは、i=n−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック208において、Q=2Qと設定され、ブロック210において、s==1ならば、Q=Q+Pとし、ブロック212において、s==−1ならば、Q=Q−Pとする。ブロック214において、Q=kPである出力Qを返す。
整数kは、m進表現に展開することができ、ここで、何らかの整数w≧2として、mは通常2に等しい。図3のm進方法(m−ary method)300は、速度のために記憶を代償にして、スカラ乗算を事前計算ステージと評価ステージに分割する。2倍算および加算方法300は、w=1の場合のこの方法の特殊なケースである。
図3は、スカラ乗算のためのm進方法300を示している。ブロック302において、m進方法300への入力は、点P、及びa∈{0,1,...,m−1}である整数
Figure 0005301989
を含む。ブロック304〜308は、事前計算ステージを表す。ブロック304において、点P=Pと設定する。ブロック306において、iをインデックスとするforループなどの、増分1のループ(one−step loop)に入る。ループは、i=2からm−1までカウントする。増分1のループ内では、ブロック306において、P=Pi−1+Pと設定する。ブロック308において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
である。ブロック310〜314は、評価ステージを表す。ブロック310において、iをインデックスとするforループなどのループに入る。ループは、i=d−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック312において、Q=mQと設定され、これはwの2倍算を必要とし、ブロック314において、
Figure 0005301989
と設定される。ブロック316において、Q=kPであるQを返す。
m進方法の事前計算ステージは、入力点Pの記憶を含む、m−1≡2−1個の点を記憶することを必要とする。本開示の記憶推定は、点Pの入力を含んで行われる。方法の時間コストの推定を行うことができる。コスト推定では、
Figure 0005301989
を伴う演算はカウントされない。事前計算ステージは、2P、3P、...、[2−1]Pを計算する必要がある。2倍算と加算の合計は同じままであり、応用例で一般に使用される射影座標を用いる場合、2倍算は加算よりも効率的であるので、2倍算演算の使用が、このステージでは一般に好まれる。効率的な方式は、次のような方法で計算するものである。
Figure 0005301989
この方式を使用すると、事前計算は、(2w−1−1)D+(2w−1−1)Aのコストがかかり、ここで、Dは点の2倍算を意味し、Aは点の加算を意味する。評価ステージの時間コストに関しては、最高位の数字がゼロでない、すなわち、ad−1≠0であると仮定すると、このステージの2倍算の数は、w(d−1)である。a=0であるならば、ブロック314の加算は必要ない。kが一様に分布していると仮定すると、評価ステージにおける加算の平均数は、
Figure 0005301989
である。したがって、評価ステージにおける平均時間コストは、近似的に
Figure 0005301989
であり、平均総時間コストは、近似的に
Figure 0005301989
である。
m進方法の修正は、この方法をより効率的にすることができる。例えば、m進方法は、スライディングウィンドウ法(sliding window method)に拡張することもできる。コーム法は、点乗算方法のさらなるカテゴリである。スカラ乗算も効率的に計算することができるコーム法が知られている。b∈{0,1}として、nビット整数
Figure 0005301989
とする。整数w≧2について、
Figure 0005301989
と設定する。その後、[bw−1,bw−2,...,b,b]≡bw−1(w−1)d+...+b+bと定義し、ここで、
Figure 0005301989
である。これらの計算と一貫性のある方法で、図4のコーム法400は、整数kを表すためにw行d列の2進行列を使用し、行列を列方向に処理する。
図4は、スカラ乗算のための固定基底コーム法(fixed−base comb method)400を示している。ブロック402において、固定基底コーム法400への入力は、点P、b∈{0,1}である整数
Figure 0005301989
及び窓幅w≧2を含む。事前計算ステージは、ブロック404〜408に見られる。ブロック404において、すべての
Figure 0005301989
について、[bw−1,...,b,b]Pが計算される。ブロック406において、k=Kw−1‖...‖K‖Kを決定し、ここで、各Kは長さdのビット列である。この演算では、左側を1つまたは複数の0(ゼロ)でパディングする必要があることもある。
Figure 0005301989
がKの第iビットを表すとする。
Figure 0005301989
と定義する。ブロック408において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
と設定される。
ブロック410〜414は、評価ステージを表す。ブロック410において、iをインデックスとするforループなどのループに入る。ループは、i=d−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック412において、Q=2Qと設定され、ブロック414において、
Figure 0005301989
と設定される。ブロック416において、Q=kPであるQを返す。
コーム法は、事前計算ステージにおいて、2−1個の点を記憶する。コーム法の時間コストの推定を行うことができる。事前計算ステージにおいて、
Figure 0005301989
について、[bw−1,...,b,b]Pが計算される必要がある。これを達成するため、2P、22dP、...、2(w−1)dPが最初に計算され、これは、(w−1)d回の2倍算演算のコストがかかる。その後、2倍算演算の結果から、[bw−1,...,b,b]P内の2つのビットだけが非ゼロであるすべての可能な組合せが計算される。
Figure 0005301989
個のそのような組合せが存在する。各組合せは、1回の点加算を使用する。このステップにおいて、
Figure 0005301989
回の点加算が存在する。次のステップにおいて、3つのビットだけが非ゼロであるすべての組合せが計算される。
Figure 0005301989
個のそのような組合せが存在する。各々は、先に計算された結果から、1回の点加算を必要とする。したがって、このステップは、
Figure 0005301989
回の点加算のコストがかかる。この手続きは、すべてのビットが非ゼロであるものまで続けられる。事前計算ステージにおける点加算の総数は、したがって、
Figure 0005301989
である。
したがって、事前計算ステージにおける時間コストは、
{(w−1)d}D+{(2−w−1)}A
である。
評価ステージにおける時間コストを推定するため、
Figure 0005301989
の最高位桁がゼロでない、すなわち、
Figure 0005301989
であると仮定する。その場合、評価ステージにおける2倍算演算の数は、(d−1)である。
Figure 0005301989
である場合、ブロック414の点加算は必要ない。kが一様に分布していると仮定すると、
Figure 0005301989
である確率は、
Figure 0005301989
であり、点加算の平均数は、
Figure 0005301989
である。したがって、評価ステージにおける平均時間コストは、近似的に
Figure 0005301989
である。このコストは、先に導かれたように
Figure 0005301989
であるm進方法の評価ステージにおける時間コストよりもはるかに小さい。評価ステージにおけるこの利得は、コーム法の事前計算ステージでのより高い時間コストを代償としている。コーム法の総時間コストは、
Figure 0005301989
である。
[サイドチャネル攻撃および対策]
電力解析攻撃の2つのタイプは、単純電力解析(SPA)と、差分電力解析(DPA:Differential Power Analysis)である。SPAは、スカラ乗算中の暗号装置における単一の電力消費トレースを解析する。記録された電力消費データから、分岐命令条件を識別することができる。これは、楕円曲線2倍算演算の継続を表す。2倍算および加算方法がスカラ乗算を計算する際に使用される場合、秘密の乗数kの各ビットの値bが、この攻撃によって暴かれる。スカラ乗算方法の場合、SPAは、加算および減算方法もしくはm進方法の各数字sもしくはaの値またはコーム法の
Figure 0005301989
の値を推定することはできないが、数字または
Figure 0005301989
がゼロかどうかを検出することができ、これは情報漏れに等しい。
DPAは、スカラ乗算の多くの電力トレースを記録し、記録間の相関および誤り訂正技法を使用して、秘密kの一部または全部の数字を推定する。DPAは、SPAよりも複雑であるが強力である。SPA耐性のあるスカラ乗算方法は、必ずしもDPA攻撃に耐性があるわけではないが、SPA耐性方法をDPA耐性方法に変換するために、多くの対策を使用できる。対策は、実行を、ひいては、電力消費を同一の入力に対して異なるものにすることである。この結果を達成するために、通常は、ランダム化が利用される。射影座標における入力点のランダム化、指数パラメータ表現のランダム化、楕円曲線式のランダム化、および体表現のランダム化など、多くのランダム化手法が実現可能である。加えて、これらのランダム化手法の各々は、本明細書で開示されるSPA耐性方法をDPA攻撃に耐性があるように変換するために適用することができる。
有効であるためには、ECCは、SPA攻撃に対する対策を提供しなければならない。本明細書で開示されるECCを実施する特定の手法は、スカラ乗算の実行を、乗数kの特定の値とは独立にする。例えば、2倍算および加算方法をSPA攻撃に対して耐性のあるものにする簡単な方法は、bが0であるか、それとも1であるかに関係なく、同じ演算が適用されるように、方法内の分岐演算を除去することである。したがって、分岐なし2倍算および加算方法(double−and−add−always method)を構成することができる。
図5は、SPA耐性を提供するための分岐なし2倍算および加算方法500を示している。ブロック502において、分岐なし2倍算および加算方法500への入力は、点P、およびb∈{0,1}であるnビット整数
Figure 0005301989
を含む。ブロック504において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
である。ブロック506において、iをインデックスとするforループなどのループに入る。ループは、i=n−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック508において、Q=2Qと設定され、ブロック510において、Q=Q+Pと設定され、ブロック512において、
Figure 0005301989
と設定される。ブロック514において、Q=Qを返し、ここで、QはQ=kPの形をとる。
SPA攻撃を防御する別の戦略は、図4のコーム法400における
Figure 0005301989
を符号付き表現
Figure 0005301989
に拡張することであり、ここで、各
Figure 0005301989
は非ゼロである。次の手続きは、コーム法において
Figure 0005301989
、0≦i<dによって表される奇整数kに関するこの符号付き表現
Figure 0005301989
を獲得するために使用される。s=1とし、残りを、K=0ならば、
Figure 0005301989
、それ以外ならば、
Figure 0005301989
と設定することによって構成する。
コーム法は、従来のコーム法にこの符号付き表現を使用して、kが偶数の場合には(k+1)Pを、kが奇数の場合には(k+2)Pを計算する。その後、点2Pが計算される。所望の点kPを獲得するために、従来のコーム法の結果から、点Pまたは2Pが減算される。コーム法は、事前計算ステージにおいて、元のコーム法が有するのと同じ時間および空間コスト、すなわち、2−1個の点の記憶および{(w−1)d}D+{(2−w−1)}Aを有する。評価ステージは、d−1回の点加算およびd−1回の2倍算のコストがかかる。従来のコーム法の後の最後のステージは、1回の2倍算および1回の減算のコストがかかる。したがって、総コストは、(w−1)d+(d−1)+1=wd回の2倍算および(2−w−1)+(d−l)+1=2−w+d−1回の加算演算である。図4の方法400と比較すると、この方法は、同じ記憶コストと、わずかに高い時間コストを有する。
∈{0,1,...,2−1}である整数
Figure 0005301989
に関するさらなるSPA耐性m進スカラ乗算方法は、最初に、kを、a’∈{−2,±1,±2,...,±(2w−1−1),2w−1}かつd’がdまたはd+1であるような別の表現
Figure 0005301989
に変換する。直観的に、この記録方法は、数字0を−2によって置き換え、kを変化なく維持するために、隣接するより高位の桁を調整する。この記録方法は、0≦c≦2および0≦t≦2+1である2つの補助値cおよびtを用いて反復的に表現される。c=0と設定する。その後、i=0,...,d+1について、t=a+cとし、
= t=0ならば、(1,−2
= 0<t<2w−1ならば、(0,t
(ci+1,a’)= 2w−1<t<2ならば、(1,−2+t
= t=2ならば、(2,−2
= t=2+1ならば、(1,1)
とする。
式ci+1・2+a’=tが常に成り立つことに留意されたい。
変換後、このスカラ乗算方法は、事前計算ステージが、2P、3P、...、[2w−1]P、および[−2]Pを計算する必要があることを除いて、m=2である場合の図3のm進方法300とまさに同じである。2倍算と加算の合計は同じままであり、応用例で一般に使用される射影座標を用いる場合、2倍算は加算よりも効率的であるので、このステージでは、2倍算をできるだけ多く使用したい。最も効率的な方式は、式1を使用して計算し、事前計算ステージのためのコスト(2w−2+1)D+(2w−2−1)Aを得ることである。評価ステージは、d’=dであるならば、w(d−1)D+(d−1)A、またはd’=d+1であるならば、wdD+dAのコストがかかる。したがって、総コストは、少なくとも(2w−2+wd−w+1)D+(2w−2+d−2)Aである。加えて、事前計算ステージは、2w−1+1個の点を記憶する。
さらなるSPA耐性奇数限定m進スカラ乗算方法は、a∈{0,1,...,2−1}である奇整数
Figure 0005301989
を、a’∈{±1,±3,...,±(2−1)}であるような別の表現
Figure 0005301989
に変換するというアイデアに基づいている。これは、以下の記録方法を用いて達成することができる。
図6は、奇数スカラのためのさらなるSPA耐性奇数限定m進記録方法600を示している。ブロック602において、奇数限定m進記録方法600への入力は、a∈{0,1,...,2−1}であるnビット奇整数
Figure 0005301989
を含む。ブロック604において、iをインデックスとするforループなどのループに入る。ループは、i=0からd−1まで1を増分としてカウントする。ループ内では、ブロック606において、aが奇数であれば、a’=aと設定し、ブロック608において、aが偶数であれば、a’=a+1およびa’i−1=a’i−1−2と設定する。ブロック610において、
Figure 0005301989
である出力
Figure 0005301989
を返す。
この変換を使用すると、kが偶数の場合には[k+1]Pを、kが奇数の場合には[k+2]Pを計算するために、図3のm進方法300が、m=2として使用される。その後、所望のkPを獲得するために、図3の方法300の結果から、Pまたは2Pが減算される。方法600は、2−1個の点P、3P、5P、...、[2−1]Pを記憶する必要がある。これらの点は、事前計算ステージにおいて、最初に2Pを計算し、その後、残りを式[i]P=2P+[i−2]Pを用いて反復的に計算することによって、計算することができる。このステージにおけるコストは、1D+(2w−1−1)Aである。評価ステージにおけるforループは、w(d−1)D+(d−1)Aのコストがかかり、後処理ステージは、2Pを計算する1回の2倍算と、Pまたは2Pを減算する1回の減算のコストがかかる。OTの方法の総コストは、したがって、(wd−w+2)D+(2w−1+d−1)Aである。
[奇数限定コーム法]
奇数限定コーム法(odd−only comb method)は、ECCにおける既知のコーム法と比べて著しい向上を含む。奇数限定コームの実施形態は、スカラkのすべてのコームビットカラム
Figure 0005301989
を、符号付き非ゼロ表現
Figure 0005301989
に変換する。既知の技法からの重大な相違において、生成されたどの
Figure 0005301989
も、符号付き奇整数である。より具体的には、この実施形態は、各コームビットカラム
Figure 0005301989
について、
Figure 0005301989
と、
Figure 0005301989
、j≠0を生成し、ここで、
Figure 0005301989
は−1と定義される。有利なことに、事前計算ステージは、ECCにおける従来のコーム法の半数の点を計算し、保存しさえすればよい。
図7は、奇数スカラのための符号付き奇数限定コーム記録方法700の例示的な詳細を示している。方法700は、コーム楕円曲線点乗算での使用のために適合された楕円曲線計算を実行する。この記録方法700は、
Figure 0005301989
である窓幅w≧2について構成される。方法700への入力は、b∈{0,1}であるnビット奇整数
Figure 0005301989
を含む。方法からの出力は、
Figure 0005301989
を含み、ここで、各K’は、dビット長のバイナリ列であり、必要ならば左側を0でパディングする。図7内では、
Figure 0005301989
は、K’の第rビットを表すとし、すなわち、
Figure 0005301989
である。
Figure 0005301989
と定義する。出力は、j≠0かつ0≦r<dについて、
Figure 0005301989
および
Figure 0005301989
を満たす。
図7を参照すると、奇数スカラのための符号付き奇数限定コーム記録方法700の演算を理解することができる。ブロック702において、入力が、b∈{0,1}である
Figure 0005301989
に従ってnビット奇整数に設定される。ブロック704において、iをインデックスとするforループなどのループに入る。ループは、i=0からd−1まで1を増分としてカウントする。ループ内では、ブロック706において、b=1ならば、
Figure 0005301989
と設定し、ブロック708において、b=0ならば、
Figure 0005301989
および
Figure 0005301989
と設定する。ブロック710においてループを抜ける時、
Figure 0005301989
およびi=dと設定する。ブロック712において、iをインデックスとする、i<wdの間続くように構成されるwhileループなどのループに入る。ループ内では、ブロック714において、eが奇数、かつ
Figure 0005301989
である状況は、
Figure 0005301989
および
Figure 0005301989
と設定することによって対処され、ブロック716において、それ以外の状況は、
Figure 0005301989
および
Figure 0005301989
と設定することによって対処される。ブロック718において、i=i+1と設定することによって、iがインクリメントされる。ブロック720において、各K’が、成分ビットとして
Figure 0005301989
を有し、必要ならば左側を0でパディングしたdビット長のバイナリ列である、出力
Figure 0005301989
が返される。
方法700は、最初に、
Figure 0005301989
という事実を利用して、最後(すなわち最低位)のdビットの各ビットを、1または
Figure 0005301989
に変換する。言い換えると、K’内の各ビット
Figure 0005301989
、0≦r<dは、1または
Figure 0005301989
である。記録方法の残りは、第dビットから最高位ビットまでの各ビットを処理する。現在のビットが1であり、同じコームビットカラム
Figure 0005301989
内の最低位ビットと異なる符号を有する場合、現在のビットは、
Figure 0005301989
に設定され、残りのより高位のビットからなる値は、kの値を変化なく維持するために、1を加算される。この処理は、nビット奇整数kを表すwdビット
Figure 0005301989
を生成する。
したがって、図7の方法700は、奇数スカラkを与えられた場合、一連のビット列
Figure 0005301989
と、
Figure 0005301989
とを出力し、
Figure 0005301989
であり、
Figure 0005301989
については、
Figure 0005301989
、および
Figure 0005301989
、j≠0かつ0≦r<dであり、ここで、
Figure 0005301989
である。上述の言明は、次のようにして証明することができる。方法700によって生成された各
Figure 0005301989
が、
Figure 0005301989
、および
Figure 0005301989
、j≠0という条件を満たすことは、kが奇数であり、b=1であるので、明らかである。ブロック704〜708は、
Figure 0005301989
内の最終ビット
Figure 0005301989
を、1または
Figure 0005301989
となるように設定する。したがって、
Figure 0005301989
である。方法700では、
Figure 0005301989
である場合、
Figure 0005301989
は、ブロック714によって、
Figure 0005301989
に設定され、またはブロック716によって、0に設定される。
Figure 0005301989
である場合、
Figure 0005301989
は、ブロック716によって、0または1に設定される。これは、各
Figure 0005301989
内の最低位ビットを除くすべてのビットが、0であるか、または最低位ビットと同じ値を有することを意味する。
Figure 0005301989
を証明するため、最初に、
Figure 0005301989
を証明する。
これは、0≦j<dについて、
Figure 0005301989
であることを証明する帰納法によって行うことができる。kは奇数であるので、j=0について、式は成り立つ。j−1<dについて、式が真である場合、方法700のステップ2および3は、j<dについても、式が真であることを保証する。j=d−1と設定することによって、所望の式が得られる。
ブロック714の前で第iループに入る時のeの値をeで表し、ここで、i>dである。発明者らは、i≧dについて、
Figure 0005301989
が常に真であることを主張する。これは、帰納法によって行うことができる。式2を使用することによって、
Figure 0005301989
を得る。これは、i=dについて、式3が成り立つことを証明する。i>dについて、式3が真であると仮定する。eが奇数、かつ
Figure 0005301989
である場合、
Figure 0005301989
Figure 0005301989
、および
Figure 0005301989
を得る。
同様の手続きが、eが偶数、かつ
Figure 0005301989
である場合に、
Figure 0005301989
を証明するために使用することができる。これは、i+1について、式3がやはり真であることを意味する。したがって、i≧dについて、式3が成り立つ。
証明の必要がある最後のことは、ewd=0である。kはnビットの整数であるので、
Figure 0005301989
は、n−dビットの整数、すなわち、e<2n−dである。n≧i≧dについて、
≦2n−i (4)
であることを証明するために、帰納法を使用したい。
i=dのときは、すでに証明されている。n>i≧dであるiについて、真であると仮定する。eが奇数である場合、不等式は、e≦2n−i−1であることを含意する。この場合、ブロック714〜716は、
Figure 0005301989
を与え、すなわち、この場合、i+1について、式3は真である。eが偶数である場合、ブロック716から、
Figure 0005301989
である。
式3は、依然として成り立つ。言い換えると、i+1≦nについて、式4は真である。したがって、式(4)は、n≧i≧dについて、真であると証明される。式4は、e≦2=1であることを導く。
Figure 0005301989
であるので、n+1≦wdを得る。n+1=wdである場合、ewd−1≡e≦1である。n+1<wdである場合、ブロック714〜716から、
Figure 0005301989
である。このプロセスを継続すると、やはりewd−1≦1を得る。言い換えると、常にewd−1≦1を得る。ブロック706〜708から、
Figure 0005301989
を得る。ブロック712〜718のループ内でi=wd−1である場合、
Figure 0005301989
であるので、ブロック716が実行され、すなわち、
Figure 0005301989
である。この結果を式3に適用することで、所望の結果
Figure 0005301989
が得られる。
図7の記録方法700は、奇数スカラを用いる場合に限って機能する。スカラkが偶整数である場合、図8の方法800が利用できる。図8では、最初に、奇数スカラk’=k+1について点乗算を計算し、その後、結果からPを減算して、所望の結果kPを獲得する。
図8は、符号付き奇数限定コーム法800の演算を示している。ブロック802において、点Pおよび整数k>0を含む入力が受け取られる。事前計算ステージは、ブロック804〜810を含む。ブロック804において、すべての(bw−1,...,b,b)∈(Zw−1についての[bw−1,...,b,b,1]Pの計算を含む、事前計算の計算が行われる。ブロック806において、kが偶数である場合、k’=k+1と設定し、それ以外の場合、k’=kと設定する(kが偶数である場合、k’=k−1と設定し、それ以外の場合、k’=kと設定することもできることに留意されたい)。ブロック808において、図7の方法700が、k’に適用されて、対応するコームビットカラム
Figure 0005301989
を計算する。ブロック810において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
と設定される。ブロック812〜818は、評価ステージを構成する。ブロック812において、iをインデックスとするforループなどのループに入る。ループは、i=d−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック814において、Q=2Qと設定し、ブロック816において、
Figure 0005301989
と設定する。ブロック818において、Q=kPの形をとる出力が返され、kが偶数である場合、Q−Pが返され、それ以外の場合、Qが返される(k’=k−1である場合は、kが偶数のとき、Pを加算することに留意されたい)。
Figure 0005301989
の最低位ビットが
Figure 0005301989
である場合、
Figure 0005301989
を得る。この場合、方法800のブロック816は、実際には
Figure 0005301989
を実行する。
実際のECC応用例では、大きな素数位数ρを有する部分群内の楕円曲線点のみが、実際に使用される。この場合、符号付き奇数限定コーム法800は、kが偶数ならばρ−kは奇数であり、[ρ−k]P=−kPであるという事実を利用して、後処理ブロック818を除去するように修正することができる。この修正方法は、図9で説明される。
図9は、奇数位数の点のための符号付き奇数限定コーム法の演算を示している。ブロック902において、奇数位数ρの点Pおよび整数k>0を含む入力が受け取られる。事前計算ステージは、ブロック904〜910を含む。ブロック904において、事前計算の計算が行われる。例えば、[bw−1,...,b,b,1]Pが、すべての(bw−1,...,b,b)∈(Zw−1について計算される。ブロック906において、k’が設定される。特に、kが奇数である場合、k’=kと設定し、それ以外の場合、k’=ρ−kと設定する。ブロック908において、図7の方法700が、k’に適用され、それによって、k’に対応するコームビットカラム
Figure 0005301989
を計算する。ブロック910において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
と設定される。ブロック912〜916は、評価ステージを構成する。ブロック912において、iをインデックスとするforループなどのループに入る。ループは、i=d−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック914において、Q=2Qと設定し、ブロック916において、
Figure 0005301989
と設定する。ブロック918において、Q=kPの形をとるQが返される。上のブロック916において、Qは、kが奇数ならば、
Figure 0005301989
、またはkが偶数ならば、
Figure 0005301989
に設定されることに留意されたい。
図7の記録方法700では、dは、図4の元の固定基底コーム法400において使用された
Figure 0005301989
の代わりに、
Figure 0005301989
と定義される。nがwで整除不能である場合、発明者らの記録方法におけるdは、元のコーム法とまさに同じ、すなわち、
Figure 0005301989
である。しかし、nがwで整除可能である場合、発明者らの方法のdは、方法400で使用されたdよりも1大きく、すなわち、
Figure 0005301989
である。dを1だけ増やすことは、事前計算ステージにおけるw−1個の追加の2倍算と、評価ステージにおける1個の追加の加算および1個の追加の2倍算とを生じさせる。どのような追加の演算も望ましくない。幸いなことに、nがwで整除可能である場合の追加の演算の大部分は、以下の修正コーム法において説明される考え抜かれた操作によって排除することができる。
図10は、wで整除可能なnのための符号付き奇数限定コーム法の演算を示している。ブロック1002において、点Pおよびnビット整数k>0を含む入力が受け取られる。事前計算ステージは、ブロック1004〜1010を含む。ブロック1004において、事前計算の計算が行われる。例えば、[bw−1,...,b,b,1]Pが、すべての(bw−1,...,b,b)∈(Zw−1について計算される。ブロック1006において、k mod 4が評価され、k’が設定される。特に、k mod 4=0の場合、k’=k/2+1と設定し、k mod 4=1の場合、
Figure 0005301989
と設定し、k mod 4=2の場合、k’=k/2と設定し、k mod 4=3の場合、
Figure 0005301989
と設定する。ブロック1008において、方法700が、k’に適用されて、対応するコームビットカラム
Figure 0005301989
を計算する。ブロック1010において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
と設定される。評価ステージは、ブロック1012〜1026を含む。ブロック1012において、iをインデックスとするforループなどのループに入る。ループは、i=d−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック1014において、Q=2Qと設定し、ブロック1016において、
Figure 0005301989
と設定する。ブロック1018において、k mod 4=0ならば、Q=Q−Pと設定する。ブロック1020において、Q=2Qと設定する。ブロック1022において、k mod 4=1ならば、Q=Q−Pと設定し、ブロック1024において、k mod 4=3ならば、Q=Q+Pと設定する。ブロック1026において、Q=kPの形をとるQが返される。
ブロック1006の結果、方法1000で使用されるdの値は、
Figure 0005301989
に等しく、元のコーム法400と同じである。方法800と比較すると、方法1000は、nがwで整除可能である場合、事前計算ステージにおいて、w−1個の2倍算を不要にする。この場合、k mod 4=2ならば、評価ステージにおいて、1個の加算も不要にされる。様々な方法のさらなる性能比較は、後ほど本明細書において与えられる。
方法800および1000は、SPA耐性ではない。両方の方法で、すべてのコームビットカラム
Figure 0005301989
は非ゼロであるが、スカラkの最終ビットの値は、SPAによって、図8のブロック818で検出可能であり、スカラkの最終2ビットの情報は、SPAによって、図10のブロック1016に続くステップから漏れることがある。すべての
Figure 0005301989
であるので、3つのコーム法800、900、1000のすべてについて、forループ内の演算は、点2倍算と点加算が交替する系列DADA...DADAをなし、したがって、秘密スカラkについての情報をSPAに漏らさない。これは、ρを点Pの位数として、
Figure 0005301989
ビットの整数として、すべてのスカラk(またはより具体的には、図9のブロック906におけるk’)をとるならば、方法900がSPA耐性コーム法になることを含意する。それは、SPA耐性方法を研究する際の一般的な仮定である。潜在的なダミー演算をforループの後に挿入することによって、上記のSPA非耐性方法をSPA耐性方法に変換することができる。方法800は、以下のSPA耐性コーム法に修正することができる。
図11は、SPA耐性符号付き奇数限定コーム法1100の演算を示している。ブロック1102において、入力の点Pおよび整数k>0が受け取られる。事前計算ステージは、ブロック1104〜1110を含む。ブロック1104において、事前計算の計算が行われる。例えば、[bw−1,...,b,b,1]Pが、すべての(bw−1,...,b,b)∈(Zw−1について計算される。ブロック1106において、kが偶数である場合、k’=k+1と設定し、それ以外の場合、k’=k+2と設定する。ブロック1108において、方法700が、k’に適用されて、対応するコームビットカラム
Figure 0005301989
を計算する。ブロック1110において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
と設定される。評価ステージは、ブロック1112〜1120を含む。ブロック1112において、iをインデックスとするforループなどのループに入る。ループは、i=d−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック1114において、Q=2Qと設定し、ブロック1116において、
Figure 0005301989
と設定し、ブロック1118において、P=2Pと設定する。ブロック1120において、Q=kPの形をとる出力が返される。特に、kが偶数である場合、Q−Pを返し、それ以外の場合、Q−Pを返す。
先に述べたように、SPA耐性方法を研究する際、スカラは、ρを点Pの位数として、
Figure 0005301989
ビットの整数と見なされ、すなわち、図7の方法700では、
Figure 0005301989
である。この場合、
Figure 0005301989
がwで整除可能ならば、図11の方法1100で使用されるdの値は、図4の元のコーム法400でのdよりも1大きく、より高い計算の複雑さもたらす。次のSPA耐性方法1200は、dを増加させず、したがって、増加する計算の複雑さを排除する。
図12は、wで整除可能な
Figure 0005301989
のためのSPA耐性符号付き奇数限定コーム法1200の演算を示している。ブロック1202において、位数ρの点Pおよびnビット整数k>0を含む入力が受け取られる。事前計算ステージは、ブロック1204〜1212を含む。ブロック1204において、事前計算の計算が行われる。例えば、[bw−1,...,b,b,1]Pが、すべての(bw−1,...,b,b)∈(Zw−1について計算される。ブロック1206において、
Figure 0005301989
である場合、k=ρ−kと設定し、それ以外の場合、k=kと設定する。ブロック1208において、kが偶数である場合、k’=k+1と設定し、それ以外の場合、k’=k+2と設定する。ブロック1210において、方法700が、k’に適用されて、対応するコームビットカラム
Figure 0005301989
を計算する。ブロック1212において、点Qは、最初に、無限遠点に設定され、すなわち、
Figure 0005301989
と設定される。評価ステージは、ブロック1214〜1226を含む。ブロック1214において、iをインデックスとするforループなどのループに入る。ループは、i=d−1から0まで−1を増分としてカウントダウンする。ループ内では、ブロック1216において、Q=2Qと設定し、ブロック1218において、
Figure 0005301989
ならば、
Figure 0005301989
と設定し、それ以外の場合、
Figure 0005301989
と設定する。ブロック1220において、P=2Pと設定する。ブロック1222において、
Figure 0005301989
ならば、Δ=1と設定し、それ以外の場合、Δ=−1と設定する。ブロック1224において、kが偶数である場合、Q=Q+ΔPと設定し、それ以外の場合、Q=Q+ΔPと設定する。ブロック1226において、Q=kPである出力として、Qが返される。
図12の方法1200では、ブロック1206が、
Figure 0005301989
以下のkを保証することに留意されたい。また、方法で使用されるdが
Figure 0005301989
に等しいことを保証するため、k’は
Figure 0005301989
ビットの整数であるべきである。そうでない場合、所望の結果を達成するため、ブロック1206において、kが偶数ならば、k’をk−1と設定し、kが奇数ならば、k−2と設定することができる。この場合、ブロック1222は、
Figure 0005301989
ならば、Δを−1と設定し、それ以外の場合、1と設定する。
[演算の安全性]
電力解析に対する開示された点乗算方法の安全性が、このセクションで説明される。SPAに対する安全性が、最初に検討され、続いて、開示された方法をどのように変換して、DPA、2次DPA(second−order DPA)、およびその他のサイドチャネル攻撃に耐性をもつようにするかが説明される。
コーム法900、1100、1200は、電力解析にとって点減算が点加算と実質的に同じであるという事実を利用する。加えて、開示されるコーム法は、点乗算を計算する各ループにおいて、1つの点加算(または点減算)および1つの2倍算を実行する。これは、すべてのスカラkについて同じ系列が実行されることを意味する。したがって、SPAは、実行の電力消費を検査することによって、秘密kについてのどのような情報も抽出することができない。言い換えると、コーム法900、1100、1200は、実際にSPA耐性である。
しかし、SPA耐性である点乗算方法が、必ずしもDPA攻撃に対して耐性があるとは限らない。ランダム化射影座標(randomization projective coordinate)またはランダム同型曲線(random isomorphic curve)が、開示された方法をDPA耐性方法に変換するために使用することができる。
すぐ上で述べられたランダム化方式が使用される場合、2次DPA攻撃は、依然として、コーム法900、1100、1200に有効に適用されることができる。そのような2次攻撃は、どの
Figure 0005301989
がロードされたかを決定するために、電力消費とロードデータのハミング重みの相関を利用する。そのような2次DPA攻撃を妨げるため、固定ハミング重みが存在しないように、すべての事前計算点をテーブルに入れた後でランダム化する方式を使用することができる。
最近提案されたDPA攻撃は、多くのランダム化方式に対する改良された攻撃である。この攻撃は、座標成分の一方がゼロである特別な点を利用する。そのようなDPA攻撃は、開示されたスカラ乗算方法の応用例において、F(p>3)上で定義され、bがpを法とする平方剰余(quadratic residue)ではない楕円曲線E:y=x+ax+bを単に選択し、入力点として任意の点(x,0)を拒否することによって、対処することができる。濃度#E(F)が大きな素数である場合、点(x,0)は、楕円曲線上にないので、適格な入力点になることができない。上述のランダム化技法および対策と組み合わせることで、開示されたコーム法は、電力解析攻撃を妨げることができる。
[演算の効率性]
コーム法800〜1200は、2w−1個の点を必要とする。これらのコーム法の事前計算ステージでは、2P、22dP、...、2(w−1)dPが、最初に計算される。これは、(w−1)d回の点2倍算のコストがかかる。その後、(bw−1,...,b,b)∈(Zw−1であるすべての可能な組合せ[bw−1,...,b,b,1]Pが、図4の方法400の事前計算ステージと同様にして計算され、これは、2w−1−1回の点加算のコストがかかる。事前計算ステージにおける開示されたコーム法の総コストは、したがって、{(w−1)d}D+{2w−1−1}Aである。評価ステージにおける開示されたコーム法の時間コストは、forループ後の後処理のために少し異なる。スカラkがランダムに分布していると仮定すると、評価ステージにおける平均コストは、図8の方法800の場合、
Figure 0005301989
、図9の方法900の場合、(d−1)D+(d−1)A、図10の方法1000の場合、
Figure 0005301989
、図11の方法1100および図12の方法1200の場合、dD+dAである。
図8〜図10の固定基底コーム法800、900、1000と図4の元の固定基底コーム法400との比較を行うことができる。表1は、これらの方法の空間および時間コストを一覧で示している。表1のコーム法800〜1000は、2w−1を記憶し、これは、元のコーム法400における2w−1個の記憶点の約半数である。加えて、コーム法800〜1000は、事前計算ステージにおいて、図4の元のコーム法400と比べて2w−1−w回の点加算を節約する。評価ステージは、表1の4つの方法すべてについて、類似した時間コストを有する。事前計算点のための記憶空間をほぼ同じに維持するため、方法800〜1000は、コーム法400で使用される値w=wよりも1大きい、w=w+1としてwの値が選択されるような方法で利用されることができる。これは、コーム法400と類似した記憶
Figure 0005301989
をもたらすが、評価ステージでは、方法800〜1000で使用されるより小さなdのおかげでより高速になる。
図9、図11、図12の開示されたSPA耐性コーム法900、1100、1200とSPA耐性である方法400の修正との比較を行うことができる。これらのSPA耐性方法の空間および時間コストが、表2に一覧で示されている。やはり、SPA耐性コーム法900、1100、1200は、事前計算点のために修正コーム法400の約半数の記憶を使用し、さらに事前計算ステージにおいて、2w−1−w回の点加算を節約する。方法1100および1200は、評価ステージにおいて、修正方法400と同じ時間コストを有するが、開示された方法900は、このステージにおいて、1回の点2倍算と1回の点加算を節約する。表2のデータから、nがwで整除可能でない場合、方法900が最も効率的なSPA耐性コーム法である。nがwで整除可能である場合、この場合は
Figure 0005301989
Figure 0005301989
より1大きく、より高い時間コストをもたらすので、方法1200が推奨される。
Figure 0005301989
本明細書で開示されたSPA耐性実施形態とその他のSPA耐性点乗算方法の比較は有益である。2つのSPA耐性m進スカラ乗算方法(一方はSPA耐性である拡張m進方法、他方は図6の記録方法600を使用するm進方法)に関する空間および時間コストが、表3の第2および第3列に一覧で示されている。表2および表3から、図9、図11、図12の開示されたSPA耐性コーム法900、1100、1200は、記録方法600を使用するm進方法と同数の事前計算点を記憶し、それは、その他のSPA耐性m進方法より1点少ない。
点乗算方法にSPA攻撃に対する耐性をもたせるため、kの特定の値に対する暗号実行手続きの依存性を除去する追加の演算が必要とされる。これは、SPA耐性方法の効率が、類似手法の非SPA耐性方法と比べて、一般に低下させられることを意味する。最も効率的な点乗算方法は、事前計算および評価ステージの両方を一括した総コストが検討された場合、非SPA耐性の符号付きm進窓法である。符号付きm進窓法コストの空間および時間コストは、表3の第1列に一覧で示されている。この方法は、よりわずかな保存点しか必要としないが、すべてのSPA耐性方法よりも高速に動作する。空間および時間ペナルティは、セキュリティが最優先課題である多くの応用例ではあまり重要ではない。評価ステージのみが検討された場合、開示されたコーム法は、符号付きm進窓法よりも高速である。
Figure 0005301989
Figure 0005301989
[応用例]
方法800〜1200は、多くのECC応用例で使用することができる。それらは、事前計算が前もってまたは別の誰かによって計算され得る場合に特に効率的であり、多くの応用例でそのようにされている。このセクションは、2つのそのような応用シナリオについて説明する。1つの例は、別個のより強力なコンピューティングサブシステムが、その他の動作を担当する一方で、スマートカードが、秘密を記憶し、重要な暗号演算を実行するための、タンパー耐性(tamper−resistant)のある安全な環境を提供するために使用されるシステムである。セルラ電話および無線アプリケーションプロトコル(WAP:wireless application protocol)装置は、そのようなシステムの典型的な例である。セルラ電話では、加入者識別モジュール(SIM:Subscriber Identification Module)カードが、重要な加入者情報と、無線ネットワークへの合法的アクセスを提供する責任を負う認証および暗号化方法とを、安全に記憶するためのスマートカードである。電話のCPU、メモリ、および記憶装置は、その他の動作を担当する。無線識別情報モジュール(WIM:Wireless Identity Module)は、WAP装置内で同様の役割を演じる。そのようなシステムでは、評価ステージを実行するのにスマートカードを使用する一方で、事前計算をより強力な装置のCPUに委任することが、装置のCPUによって計算される点が識別可能であってもタンパー可能でない場合は、可能であってよい。事前計算は、点自体が秘密でない限り、どのような秘密も含まないことに留意されたい。
楕円曲線デジタル署名アルゴリズム(ECDSA:Elliptic Curve Digital Signature Algorithm)が、別の例である。ECDSAは、デジタル署名規格と呼ばれる米国政府規格で指定されたデジタル署名アルゴリズム(DSA:Digital Signature Algorithm)の楕円曲線による類似物である。ECDSAは、多くの規格で受け入れられている。ECDSAは、署名生成および検証を含む。Pを公知の楕円曲線点、ρを点Pの素数位数とする。署名は、以下のようにして生成および検証される。ECDSA署名生成:メッセージmに署名するため、鍵ペア(d,Q)に関連付けられた主体Aは、以下のステップを実行する。
1.1≦k<ρであるようなランダムまたは擬似ランダムな整数kを選択する。
2.kP=(x,y)およびr=x mod ρを計算する。r=0ならば、ステップ1に戻る。
3.k−1 mod ρを計算する。
4.e=SHA−1(m)を計算し、ここで、SHA−1は、セキュアハッシュ規格で指定されたセキュアハッシュアルゴリズム(SHA:Secure Hash Algorithm)である。
5.s=k−1(e+dr)mod ρを計算する。s=0ならば、ステップ1に戻る。
6.メッセージmに関してAによって生成された署名は、(r,s)である。
ECDSA署名検証:メッセージm上のAの署名(r,s)を検証するため、主体Bは、Aの公開鍵Qを獲得し、以下のステップを実行する。
1.rおよびsが区間[1,ρ−1]内の整数であることを確認する。
2.e=SHA−1(m)を計算する。
3.w=s−1 mod ρを計算する。
4.u=ew mod ρおよびu=rw mod ρを計算する。
5.X=uP+uQ=(x,y)を計算する。X=0ならば、署名を拒否する。それ以外の場合、v=x mod ρを計算する。
6.v=rである場合に限って、署名を承認する。
ECDSA署名の場合、P、ρ、およびr、s、eは、公開された値である。スカラkは、秘密に保たれなければならない。さもないと、私有鍵dを式s=k−1(e+dr)mod ρから導くことができる。したがって、私有鍵dおよびECDSA署名生成は、安全に記憶され、実行されなければならない。これは、Pの事前計算点を記憶し、電力解析に対して耐性がある点乗算方法を使用してkPを計算する、スマートカードを用いて簡便に達成することができる。本明細書で開示されたSPA耐性コーム法は、署名を生成する際に評価ステージが実行されるだけなので、この応用例にとって理想的である。他方、ECDSA署名検証は、どのような秘密鍵も使用しない。ECDSA署名を検証する際、本明細書で開示された非SPA耐性コーム法を、uPを計算するために使用することができ、符号付きm進窓法が、uQを計算するために使用される。これは、Pの事前計算点を前もって計算することができるので、点乗算方法の効率的な組合せであり、この場合、コーム法はその他の方法よりも効率的である。対照的に、公開鍵Qが主体毎に変化するので、Qの事前計算点を前もって計算することができない。この場合、符号付きm進窓法が適している。
[例示的な方法]
図13は、楕円曲線暗号システムの楕円曲線点乗算における使用のために適合され得る、記録システムの動作を示す一実施例1300を示している。実施1300は、スマートカード、セルラ電話、ワークステーション、またはメインフレームコンピューティング環境など、多くの異なるコンピューティング環境における使用のために構成される。ブロック1302において、奇整数kが、2進表現に変換される。2進表現は、例えば、2のベキの係数とすることができる。ブロック1302の変換は、ブロック1304〜1308で説明される例示的な変換など、多くの方法で実行されることができる。ブロック1304において、奇整数kの2進表現の最低位dビットの各ビットが変換される。変換は、各ビットカラム内の最低位ビットが1または
Figure 0005301989
になるような方法で実行される。この変換は、図7のブロック704〜708で開示された方式で実行されることもできることに留意されたい。ブロック1306において、dより大きい有効桁にある2進表現のビットが、第i位置にある結果ビットが0または符号付き1になるように変換され、符号付き1は、第(i mod d)位置にあるビットに従って符号が定められる。ブロック1306の変換は、図7のブロック712〜718またはブロック1308に示されるような様々な異なる方式で実行することができる。ブロック1308において、現在ビットの符号が、同じコームビットカラム内の最低位ビットの符号と比較される。符号が異なり、かつ現在ビットが1である場合、現在ビットは
Figure 0005301989
に設定され、kの値を維持するために、隣接するより高位のビットの値が1だけインクリメントされる。ブロック1310において、2進表現が、どのビットカラムも符号付き奇整数であるコームビットカラムとして構成される。より具体的には、実施1300は、各コームビットカラム
Figure 0005301989
について、
Figure 0005301989
および
Figure 0005301989
、j≠0を生成することができ、ここで、
Figure 0005301989
は−1と定義される。
図14は、楕円曲線点乗算システムの動作1400の一例を示している。ブロック1402において、点Pおよび整数kが受け取られ、ここで、kは偶整数または奇整数である。ブロック1404において、少なくとも部分的にkの値に基づいて、k’が設定され、ここで、k’は奇整数である。例えば、図8のブロック806において、kの偶数または奇数の状態に基づいて、k’が設定される。ブロック1406において、奇整数k’が、どのビットカラムも符号付き奇整数である、ビットカラムを含む2進表現に変換される。例えば、これは、図7の方法700に従って実行することができる。したがって、動作1406は、各コームビットカラム
Figure 0005301989
について、
Figure 0005301989
および
Figure 0005301989
、j≠0を生成することができ、ここで、
Figure 0005301989
は−1と定義することができる。ブロック1408において、コームビットカラムおよび点Pが、値Qを計算するために処理され、ここで、Qは、kの異なる値に対して異なるように設定することができる。例えば、ブロック818、916、1018、1022〜1024、1120、1222〜1224はすべて、部分的にkに基づいてQを設定する。ブロック1410において、Qが出力され、ここで、QはkPを表す。
本明細書で説明される方法はどれも、スマートカード、コンピュータシステム、または任意のデジタル処理装置および/もしくはコンポーネント上で実行することができる。例えば、方法は、プロセッサおよび/またはコンピュータ可読媒体上に定義された命令の実行によって実行されることができる。本明細書で使用される「プロセッサ可読媒体」とは、スマートカード上、コンピュータ上、または任意のコンピューティングもしくは計算装置および/もしくはコンポーネント上のいずれにおいてであれ、プロセッサによって使用または実行される命令を格納または保存することができる任意の手段とすることができる。プロセッサ可読媒体は、限定することなく、電子、磁気、光、電磁気、赤外線、または半導体システム、機器、装置、またはコンポーネントとすることができる。プロセッサ可読媒体のより具体的な例は、とりわけ、スマートカード上のメモリコンポーネント、ポータブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラム可能読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光および/または磁気メモリ、再書き込み可能コンパクトディスク(CDRW)、ならびにポータブルコンパクトディスク読み取り専用メモリ(CDROM)を含む。
1つまたは複数の方法が、フローチャートおよびフローチャートのブロックに関連する文によって開示されたが、ブロックはそれらが提示された順序で必ずしも実行される必要がなく、代替順序でも類似の利点をもたらすことができることを理解されたい。さらに、方法は排他的ではなく、単独または互いに組み合わされて実行されることができる。
[例示的なコンピューティング環境]
図15は、楕円曲線暗号システムを実施するのに適した例示的なコンピューティング環境を示している。1つの具体的な構成が示されているが、特定の応用例の必要を満たすために、任意のコンピューティング環境を代用することができる。コンピューティング環境1500は、コンピュータ1502の形態をとる汎用コンピューティングシステムを含む。コンピュータ1502の構成要素は、1つまたは複数のプロセッサまたは処理ユニット1504と、システムメモリ1506と、プロセッサ1504を含む様々なシステム構成要素をシステムメモリ1506に結合するシステムバス1508とを含むが、これらに限定されない。システムバス1508は、メモリバスもしくはメモリコントローラ、周辺バス、周辺機器相互接続(PCI)バス、アクセラレーテッドグラフィックスポート、および様々なバスアーキテクチャのいずれかを使用するプロセッサもしくはローカルバスを含む、複数のタイプのバス構造のうちの1つまたは複数を表す。
コンピュータ1502は、典型的には、様々なコンピュータ可読媒体を含む。そのような媒体は、コンピュータ1502によってアクセス可能な任意の利用可能な媒体とすることができ、揮発性および不揮発性、着脱可能および固定式の媒体を含む。システムメモリ1506は、ランダムアクセスメモリ(RAM)1510などの揮発性メモリおよび/または読み取り専用メモリ(ROM)1512などの不揮発性メモリの形態をとるコンピュータ可読媒体を含む。基本入出力システム(BIOS)1514は、起動中などにコンピュータ1502内の要素間での情報伝送を助ける基本ルーチンを含み、ROM1512内に保存される。RAM1510は、典型的には、処理ユニット1504から即座にアクセス可能な、および/または処理ユニット1504が現在それに基づいて動作している、データおよび/またはプログラムモジュールを含む。
コンピュータ1502は、その他の着脱可能/固定式、揮発性/不揮発性コンピュータ記憶媒体も含むことができる。例を挙げると、図15は、固定式の不揮発性磁気媒体(図示されず)から読み取り、それに書き込むためのハードディスクドライブ1516と、着脱可能な不揮発性磁気ディスク1520(例えば「フロッピー(登録商標)ディスク」)から読み取り、それに書き込むための磁気ディスクドライブ1518と、CD−ROM、DVD−ROM、またはその他の光媒体などの着脱可能な不揮発性光ディスク1524から読み取り、それに書き込むための光ディスクドライブ1522を示している。ハードディスクドライブ1516、磁気ディスクドライブ1518、および光ディスクドライブ1522は各々、1つまたは複数のデータ媒体インターフェース1525によって、システムバス1508に接続される。代替として、ハードディスクドライブ1516、磁気ディスクドライブ1518、および光ディスクドライブ1522は、SCSIインターフェース(図示されず)によって、システムバス1508に接続することもできる。
ディスクドライブおよび関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶を、コンピュータ1502に提供する。例はハードディスク1516、着脱可能な磁気ディスク1518、および着脱可能な光ディスク1524を示しているが、磁気カセット、またはその他の磁気記憶装置、フラッシュメモリカード、CD−ROM、デジタル多用途ディスク(DVD)、またはその他の光記憶、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、および電気的消去可能なプログラム可能読み取り専用メモリ(EEPROM)など、コンピュータによってアクセス可能なデータを記憶することができるその他のタイプのコンピュータ可読媒体も、例示的なコンピューティングシステムおよび環境を実施するために利用され得ることを理解されたい。
例を挙げると、オペレーティングシステム1526、1つまたは複数のアプリケーションプログラム1528、その他のプログラムモジュール1530、およびプログラムデータ1532を含む任意の数のプログラムモジュールが、ハードディスク1516、磁気ディスク1520、光ディスク1524、ROM1512、および/またはRAM1510上に保存されることができる。そのようなオペレーティングシステム1526、1つまたは複数のアプリケーションプログラム1528、その他のプログラムモジュール1530、およびプログラムデータ1532の各々(またはそれらの何らかの組合せ)は、ユーザネットワークアクセス情報のためのキャッシュ方式の一実施形態を含むこともできる。
コンピュータ1502は、通信媒体として識別される様々なコンピュータ/プロセッサ可読媒体を含むことができる。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波またはその他のトランスポート機構などの変調データ信号中に具現し、任意の情報伝達媒体を含む。「変調データ信号」という用語は、信号中に情報を符号化するような方式で設定または変更された1つまたは複数の特徴を有する信号を意味する。限定することなく例を挙げると、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響、RF、赤外線、およびその他の無線媒体などの無線媒体を含む。上記の任意のものの組合せも、コンピュータ可読媒体の範囲内に含まれる。
ユーザは、キーボード1534およびポインティングデバイス1536(例えば「マウス」)などの入力装置を介して、コンピュータシステム1502にコマンドおよび情報を入力することができる。その他の入力および/または周辺装置1538(具体的に図示されず)は、スマートカードおよび/もしくはスマートカードリーダ、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、シリアルポート、ならびに/またはスキャナを含むことができる。上記およびその他の入力装置は、システムバス1508に結合される入力/出力装置インターフェース1540を介して処理ユニット1504に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などのその他のインターフェースおよびバス構造によって接続されることもできる。
モニタ1542またはその他のタイプの表示装置も、ビデオアダプタ1544などのインターフェースを介して、システムバス1508に接続される。モニタ1542に加えて、その他の出力周辺装置は、入力/出力装置インターフェース1540を介してコンピュータ1502に接続されることができる、スピーカ(図示されず)およびプリンタ1546など構成要素を含むことができる。
コンピュータ1502は、リモートコンピューティング装置1548などの1つまたは複数のリモートコンピュータへの論理コネクションを使用して、ネットワーク環境で動作することができる。例を挙げると、リモートコンピューティング装置1548は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、およびピア装置またはその他の共通ネットワークノードなどとすることができる。リモートコンピューティング装置1548は、コンピュータシステム1502に関して説明された要素および特徴の多くまたはすべてを含むことができるポータブルコンピュータとして示されている。
コンピュータ1502とリモートコンピュータ1548の間の論理コネクションは、ローカルエリアネットワーク(LAN)1550および汎用ワイドエリアネットワーク(WAN)1552として示されている。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。LANネットワーク環境で実施される場合、コンピュータ1502は、ネットワークインターフェースまたはアダプタ1554を介して、ローカルネットワーク1550に接続される。WANネットワーク環境で実施される場合、コンピュータ1502は、典型的には、モデム1556またはWAN1552を介する通信を確立するためのその他の手段を含む。モデム1556は、コンピュータ1502に対して内蔵または外付けとすることができ、入力/出力装置インターフェース1540またはその他の適切な機構を介してシステムバス1508に接続される。示されたネットワーク接続は、例示的なものであり、コンピュータ1502および1548間の通信リンクを確立するその他の手段も利用されることができることを理解されたい。
コンピューティング環境1500を用いて説明されたようなネットワーク環境では、コンピュータ1502またはその部分に関して説明されたプログラムモジュールは、リモートメモリ記憶装置に保存されることができる。例を挙げると、リモートアプリケーションプログラム1558は、リモートコンピュータ1548のメモリ装置上に存在する。説明の目的で、アプリケーションプログラム、およびオペレーティングシステムなどのその他の実行可能プログラムコンポーネントは、本明細書では別個のブロックとして示されているが、そのようなプログラムおよびコンポーネントは、様々な時にコンピュータシステム1502の異なる記憶コンポーネント内に存在し、コンピュータのデータプロセッサによって実行されることは理解されよう。
内部スマートカード1562を有するセルラ電話1560は、コーム法800〜1400が利用され得るさらなる環境を提供する。セルラ電話は、コンピュータ1502と通信するように構成され、コンピュータ1502は、セルラ電話通信事業者またはサービスに関連付けられることができる。そのような環境では、ECC方法は、例えば、この場合はコンピュータ1502を運用するセルラサービスプロバイダの合法的顧客としての、セル電話1560の真正性を確立するために使用することができる。
[結び]
図7の新規な符号付き奇数限定コーム記録方法700は、奇整数のコームの系列のコームビットカラムを、符号付き奇数限定非ゼロ表現に変換する。この記録方法を使用して、図8〜図12の複数の新規な非SPA耐性およびSPA耐性のコーム法800〜1200が、楕円曲線暗号システムのための点乗算を計算するように構成される。開示されたコーム法は、既知の非SPA耐性およびSPA耐性のコーム法と比べて、より少量の点しか記憶せず、より高速に動作する。加えて、開示された符号付き奇数限定コーム法は、コーム法の利点を継承し、事前計算点が前もってまたはどこかで計算される場合、窓法および非SPA耐性符号付きm進窓法よりもはるかに高速に動作する。したがって、図8〜図12の符号付き奇数限定コーム法800〜1200は、電力およびコンピューティング資源が貴重であるスマートカードおよび埋め込みシステムでの使用によく適している。楕円曲線およびパラメータを選択する際に、ランダム化技法および所定の事前対策と組み合わされた場合、SPA耐性のコーム法は、すべてのサイドチャネル攻撃を妨げることができる。
最後に、本開示の態様は、好ましい実施形態の構造的および/または方法的特徴を具体的に説明する言葉を含むが、添付の特許請求の範囲が、説明された具体的な特徴および動作に限定されないことを理解されたい。むしろ、具体的な特徴および動作は、例示的な実施としてのみ開示され、より一般的な概念の代表である。さらに、多くの特徴は、これらの特徴が対処し得る例示的な問題を最初に識別することによって、本明細書では説明された。こうした説明の方法は、他人が本明細書で指定された方法で問題を認識および/または表現していたことの承認を構成しない。当技術分野に存在する問題の認識および表現は、本発明の一部として理解されるべきである。より具体的には、本開示の「背景技術」セクションで説明された特徴が従来技術を構成することの承認は本明細書には存在しない。さらに、本開示の「課題を解決するための手段」セクションおよび要約書で説明された主題は、特許請求の範囲で説明される主題を限定しない。
例示的な既存の楕円曲線点乗算方法を示す図である。 例示的な既存の楕円曲線点乗算方法を示す図である。 例示的な既存の楕円曲線点乗算方法を示す図である。 例示的な既存の楕円曲線点乗算方法を示す図である。 単純電力解析に対して耐性のある例示的な既存の楕円曲線点乗算方法または対応する記録方法示す図である。 単純電力解析に対して耐性のある例示的な既存の楕円曲線点乗算方法または対応する記録方法示す図である。 奇数スカラのための符号付き奇数限定コーム記録方法の一例を示す図である。 奇数または偶数スカラのための符号付き奇数限定コーム楕円曲線点乗算方法の一例を示す図である。 奇数位数の点のための符号付き奇数限定コーム楕円曲線点乗算方法の一例を示す図である。 wで整除可能なnのための符号付き奇数限定コーム楕円曲線点乗算方法の一例を示す図である。 SPA耐性をもつ符号付き奇数限定コーム楕円曲線点乗算方法の一例を示す図である。 wで整除可能な
Figure 0005301989
のためのSPA耐性をもつ符号付き奇数限定コーム楕円曲線点乗算方法の一例を示す図である。
汎用的利用を有する、またはコーム楕円曲線点乗算用もしくは暗号システム内で利用され得る記録の一実施形態例を示す図である。 コーム楕円曲線点乗算システムの動作の一実施形態例を示す図である。 コーム楕円曲線点乗算方法を実施するのに適した例示的なコンピューティング環境を示す図である。

Claims (15)

  1. 少なくともプロセッサを備え、入力装置および出力装置と接続されたコンピュータによって実行される方法であって、
    前記入力装置を介して受け取った奇整数kを、前記プロセッサによって2進表現に変換するステップと、
    前記プロセッサによってコームビットカラムの各々が符号付き奇整数のコームビットカラムとして前記2進表現を構成するステップであって、該構成されたコームビットカラムは前記出力装置を介して出力される、ステップと
    を含み、前記構成するステップは、各コームビットカラム
    Figure 0005301989
    について、
    Figure 0005301989
    および
    Figure 0005301989
    、j≠0に従って、前記2進表現を構成することを含み、wは、w≧2となる整数であることを特徴とする方法。
  2. 前記変換するステップは、
    各ビットカラム内の最低位ビットが1または−1になるように、前記奇整数kの前記2進表現の最低位dビットの各ビットを変換することと、
    第i位置にある結果ビットが0または符号付き1になるように、dより大きい有効桁にある前記2進表現のビットを変換することであって、前記符号付き1は、第(i mod d)位置にあるビットに従って符号が定められることと
    を含むことを特徴とする請求項1に記載の方法。
  3. 前記最低位dビットの各ビットを変換することは、
    インデックスiが最低位ビットからより高位のビットに移動するループを構成することであって、該ループ内において、前記最低位dビットを、
    i=1ならば、
    Figure 0005301989
    と設定し、
    i=0ならば、
    Figure 0005301989
    および
    Figure 0005301989
    と設定することを含むことを特徴とする請求項2に記載の方法。
  4. dより大きい有効桁にある前記2進表現のビットを変換することは、
    現在ビットの符号を同じコームビットカラム内の最低位ビットの符号と比較することを含み、
    前記符号が異なり、かつ前記現在ビットが1である場合、前記現在ビットを
    Figure 0005301989
    に設定し、kの値を維持するために、隣接するより高位のビットの値を1だけインクリメントすること
    を特徴とする請求項2に記載の方法。
  5. dより大きい有効桁にある前記2進表現のビットを変換することは、
    eの初期値を設定することと、
    ループを構成することであって、該ループ内において、
    eが奇数であり、かつ
    Figure 0005301989
    である場合、
    Figure 0005301989
    および
    Figure 0005301989
    と設定し、
    それ以外の場合、
    Figure 0005301989
    および
    Figure 0005301989
    と設定すること
    を含むことを特徴とする請求項2に記載の方法。
  6. 前記入力装置を介して点Pおよび整数kをさらに受け取ることと、
    前記変換するステップおよび前記構成するステップの前に、前記プロセッサによって少なくとも部分的にkの値に基づいて奇整数k’を設定することと、
    前記奇整数k’を2進表現に変換し、前記構成するステップに従って、前記プロセッサによって前記奇整数k’の前記2進表現のコームビットカラムを計算することと、
    前記プロセッサによって前記コームビットカラムおよび前記点Pを処理して値Qを計算することと、
    前記出力装置を介して、計算した値Qを出力することと
    をさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記奇整数k’を設定することは、前記整数kが偶数である場合、k’=k+1と設定し、それ以外の場合、k’=kと設定することを含み、
    前記コームビットカラムおよび前記点Pを処理して値Qを計算することは、
    Qを無限遠点に設定することと、
    ループを構成することであって、該ループ内において、最初にQを2倍にし、次に前記P倍したコームビットカラムの量に前記2倍したQを加算した値を、前記値Qとすることと、
    前記整数kが偶数である場合、前記値QからPを減算することと
    をさらに有することを特徴とする請求項6に記載の方法。
  8. 前記奇整数k’を設定することは、k mod 4の値に基づいて、k’を設定することを含み、
    前記コームビットカラムおよび前記点Pを処理して値Qを計算することは、k mod 4の値に従って、前記値Qを計算することを含むことを特徴とする請求項6に記載の方法。
  9. 前記奇整数k’を設定することは、前記整数kが偶数である場合、k’=k+1と設定し、それ以外の場合、k’=k+2と設定することを含み、
    前記コームビットカラムおよび前記点Pを処理して値Qを計算することは、前記整数kが偶数であるか、奇数であるかに応じて、前記値Qを異なるように計算することを含むことを特徴とする請求項6に記載の方法。
  10. 前記点Pは、奇数位数ρの点Pであり、
    前記奇整数k’を設定することは、ρおよびkの関数としてk’を設定することを含む
    ことを特徴とする請求項6に記載の方法。
  11. 前記奇整数k’を設定することは、前記整数kが奇数である場合、k’=kと設定し、それ以外の場合、k’=ρ−kと設定することによって、前記奇整数k’を設定することを含み、
    前記コームビットカラムおよび前記点Pを処理して値Qを計算することは、
    Qを無限遠点に設定することと、
    ループを構成することであって、該ループ内において、最初にQを2倍にし、次に、前記整数kが奇数であるか、偶数であるかに応じて、前記P倍したコームビットカラムの量を、Qに加算、またはQから減算することと
    をさらに含むことを特徴とする請求項10に記載の方法。
  12. 前記奇整数k’を設定することは、
    Figure 0005301989
    である場合、k*=ρ−kと設定し、それ以外の場合、k*=kと設定することに従って、k*を設定することと、
    *が偶数である場合、k’=k*+1と設定し、それ以外の場合、k’=k*+2と設定することによって、前記奇整数k’を設定することと
    を含み、
    前記コームビットカラムおよび前記点Pを処理して値Qを計算することは、
    Qを無限遠点に設定することと、
    ループを構成することであって、該ループ内において、最初にQを2倍にし、次に前記整数kが
    Figure 0005301989
    より大きいかどうかに応じて、前記P倍されたコームビットカラムの量を、Qから減算、またはQに加算することと、
    2=2Pを計算することと、
    前記整数kが
    Figure 0005301989
    より大きい場合、Δ=1と設定し、それ以外の場合、Δ=−1と設定することによって、Δを設定することと、
    *が偶数である場合、ΔPをQに加算した値をQに加算し、それ以外の場合、ΔP2をQに加算した値をQに加算することと
    をさらに含むことを特徴とする請求項10に記載の方法。
  13. 奇整数kを受け取る手段と、
    前記奇整数kを2進表現に変換する手段と、
    前記2進表現を符号付き奇整数のコームビットカラムとして構成する手段と、
    前記コームビットカラムを出力する手段と
    を備えたコンピュータシステムであって、前記構成する手段は、各コームビットカラム
    Figure 0005301989
    について、
    Figure 0005301989
    および
    Figure 0005301989
    、j≠0に従って、前記2進表現を構成することを含み、wは、w≧2となる整数であることを特徴とするコンピュータシステム。
  14. 前記変換する手段は、
    前記2進表現の最低位dビットの各ビットを変換する手段であって、インデックスiが最低位ビットからより高位のビットに移動するループを構成し、該ループ内において、前記最低位dビットを、
    i=1ならば、
    Figure 0005301989
    と設定し、
    i=0ならば、
    Figure 0005301989
    および
    Figure 0005301989
    と設定することによって、前記最低位dビットの各ビットを変換する手段と、
    前記2進表現のdより大きい有効桁にあるビットを変換する手段であって、
    eの初期値を設定することと、
    ループを構成し、ループ内において、
    eが奇数であり、かつ
    Figure 0005301989
    である場合、
    Figure 0005301989
    および
    Figure 0005301989
    と設定し、
    それ以外の場合、
    Figure 0005301989
    および
    Figure 0005301989
    と設定することとを有する手段と
    を有することを特徴とする請求項13に記載のコンピュータシステム。
  15. 少なくともプロセッサを備え、入力装置および出力装置に接続されたコンピュータに、
    前記入力装置を介して受け取った奇整数kを、前記プロセッサによって2進表現に変換するステップと、
    前記プロセッサによってコームビットカラムの各々が符号付き奇整数コームビットカラムとして前記2進表現を構成するステップであって、該構成されるコームビットカラムは前記出力装置を介して出力される、ステップ
    を実行させるプログラムであって、前記構成するステップは、各コームビットカラム
    Figure 0005301989
    について、
    Figure 0005301989
    および
    Figure 0005301989
    、j≠0に従って、前記2進表現を構成することを含み、wは、w≧2となる整数であることを特徴とするプログラム。
JP2008520297A 2005-07-01 2006-06-29 楕円曲線点乗算 Active JP5301989B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/173,251 2005-07-01
US11/173,251 US7602907B2 (en) 2005-07-01 2005-07-01 Elliptic curve point multiplication
PCT/US2006/025498 WO2007005563A2 (en) 2005-07-01 2006-06-29 Elliptic curve point multiplication

Publications (2)

Publication Number Publication Date
JP2009500676A JP2009500676A (ja) 2009-01-08
JP5301989B2 true JP5301989B2 (ja) 2013-09-25

Family

ID=37605020

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008520297A Active JP5301989B2 (ja) 2005-07-01 2006-06-29 楕円曲線点乗算

Country Status (7)

Country Link
US (1) US7602907B2 (ja)
EP (1) EP1889391B1 (ja)
JP (1) JP5301989B2 (ja)
KR (1) KR101255393B1 (ja)
CN (1) CN101507176B (ja)
CA (1) CA2614120C (ja)
WO (1) WO2007005563A2 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7505585B2 (en) * 2002-06-25 2009-03-17 The United States Of America As Represented By The Director, The National Security Agency Method of generating cryptographic key using elliptic curve and expansion in joint sparse form and using same
ATE466329T1 (de) * 2005-10-28 2010-05-15 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen elliptischer kurven über binäre polynomische körper für nebenkanalattacken-beständige kryptosysteme
JP4682852B2 (ja) * 2006-01-16 2011-05-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR100850202B1 (ko) * 2006-03-04 2008-08-04 삼성전자주식회사 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
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
US8559625B2 (en) * 2007-08-07 2013-10-15 Inside Secure Elliptic curve point transformations
JP4861272B2 (ja) * 2007-08-31 2012-01-25 日本電信電話株式会社 楕円曲線暗号演算装置、方法、プログラム
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
US8233615B2 (en) * 2008-01-15 2012-07-31 Inside Secure Modular reduction using a special form of the modulus
US8619977B2 (en) * 2008-01-15 2013-12-31 Inside Secure Representation change of a point on an elliptic curve
JP2010068293A (ja) * 2008-09-11 2010-03-25 Toshiba Corp 秘密情報を用いて演算する装置、方法およびプログラム
EP2169535A1 (en) * 2008-09-22 2010-03-31 Thomson Licensing Method, apparatus and computer program support for regular recoding of a positive integer
JP5225115B2 (ja) * 2009-01-15 2013-07-03 株式会社東芝 Naf変換装置
US8542820B2 (en) * 2009-02-05 2013-09-24 Infineon Technologies Ag Apparatus for calculating a result of a scalar multiplication
EP2555180A4 (en) 2010-03-31 2017-07-05 Fujitsu Limited Encryption processing device and encryption processing method
JP5488718B2 (ja) 2010-12-27 2014-05-14 富士通株式会社 暗号処理装置、暗号処理方法、およびプログラム
WO2012090284A1 (ja) * 2010-12-27 2012-07-05 三菱電機株式会社 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法、剰余演算プログラム、演算装置のゼロ判定方法およびゼロ判定プログラム
CN102790673B (zh) * 2011-05-17 2017-05-10 上海华虹集成电路有限责任公司 一种适用于ecc算法的抗错误攻击的方法
CN102306091B (zh) * 2011-07-08 2014-04-16 西安电子科技大学 椭圆曲线点乘硬件快速实现方法
CN102902897B (zh) * 2011-07-25 2016-08-24 上海华虹集成电路有限责任公司 适用于ecc点乘算法的抗无穷远点攻击的方法
EP2813029B1 (en) * 2012-02-09 2020-12-02 Irdeto B.V. System and method for generating and protecting cryptographic keys
FR3010210B1 (fr) * 2013-08-29 2017-01-13 Stmicroelectronics Rousset Protection d'un calcul contre des attaques par canaux caches
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
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
JP6293681B2 (ja) * 2015-01-19 2018-03-14 日本電信電話株式会社 マルチスカラー倍算演算装置、マルチスカラー倍算演算方法、プログラム
US9531531B2 (en) 2015-05-06 2016-12-27 Qualcomm Incorporated Methods and devices for fixed execution flow multiplier recoding and scalar multiplication
CN106301770A (zh) * 2016-08-22 2017-01-04 大唐微电子技术有限公司 一种Java卡SM2数字签名验证或信息加密的方法及装置
CN108242994B (zh) 2016-12-26 2021-08-13 阿里巴巴集团控股有限公司 密钥的处理方法和装置
KR101914028B1 (ko) * 2017-04-28 2018-11-01 삼성에스디에스 주식회사 부채널 공격에 안전한 연산 장치 및 방법
GB201707168D0 (en) * 2017-05-05 2017-06-21 Nchain Holdings Ltd Computer-implemented system and method
CN112119609A (zh) * 2018-05-14 2020-12-22 区块链控股有限公司 用于传达秘密的方法和系统
CN109831290B (zh) * 2019-01-24 2021-06-11 上海交通大学 针对基于cave算法认证协议的侧信道分析方法
CN112068799B (zh) * 2019-06-11 2022-08-02 云南大学 一种最优带符号二进制快速计算方法以及椭圆曲线标量乘法
CN116155510A (zh) * 2023-02-23 2023-05-23 苏州国芯科技股份有限公司 Ecc算法的签名方法、装置、设备、电路及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6252959B1 (en) * 1997-05-21 2001-06-26 Worcester Polytechnic Institute Method and system for point multiplication in elliptic curve cryptosystem
CN1280726A (zh) * 1997-12-05 2001-01-17 保密信息技术公司 优化椭圆曲线密码计算的变换方法
DE69906897T2 (de) 1998-09-03 2004-01-29 Nippon Telegraph & Telephone Gerät und Verfahren zur Elliptische-Kurven Multiplikation und Aufnahmemedium mitdarauf aufgenommen ein Program zur Ausführung des Verfahrens
JP3145368B2 (ja) * 1998-09-03 2001-03-12 日本電信電話株式会社 楕円曲線演算装置、演算方法及びその方法を実施するプログラムを記録した記録媒体
US6298135B1 (en) * 1999-04-29 2001-10-02 Motorola, Inc. Method of preventing power analysis attacks on microelectronic assemblies
JP2003091236A (ja) * 2001-09-19 2003-03-28 Nagoya Industrial Science Research Inst 楕円曲線スカラー倍点演算装置、楕円曲線スカラー倍点演算方法、楕円曲線スカラー倍点演算プログラム及び記録媒体
CN100452695C (zh) * 2002-11-29 2009-01-14 北京华大信安科技有限公司 椭圆曲线加密解密方法和装置
CN100440776C (zh) * 2002-11-29 2008-12-03 北京华大信安科技有限公司 椭圆曲线签名和验证签名方法和装置
JP4423900B2 (ja) * 2003-08-05 2010-03-03 株式会社日立製作所 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム

Also Published As

Publication number Publication date
CN101507176A (zh) 2009-08-12
WO2007005563A2 (en) 2007-01-11
WO2007005563A3 (en) 2009-04-23
CA2614120C (en) 2015-02-24
KR101255393B1 (ko) 2013-04-17
US20070064931A1 (en) 2007-03-22
CA2614120A1 (en) 2007-01-11
KR20080019642A (ko) 2008-03-04
EP1889391A2 (en) 2008-02-20
EP1889391A4 (en) 2016-11-30
EP1889391B1 (en) 2020-08-26
CN101507176B (zh) 2012-07-04
JP2009500676A (ja) 2009-01-08
US7602907B2 (en) 2009-10-13

Similar Documents

Publication Publication Date Title
JP5301989B2 (ja) 楕円曲線点乗算
EP1050133B2 (en) Leak-resistant cryptographic method and apparatus
US7742596B2 (en) Reliable elliptic curve cryptography computation
US20090245507A1 (en) Data processing system and data processing method
JP2008252299A (ja) 暗号処理システム及び暗号処理方法
US6496929B2 (en) Generating RSA moduli including a predetermined portion
US11824986B2 (en) Device and method for protecting execution of a cryptographic operation
JP2011530093A (ja) 累乗法による暗号化を保護する解決策
WO2017190223A1 (en) Method and system for cheon resistant static diffie-hellman security
US9590805B1 (en) Ladder-based cryptographic techniques using pre-computed points
Feng et al. Efficient comb elliptic curve multiplication methods resistant to power analysis
KR102490702B1 (ko) 유한 필드 디피 헬만에서 보안 소수를 선택하기 위한 방법 및 시스템
KR102019369B1 (ko) 단일파형공격을 차단하기 위한 타원곡선 암호화 장치 및 방법
Knezevic et al. Modular reduction without precomputational phase
US10903975B2 (en) Apparatus and method for performing operation being secure against side channel attack
Stearn INTEGER FACTORISATION ALGORITHMS AND THE RSA PROBLEM
Park et al. Fast scalar multiplication method using change-of-basis matrix to prevent power analysis attacks on Koblitz curves
KR100368204B1 (ko) 정규 기저를 이용한 역원 계산 알고리즘
Liu et al. A novel elliptic curve scalar multiplication algorithm against power analysis
CN118101217A (zh) 一种椭圆曲线验签方法、装置和存储介质
Knezevic et al. Speeding up Barrett and Montgomery modular multiplications
KR20240040437A (ko) 암호 연산 방법, 및 상기 방법을 수행하는 전자 장치
CN117675209A (zh) 一种可抵御计时攻击的椭圆曲线通用点加方法和装置
Kumar et al. On Security and Performance in ECC Noncommutative Cryptography and Signcryption

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120517

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121203

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20121204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121204

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130422

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130620

R150 Certificate of patent or registration of utility model

Ref document number: 5301989

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

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