JPWO2004070681A1 - 楕円曲線スカラー倍計算方法および装置 - Google Patents
楕円曲線スカラー倍計算方法および装置 Download PDFInfo
- Publication number
- JPWO2004070681A1 JPWO2004070681A1 JP2004567900A JP2004567900A JPWO2004070681A1 JP WO2004070681 A1 JPWO2004070681 A1 JP WO2004070681A1 JP 2004567900 A JP2004567900 A JP 2004567900A JP 2004567900 A JP2004567900 A JP 2004567900A JP WO2004070681 A1 JPWO2004070681 A1 JP WO2004070681A1
- Authority
- JP
- Japan
- Prior art keywords
- scalar
- elliptic curve
- scalar multiplication
- calculation
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Storage Device Security (AREA)
Abstract
Description
楕円曲線暗号における秘密鍵は、スカラー値が担っている。また、楕円曲線暗号の安全性は楕円曲線上の離散対数問題の求解が困難であることに由来している。楕円曲線上の離散対数問題とは、楕円曲線上のある点Pとそのスカラー倍の点dPが与えられた時、スカラー値dを求める問題である。
楕円曲線上の点とは、楕円曲線の定義方程式をみたす数の組をいい、楕円曲線上の点全体には、無限遠点という仮想的な点を単位元とした演算、すなわち楕円曲線上の加法(乃至は加算)が定義される。そして、同じ点同士による楕円曲線上の加法のことを、特に楕円曲線上の2倍算という。
楕円曲線上の2点の加法は次のようにして計算される。2点を通る直線を引くとその直線は楕円曲線と他の点において交わる。その交わった点とx軸に関して対称な点を、加法を行った結果の点とする。例えば、ワイエルシュトラス型楕円曲線の場合には、点(x1,y1)と点(x2,y2)の加算
(x3,y3)=(x1,y1)+(x2,y2)は
を計算することにより得られる。ここで、ワイエルシュトラス型楕円曲線の定義式は
で与えられる。すなわち、式3のx,yに各々xi,yi(i=1,2,3)を代入した場合に、式3の等式が成り立つ。
楕円曲線上の点の2倍算は次のようにして計算される。楕円曲線上の点における接線をひくと、その接線は楕円曲線上の他の点において交わる。その交わった点とx座標に関して対称な点を、2倍算を行った結果の点とする。例えば、ワイエルシュトラス型楕円曲線の場合には、点(x1,y1)の2倍算
(x3,y3)=2(x1,y1)=(x1,y1)+(x1,y1)は
を計算することにより得られる。
ある点に対し、特定の回数だけ加法を行うことをスカラー倍といい、その結果をスカラー倍点、その回数のことをスカラー値という。
楕円曲線上の離散対数問題の求解の困難性が理論的に確立されてきている一方で、実際の実装においては秘密鍵等の秘密情報に関連する情報(計算時間や電力消費量など)が暗号処理において漏洩する場合があり、その漏洩情報をもとに秘密情報を復元するといった、サイドチャネル攻撃という攻撃法が提案されている。
楕円曲線暗号に対するサイドチャネル攻撃が、J.Coron,Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems,Cryptographic Hardware and Embedded Systems: Proceedings of CHES’99,LNCS 1717,Springer−Verlag,(1999)pp.292−302.(文献1)に記載されている。
楕円曲線暗号においては、与えられたメッセージの暗号化、復号化、署名の作成またはその検証は、楕円曲線演算を用いて行う必要がある。特に楕円曲線上のスカラー倍の計算は、秘密情報であるスカラー値を用いた暗号処理において用いられる。
楕円曲線暗号に対するサイドチャネル攻撃の防御法が、B.Moeller,Securing Elliptic Curve Point Multiplication against Side−Channel Attacks,Information Security(ISC2001),LNCS 2200,Springer−Verlag,(2001),pp.324−334.(文献2)に記載されている。
上記技術は、サイドチャネル攻撃を防ぐ方法としては有効であるが、メモリ使用量の削減という点は考慮されていない。
本発明は、サイドチャネル攻撃を防ぐことができる、かつメモリ使用量の少ない、楕円曲線演算方法を提供する。
本発明は更に、上記楕円曲線演算方法を用いた、暗号化処理方法、復号化処理方法、署名作成方法、署名検証方法、データ共有方法を提供する。
本発明は、楕円曲線演算において、スカラー値と楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、上記スカラー値を数値列にエンコードするステップと、上記楕円曲線上の点から前計算テーブルを作成するステップと、上記エンコードした数値列及び上記前計算テーブルからスカラー倍点を計算するステップとを有する。
本発明は、また、上記エンコードするステップの出力する数値列を0と奇数からなるように構成してもよい。
本発明は、また、上記スカラー倍点を計算するステップは、第1の演算を予め定められた回数を実行するステップと、第1の演算とは異なる第2の演算を実行するステップとを含むように構成してもよい。
本発明は、また、楕円曲線演算において、スカラー値と楕円曲線上の点の奇数倍点を格納した前計算テーブルからスカラー倍点を計算するスカラー倍計算方法であって、上記スカラー値を数値列にエンコードするステップと、上記エンコードした数値列と上記前計算テーブルからスカラー倍点を計算するステップとを有し、上記エンコードするステップの出力する数値列は0と奇数からなるように構成してもよい。
以上のように本発明のスカラー倍計算方法によれば、奇数倍の点のみを前計算テーブルに格納し、スカラー値を奇数倍の点のみを用いるようにエンコードすることにより、サイドチャネル攻撃を防ぐことができ、メモリ使用量が少ないスカラー倍計算方法が利用可能になる。
図2は、各実施形態における情報の受け渡しを示すシーケンス図である。
図3は、実施形態におけるスカラー倍計算部の構成図である。
図4は、エンコード部の行うエンコード方法を示すフローチャート図である。
図5は、前計算部の行う前計算方法を示すフローチャート図である。
図6は、実計算部の行う実計算方法を示すフローチャート図である。
図7は、実施形態における署名検証システム構成図である。
図1はネットワーク142によって接続された本発明による楕円曲線演算方法を適用したコンピュータA101、コンピュータB121がネットワーク142により接続されたシステム構成を示すものである。
図1の暗号通信システムにおけるコンピュータA101でメッセージの暗号化を行うには、Pm+k(aQ)及びkQを計算して出力し、コンピュータB121で暗号文の復号化を行うには、秘密鍵a及びkQより−a(kQ)を計算し、
を計算して出力すればよい。ここでPmはメッセージ、kは乱数、aは秘密鍵を示す定数、Qは定点、aQは公開鍵を示す点である。
ネットワーク142には、Pm+k(aQ),kQのみ送信され、メッセージPmを復元するためには、kaQ、すなわちkQのa倍を計算する必要がある。ところが、秘密鍵aはネットワーク142には送信されないため、秘密鍵aを保持しているものだけが、Pmを復元できることになる。
図1において、コンピュータA101は、CPU113やコプロセッサ114などの演算装置、RAM103、ROM106や外部記憶装置107などの記憶装置、コンピュータ外部とのデータ入出力を行う入出力インタフェース110を装備しており、外部にはコンピュータA101をユーザが操作するためのディスプレイ108、キーボード109、着脱可能な可搬型記憶媒体の読み書き装置などが接続されている。
更にコンピュータA101は、RAM103、ROM106や外部記憶装置107などの記憶装置によって、記憶部102を実現し、CPU113やコプロセッサ114などの演算装置が、記憶部102に格納されたプログラムを実行することにより、データ処理部112、スカラー倍計算部115を実現する。
データ処理部112は、本実施形態においては、暗号化処理部112として機能し、入力されたメッセージの暗号化を行う。
スカラー倍計算部115は、暗号処理部112で暗号化を行うのに必要なパラメタを計算する。記憶部102は、定数104(例えば、楕円曲線の定義式や楕円曲線上の定点である。)、秘密情報105(例えば、秘密鍵である。)などを記憶している。
コンピュータB121は、コンピュータA101と同様のハードウェア構成を備える。
更にコンピュータB121は、RAM123、ROM126や外部記憶装置107などの記憶装置によって、記憶部122を実現し、CPU133やコプロセッサ134などの演算装置が、記憶部122に格納されたプログラムを実行することにより、データ処理部132、スカラー倍計算部135を実現する。
データ処理部132は、本実施形態においては、復号化処理部132として機能し、暗号化されたメッセージである暗号文141の復号化を行う。
スカラー倍計算部135は、復号化処理部132で復号化を行うのに必要なパラメタを計算する。記憶部122は、定数124(例えば、楕円曲線の定義式や楕円曲線上の定点である。)、秘密情報125(例えば、秘密鍵である。)などを記憶している。
なお、上記各プログラムは、あらかじめ、上記コンピュータ内の記憶部に格納されていても良いし、必要なときに、入出力インタフェース110と上記コンピュータ721が利用可能な媒体を介して、他の装置から上記記憶部に導入されてもよい。媒体とは、たとえば、入出力インタフェース110に着脱可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波)を指す。
図2は、コンピュータA101、コンピュータB121の各処理部が行う情報の受け渡しの様子を示したものである。
次に、図1のコンピュータA101が、入力されたメッセージを暗号化する場合の動作について説明する。メッセージはディジタル化されたデータであれば良く、テキスト、画像、映像、音などの種類は問わない。
暗号化処理部112は、入出力インタフェース110を介して、平文メッセージ(図2の入力メッセージ204)を受け取ると、入力された平文メッセージのビット長が予め定めたビット長か否かを判断する。予め定めたビット長より長い場合には、予め定めたビット長となるように平文メッセージを区切る。以下、所定のビット長に区切られている部分メッセージ(単にメッセージともいう)について説明する。
次に、暗号化処理部112は、メッセージのビット列によって表される数値をx座標(x1)にもつ楕円曲線上の点Pmのy座標の値(y1)を計算する。
例えば、ワイエルシュトラス型楕円曲線は、A,Bをそれぞれ定数とするとき、
で表されるので、これよりy座標の値を求めることができる。
次に、暗号化処理部112は、乱数kを生成する。そして、記憶部102に格納されている定数104から読み出した(図2の205)公開鍵aQとQのx座標と、求めたy座標の値と乱数kとをスカラー倍計算部115へ送る(図2の206)。
スカラー倍計算部115は、Qのx座標、y座標の値、乱数kによるスカラー倍点(xd1,yd1)=kQと、公開鍵aQのx座標、y座標の値、乱数によるスカラー倍点(xd2,yd2)=k(aQ)とを計算し、計算されたスカラー倍点を暗号化処理部112へ送る(図2の207)。
暗号化処理部112は、送られたスカラー倍点を用いて、暗号化処理を行う。例えば、ワイエルシュトラス型の楕円曲線については、Pm+k(aQ)とkQを計算する。すなわち、
を計算し、暗号化されたメッセージxe1,xe2を得る。
コンピュータA101は暗号化処理部112で暗号化された1つ以上の部分メッセージから暗号化された出力メッセージを組み立てる(図2の208)。
コンピュータA101は、暗号化された出力メッセージをデータ141として入出力インタフェース110より出力し、ネットワーク142を介してコンピュータB121へ転送する。
なお、図2の記憶部102からの情報読み出しは、スカラー計算部115へ当該情報を送る前で有れば、入力メッセージを受け付ける前であっても良い。
次に、コンピュータB121が、暗号化されたメッセージ141を復号化する場合の動作について、図2を参照しつつ説明する。
復号化処理部132(図2のデータ処理部112)は、入出力インタフェース110を介して、暗号化されたデータ141(図2の入力メッセージ204)が入力されると、入力された暗号化されたデータ141のビット長が予め定めたビット長か否かを判断する。予め定めたビット長より長い場合には、予め定めたビット長となるように暗号化されたデータを区切る。以下、所定のビット長に区切られている部分データ(単にデータともいう)について説明する。
データ141のビット列によって表される数値をx座標にもつ楕円曲線上のy座標の値を計算する。
暗号化されたメッセージがxe1,xe2のビット列であり、ワイエルシュトラス型楕円曲線の場合、y座標の値(ye1)は
(ただし、A,Bはそれぞれ定数である)
から得ることができる。
復号化処理部132は、記憶部122(図2の102)に格納されている秘密情報125から読み出した(図2の205)秘密鍵aと、x座標、y座標の値(xe1,ye1)を、スカラー倍計算部135(図2の115)へ送る(図2の206)。
スカラー倍計算部135は、x座標、y座標の値、秘密情報a125からスカラー倍点(xd3,yd3)=a(xe2,ye2)を計算する。スカラー倍計算部135は、計算されたスカラー倍点を復号化処理部132へ送る(図2の207)。復号化処理部132は、送られたスカラー倍点を用いて、復号化処理を行う。
例えば、暗号化されたメッセージが、xe1,xe2のビット列であり、ワイエルシュトラス型の楕円曲線の場合は、
(Pm+k(aQ))−a(kQ)=(xe1,ye1)−(xd3,yd3)
を計算することにより達成する。すなわち、
を計算し、暗号化される前の部分メッセージx1に相当するxf1を得る。
コンピュータB121は、復号化処理部132で復号化された部分メッセージから平文メッセージを組み立て(図2の208)、入出力インタフェース110を介して、ディスプレイ108などから出力する。
次に、コンピュータB121が、復号化処理を行う場合の、スカラー倍計算部135の処理を詳細に説明する。
図3は、各実施例で用いるスカラー倍計算部の機能ブロックを示したものである。スカラー倍計算部115(図1の135)は、エンコード部302、前計算部303、実計算部304からなる。エンコード部302は、剰余取得部321、剰余変換判定部322、剰余変換部323、繰り返し判定部324、格納部325からなる。前計算部303は、加算部331、2倍算部332、繰り返し判定部333からなる。実計算部304は、ビット値判定部341、加算部342、2倍算部343、繰り返し判定部344からなる。
スカラー倍計算部115がスカラー値d及び楕円曲線上の点Pから、楕円曲線におけるスカラー倍点dPを計算する方法を説明する。
スカラー倍計算部115が復号化処理部132からスカラー値dと楕円曲線上の点Pを受け取ると、エンコード部302は、入力されたスカラー値dを数値列dw[j]にエンコードする。すなわち、
をみたすdw[j]に、スカラー値dを変換する。ここで、wはあらかじめ定めた小さな正整数で、ウィンドウ幅と呼ばれる。計算時間を優先する場合はwを大きな値とする。メモリ使用量を小さくする場合はwを小さな値にする。前計算部303は、入力された楕円曲線上の点Pから前計算テーブルを作成する。前計算テーブルはP,3P,...,(2w−1)Pにより構成される。実計算部304は、エンコードされたスカラー値と前計算テーブルを用いてスカラー倍点dPを計算する。
なお、エンコード部302の行うエンコード処理は、スカラー値dを受け取った後、および実計算部304がスカラー倍点を計算する前であればよい。すなわち、前計算部303が前計算テーブルを作成する前に行っても、後に行なってもよい。
また、点Pが固定点である場合、前計算部303の行う前計算テーブルの作成処理は、ただ一度行えばよい。すなわち、一旦前計算テーブルを作成すれば、それ以降のスカラー倍計算では前計算テーブルを再作成する必要はない。
次にエンコード部302、前計算部303、実計算部304の行なう各処理について詳細に説明する。
まず、図4を用いて、エンコード部302がスカラー値dをエンコードする方法を説明する。
変数iに初期値0を、変数d’にスカラー値dをそれぞれ代入する(401)。
剰余取得部321は、スカラー値d’の2wによる剰余をu[i]に格納する(402)。
剰余取得部321は、(d’−u[i])/2wを計算し、それを新たなd’とする(411)。
変数iを1増加させる(412)。
繰り返し判定部324は、変数iとkが一致するかどうかを判定する。
一致すればステップ421へ行く。一致しなければステップ414へ行く(413)。
剰余取得部321は、d’の2wによる剰余をu[i]に格納する(414)。
剰余変換判定部322は、u[i]が偶数か奇数かを判定する。
u[i]が偶数の場合はステップ416へ行く。奇数の場合はステップ417へ行く(415)。
剰余変換部323は、u[i]が奇数となるように、
u[i],u[i−1]を変換する(416)。これは、
の操作を行なうことにより達成される。ここで、sign(u)はuの符号を取り出す関数であり、uが正の時は1、uが負の時は−1となる。
格納部325は、
dw[(i−1)w],dw[(i−1)w+1],...,dw[(i−1)+w−1]にそれぞれ、u[i−1],0,…,0を格納し、ステップ411へ戻る(417)。
ステップ413で変数iとkが一致した場合、格納部325はdw[kw],dw[kw+1],...,dw[kw+w−1]にそれぞれ、u[k],0,…,0を格納する(421)。
エンコード部302は、dw[n],dw[n−1],...,dw[0]を実計算部304へ出力する(422)。
次に、図5を用いて、前計算部303が楕円曲線上の点から、前計算テーブルを作成する方法を説明する。
点PをECDBLにより2倍し、その結果を点2Pに格納する(501)。
変数jに初期値1を代入する(502)。
jが2w−1より小さいかどうかを判定する。jが2w−1より小さい場合はステップ504へ行く。2w−1以上の場合はステップ511へ行く(503)。
ステップ503でjが2w−1より小さい場合、点2Pと点(2j−1)PをECADDにより加算し、その結果を点(2j+1)Pに格納する(504)。
変数jを1増加させ、ステップ503へ戻る(505)。
ステップ503でjが2w−1以上の場合、P,3P,...,(2w−1)Pを前計算テーブルとして出力する(511)。
ただし、ECADD,ECDBLはそれぞれ楕円曲線における加算、2倍算を表す。加算は式1,2を用いて、2倍算は式4,5を用いてそれぞれ計算される。なお、加算、2倍算の計算には式1,2、および式4,5を用いる以外にも、射影座標やヤコビアン座標における計算公式があり、Cohen,H.,Miyaji,A.,Ono,T.,Efficient Elliptic Curve Exponentiation Using Mixed Coordinates,Advances in Cryptology−ASIACRYPT 1998,LNCS 1514,Springer−Verlag,(1998),pp.51−65.(文献3)に記載されている。
また、楕円曲線上の点Q=(x,y)に対して、楕円曲線加算に関する逆元の点−Qは、−Q=(x,−y)と表されるため、点Qの座標が与えられていれば容易に計算できる。そのため、点P,3P,…,(2w−1)Pのみを前計算テーブルとして格納する。その後の実計算部304が行う計算で必要となる点−P,−3P,…,−(2w−1)Pは、それらから導出すればよく、前計算テーブルには格納する必要はない。
なお、前計算部303の行う前計算テーブルの作成処理は、点P,3P,…,(2w−1)Pが計算されればよい。そのため、モンゴメリトリックを用いて、楕円曲線演算で必要となる逆元演算の計算の共通化を行うことにより、高速化をはかってもよい。
モンゴメリトリックによる逆元演算共通化方法がCohen,H.,A course in computational algebraic number theory,GTM138,Springer−Verlag,(1993).(文献4)の481ページに記載されている。
最後に、図6を用いて、実計算部304がエンコードされたスカラー値と楕円曲線上の点から、楕円曲線におけるスカラー倍点を計算する方法を説明する。
変数cに初期値nを代入する(601)。
dw[c]が0か0でないかを判定する。
dw[c]が0の場合はステップ603へ行く。0でなければステップ611へ行く(602)。
変数cを1減少させ、ステップ602へ戻る(603)。
ステップ602でdw[c]が0でない場合、点Qにdw[c]Pを代入する(611)。
変数jに初期値c−1を代入する(612)。
jが0より小さいかどうかを判定する。jが0より小さい場合はステップ621へ行く。0以上の場合はステップ614へ行く(613)。
点QをECDBLにより2倍し、点Qに再び格納する(614)。
dw[j]が0か0でないかを判定する。
dw[j]が0の場合はステップ617へ行く。0でなければステップ616へ行く(615)。
ステップ615でdw[j]が0でない場合、点Qとdw[j]PとをECADDにより加算する。ただし、dw[j]が負の場合は(−dw[j])Pのy座標を反転したものを用いて加算を行う。その結果を点Qに格納し、ステップ617へ行く(616)。なお、dw[j]が0でない場合は、dw[j]は奇数である。そのため、dw[j]Pもしくは(−dw[j])Pのいずれかが、前計算テーブルに必ず存在する。
変数jを1減少させ、ステップ613へと戻る(617)。
ステップ613でjが0より小さい場合、点Qを出力する(621)。
エンコード部302が行う処理により出力されるdw[j]は、式12,式13をみたす。この理由は次の通りである。
dw[j]はjがwで割り切れる時はu[j/w]に等しく、割り切れない場合は0に等しい。そのため、式12の右辺は、
と等しい。ただし、k=n/wである。一方、ステップ416の変換では、
の値は不変である。したがって、ステップ416の変換で、式17の値は不変である。他方、スカラー値dを2w−進展開したものがu[i]の初期状態であるので、式17はdに等しい。ゆえに式12がみたされる。また、ステップ416の変換では、
をみたすu[i]は、変換後も式19をみたす。したがって、式13がみたされる。
エンコード部302が行う処理で計算されるu[i]はi=0を除き全て奇数となる。この理由は次の通りである。ステップ415でu[i]が奇数であれば、u[i]の値はそのまま保持されるので、u[i]は奇数である。ステップ415でu[i]が偶数であれば、ステップ416でu[i],u[i−1]は式15,16により変換される。式14によりbの値が計算されるため、bは1もしくは−1である。そのため、式15の変換で、u[i]は奇数に変換される。また、式16の変換では、u[i−1]の偶奇性は変化しない。ステップ415に初めて来る時のiは1である。そのため、u[0]は奇数とは限らない。結果として、i=0を除き、u[i]は全て奇数である。
なお、u[0]も奇数とするためには、スカラー値dが奇数であればよい。そのためには、入力されたすカラー値dが偶数の時は、d+1を改めてスカラー値d’としてエンコードする。すなわち、dを奇数に変換する。そして、スカラー倍点d’Pを計算する。
であるので、d’Pから点Pを引き、その値をスカラー倍点dPとして出力すればよい。
実計算部304が出力する点Qはスカラー倍点dPに等しい。この理由は次の通りである。
ステップ613において点Qが
と表されるとする。このとき、次にステップ613に来る時も点Qは式21をみたすことを示す。
点Qはステップ614で2倍され、dw[j]が0でなければステップ616でdw[j]Pが加えられる。そのためステップ616の直後では、点Qの値は
となる。したがってdw[j]=0の時も含めて、ステップ617の直前で、点Qは式22をみたす。ステップ617でjが1減少するので、式22のjにj+1を代入すると式21になる。すなわち、次にステップ613に来る時も点Qは式21をみたす。
j>cに対するdw[j]の値は0であるので、ステップ621で出力される点Qの値は
に等しい。実計算部304に入力されるスカラー値は、エンコード部302によりエンコードされたdw[j]であるので、そのdw[j]は式12をみたす。したがって、Q=dPである。
上記スカラー倍におけるメモリ使用量は、前計算部303の前計算テーブルの大きさにより定まる。上記スカラー倍計算方法では、前計算テーブルはP,3P,…,(2w−1)Pのみ、すなわち奇数倍の点のみを格納すればよいので、その点の数は2w−1個である。文献2の方法では、ウィンドウ幅wに対して、2w個の点を格納する必要がある。そのため、上記スカラー倍計算方法は、文献2の方法と比べて格納する点の数が少なく、メモリ使用量が小さくてすむ。
さらに、いかなる方法をもってしても、前計算テーブルに格納する点の数をこれ以上削減することができないという意味で、メモリ使用量は最小である。この理由は次の通りである。
m個の点からなる前計算テーブルを用いた場合、k+1個のu[i]を用いて、エンコードされたスカラー値として表すことのできる数は(2m)k+1個である。他方、nビット以下のスカラー値は全部で2n個あり、各々のスカラー値はそれぞれ異なる数値列にエンコードされなければならない。そのため、(2m)k+1≧2nが成り立つ。k+1=n/wであるので、m≧2w−1となる。実際、上記スカラー倍計算方法における前計算テーブルの点の個数は2w−1であり、最小である。
また、上記スカラー倍方法は、サイドチャネル攻撃に対する防御法に関しても有効である。この理由は次の通りである。
エンコード部302によりスカラー値dは数値列dw[j]にエンコードされる。この数値列dw[j]は固定されたパターン
をもつ。ここで各xは各々非0の値であり、それぞれdw[iw]に対応する。そのため、実計算部304がスカラー倍点を計算する際に、ステップ613−617の繰り返し処理において、|0…0x|のブロックに対応する楕円曲線演算は、|D…DA|、すなわちw回のDの後にAとなる。ただし、DはECDBLを、AはECADDをそれぞれ表す。したがって、全てのスカラー値に対して、実行する楕円曲線演算は、
となり、必ず楕円加算が実行されるので、スカラー値との依存関係がない。
なお、文献1のランダム化射影座標を併用してスカラー倍計算を行ってもよい。そうすると、同じ点Pを入力しても実行毎に異なる値に変換してスカラー倍計算を行うので、攻撃者が中間値の値を予測できなくなる。
また、前計算テーブルに格納されている点が読み出されるたびに、再びランダム化して、前計算テーブルに書き込んでもよい。そうすると、同じデータの再使用がなくなるため、より一層、サイドチャネル攻撃への耐性が増す。
以上の通り、上記計算方法は、サイドチャネル攻撃に有用な情報を与えないので、サイドチャネル攻撃に対して耐性がある。また、奇数倍の点のみを前計算テーブルとして格納するため、メモリ使用量が小さくてすむという特徴がある。
なお、上記計算方法では楕円曲線としてワイエルシュトラス型楕円曲線を用いたが、標数2の有限体上で定義された楕円曲線や、OEF(Optimal Extension Field)上で定義された楕円曲線、もしくはモンゴメリ型楕円曲線を用いてもよい。OEFについては、D.V.Bailey,C.Paar,Optimal Extension Fields for Fast Arithmetic in Public−Key Algorithms,Advances in Cryptology Crypto ’98,LNCS 1462,(1998),472−485.(文献5)に記載されている。
以上、コンピュータB121が、暗号化されたデータ141を復号化する場合のスカラー倍計算部135の動作を説明したが、コンピュータA101が入力メッセージを暗号化する場合も同様である。
その場合には、コンピュータA101のスカラー倍計算部115は、既に説明した楕円曲線上の点Q、乱数kによるスカラー倍点kQと、公開鍵aQと乱数kによるスカラー倍点k(aQ)を出力する。このとき、上記計算方法で説明したスカラー値dを乱数k、楕円曲線上の点Pを楕円曲線上の点Q、公開鍵aQとして同様の処理を行うことにより、それぞれのスカラー倍点を求めることができる。
次に本発明を署名検証システムに適用する実施例を、図7と図2を用いて説明する。
図7の署名検証システムは、スマートカード701と署名検証処理を行うコンピュータ721とから成る。
スマートカード701は、機能としてはコンピュータA101と類似の構成を備えるが、CPU113やコプロセッサ114などの演算装置とが記憶部102に格納されているプログラムを実行することにより、データ処理部112ではなく、署名生成処理部712を実現する。ただし、外部記憶装置、ディスプレイ、キーボードを備えない。
コンピュータ721は、コンピュータA101と同様の構成を備えるが、CPU113がプログラムを実行することによりデータ処理部112ではなく、署名検証処理部732を実現する。
スカラー倍計算部715と735は、図1に示すスカラー倍計算部115または135と同様の機能を備える。
なお、本実施例において、コンピュータ721内の各プログラムは、あらかじめ、上記コンピュータ内の記憶部に格納されていても良いし、必要なときに、コンピュータ721が利用可能な媒体を介して他の装置から上記記憶部に導入されてもよい。
さらに、スマートカード内の各プログラムは、あらかじめ、上記スマートカード内の記憶部に格納されていても良いし、必要なときに、入出力インタフェースを介して接続するコンピュータ、または当該コンピュータが利用可能な媒体を介して上記記憶部に導入されてもよい。
媒体とは、たとえば当該コンピュータに着脱可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波)を指す。
図7の署名検証システムにおける署名作成と署名検証動作を、図2を参照して説明する。
コンピュータ721は、ランダムに選んだ数値をチャレンジコード743として、インタフェース742を介してスマートカード701に転送する。
署名生成処理部712(図2の112)は、チャレンジコード743を受け付け、チャレンジコード743のハッシュ値をとり、所定のビット長の数値fに変換する。
署名生成処理部712は、乱数uを生成し、記憶部702(図2の102)に格納されている定数704から読み出した(図2の205)楕円曲線上の定点Qとともにスカラー倍計算部715(図2の115)へ送る(図2の206)。
スカラー倍計算部715は、定点Q、乱数uによるスカラー倍点(xu,yu)を計算し、計算されたスカラー倍点を署名生成処理部712へ送る(図2の207)。
署名生成処理部712は、送られたスカラー倍点を用いて署名の生成を行う。例えば、ECDSA署名であれば、
を計算することによりチャレンジコード743に対応する署名(s,t)を得る(図2の208)。
ここで、qは定点Qの位数、すなわち定点Qのq倍点qQが無限遠点になり、qより小さな数値mに対する定点Qのm倍点mQは無限遠点にはならない、というような数値のことである。
ECDSA署名については、ANSI X9.62 Public Key Cryptography for the Financial Services Industry,The Elliptic Curve Digital Signature Algorithm(ECDSA),(1999)(文献6)に記載されている。
スマートカード701は、署名生成処理部712で作成した署名741を入出力インタフェース710より出力し、インタフェース742を介してコンピュータ721へ転送する。
コンピュータ721の署名検証処理部732(図2の112)は、署名741が入力される(図2の204)と、署名741の数値s,tが適切な範囲内すなわち1≦s,t<qであるかを調べる。
数値s,tが上記範囲内になければチャレンジコード743に対する署名の検証結果として「無効」を出力し、スマートカード701を拒絶する。数値s,tが上記範囲内にあれば、署名検証処理部732は、
を計算する。そして、記憶部722(図2の102)に格納されている定数724から読み出した(図2の205)公開鍵aQ及び定点Qと計算したh1,h2をスカラー倍計算部735(図2の115)へ送る(図2の206)。
スカラー倍計算部735は、定点Qとh1によるスカラー倍点h1Qと、公開鍵aQとh2によるスカラー倍点h2aQとを計算し、計算されたスカラー倍点を署名検証処理部732へ送る(図2の207)。
署名検証処理部732は、送られたスカラー倍点を用いて、署名検証処理を行う。例えば、ECDSAの署名検証であれば、点R
を計算し、そのx座標をxRとしたとき、
を計算し、s’=sであればチャレンジコード743に対する署名の検証結果として「有効」を出力し、スマートカード701を認証し、受け入れる(図2の208)。
s’=sでなければ「無効」を出力し、スマートカードを拒絶する(図2の208)。
上記実施形態のスカラー倍計算部715、735は、図1のスカラー倍計算部115または135と同様の機能を備えるので、サイドチャネル攻撃を防ぎ且つメモリ使用量の少ないスカラー倍計算を実行できる。
そのためスマートカード701は署名作成処理を行う際に、コンピュータ721は署名検証処理を行う際に、サイドチャネル攻撃を防ぎ、その上少ないメモリ使用量で実行できる。
次に本発明を鍵交換システムに適用する例を説明する。本実施形態においては、図1のシステム構成が応用できる。
図1のデータ処理部112、132は、本実施形態においては、それぞれ鍵交換処理部112、132として機能する。
鍵交換システムのコンピュータA101が、入力されたデータ143から共有情報の導出を行う場合の動作について図1、図2を参照して説明する。
コンピュータB121のデータ処理部132(図2の112)は、記憶部122(図2の102)の定数125から秘密鍵bを読み出しコンピュータB121の公開鍵bQを計算する。そして、ネットワーク142を介して、公開鍵bQをデータ143としてコンピュータA101に転送する。
コンピュータA101の鍵交換処理部112(図2の112)はコンピュータB121の公開鍵bQの入力を受け付ける(図2の204)と、鍵交換処理部112は、記憶部102から読み出した(図2の205)秘密情報105であるコンピュータA101の秘密鍵aと、コンピュータB121の公開鍵bQとをスカラー倍計算部115へ送る(図2の206)。
スカラー倍計算部115は、秘密鍵aと、公開鍵bQによるスカラー倍点abQを計算し、計算されたスカラー倍点を鍵交換処理部112へ送る(図2の207)。
鍵交換処理部112は、送られたスカラー倍点を用いて共有情報の導出を行い、記憶部102に秘密情報105として格納する。例えば、スカラー倍点abQのx座標を、共有情報とする。
次に、コンピュータ121が、入力されたデータ141から共有情報の導出を行う場合の動作について説明する。
コンピュータA101のデータ処理部112は、記憶部102の定数105から秘密鍵aを読み出しコンピュータA101の公開鍵aQを計算する。そして、ネットワーク142を介して、公開鍵aQをデータ141としてコンピュータB121に転送する。
コンピュータB121の鍵交換処理部132(図2の112)はコンピュータA101の公開鍵aQの入力を受け付ける(図2の204)と、鍵交換処理部132は、記憶部122(図2の102)の定数125から読み出した(図2の205)秘密情報125であるコンピュータB121の秘密鍵bと、コンピュータA101の公開鍵aQとをスカラー倍計算部135(図2の115)へ送る(図2の206)。
スカラー倍計算部135は、秘密鍵bと、公開鍵aQによるスカラー倍点baQを計算し、計算されたスカラー倍点を鍵交換処理部132へ送る(図2の207)。
鍵交換処理部132は、送られたスカラー倍点を用いて共有情報の導出を行い、記憶部122に秘密情報125として格納する。例えば、スカラー倍点baQのx座標を、共有情報とする。
ここで、数abと数baは数値として同じなので、点abQと点baQは同じ点となり、同じ情報が導出されたことになる。
ネットワーク142には、点aQと点bQが送信されるが、点abQ(もしくは点baQ)を計算するには秘密鍵aもしくは秘密鍵bを用いなければならない。すなわち、秘密鍵aもしくは秘密鍵bを知らなければ、共有情報を得ることができない。このようにして得られた共有情報は、共通鍵暗号の秘密鍵として利用できる。
本実施形態においても、スカラー倍計算部115、135は、上述の特徴を備えるので、サイドチャネル攻撃を防ぎ、そのうえ少ないメモリ使用量で鍵交換処理が可能になる。
また、上記各実施形態における暗号化処理部、復号化処理部、署名作成部、署名検証部、鍵交換処理部は、専用のハードウェアを用いて行ってもよい。また、スカラー倍計算部をコプロセッサまたはそれ以外の専用ハードウェアで実現しても良い。
また、データ処理部は、上記暗号化処理、復号化処理、署名作成処理、署名検証処理、鍵交換処理のうち、任意の一つ以上の処理を行えるように構成してもよい。
本発明によれば、サイドチャネル攻撃に対して安全で、かつメモリ使用量の少ない、楕円曲線演算を用いたメッセージ処理が可能になる。
Claims (18)
- 楕円曲線暗号における楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算するスカラー倍計算方法であって、
前記スカラー値を数値列にエンコードするステップと、
前記楕円曲線上の点から前計算テーブルを作成するステップと、
前記エンコードした数値列及び前記前計算テーブルからスカラー倍点を計算するステップと、を有するスカラー倍計算方法。 - 請求項1記載のスカラー倍計算方法であって、
前記エンコードするステップが出力する数値列は0と奇数からなるスカラー倍計算方法。 - 請求項2記載のスカラー倍計算方法であって、
前記スカラー倍点を計算するステップは、
第1の演算を予め定められた回数を実行するステップと、
第1の演算とは異なる第2の演算を実行するステップとを含むスカラー倍計算方法。 - 楕円曲線暗号における楕円曲線において、スカラー値及び楕円曲線上の点の奇数倍点を格納した前計算テーブルからスカラー倍点を計算するスカラー倍計算方法であって、
前記スカラー値を数値列にエンコードするステップと、
前記エンコードした数値列及び前記前計算テーブルからスカラー倍点を計算するステップとを有し、
前記エンコードするステップが出力する数値列は0と奇数からなるスカラー倍計算方法。 - 請求項3記載のスカラー倍計算方法であって、
楕円曲線としてワイエルシュトラス型楕円曲線を用いるスカラー倍計算方法。 - 請求項3記載のスカラー倍計算方法であって、
楕円曲線としてモンゴメリ型楕円曲線を用いるスカラー倍計算方法。 - 請求項3記載のスカラー倍計算方法であって、
楕円曲線として標数2の有限体上で定義された楕円曲線を用いるスカラー倍計算方法。 - 請求項3記載のスカラー倍計算方法であって、
楕円曲線としてOEF上で定義された楕円曲線を用いるスカラー倍計算方法。 - 第1のデータから第2のデータを生成するデータ生成方法であって、
請求項3に記載のスカラー倍計算方法を用いてスカラー倍を計算するステップを有するデータ生成方法。 - データから署名データを生成する署名作成方法であって、
請求項3に記載のスカラー倍計算方法を用いてスカラー倍を計算するステップを有する署名作成方法。 - 暗号化されたデータから復号化されたデータを生成する復号化方法であって、
請求項3に記載のスカラー倍計算方法を用いてスカラー倍を計算するステップを有する復号化方法。 - 楕円曲線暗号における楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算するスカラー倍計算装置であって、
前記スカラー値を数値列にエンコードするエンコード部と、
前記楕円曲線上の点から前計算テーブルを作成する前計算部と、
前記エンコードした数値列及び前記前計算テーブルからスカラー倍点を計算する実計算部とを有するスカラー倍計算装置。 - 第1のデータから第2のデータを生成するデータ変換部と、前記データ変換部より依頼されてスカラー倍を計算するスカラー倍計算部とを有するデータ生成装置であって、
前記スカラー倍計算部は、請求項3に記載のスカラー倍計算方法を用いてスカラー倍を計算するデータ生成装置。 - データから署名データを生成する署名部と、前記署名部より依頼されてスカラー倍を計算するスカラー倍計算部とを有する署名作成装置であって、
前記スカラー倍計算部は、請求項3に記載のスカラー倍計算方法を用いてスカラー倍を計算する署名作成装置。 - 暗号化されたデータから復号化されたデータを生成する復号部と、前記復号部より依頼されてスカラー倍を計算するスカラー倍計算部とを有する復号化装置であって、
前記スカラー倍計算部は、請求項3に記載のスカラー倍計算方法を用いてスカラー倍を計算する復号化装置。 - 請求項3に記載のスカラー倍計算方法を計算機に実行させるプログラム。
- 請求項10記載の署名作成方法を計算機に実行させるプログラム。
- 請求項11記載の復号化方法を計算機に実行させるプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003028996 | 2003-02-06 | ||
JP2003028996 | 2003-02-06 | ||
PCT/JP2003/015253 WO2004070681A2 (ja) | 2003-02-06 | 2003-11-28 | 楕円曲線スカラー倍計算方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2004070681A1 true JPWO2004070681A1 (ja) | 2006-05-25 |
JP4502817B2 JP4502817B2 (ja) | 2010-07-14 |
Family
ID=32844222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004567900A Expired - Fee Related JP4502817B2 (ja) | 2003-02-06 | 2003-11-28 | 楕円曲線スカラー倍計算方法および装置 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP4502817B2 (ja) |
AU (1) | AU2003284481A1 (ja) |
WO (1) | WO2004070681A2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2403308B (en) * | 2003-06-26 | 2006-06-21 | Sharp Kk | Side channel attack prevention in data processing apparatus |
JP4783061B2 (ja) * | 2005-02-04 | 2011-09-28 | ルネサスエレクトロニクス株式会社 | 楕円曲線暗号におけるスカラー倍計算装置 |
KR101223498B1 (ko) | 2006-12-15 | 2013-01-18 | 삼성전자주식회사 | 타원 곡선 암호 방식에서 공개키를 생성하는 방법 및 상기방법을 수행하는 시스템 |
US9531531B2 (en) * | 2015-05-06 | 2016-12-27 | Qualcomm Incorporated | Methods and devices for fixed execution flow multiplier recoding and scalar multiplication |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132096A (ja) * | 1998-10-27 | 2000-05-12 | Fujitsu Ltd | スカラー倍算方法およびその装置 |
-
2003
- 2003-11-28 WO PCT/JP2003/015253 patent/WO2004070681A2/ja active Application Filing
- 2003-11-28 JP JP2004567900A patent/JP4502817B2/ja not_active Expired - Fee Related
- 2003-11-28 AU AU2003284481A patent/AU2003284481A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132096A (ja) * | 1998-10-27 | 2000-05-12 | Fujitsu Ltd | スカラー倍算方法およびその装置 |
Non-Patent Citations (3)
Title |
---|
JPN6010000927, B. Moller, "Securing Elliptic Curve Point Multiplication against Side−Channel Attacks", The Internet, 20011221 * |
JPN6010000929, イアン・F・ブラケ他, 楕円曲線暗号, 20011220, p.71−75, 株式会社ピアソン・エデュケーション * |
JPN7010000056, SOLINAS, J. A., "Efficient Arithmetic on Koblitz Curves, Designs", Codes and Cryptography, 2000, 19, p.195−249 * |
Also Published As
Publication number | Publication date |
---|---|
JP4502817B2 (ja) | 2010-07-14 |
AU2003284481A1 (en) | 2004-08-30 |
WO2004070681A2 (ja) | 2004-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7961874B2 (en) | XZ-elliptic curve cryptography with secret key embedding | |
US7603560B2 (en) | Method and apparatus for digital signature authentication | |
US7308096B2 (en) | Elliptic scalar multiplication system | |
US7904498B2 (en) | Modular multiplication processing apparatus | |
US7379546B2 (en) | Method for XZ-elliptic curve cryptography | |
JP4668931B2 (ja) | 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置 | |
US20080165955A1 (en) | Password protocols using xz-elliptic curve cryptography | |
EP1014617A2 (en) | Method and apparatus for elliptic curve cryptography and recording medium therefor | |
JP2008252299A (ja) | 暗号処理システム及び暗号処理方法 | |
EP0952697B1 (en) | Elliptic curve encryption method and system | |
JP2003098962A (ja) | 楕円曲線スカラー倍計算方法及び装置並びに記録媒体 | |
JP4690819B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
CN101296076A (zh) | 一种基于ecc的数字签名方案 | |
US6772184B2 (en) | Method for efficient modular division over prime integer fields | |
JP4423900B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム | |
CN112350827A (zh) | 一种基于Koblitz曲线的加速标量乘计算的椭圆曲线加解密方法和系统 | |
JP4502817B2 (ja) | 楕円曲線スカラー倍計算方法および装置 | |
JP2003255831A (ja) | 楕円曲線スカラー倍計算方法及び装置 | |
Sasikaladevi et al. | SNAP-compressive lossless sensitive image authentication and protection scheme based on Genus-2 hyper elliptic curve | |
JP4692022B2 (ja) | 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム | |
KR100341507B1 (ko) | 빠른 유한체 연산을 이용한 타원곡선 암호화 방법 및 전자서명 방법 | |
JP2005316038A (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム | |
Abebe et al. | Lightweight integrated cryptosystem based on reconfigurable hardware for IoT security | |
JP2006309201A (ja) | 楕円曲線暗号における多重スカラー倍計算装置、署名検証装置、及び、それらのプログラム。 | |
JP2004053814A (ja) | 楕円曲線暗号装置及び楕円曲線暗号演算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060823 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060823 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100119 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100323 |
|
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: 20100413 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100420 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130430 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140430 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |