JP3884853B2 - べき乗演算装置 - Google Patents
べき乗演算装置 Download PDFInfo
- Publication number
- JP3884853B2 JP3884853B2 JP04322998A JP4322998A JP3884853B2 JP 3884853 B2 JP3884853 B2 JP 3884853B2 JP 04322998 A JP04322998 A JP 04322998A JP 4322998 A JP4322998 A JP 4322998A JP 3884853 B2 JP3884853 B2 JP 3884853B2
- Authority
- JP
- Japan
- Prior art keywords
- power
- calculation
- processing
- conversion
- elliptic curve
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、情報を安全に伝達する暗号技術の分野において必要となるべき乗演算装置に関するものである。
【0002】
【従来の技術】
重要な情報を通信ネットワークを介して安全にやり取りするためには暗号の技術が必要である。特に、ディジタル署名機能(文書の正当性を保証するための電子的な捺印機能)を提供する公開鍵暗号技術は、通信ネットワークを利用した電子商取り引きシステムを実現する上で必須の技術として注目を集めている。
【0003】
公開鍵暗号では、従来の共通鍵暗号に比較して処理が低速であるため、処理の高速化が重要な課題となっている。公開鍵暗号の処理の高速化のために、公開鍵暗号において利用される基本演算を高速化する方法が考えられる。
【0004】
公開鍵暗号において、[1]式に示す整数上のn項のべき乗演算
Z=(X1^Y1×X2^Y2×…×Xn^Yn) [1]
ここで、(Xi,Yi)(i=1,2,…,n)は整数である。
を必要とする場合が多い。例えば代表的なディジタル署名方式としてよく知られているElGamal 署名法では、署名検証時に3項のべき乗演算が必要である。
【0005】
また、近年注目されている楕円曲線暗号においては、[2]式に示す楕円曲線上のn項のべき乗演算
W=(U1・Q1+U2・Q2+…+Un・Qn) (楕円曲線E上の演算) [2]
ここで、Qi(i=1,2,…,n)は楕円曲線上E上の点、Ui(i=1,2,…,n)は整数、
Q・Uは、楕円曲線上の点QのU倍点、Q1+Q2は楕円曲線上の2点Q1とQ2
の加算を示す
を必要とする場合が多い。例えば、楕円曲線上のElGamal署名法など。ここで、楕円曲線及び楕円曲線上の2点の加算や、X倍点の求め方については、例えば、A.Miyaji:"Efficient elliptic curve exponentiation(I)",IEICE Japan(電子情報通信学会) Tech. Rep.,ISEC97-16(1997-07),pp17-28を参照されたい。
【0006】
n項のべき乗演算を行なうための従来法としては、バイナリ法(binary method)を拡張して利用する方法が知られている。
【0007】
以下では、[2]式で示す楕円曲線の場合を例に、従来法を説明する。なお、[1]式で示す整数上の場合については、例えばD.E.Knuth(ディー・イー・クヌース)の"THE ART OF COMPUTER PROGRAMMING SECONDEDITION"(”ザ アート オブコンピュータ プログラミング セコンド エディション”),Vol 2 Seminumerical Algorithms(セミヌメリカル アルゴリズム),p465 exercises 27,1981,ADDISON-WESLEY PUBLISHING COMPANY,INC.に述べられている。
【0008】
上記方法を適応して[1]式の計算を行なうと、整数Xiをmビット、整数Yiをkビットとすると、
テーブルに必要なメモリ容量は、(2^n−1)m ビット [3]
演算(乗算)回数は、
最大で (k−1)×2+2^n−n−1 [4]
平均で (k−1)×(2−(1/2)^n)+2^n−n−1
となる。
【0009】
ここで、べき数Yiにおける各ビットの1の出現確率を最大1、平均(1/2)とした。また、テーブル作成に必要な演算回数を(2^n−n−1)回となる。
【0010】
具体的に、k=1024ビット、m=1024ビット、n=3の場合は、
必要なメモリ容量 7168ビット
演算回数 平均1922回(最大2050回)
となる。
【0011】
(従来例)
簡単のため2項の楕円曲線上のべき乗演算の場合を例に説明する。図1は、従来の楕円曲線上のべき乗演算装置を示すものであって、10はテーブル作成部、11はテーブル格納部、12はべき数変換部、13はべき乗処理部である。
【0012】
以下、図1に示すべき乗演算装置を基に、従来用いられているべき乗演算手順を示す。
【0013】
n項のべき乗演算は、楕円曲線上、整数上を問わず、次のステップで行なう。
(ステップ1)予備処理(テーブルの作成)
(ステップ2)主処理 (べき乗演算)
以下では、13・Q1+15・Q2を求める場合の例について示す。
【0014】
(ステップ1)予備処理(テーブルの作成部、テーブル格納部)
(b1・Q1+b2・Q2),((b1,b2)∈{0,1,-1}^3)を求め、テーブルに記憶する。
【0015】
但し、(0,0)に対応する値、及び、Q1に対する−Q1など符号が反対の値は記憶する必要がないので、全部で次の4個の値(Q1、Q2、Q1+Q2、Q1−Q2)を計算し、テーブルに格納する。
【0016】
各値は、ステップ2において、(b1,b2)をインデックスとして引き出される。該当のものがなければ、(b1,b2)の各符号を反転させて該当するものが引き出される。
【0017】
(ステップ2)主処理
(1)べき数変換処理
べき数13、15を、例えば以下のアルゴリズムで冗長2進数(符号つき2進数)に変換する。
【0018】
13=(1 0 -1 0 1)、15=(1 0 0 0 -1)
冗長2進数変換アルゴリズム:
(1.1)べき数を通常の2進数に変換する
(1.2)1が連続する場合、連続する1の最下位ビットを-1とし、連続する1のその他のビットを0とし、連続する1の一つ上位のビットを1とする
なお、ここで示した冗長2進数変換アルゴリズムは1例であり、冗長2進数変換アルゴリズムは無数に存在する。
【0019】
(2)べき乗演算処理
(2.1) 各べき数13,15の冗長2進数値の最上位ビットを、13、15の順にみると(1,1)であるから、テーブルより(1・Q1+1・Q2)=(Q1+Q2)を得て、
T(1)←(A+B)
とする(←は代入を示す)。
【0020】
(2.2) 各べき数の上位2番目のビットを13、15の順にみると(0,0)であるから
T(2)←2・T(1)
とする。
【0021】
(2.3) 各べき数の上位3番目のビットを13、15の順にみると(-1,0)であるから、テーブルより、(-1・Q1+0・Q2)=(−Q1)の符号を反転させたQ1をテーブルより得て、
T(3)←2・T(2)−Q1
とする。
【0022】
(2.4) 各べき数の上位4番目のビットを13、15の順にみると(0,0)であるから
T(4)←2・T(3)
とする。
【0023】
(2.5) 各べき数の上位5番目のビットを13、15の順にみると(1,-1)であるからテーブルより(1・Q1−1・Q2)=(Q1−Q2)を得て
T(5)←2・T(4)+(Q1−Q2)
とする。
【0024】
(3) 結果出力
このとき結果はz←T(5)で与えられる。
【0025】
となり、計算結果が正しいことがわかる。
【0026】
この例において、ステップ1の予備処理に必要な計算量(楕円点の加減算の回数)は、2回であり、4個の楕円点を記憶するためのメモリ容量が必要となる。
【0027】
また、ステップ2の主処理に必要な計算量(楕円点の2倍算および加減算の回数)は、6回(2倍算が4回、加減算が2回)となる。
【0028】
(従来例における計算量とテーブルのメモリ容量)
一般の[2]式で示される楕円曲線上のn項のべき乗剰余演算に、上述した冗長2進数変換アルゴリズムを利用する場合、計算量とメモリ容量は以下の通りとなる。
【0029】
まずステップ1の予備処理の計算量(楕円点の加減算の回数)は、
楕円点の加減算: (3^n-1)/2-n
となる。
【0030】
また、テーブルを蓄積するためのメモリ容量は、楕円点のビットサイズをmで表すと、
メモリ容量: ((3^n-1)/2)m (bit) [5]
となる。
【0031】
ステップ2の主処理の計算量は、
楕円点の2倍算:k−1
となる。なおここで、kは、べき数Yiのビット数であり、上述した冗長2進数変換法を利用した場合に、変換後の0の出現確率が、最大1/2、平均2/3程度になると仮定している。
【0032】
よって、予備処理および主処理の合計の計算量(2倍算および加減算の合計)は、
最大で、(k−1)×(2−(1/2)^n)+(3^n-1)/2-n [6]
平均で、(k−1)×(2−(2/3)^n)+(3^n-1)/2-n
となる。
【0033】
具体的に、暗号で良く利用される、3項の楕円曲線上のべき乗剰余演算(n=3)において、Yiを160ビット、楕円点を320ビットとするときの計算量とメモリ容量は以下の通りである。
【0034】
計算量 :平均281回(最大308回)
メモリ容量:4160(bit)
【0035】
【発明が解決しようとする課題】
しかし、楕円曲線上のn項のべき乗剰余演算を実行する従来法では、テーブルのメモリ容量が、nの増加にともなって指数関数的に増大する。
【0036】
このため、メモリ容量が制限された環境(例えば、ICカードや、情報端末)などにおいては、従来例を利用するのは困難である。
【0037】
本発明は、上述の問題点に鑑みてなされたもので、メモリ容量を削減しつつ、計算量が同程度のべき乗剰余演算装置を提供することを目的とする。
【0038】
【課題を解決するための手段】
【0039】
本発明は、入力値として与えられたn個の楕円曲線E上の点Qi(i=1,2,...,n) を記憶する被べき乗数格納部と、入力値として与えられたn個の整数値Ui(i=1,2,...,n) に対して冗長2進数変換を行なうべき数変換部および、前記被べき乗数格納部に記憶された前記n個の楕円曲線E上の点Qiと、前記n個の整数値Uiに対する前記べき数変換部における冗長2進数変換値を基に、楕円曲線E上のべき乗演算結果
W=(U1・Q1+U2・Q2+…+Un・Qn)
を出力するべき乗処理部から構成されるべき乗演算装置である。
【0040】
【発明の実施の形態】
(実施の形態1)
[全体構成]
図2は本発明の一実施の形態によるn個の整数の組(Xi,Yi)(i=1,2,...,n)に対するべき乗演算装置の基本構成を示すものであり、20は被べき乗数格納部、21はべき数変換部、22はべき乗処理部である。
【0041】
20の被べき乗数格納部は、処理対象となるn個の被べき乗数Xiの演算前の値を記憶する。本実施の形態では、21のべき数変換部は入力されたn個のべき数Yiに対して2進数変換を行なう。22のべき乗処理部は、20の被べき乗数格納部に記憶された、演算前のn個の被べき乗数Xiと、入力したn個のべき数Yiに対して21のべき数変換部において2進数変換を行なった結果を基に、べき乗演算を行なう。
【0042】
[詳細な動作]
本実施の形態では、[1]式で示したn個の整数の組(Xi,Yi)(i=1,2,...,n)に対するべき乗演算のうち、n=2の場合の動作手順について説明する。具体的には[7]式に示す演算を行なう。
【0043】
Z=(X1^Y1×X1^Y2) [7]
ここで、X1,X2,Y1およびY2は整数値である。
【0044】
本実施の形態で実現する処理の流れを図3に示す。
図3に示す通り、本実施の形態で実現する処理は、S10の予備処理とS11の主処理から構成される。S10の予備処理はS11の主処理より前に処理され、被べき乗数X1およびX2を被べき乗数格納部に記憶する。S11の主処理はS10の予備処理の後に行なわれ、S110のべき数変換処理とS111のべき乗演算処理から構成される。S11の主処理において、S110のべき数変換処理はS111のべき乗演算処理より前に実行される。本実施の形態ではS110のべき数変換処理は、べき数Y1およびY2に対して2進数変換を行なう。S111のべき乗演算処理は、S10の予備処理で20の被べき乗数格納部に記憶された被べき乗数X1およびX2と、べき数Y1およびY2に対してS110のべき数変換処理で2進数変換を行なった値を基に整数上のべき乗演算をおこない、2項のべき乗演算結果([7]式におけるZを)得る。
【0045】
本実施の形態で示す演算は次のステップで処理を実行する。
(ステップ1)予備処理(被べき乗数の格納)
(ステップ2)主処理 (べき乗演算)
(ステップ1)予備処理(被べき乗数の格納)
ステップ2の主処理の前に、演算前の被べき乗数X1およびX2の値を20の被べき乗数格納部に記憶する。
【0046】
(ステップ2)主処理
(1)べき数変換処理
べき数Y1およびY2を2進数に変換する。
【0047】
(2)べき乗演算処理
予備処理で20の被べき乗数格納部に格納した被べき乗数X1およびX2と、べき数Y1およびY2の2進数変換の結果をもとに、22のべき乗演算部においてべき乗演算を行なう。
【0048】
なお、べき数Y1およびY2の2進数変換値を、
と表記する。ここで、kはべき数Y1およびY2のビット数である。
【0049】
(2.1) T←0, i←(k-1)とする。
(2.2) T←T^2とする。
【0050】
(2.3) Y1およびY2の2進数変換値のiビット目の値の組(H1(i),H2(i))について、
(a)(H1(i), H2(i)) = (1,1)の場合、被べき乗数格納部より被べき乗数X1およびX2を読み出し、
T←T×X1×X2
とする。
【0051】
(b)(H1(i), H2(i)) = (1,0)の場合、被べき乗数格納部より被べき乗数X1を読み出し、
T←T×X1
とする。
【0052】
(c)(H1(i), H2(i)) = (0,1)の場合、被べき乗数格納部より被べき乗数X2を読み出し、
T←T×X2
とする。
【0053】
(d)(H1(i), H2(i)) = (0,0)の場合、
T←T
とする。
【0054】
(2.4) i←(i−1)とする。
(2.5) iの値によって処理を分岐する。
【0055】
(a) i ≧ 0 の場合、(2.2)に戻り処理を続行する。
(b) i < 0 の場合、Tの値をべき乗演算結果Zとする。
【0056】
Z←T
(3)結果出力
このとき結果はZ←Tで与えられる。
【0057】
[具体例]
べき数Y1=13,Y2=15、被べき数をX1, X2とした場合の、べき乗演算処理の具体例を示す。
【0058】
Y1=13および、Y2=15の冗長2進数変換結果はそれぞれ、
Y1=13=(1 1 0 1)
Y2=15=(1 1 1 1)
である。
【0059】
(初期処理) T←0, i←3とする。
(処理1)
(1a)T←T^2とする。
【0060】
(1b)
続いて、各べき数13,15の2進数値の最上位ビット(i=3ビット)を、13、15の順にみると(1,1)であるから、被べき乗数X1とX2の値を非べき乗数格納部より読み出し、
T←(T×X1×X2)
とする。
【0061】
(1c)i←(i−1)=2とする。
(1d)i≧0であるから、処理を継続する。
【0062】
(処理2)
(2a)T←T^2とする。
【0063】
(2b)
続いて、各べき数13,15の2進数値の上位2番目のビット(i=2ビット)を、13、15の順にみると(1,1)であるから、被べき乗数X1とX2の値を被べき乗数格納部より読み出し、
T←T×X1×X2
とする。
【0064】
(2c)i←(i−1)=1とする。
(2d)i≧0であるから、処理を継続する。
【0065】
(処理3)
(3a)T←T^2とする。
【0066】
(3b)
続いて、各べき数13,15の2進数値の上位3番目のビット(i=1ビット)を、13、15の順にみると(0,1)であるから、被べき乗数X1値を被べき乗数格納部より読み出し、
T←T×X1
とする。
【0067】
(3c)i←(i−1)=0とする。
(3d)i≧0であるから、処理を継続する。
【0068】
(処理4)
(4a)T←T^2とする。
【0069】
(4b)
続いて、各べき数13,15の冗長2進数値の上位4番目のビット(i=0ビット)を、13、15の順にみると(1,1)であるから、
T←T×X1×X2
とする。
【0070】
(4c)i←(i−1)=-1とする。
(4d)i<0であるから、処理を終了する。
【0071】
(処理結果)
べき数Y1=13,Y2=15, 被べき乗数Q1,Q2を用いた例では、
となり、計算結果が正しいことがわかる。
【0072】
ステップ1の予備処理では、初期データを記憶するのみで計算は必要ではなく、2個の整数を記憶するためのメモリ容量のみが必要である。
【0073】
また、ステップ2の主処理に必要な計算量は9回となる。
[計算量とテーブルのメモリ容量]
一般の[1]式で示される整数上のn項のべき乗剰余演算に、上述したアルゴリズムを適用する場合、必要なメモリ容量と演算回数は次の様になる。
【0074】
まずステップ1の予備処理は計算を必要としない。テーブルを蓄積するためのメモリ容量は、被べき乗数Xiのビットサイズをmで表すと、
メモリ容量: nm (bit) [8]
となる。
【0075】
ステップ2の主処理の計算量は、べき数Yiのビットサイズをkとすると、
最大 (k−1)×(n+1) [9]
平均 (k−1)× (1+σ(0)+σ(1)+…+σ(n))
ここでσ(j)=nCj×(1/2)^n×j
nCjは、n個のものからj個のものを取る組み合わせとなる。ここで、Yiの2進数変換後の1の出現確率を最大1、平均1/2とする。
【0076】
具体的に、k=1024ビット、m=1024ビット、n=3とすると、
計算量 :平均2558回(最大4092回)
メモリ容量:3072(bit)
これにより、従来方法ではnの増加にともなって指数関数的に増大していたメモリ容量の増加を、線形増加に抑えることができる。
【0077】
また、本実施の形態では、式[7]に示す2項のべき乗演算(Z=(X1^Y1×X2^Y2))を行なう場合について説明したが、2項のべき乗演算に限らず任意のn項のべき乗演算が可能である。
【0078】
(実施の形態2)
[全体構成]
つづいて、本発明の楕円曲線E上の点Qi(i=1,2,...,n)に対するべき乗演算の一実施の形態を示す。楕円曲線E上の点Qiに対する本実施の形態も、整数の組(Xi,Yi)に対するべき数演算処理の上記実施の形態と同じ図2に示す構成をとる。
【0079】
図2において、20は被べき乗数格納部、21はべき数変換部、22はべき乗処理部である。20の被べき乗数格納部は、処理対象となるn個の被べき乗数Qiの演算前の値を記憶する。本実施の形態では、21のべき数変換部は入力されたn個のべき数Uiに対して冗長2進数変換を行なう。22のべき乗処理部は、20の被べき乗数格納部に記憶された演算前のn個の被べき乗数Qiと、21のべき数変換部において入力したn個のべき数Uiに対して冗長2進数変換した結果を基にべき乗演算を行なう。
【0080】
[詳細な動作]
本実施の形態では、[2]式で示した楕円曲線上のn項のべき乗演算のうち、n=2の場合の動作手順について説明する。具体的には[10]式に示す演算を行なう。
【0081】
W=(U1・Q1+U2・Q2) [10]
ここで、Q1およびQ2は楕円曲線E上の点、U1およびU2は整数値である。
【0082】
本実施の形態で実現する処理の流れも図3に示す流れとなる。
図3に示す通り、本実施の形態で実現する処理は、S10の予備処理とS11の主処理から構成される。S10の予備処理はS11の主処理より前に処理され、被べき乗数Q1およびQ2の値を被べき乗数格納部に記憶する。S11の主処理はS10の予備処理の後に行なわれ、S110のべき数変換処理とS111のべき乗演算処理から構成される。S11の主処理において、S110のべき数変換処理はS111のべき乗演算処理より前に実行される。S110のべき数変換処理は、べき数U1およびU2に対して冗長2進数変換を行なう。S111のべき乗演算処理は、S10の予備処理で20の被べき乗数格納部に記憶された被べき乗数Q1およびQ2と、べき数U1およびU2に対してS110のべき数変換処理で冗長2進数変換を行なった値を基に楕円曲線E上のべき乗演算をおこない、2項のべき乗演算結果([10]式におけるWを)得る。
【0083】
本実施の形態で示す演算は次のステップで処理を実行する。
(ステップ1)予備処理(被べき乗数の格納)
(ステップ2)主処理 (べき乗演算)
(ステップ1)予備処理(被べき乗数の格納)
ステップ2の主処理の前に、演算前のQ1およびQ2の値を20の被べき乗数格納部に記憶する。
【0084】
(ステップ2)主処理
(1)べき数変換処理
べき数U1およびU2に対して以下のアルゴリズムで冗長2進数(符号つき2進数)に変換する。なお、以下のアルゴリズムは冗長2進数変換の一例であって、本アルゴリズムに限定されるものではない。
【0085】
ここでは、べき数U1に対する冗長2進数変換処理について説明する。
なお、べき数U2に対する冗長2進数変換処理もU1に対する冗長2進数変換と同じ処理を行なう。
【0086】
(1.1)べき数U1を2進数に変換する。ここでは、U1は、kビットの2進数に変換されるとし最下位ビットを0として、
U1=(A(k+1),A(k),A(k),...,A(2), A(1), A(0))
(A(i)∈{0,1}(i=0,1,2,...,k-1), A(k+1)=A(k)=0)
と表す。
【0087】
(1.2) C(0)←0とする。
ただし、←は代入を示す。ここでは、C(0)に0を代入する。
【0088】
(1.3) 0≦i≦kのiに対して、(1.3.1)の処理を行なう。
(1.3.1) C(i)←floor((A(i)+A(i+1)+C(i))/2))
D(i)← A(i)+C(i)-2C(i)
ここでfloor(x)は、xよりも大きくない、最大の整数を表す。
【0089】
(1.4)(1.3)の結果得られる、(D(k),D(k-1),D(k-2),...,D(2),D(1),D(0))がべき数U1の冗長2進数変換結果である。
【0090】
(例)
べき数13に対し上記(1.1)〜(1.4)に示す冗長2進数変換を行なうと(1 0 -1 0 1)となる。
【0091】
(2)べき乗演算処理
予備処理で20の被べき乗数格納部に格納した被べき乗数Q1およびQ2と、べき数U1およびU2の冗長2進数変換の結果をもとに、22のべき乗演算部においてべき乗演算を行なう。
【0092】
なお、べき数U1およびU2の冗長2進数変換値を、
U1 = (D1(k),D1(k-1),D1(k-2),...,D1(2),D1(1),D1(0))
U2 = (D2(k),D2(k-1),D2(k-2),...,D2(2),D2(1),D2(0))
と表記する。
【0093】
(2.1) S←O, i←kとする。ただし、Oは楕円曲線Eの無限遠点
(2.2) S←2・Sとする。
【0094】
(2.3) U1およびU2の冗長2進数変換値のiビット目の値の組(D1(i),D2(i))について、
(a)(D1(i), D2(i)) = (1,1)の場合、被べき乗数格納部より被べき乗数Q1およびQ2を読み出し、
S←S+Q1+Q2
とする。
【0095】
(b)(D1(i), D2(i)) = (1,0)の場合、被べき乗数格納部より被べき乗数Q1を読み出し、
S←S+Q1
とする。
【0096】
(c)(D1(i), D2(i)) = (0,1)の場合、被べき乗数格納部より被べき乗数Q1を読み出し、
S←S+Q2
とする。
【0097】
(d)(D1(i), D2(i)) = (-1,-1)の場合、被べき乗数格納部より被べき乗数Q1およびQ2を読み出し、
S←S−Q1−Q2
とする。
【0098】
(e)(D1(i), D2(i)) = (-1,0)の場合、被べき乗数格納部より被べき乗数Q1を読み出し、
S←S−Q1
とする。
【0099】
(f)(D1(i), D2(i)) = (0,-1)の場合、被べき乗数格納部より被べき乗数Q1を読み出し、
S←S−Q2
とする。
【0100】
(g)(D1(i), D2(i)) = (0,0)の場合、
S←S
とする。
【0101】
(2.4) i←(i−1)とする。
(2.5) iの値によって処理を分岐する。
【0102】
(a) i ≧ 0 の場合、(2.2)に戻り処理を続行する。
(b) i < 0 の場合、Sの値をべき乗演算結果Wとする。
【0103】
W←S
(3)結果出力
このとき結果はW←Sで与えられる。
【0104】
[具体例]
べき数Y1=13,Y2=15、被べき数をQ1, Q2とした場合の、べき乗演算処理の具体例を示す。
【0105】
U1=13および、U2=15の冗長2進数変換結果はそれぞれ、
U1=13=(1 0 -1 0 1)
U2=15=(1 0 0 0 -1)
である。
【0106】
(初期処理) S←O, i←4とする。ただしOは楕円曲線E上の無限遠点
(処理1)
(1a)S←2・Sとする。
【0107】
(1b)
続いて、各べき数13,15の冗長2進数値の最上位ビット(i=4ビット)を、13、15の順にみると(1,1)であるから、被べき乗数Q1とQ2の値を非べき乗数格納部より読み出し、
S←(S+Q1+Q2)
とする。
【0108】
(1c)i←(i−1)=3とする。
(1d)i≧0であるから、処理を継続する。
【0109】
(処理2)
(2a)S←2・Sとする。
【0110】
(2b)
続いて、各べき数13,15の冗長2進数値の上位2番目のビット(i=3ビット)を、13、15の順にみると(0,0)であるから、
S←S
とする。
【0111】
(2c)i←(i−1)=2とする。
(2d)i≧0であるから、処理を継続する。
【0112】
(処理3)
(3a)S←2・Sとする。
【0113】
(3b)
続いて、各べき数13,15の冗長2進数値の上位3番目のビット(i=2ビット)を、13、15の順にみると(-1,0)であるから、被べき乗数Q1の値を被べき乗数格納部より読み出し、
S←S-Q1
とする。
【0114】
(3c)i←(i−1)=1とする。
(3d)i≧0であるから、処理を継続する。
【0115】
(処理4)
(4a)S←2・Sとする。
【0116】
(4b)
続いて、各べき数13,15の冗長2進数値の上位4番目のビット(i=1ビット)を、13、15の順にみると(0,0)であるから、
S←S
とする。
【0117】
(4c)i←(i−1)=0とする。
(4d)i≧0であるから、処理を継続する。
【0118】
(処理5)
(5a)S←2・Sとする。
【0119】
(5b)
続いて、各べき数13,15の冗長2進数値の上位5番目のビット(i=0ビット)を、13、15の順にみると(1, -1)であるから、被べき乗数Q1およびQ2の値を被べき乗数格納部より
S←S+Q1−Q2
とする。
【0120】
(5c)i←(i−1)=-1とする。
(5d)i<0であるから、処理を終了する。
【0121】
(処理結果)
べき数U1=13,U2=15, 被べき乗数Q1,Q2を用いた例では、
となり、計算結果が正しいことがわかる。
【0122】
ステップ1の予備処理では、初期データを記憶するのみで計算は必要ではなく、2個の楕円点を記憶するためのメモリ容量のみが必要である。
【0123】
また、ステップ2の主処理に必要な計算量(楕円点の2倍算および加減算の回数)は、7回(2倍算が4回、加減算が3回)となる。
【0124】
[計算量とテーブルのメモリ容量]
一般の[2]式で示される楕円曲線上のn項のべき乗剰余演算に、上述した冗長2進数変換アルゴリズムを利用する場合、計算量とメモリ容量は以下の通りとなる。
【0125】
まずステップ1の予備処理は計算を必要としない。テーブルを蓄積するためのメモリ容量は、楕円点のビットサイズをmで表すと、
メモリ容量: nm (bit) [11]
となる。
【0126】
ステップ2の主処理の計算量は、
楕円点の2倍算:k
楕円点の加減算:
最大k×(θ(0)+θ(1)+…θ(n))
ここでθ(j)=nCj×(1/2)^n×j,
nCjは、n個のものからj個のものを取る組み合わせ
平均k×(μ(0)+μ(1)+…μ(n))
ここでμ(j)=nCj×(1/3)^j×(2/3)^(n-j)×j
nCjは、n個のものからj個ものを取る組み合わせ
となる。なおここで、kは、べき数Uiのビット数であり、上述した冗長2進数変換法を利用した場合に、変換後の0の出現確率が、最大1/2、平均2/3程度になると仮定している。
【0127】
よって、本実施の形態による計算量(2倍算および加減算の合計)は、
最大で、k×(1+(θ(0)+θ(1)+…θ(n))) [12]
平均で、k×(1+(μ(0)+μ(1)+…μ(n)))
となる。
【0128】
具体的に、暗号で良く利用される、3項の楕円曲線上のべき乗剰余演算
(n=3)において、Uiを160ビット、楕円点を320ビットとするときの計算量とメモリ容量は以下の通りである。
【0129】
計算量 :平均320回(最大360回)
メモリ容量:960(bit)
これにより、従来方法ではnの増加にともなって指数関数的に増大していたメモリ容量の増加を、線形増加に抑えることができる。
【0130】
また、従来方法に比べて増大する計算量も上記計算例の場合、平均で13.9%増、最大で16.9%増であり、計算量の増加を抑えつつ、メモリ容量の削減が可能となる。
【0131】
なお、本実施の形態では、冗長2進数変換アルゴリズムの一例を示したが、冗長2進数変換のアルゴリズムはこの方法に限らない。
【0132】
また、本実施の形態では、式[10]に示す楕円曲線E上の2項のべき乗演算(W=(U1・Q1+U2・Q2))を行なう場合について説明したが、2項のべき乗演算に限らず任意のn項のべき乗演算が可能である。
【0133】
【発明の効果】
以上説明したように、本発明によれば、n項の整数の組(Xi,Yi)(i=1,2,...,n)に対するべき乗演算
Z=(X1^Y1×X2^Y2×…Xn^Yn)
を、効率的にもとめることができかつ、従来方法ではnの増加にともなって指数関数的に増大していた演算に必要なメモリ容量を、線形増加に抑えることができる。
【0134】
また、本発明によれば、n個の楕円曲線E上の点Qi(i=1,2,...,n) およびnの整数値Ui(i=1,2,...,n) に対する楕円曲線E上のべき乗演算
W=(U1・Q1+U2・Q2+…Un・Qn)
を、効率的に求めることができかつ、従来の方法ではnの増加にともなって指数関数的に増大していた演算に必要なメモリ容量を、線形増加に抑えることができる。
【図面の簡単な説明】
【図1】従来技術における楕円曲線上のべき乗演算装置を示す図
【図2】本発明の一実施の形態におけるべき乗演算装置を示す図
【図3】本発明の一実施の形態におけるべき乗算処理のながれを示す図
【符号の説明】
10 テーブル作成部
11 テーブル格納部
12 べき数変換部
13 べき乗処理部
20 被べき乗数格納部
21 べき数変換部
22 べき乗処理部
Claims (1)
- 楕円曲線E上のn個の点Qi(i=1,2,...,n) とn個の整数Ui(i=1,2,...,n) を入力とし、前記整数Ui(i=1,2,...,n) をそれぞれのべき数とする前記楕円曲線E上の点Qiに対するべき乗演算結果
W=(U1・Q1+U2・Q2…Un・Qn)
を出力するべき乗演算装置であって、
前記n個の楕円曲線上の点Qiを記憶する被べき乗数格納部と、
前記整数Uiに対して冗長2進数変換すなわち
Ui=(Bi(k),Bi(k-1)...,Bi(2),Bi(1),Bi(0))
ここでBi(j) ∈{0,1,-1}とする
を満たすBi(j) を出力するべき数変換部と、
前記被べき乗数格納部に記憶された前記n個の楕円曲線上の点Qiと、前記べき数変換部の出力Bi(j) を用いて、S(0)=Oとし、p=0,1,2,...,k-1 に対して(ただし、Oは楕円曲線Eの無限遠点)
S(p+1)=2・S(p)+g(k-1-p)
ここで、g(q)=(B0(q))・Q0+(B1(q))・Q1+(B2(q))・Q2+…+(Bn(q))・Qnとする、
を演算し、楕円曲線E上のべき乗演算結果S(k)を生成する、べき乗処理部
を備えることを特徴とするべき乗演算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04322998A JP3884853B2 (ja) | 1998-02-25 | 1998-02-25 | べき乗演算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP04322998A JP3884853B2 (ja) | 1998-02-25 | 1998-02-25 | べき乗演算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11242586A JPH11242586A (ja) | 1999-09-07 |
JP3884853B2 true JP3884853B2 (ja) | 2007-02-21 |
Family
ID=12658093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP04322998A Expired - Fee Related JP3884853B2 (ja) | 1998-02-25 | 1998-02-25 | べき乗演算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3884853B2 (ja) |
-
1998
- 1998-02-25 JP JP04322998A patent/JP3884853B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11242586A (ja) | 1999-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Adleman et al. | On taking roots in finite fields | |
US7970131B2 (en) | Elliptic curve cryptosystem apparatus, storage medium storing elliptic curve cryptosystem program, and elliptic curve cryptosystem arithmetic method | |
US8504602B2 (en) | Modular multiplication processing apparatus | |
US8498411B1 (en) | Using multiples above two with running totals and reference values other than 0 and 2 (window size) in elliptic curve cryptography scalar multiplication acceleration tables | |
JP4554239B2 (ja) | モンゴメリー類型のモジュラー乗算装置及び方法 | |
US8422669B2 (en) | Method and apparatus for elliptic curve cryptographic processing | |
US20100146028A1 (en) | Method and apparatus for modulus reduction | |
CN101183945A (zh) | 基于旁路算子的椭圆曲线抗旁路攻击方法 | |
Koc et al. | Fast software exponentiation in GF (2/sup k/) | |
JP3884853B2 (ja) | べき乗演算装置 | |
Lamriji et al. | Towards fast ECC signing algorithms for Blockchain | |
Arazi et al. | On calculating multiplicative inverses modulo $2^{m} $ | |
US20040001590A1 (en) | Efficient elliptic curve double-and-add calculator | |
JP2007286380A (ja) | 有限可換群演算方法、装置およびそのプログラム | |
EP1725931B1 (en) | Method for multi-exponentiation or multi-scalar multiplication | |
KR100257123B1 (ko) | 변형된 몽고메리 모듈라 곱셈을 적용한 고속 멱승 방법 | |
JP2000137436A (ja) | 素体上楕円曲線上の点の演算方法およびその装置 | |
Seo et al. | MoTE-ECC based encryption on MSP430 | |
KR100257124B1 (ko) | 공통 피승수 모듈라 곱셈을 이용한 고속 멱승 방법 | |
Takagi | A modular multiplication algorithm with triangle additions | |
JP2005316038A (ja) | 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびプログラム | |
JP3626315B2 (ja) | 剰余算装置、情報処理装置及び剰余算方法 | |
JP3136709B2 (ja) | べき積演算装置 | |
JP2001194996A (ja) | 多項式の除算装置 | |
Khachatrian et al. | Fast multiplication of integers for public-key applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20041208 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041216 |
|
RD07 | Notification of extinguishment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7427 Effective date: 20050124 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060919 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061017 |
|
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: 20061107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061120 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091124 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101124 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |