[go: up one dir, main page]

JP2003288014A - Elliptic curve calculation device and elliptic curve calculation method - Google Patents

Elliptic curve calculation device and elliptic curve calculation method

Info

Publication number
JP2003288014A
JP2003288014A JP2002313361A JP2002313361A JP2003288014A JP 2003288014 A JP2003288014 A JP 2003288014A JP 2002313361 A JP2002313361 A JP 2002313361A JP 2002313361 A JP2002313361 A JP 2002313361A JP 2003288014 A JP2003288014 A JP 2003288014A
Authority
JP
Japan
Prior art keywords
elliptic curve
addition
calculation
scalar multiplication
point
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
Application number
JP2002313361A
Other languages
Japanese (ja)
Other versions
JP4203944B2 (en
JP2003288014A5 (en
Inventor
Yuichi Fuda
裕一 布田
Motoji Omori
基司 大森
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2002313361A priority Critical patent/JP4203944B2/en
Publication of JP2003288014A publication Critical patent/JP2003288014A/en
Publication of JP2003288014A5 publication Critical patent/JP2003288014A5/ja
Application granted granted Critical
Publication of JP4203944B2 publication Critical patent/JP4203944B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

<P>PROBLEM TO BE SOLVED: To provide a high speed elliptic curve calculation device which can use effectively a table that stores coordinates of a certain scalar multiple points like points multiplied by exponentiation of two to a certain point G and so forth in scalar multiplication method using a Montgomery-type elliptic curve. <P>SOLUTION: An elliptic curve calculation device 200 that receives an arbitrary integer k of n bits and outputs scalar-multiplied points k×G against a point G on a Montgomery-type elliptic curve E on an finite field F that is given in advance comprises: a calculation procedure generation unit 210 that generates a calculation procedure that addition on the elliptic curve E with either of G, 2×G, (2<SP>2</SP>)×G,..., (2<SP>(n-1)</SP>)×G as the first addition element is repeated; and a scalar multiplication unit 220 that calculates the scalar-multiplied points k×G by repeating addition on the elliptic curve E, referring to a table memorizing unit 220b that stores values (coordinates) of exponentiation of two against the point G and complying with the generated calculation procedure. <P>COPYRIGHT: (C)2004,JPO

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【発明の属する技術分野】本発明は、楕円曲線上の演算
を行う装置に関し、特に、モンゴメリ型楕円曲線上の点
に対するスカラ倍点を算出する装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an apparatus for performing an operation on an elliptic curve, and more particularly to an apparatus for calculating a scalar multiplication point for a point on a Montgomery type elliptic curve.

【0002】[0002]

【従来の技術】1.公開鍵暗号 近年、コンピュータ技術と通信技術とに基づくデータ通
信が広く普及してきており、このデータ通信において
は、秘密通信方式又はデジタル署名方式が用いられてい
る。ここで、秘密通信方式とは、特定の通信相手以外に
通信内容を漏らすことなく通信を行う方式である。また
デジタル署名方式とは、通信相手に通信内容の正当性を
示したり、発信者の身元を証明する通信方式である。
2. Description of the Related Art Public key cryptography In recent years, data communication based on computer technology and communication technology has become widespread, and in this data communication, a secret communication method or a digital signature method is used. Here, the secret communication method is a method for performing communication without leaking the communication content to anyone other than a specific communication partner. The digital signature method is a communication method that shows the validity of the communication contents to the communication partner and proves the identity of the sender.

【0003】これらの秘密通信方式又はデジタル署名方
式には公開鍵暗号とよばれる暗号方式が用いられる。公
開鍵暗号は通信相手が多数の時、通信相手ごとに異なる
暗号鍵を容易に管理するための方式であり、多数の通信
相手と通信を行うのに不可欠な基盤技術である。公開鍵
暗号を用いる秘密通信では、暗号化鍵と復号化鍵とが異
なり、復号化鍵は秘密にするが、暗号化鍵は公開する。
An encryption method called public key encryption is used for these secret communication methods or digital signature methods. Public key cryptography is a method for easily managing different encryption keys for each communication partner when there are many communication partners, and is an essential basic technology for communicating with many communication partners. In secret communication using public key cryptography, the encryption key and the decryption key are different, and the decryption key is kept secret, but the encryption key is disclosed.

【0004】この公開鍵暗号の安全性の根拠として離散
対数問題が用いられる。離散対数問題には、代表的なも
のとして、有限体上定義されるもの及び楕円曲線上定義
されるものがある(例えば、非特許文献1)。 2.楕円曲線上の離散対数問題 楕円曲線上の離散対数問題について、以下に述べる。
The discrete logarithm problem is used as the basis for the security of this public key cryptography. Typical discrete logarithm problems include one defined on a finite field and one defined on an elliptic curve (for example, Non-Patent Document 1). 2. Discrete Logarithm Problem on Elliptic Curve The discrete logarithm problem on elliptic curve is described below.

【0005】pを素数として、有限体GF(p)上定義
された楕円曲線をEとする。E上の点で、x座標、y座
標が共にGF(p)に属する点全体に形式的な点Oを追
加した集合を考えると、この集合は点Oを零元として群
をなす。楕円曲線の位数とは上記集合の元の個数を示し
ている。G=(gx、gy)とするとき、−Gを−G=
(gx、−gy)として定義する。
Let el be a prime number and E be an elliptic curve defined on a finite field GF (p). Consider a set of points on E in which the formal point O is added to all the points whose both x and y coordinates belong to GF (p), and this set forms a group with the point O as a zero element. The order of the elliptic curve indicates the original number of the above set. When G = (gx, gy), -G is -G =
It is defined as (gx, -gy).

【0006】楕円曲線上の離散対数問題とは、楕円曲線
Eの位数が大きな素数で割り切れる場合に、楕円曲線E
に含まれる元Gをベースポイントとする。このとき、楕
円曲線Eに含まれる与えられた元Yに対して、 (式1) Y=x*G となる自然数xが存在するならば、xを求めよ、という
問題である。ここで、pは素数、GF(p)はp個の元
を持つ有限体である。また、この明細書において、記号
*は、楕円曲線に含まれる元を複数回加算する演算を示
し、x*Gは、次式に示すように、楕円曲線に含まれる
元Gをx回加算することを意味する。 x*G=G+G+G+・・・+G x*Gのような点をGのスカラ倍点という。離散対数問
題を公開鍵暗号の安全性の根拠とするのは、多くの元を
有する有限体GF(p)に対して、上記問題は極めて難
しいからである。
The discrete logarithm problem on the elliptic curve E is the elliptic curve E when the order of the elliptic curve E is divisible by a large prime number.
The base G is the element G included in. At this time, for a given element Y included in the elliptic curve E, if there is a natural number x such that (Equation 1) Y = x * G, the problem is to obtain x. Here, p is a prime number and GF (p) is a finite field having p elements. Further, in this specification, the symbol * indicates an operation for adding an element included in an elliptic curve a plurality of times, and x * G adds an element G included in an elliptic curve x times, as shown in the following equation. Means that. A point such as x * G = G + G + G + ... + G x * G is called a scalar multiplication point of G. The discrete logarithm problem is used as the basis for the security of public key cryptography because the problem is extremely difficult for a finite field GF (p) having many elements.

【0007】3.楕円曲線上の離散対数問題を応用した
エルガマル署名 以下に、上記楕円曲線上の離散対数問題を応用したエル
ガマル署名によるデジタル署名方式について、図32を
用いて、説明する。この図は、上記エルガマル署名によ
るデジタル署名方式の手順を示すシーケンス図である。
ユーザA110、管理センタ120及びユーザB130
は、ネットワークで接続されている。pを素数、有限体
GF(p)上の楕円曲線をEとする。Eのベースポイン
トをGとし、Eの位数をqとする。つまり、qは、 (式2) q*G=0 を満たす最小の正整数である。
3. Elgamal Signature Applying Discrete Logarithm Problem on Elliptic Curve Hereinafter, a digital signature scheme based on Elgamal signature applying the discrete logarithm problem on elliptic curve will be described with reference to FIG. This figure is a sequence diagram showing the procedure of the digital signature method based on the above-mentioned El Gamal signature.
User A110, Management Center 120 and User B130
Are connected by a network. Let p be a prime number and E be an elliptic curve over the finite field GF (p). The base point of E is G, and the order of E is q. That is, q is the smallest positive integer that satisfies (Equation 2) q * G = 0.

【0008】(1)管理センタ120による公開鍵の生
成 管理センタ120は、予め通知されているユーザA11
0の秘密鍵xAを用いて、式3に従って、ユーザA11
0の公開鍵YAを生成する(ステップS141〜S14
2)。 (式3) YA=xA*G その後、管理センタ120は、素数p、楕円曲線E及び
ベースポイントGをシステムパラメータとして公開し、
また、他のユーザB130にユーザA110の公開鍵Y
Aを公開する(ステップS143〜S144)。
(1) Generation of public key by the management center 120 The management center 120 is notified by the user A11 who has been notified in advance.
User A11 according to Equation 3 using secret key xA of 0
A public key YA of 0 is generated (steps S141 to S14).
2). (Formula 3) YA = xA * G After that, the management center 120 publishes the prime number p, the elliptic curve E, and the base point G as system parameters,
In addition, the public key Y of the user A110 is transmitted to the other user B130.
A is disclosed (steps S143 to S144).

【0009】(2)ユーザA110による署名生成 ユーザA110は、乱数kを生成する(ステップS14
5)。次に、ユーザA110は、 (式4) R1=(rx,ry)=k*G を計算し(ステップS146)、 (式5) s×k=m+rx×xA (mod q) から、sを計算する(ステップS147)。ここで、m
は、ユーザA110がユーザB130へ送信するメッセ
ージである。ただし、×は乗算を示している。さらに、
ユーザA110は、得られた(R1、s)を署名として
メッセージmとともに、ユーザB130へ送信する(ス
テップS148)。
(2) Signature Generation by User A110 The user A110 generates a random number k (step S14).
5). Next, the user A110 calculates (Equation 4) R1 = (rx, ry) = k * G (step S146), and calculates s from (Equation 5) s × k = m + rx × xA (mod q). (Step S147). Where m
Is a message transmitted by the user A 110 to the user B 130. However, x has shown multiplication. further,
The user A 110 transmits the obtained (R1, s) as a signature together with the message m to the user B 130 (step S148).

【0010】(3)ユーザB130による署名検証 ユーザB130は、 (式6) s*R1=m*G+rx*YA が成立するかどうか判定することにより、送信者である
ユーザA110の身元を確認する(ステップS14
9)。これは、 (式7) s*R1={((m+rx×xA)/k)×k}*G =(m+rx×xA)*G =m*G+(rx×xA)*G =m*G+rx*YA となることから明らかであるである。
(3) Signature verification by user B130 The user B130 confirms the identity of the user A110 who is the sender by determining whether or not (Equation 6) s * R1 = m * G + rx * YA is satisfied ( Step S14
9). This is (Equation 7) s * R1 = {((m + rx * xA) / k) * k} * G = (m + rx * xA) * G = m * G + (rx * xA) * G = m * G + rx * It is clear from YA.

【0011】4.楕円曲線上の点の加算、2倍算の演算
による計算量 上記に示した楕円曲線上の離散対数問題を応用したエル
ガマル署名によるデジタル署名方式における公開鍵の生
成、署名生成、署名検証のそれぞれにおいて、楕円曲線
上の点の冪倍演算が行われる。例えば、式3に示す「x
A*G」、式4に示す「k*G」、式6に示す「s*R
1」、「m*G」、「rx*YA」は、楕円曲線上の点
のスカラ倍演算である。
4. Addition of points on elliptic curve and calculation amount by doubling operation In each of public key generation, signature generation, and signature verification in the digital signature scheme by the Elgamal signature that applies the discrete logarithm problem on the elliptic curve shown above, , The multiplication of points on the elliptic curve is performed. For example, "x
"A * G", "k * G" shown in Equation 4, "s * R" shown in Equation 6
1 ”,“ m * G ”, and“ rx * YA ”are scalar multiplication operations of points on the elliptic curve.

【0012】楕円曲線の演算公式については、非特許文
献2に詳しく説明されている。楕円曲線の演算公式につ
いて、以下に説明する。楕円曲線の方程式をy^2=
x^3 +a×x+b とし、任意の点Pの座標を(x
1,y1)とし、任意の点Qの座標を(x2,y2)と
する。ここで、R=P+Qで定まる点Rの座標を(x
3,y3)とする。
The calculation formula of the elliptic curve is described in detail in Non-Patent Document 2. The elliptic curve calculation formula will be described below. The equation of the elliptic curve is y ^ 2 =
x ^ 3 + a × x + b and the coordinates of an arbitrary point P are (x
1, y1), and the coordinates of an arbitrary point Q are (x2, y2). Here, the coordinate of the point R determined by R = P + Q is (x
3, y3).

【0013】なお、この明細書において、記号^は、べ
き乗の演算を示し、例えば、2^3は、2×2×2を意
味する。P≠Qの場合、R=P+Qは、加算の演算とな
る。加算の公式を以下に示す。 x3={(y2−y1)/(x2−x1)}^2−x1−x2 y3={(y2−y1)/(x2−x1)}(x1−x3)−y1 P=Qの場合、R=P+Q=P+P=2×Pとなり、R
=P+Qは、2倍算の演算となる。2倍算の公式を以下
に示す。 x3={(3x1^2+a)/2y1}^2−2x1 y3={(3x1^2+a)/2y1}(x1−x3)−y1
In this specification, the symbol ^ indicates a power operation, and 2 ^ 3 means 2 × 2 × 2, for example. When P ≠ Q, R = P + Q is an addition operation. The formula of addition is shown below. x3 = {(y2-y1) / (x2-x1)} ^ 2-x1-x2 y3 = {(y2-y1) / (x2-x1)} (x1-x3) -y1 When P = Q, R = P + Q = P + P = 2 × P, and R
= P + Q is a doubling operation. The formula for doubling is shown below. x3 = {(3x1 ^ 2 + a) / 2y1} ^ 2-2x1 y3 = {(3x1 ^ 2 + a) / 2y1} (x1-x3) -y1

【0014】なお、上記演算は、楕円曲線が定義される
有限体上での演算である。上記に示すように、2項組座
標であるアフィン座標、すなわち今まで述べてきた座標
において、楕円曲線上の加算(以下、「楕円曲線加算」
ともいう。)を行う場合に、楕円曲線上の加算1回につ
き、1回の有限体上の逆数計算が必要となる。一般に、
有限体上の逆数計算は、有限体上での乗算計算と比較し
て、10倍程度の計算量を必要とする。
The above calculation is a calculation on a finite field in which an elliptic curve is defined. As shown above, in the affine coordinates that are binary coordinates, that is, in the coordinates described so far, addition on the elliptic curve (hereinafter, “elliptic curve addition”)
Also called. ), One reciprocal calculation on a finite field is required for each addition on the elliptic curve. In general,
The reciprocal calculation on the finite field requires about 10 times the calculation amount as compared with the multiplication calculation on the finite field.

【0015】そこで、計算量を削減することを目的とし
て、射影座標と呼ばれる3項組の座標が用いられる。射
影座標とは、3項組X、Y、Zからなる座標のことであ
って、座標(X,Y,Z)と座標(X',Y',Z')と
に対して、ある数nが存在して、X'=nX、Y'=n
Y、Z'=nZなる関係があるならば、(X,Y,Z)
=(X',Y',Z')とするものである。
Therefore, for the purpose of reducing the calculation amount, coordinates of a triplet called projective coordinates are used. Projective coordinates are coordinates consisting of a triplet X, Y, Z, and a certain number n with respect to coordinates (X, Y, Z) and coordinates (X ′, Y ′, Z ′). Exists, X '= nX, Y' = n
If there is a relation of Y, Z '= nZ, (X, Y, Z)
= (X ', Y', Z ').

【0016】アフィン座標(x,y)と射影座標(X,
Y,Z)とは、 (x,y) → (x,y,1) (X,Y,Z)→ (X/Y,Y/Z) (Z≠0のと
き) なる関係で、互いに対応している。ここで、記号→は、
次に示す意味で用いている。元P1に、元P2の一つの
元が対応するとき、P1→P2と表記する。零元Oは、
射影座標で表せ、O=(0,1,0)となる。
Affine coordinates (x, y) and projective coordinates (X,
Y, Z) are (x, y) → (x, y, 1) (X, Y, Z) → (X / Y, Y / Z) (when Z ≠ 0) and correspond to each other. is doing. Where the symbol → is
It is used in the following meaning. When one element of the element P2 corresponds to the element P1, it is expressed as P1 → P2. Reigen O is
It can be expressed in projective coordinates, and O = (0,1,0).

【0017】以下、楕円曲線の演算は、すべて、射影座
標で行われるものとする。次に、射影座標上の楕円曲線
の加算公式、2倍公式について説明する。これらの公式
は、もちろん、前に述べたアフィン座標における加算公
式、2倍公式と整合性のあるものである。冪倍(楕円曲
線上の点のスカラ倍)の演算は、楕円曲線上の点の加
算、2倍算の演算の繰り返しによって実現できる。この
冪倍の演算のうち、加算の計算量は、楕円曲線のパラメ
ータに依存しないが、2倍算の計算量は、楕円曲線のパ
ラメータに依存する。
Hereinafter, it is assumed that all elliptic curve calculations are performed in projective coordinates. Next, the addition formula and the doubling formula of the elliptic curve on the projective coordinates will be described. These formulas are, of course, consistent with the addition and doubling formulas in affine coordinates mentioned earlier. The operation of multiplication by a power (scalar multiplication of a point on an elliptic curve) can be realized by repeating addition and doubling of points on the elliptic curve. In this power operation, the calculation amount of addition does not depend on the parameters of the elliptic curve, but the calculation amount of doubling depends on the parameters of the elliptic curve.

【0018】ここでは、pを160ビットの素数とし、
有限体GF(p)上の楕円曲線をE:y^2 = x^
3 +ax+b とし、楕円曲線E上の元P、Qをそれ
ぞれ、P=(X1,Y1,Z1)、 Q=(X2,Y
2,Z2)で表すとき、 R=(X3,Y3,Z3)=P+Q を以下のようにして、求める。
Here, p is a 160-bit prime number,
Let elliptic curve on the finite field GF (p) be E: y ^ 2 = x ^
3 + ax + b, and the elements P and Q on the elliptic curve E are P = (X1, Y1, Z1) and Q = (X2, Y
2, Z2), R = (X3, Y3, Z3) = P + Q is calculated as follows.

【0019】(i)P≠Qの場合 この場合、加算の演算となる。 (step 1-1) 中間値の計算 以下を計算する。 (式8) U1=X1×Z2^2 (式9) U2=X2×Z1^2 (式10) S1=Y1×Z2^3 (式11) S2=Y2×Z1^3 (式12) H=U2−U1 (式13) r=S2−S1 (step 1-2) R=(X3,Y3,Z3)の計算 以下を計算する。 (式14) X3=−H^3−2×U1×H^2+r^2 (式15) Y3=−S1×H^3+r×(U1×H^2−X3) (式16) Z3=Z1×Z2×H(I) When P ≠ Q In this case, an addition operation is performed. (step 1-1) Calculation of intermediate value Calculate the following:   (Equation 8) U1 = X1 × Z2 ^ 2   (Formula 9) U2 = X2 × Z1 ^ 2   (Formula 10) S1 = Y1 × Z2 ^ 3   (Formula 11) S2 = Y2 × Z1 ^ 3   (Formula 12) H = U2-U1   (Formula 13) r = S2-S1  (step 1-2) Calculation of R = (X3, Y3, Z3)   Calculate the following:   (Formula 14) X3 = -H ^ 3-2xU1xH ^ 2 + r ^ 2   (Equation 15) Y3 = -S1 * H ^ 3 + r * (U1 * H ^ 2-X3)   (Formula 16) Z3 = Z1 × Z2 × H

【0020】(ii)P=Qの場合(すなわち、R=2
P) この場合、2倍算の演算となる。 (step 2-1) 中間値の計算 以下を計算する。 (式17) S=4×X1×Y1^2 (式18) M=3×X1^2+a×Z1^4 (式19) T=−2×S+M^2 (step 2-2) R=(X3,Y3,Z3)の計算 以下を計算する。 (式20) X3=T (式21) Y3=−8×Y1^4+M×(S−T) (式22) Z3=2×Y1×Z1
(Ii) When P = Q (that is, R = 2)
P) In this case, the calculation is doubled. (step 2-1) Calculation of intermediate value Calculate the following. (Expression 17) S = 4 * X1 * Y1 ^ 2 (Expression 18) M = 3 * X1 ^ 2 + a * Z1 ^ 4 (Expression 19) T = -2 * S + M ^ 2 (step 2-2) R = (X3 , Y3, Z3) The following is calculated. (Formula 20) X3 = T (Formula 21) Y3 = -8 * Y1 ^ 4 + M * (S-T) (Formula 22) Z3 = 2 * Y1 * Z1

【0021】次に、楕円曲線の加算、2倍算を行う場合
の計算量について説明する。ここで、有限体GF(p)
上の1回の乗算による計算量を1Mul、1回の2乗算
による計算量を1×Sqで表す。なお、一般のマイクロ
プロセッサにおいては、1×Sq≒0.8×Mulであ
る。
Next, the amount of calculation for performing addition and doubling of an elliptic curve will be described. Where finite field GF (p)
The calculation amount by the above-mentioned one multiplication is represented by 1 Mul, and the calculation amount by the one-time multiplication is represented by 1 × Sq. In a general microprocessor, 1 × Sq≈0.8 × Mul.

【0022】上記の例によると、P≠Qの場合に示され
ている楕円曲線上の加算の計算量は、式8〜式16にお
いて、乗算の回数及び2乗算の回数をカウントすること
により得られ、12×Mul+4×Sqである。これ
は、式8、9、10、11、14、15、16における
加算の計算量は、それぞれ、1×Mul+1×Sq、1
×Mul+1×Sq、2×Mul、2×Mul、2×M
ul+2×Sq、2×Mul、2×Mulであることか
ら明らかである。
According to the above example, the calculation amount of addition on the elliptic curve shown in the case of P ≠ Q is obtained by counting the number of multiplications and the number of multiplications in Equations 8 to 16. Is 12 × Mul + 4 × Sq. This means that the calculation amount of addition in the equations 8, 9, 10, 11, 14, 15, 16 is 1 × Mul + 1 × Sq, 1 respectively.
XMul + 1xSq, 2xMul, 2xMul, 2xM
It is clear from ul + 2 × Sq, 2 × Mul, and 2 × Mul.

【0023】また、上記の例によると、P=Qの場合に
示されている楕円曲線上の2倍算の計算量は、式17〜
式22において、乗算の回数及び2乗算の回数をカウン
トすることにより得られ、4×Mul+6×Sqであ
る。これは、式17、18、19、21、22における
2倍算の計算量は、それぞれ、1×Mul+1×Sq、
1×Mul+3×Sq、1×Sq、1×Mul+1×S
q、1×Mulであることから明らかである。
Further, according to the above example, the calculation amount of the doubling on the elliptic curve shown in the case of P = Q is calculated by the equations 17 to
In Expression 22, it is 4 × Mul + 6 × Sq, which is obtained by counting the number of multiplications and the number of multiplications. This is because the calculation amount of the doubling in Expressions 17, 18, 19, 21, and 22 is 1 × Mul + 1 × Sq,
1 × Mul + 3 × Sq, 1 × Sq, 1 × Mul + 1 × S
It is clear from q and 1 × Mul.

【0024】なお、上記回数のカウントにおいて、例え
ば、式14のH^3については、 H^3=H^2×H と展開できるので、H^3の計算量は、1×Mul+1
×Sqとし、式18のZ1^4については、 Z1^4=(Z1^2)^2 と展開できるので、Z1^4の計算量は、2Sqとす
る。
In the counting of the number of times, for example, for H ^ 3 in equation 14, it can be expanded to H ^ 3 = H ^ 2 × H, so the calculation amount of H ^ 3 is 1 × Mul + 1.
XSq, and Z1 ^ 4 in Equation 18 can be expanded to Z1 ^ 4 = (Z1 ^ 2) ^ 2, so the calculation amount of Z1 ^ 4 is 2Sq.

【0025】また、式14のH^2については、前述の
H^3の計算のプロセスにおいて、H^2が算出されて
いるので、H^2の計算量は再度カウントしない。ま
た、乗算の回数のカウントの際、ある値に小さい値を乗
じて行われる乗算の回数は、カウントしない。その理由
を以下に説明する。ここで言う小さい値とは、式8〜式
22において、乗算の対象となる小さい固定値であり、
具体的には、2、3、4、8などの値である。これらの
値は、多くとも4ビットの2進数で表現できる。一方、
その他の変数は、通常、160ビットの値を有してい
る。
Regarding H ^ 2 in the equation 14, since H ^ 2 has been calculated in the process of calculating H ^ 3, the calculation amount of H ^ 2 is not counted again. Further, when counting the number of multiplications, the number of multiplications performed by multiplying a certain value by a small value is not counted. The reason will be described below. The small value referred to here is a small fixed value to be multiplied in Expressions 8 to 22,
Specifically, the values are 2, 3, 4, 8 and the like. These values can be represented by a 4-bit binary number at most. on the other hand,
The other variables usually have a value of 160 bits.

【0026】一般に、マイクロプロセッサにおいて、乗
数と被乗数との乗算は、被乗数のシフトと加算の繰り返
しにより行われる。すなわち、2進数で表現される乗数
の各ビット毎に、このビットが1であるならば、2進数
で表現される被乗数の最下位ビットが、このビットの存
在する位置に一致するように、被乗数をシフトして、1
つのビット列を得る。乗数の全ビットについて、このよ
うにして得られた少なくとも1つのビット列をすべて加
算する。
Generally, in a microprocessor, multiplication of a multiplier and a multiplicand is performed by repeating shift and addition of the multiplicand. That is, for each bit of the multiplier represented by a binary number, if this bit is 1, the multiplicand represented so that the least significant bit of the multiplicand represented by a binary number matches the position where this bit exists. Shift 1
Get one bit string. For all bits of the multiplier, add at least one bit string thus obtained.

【0027】例えば、160ビットの乗数と160ビッ
トの被乗数との乗算においては、160ビットの被乗数
を160回シフトし、160個のビット列を得、得られ
た160個のビット列を加算する。一方、4ビットの乗
数と160ビットの被乗数との乗算においては、160
ビットの被乗数を4回シフトし、4個のビット列を得、
得られた4個のビット列を加算する。
For example, in the multiplication of a 160-bit multiplier and a 160-bit multiplicand, the 160-bit multiplicand is shifted 160 times to obtain 160 bit strings, and the obtained 160 bit strings are added. On the other hand, in the multiplication of the 4-bit multiplier and the 160-bit multiplicand, 160
Shift the multiplicand of bits four times to get four bit strings,
The four obtained bit strings are added.

【0028】乗算は、上記に示すようにして行われるの
で、乗算がある値に小さい値を乗じて行われる場合に
は、前記繰り返しの回数が少なくなる。従って、その計
算量は少ないと見なせるので、乗算の回数にカウントし
ない。以上説明したように、楕円曲線の2倍算を行う場
合において、式18には、楕円曲線のパラメータaが含
まれている。このパラメータaの値として、例えば、小
さい値を採用すると、楕円曲線上の2倍算の計算量は、
1Mul分削減でき、3Mul+6Sqとなる。なお、
加算に関しては、楕円曲線のパラメータを変化させて
も、計算量は変わらない。楕円曲線のスカラ倍演算は次
のように行う。
Since the multiplication is performed as described above, when the multiplication is performed by multiplying a certain value by a small value, the number of times of the repetition is reduced. Therefore, the amount of calculation can be considered to be small, and therefore the number of multiplications is not counted. As described above, in the case of performing the doubling of the elliptic curve, the equation 18 includes the parameter a of the elliptic curve. If, for example, a small value is adopted as the value of this parameter a, the calculation amount of doubling on the elliptic curve becomes
It can be reduced by 1 Mul, resulting in 3 Mul + 6Sq. In addition,
Regarding the addition, even if the parameters of the elliptic curve are changed, the calculation amount does not change. Scalar multiplication of an elliptic curve is performed as follows.

【0029】(従来技術1)pを160ビットの素数と
し、有限体GF(p)上の楕円曲線をEとし、E(GF
(p))の任意の元をGとする。これらのパラメータを
基にk*Gの計算をする。ここで、kの2進表現を、 k=k[159]×2^159+……+k[2]×2^2+k[1]×2+k [0] =[k[159]、……、k[2]、k[1]、k[0]] (k[0]、 ……、k[159]=0または、1) とする。 step1:c=159、S=Oとする。 step2:k[c]=1のとき、S←S+Gとする。 step3:c←c−1とする。 step4:c<0であれば、Sを出力して終了。それ
以外は、S←S+Sとして、step2へ。
(Prior Art 1) p is a 160-bit prime number, E is an elliptic curve over a finite field GF (p), and E (GF
Let G be an arbitrary element of (p)). K * G is calculated based on these parameters. Here, the binary representation of k is k = k [159] × 2 ^ 159 + ... + k [2] × 2 ^ 2 + k [1] × 2 + k [0] = [k [159], ..., k [ 2], k [1], k [0]] (k [0], ..., K [159] = 0 or 1). Step 1: c = 159 and S = O. Step 2: When k [c] = 1, S ← S + G. Step 3: c ← c-1. Step 4: If c <0, output S and end. Otherwise, set S ← S + S and go to step 2.

【0030】上記の計算量は、k[c]=1になる確率
を1/2と考え、1回の楕円曲線加算をEAdd、2倍
算をEDobとすると、80×EAdd+160×ED
obとなる。一般に、p、kをそれぞれnビットの素
数、整数とするとき、計算量は、 1/2×n×EAdd+n×EDob である。
In the above calculation amount, assuming that the probability that k [c] = 1 is ½, and one addition of the elliptic curve is EAdd, and doubling is EDob, 80 × EAAdd + 160 × ED
It becomes ob. In general, when p and k are n-bit prime numbers and integers, respectively, the calculation amount is ½ × n × EAAdd + n × EDob.

【0031】上記のスカラ倍演算において、(2^i)
*G(i=1、2、……、159)を予め計算してお
き、その結果をテーブルに保存している場合、以下のよ
うに計算可能である。
In the above scalar multiplication operation, (2 ^ i)
When G (i = 1, 2, ..., 159) is calculated in advance and the result is stored in the table, the calculation can be performed as follows.

【0032】(従来技術2)pを160ビットの素数と
し、有限体GF(p)上の楕円曲線をEとし、E(GF
(p))の任意の元をGとする。また、(2^i)*G
(i=1、2、……、159)の座標を予め計算してい
るものとする。このとき、これらのパラメータを基にk
*Gの計算をする。 step1:c=159,S=Oとする。 step2:k[c]=1のとき、S←S+2^c*G
とする。 step3:c←c−1とする。 step4:c<0であれば、Sを出力して終了。それ
以外は、step2へ。
(Prior Art 2) p is a 160-bit prime number, E is an elliptic curve over a finite field GF (p), and E (GF
Let G be an arbitrary element of (p)). Also, (2 ^ i) * G
It is assumed that the coordinates (i = 1, 2, ..., 159) are calculated in advance. At this time, based on these parameters, k
* Calculate G. Step 1: c = 159 and S = O. step2: When k [c] = 1, S ← S + 2 ^ c * G
And Step 3: c ← c-1. Step 4: If c <0, output S and end. Otherwise, go to step 2.

【0033】上記方法では、楕円曲線加算を行わないの
で、計算量は、80×EAddである。一般に、p、k
をそれぞれnビットの素数、整数とするとき、計算量
は、1/2×n×EDobである。このように、(2^
i)*Gを予め計算するため、計算量が削減できる。従
来技術2は、3のエルガマル署名における楕円曲線のベ
ース点Gのスカラ倍演算で使用できる。これは、ベース
点Gはシステムパラメータであるためである。
In the above method, since elliptic curve addition is not performed, the calculation amount is 80 × EAAdd. Generally p, k
Are respectively n-bit prime numbers and integers, the calculation amount is 1/2 × n × EDob. Thus, (2 ^
i) Since * G is calculated in advance, the amount of calculation can be reduced. The prior art 2 can be used in the scalar multiplication operation of the base point G of the elliptic curve in the 3 Elgamal signature. This is because the base point G is a system parameter.

【0034】5.モンゴメリ型楕円曲線 上記の楕円曲線は、その方程式がy^2=x^3+a×
x+bの形をしているもののみである。この楕円曲線は
ワイヤーシュトラス型楕円曲線とよばれる。一方、方程
式がEm:B×y^2=x^3+A×x^2+xの形を
している楕円曲線をモンゴメリ型楕円曲線とよぶ。この
楕円曲線Em上の点Gをとり、そのn1倍点及びn2倍
点をそれぞれ、n1*G=(X1,Y1,Z1)、 n
2*G=(X2,Y2,Z2)、(n1−n2)*G=
(X3',Y3',Z3')で表すとき、 (n1+n2)*G=(X3,Y3,Z3)=n1*G
+n2*G を以下のようにして、求める。 (i)n1≠n2のとき(加算) (step1−1)中間値の計算 U1=X1+Z1 U2=X2+Z2 V1=X1−Z1 V2=X2−Z2 (step1−2)(n1+n2)*G=(X3,Y
3,Z3)の計算 X3=Z3'×(V1×U2+U1×V2)^2 Z3=X3'×(V1×U2−U1×V2)^2 (ii)n1=n2のとき(2倍算) (step2−1)中間値の計算 U1=X1+Z1 V1=X1−Z1 (step2−2)(n1+n2)*G=(X3,Y
3,Z3)の計算 X3=V1^2×U1^2 Z3=(4×X1×Z1)×(V1^2+(A+2)/
4×(4×X1×Z1) step2−2の「(A+2)/4」は予め計算可能で
あるため無視すると、それぞれの計算量は、加算が4×
Mul+2×Sq(Z3'=1のときは3×Mul+2
×Sq)、2倍算が3×Mul+2×Sqになる。上記
4で述べたようにワイヤーシュトラス型楕円曲線の点の
加算、2倍算の計算量は、それぞれ、12×Mul+4
×Sq、4×Mul+6×Sqである。よって、モンゴ
メリ型楕円曲線の方が点の加算、2倍算が高速である。
なお、モンゴメリ型楕円曲線においても、(X1,Y
1,Z1)の(−1)倍は、(X1,−Y1,Z1)で
ある。また、モンゴメリ型楕円曲線では、Y座標が得ら
れない。なお、モンゴメリ型楕円曲線については、非特
許文献3に詳述されている。
5. Montgomery type elliptic curve The equation of the above elliptic curve is y ^ 2 = x ^ 3 + ax
Only those in the form of x + b. This elliptic curve is called the Wire-Strass type elliptic curve. On the other hand, an elliptic curve whose equation is Em: B × y ^ 2 = x ^ 3 + A × x ^ 2 + x is called a Montgomery-type elliptic curve. The point G on the elliptic curve Em is taken, and the n1 times point and the n2 times point thereof are respectively n1 * G = (X1, Y1, Z1), n
2 * G = (X2, Y2, Z2), (n1-n2) * G =
When expressed by (X3 ′, Y3 ′, Z3 ′), (n1 + n2) * G = (X3, Y3, Z3) = n1 * G
+ N2 * G is calculated as follows. (I) When n1 ≠ n2 (addition) (step1-1) Calculation of intermediate value U1 = X1 + Z1 U2 = X2 + Z2 V1 = X1-Z1 V2 = X2-Z2 (step1-2) (n1 + n2) * G = (X3) Y
3, Z3) X3 = Z3 ′ × (V1 × U2 + U1 × V2) ^ 2 Z3 = X3 ′ × (V1 × U2-U1 × V2) ^ 2 (ii) When n1 = n2 (double calculation) ( Step 2-1) Calculation of intermediate value U1 = X1 + Z1 V1 = X1-Z1 (step2-2) (n1 + n2) * G = (X3, Y
3, Z3) calculation X3 = V1 ^ 2 × U1 ^ 2 Z3 = (4 × X1 × Z1) × (V1 ^ 2 + (A + 2) /
Since “(A + 2) / 4” of 4 × (4 × X1 × Z1) step 2-2 can be calculated in advance, the calculation amount of each is 4 × when ignored.
Mul + 2 × Sq (3 × Mul + 2 when Z3 ′ = 1)
× Sq), the doubling becomes 3 × Mul + 2 × Sq. As described in 4, the calculation amount for addition and doubling of the points of the Wire-Strass type elliptic curve is 12 × Mul + 4, respectively.
× Sq, 4 × Mul + 6 × Sq. Therefore, the Montgomery-type elliptic curve is faster in point addition and doubling.
Even in the Montgomery-type elliptic curve, (X1, Y
(-1) times (1,1, Z1) is (X1, -Y1, Z1). In addition, the Y coordinate cannot be obtained from the Montgomery elliptic curve. The Montgomery elliptic curve is described in detail in Non-Patent Document 3.

【0035】以上のように、モンゴメリ型楕円曲線は高
速演算が可能である。しかし、n1*Gとn2*Gの加
算において、(n1−n2)*Gの座標が必要になるた
め、スカラ倍演算において、ワイヤーシュトラス型楕円
曲線のように2進展開ができない。例えば、5*Gを計
算する場合、5=2×2+1であるため、2*Gを計算
した後、2*(2*G)=4*Gを計算し、さらに(4
*G)+Gを計算する。ところが、(2*2*G)とG
との加算において、それらの点の差(2×2−1)*G
=3*Gを求めなければならない。したがって、従来技
術1のようなスカラ倍演算方法が使用できない。
As described above, the Montgomery-type elliptic curve can be operated at high speed. However, in the addition of n1 * G and n2 * G, the coordinates of (n1-n2) * G are required, and therefore the binary expansion cannot be performed in the scalar multiplication operation like the Wire-Strass elliptic curve. For example, when calculating 5 * G, since 5 = 2 × 2 + 1, 2 * G is calculated, then 2 * (2 * G) = 4 * G, and then (4
* G) + G is calculated. However, (2 * 2 * G) and G
And the difference of those points (2 × 2-1) * G
= 3 * G must be obtained. Therefore, the scalar multiplication operation method like the prior art 1 cannot be used.

【0036】そこで、以下のようにして計算する。 (従来技術3)pをnビットの素数とし、EをGF
(p)上のモンゴメリ型楕円曲線、GをE(GF
(p))の元とする。k=2^(n−1)+k[1]×
2^(n−2)+……+k[n−2]×2+k[n−
1]として、k*Gの計算をする。
Therefore, the calculation is performed as follows. (Prior Art 3) p is an n-bit prime number, and E is GF
(P) Montgomery-type elliptic curve, G to E (GF
(P)). k = 2 ^ (n-1) + k [1] ×
2 ^ (n-2) + ... + k [n-2] × 2 + k [n-
1], k * G is calculated.

【0037】S[i],T[i]を以下のように定義す
る。 S[i]=(2^i+k[1]×2^(i−1)+……
+k[i−1]×2+k[i])*G T[i]=S[i]+G step1:i=1、S[0]=Gとする。 step2:T[0]=2*Gを計算する。 step3:k[i+1]=0であるか判定し、k[i
+1]=0のとき、以下のようにする。 S[i+1]=2*S[i] T[i+1]=S[i]+T[i] それ以外は、以下のように計算する S[i+1]=S[i]+T[i] T[i+1]=2*T[i] step4:i←i+1とする。 step5:i>n−1であるか判定し、i>n−1で
ある場合、S[n]をk*Gとして出力する。それ以外
は、step3へ。
S [i] and T [i] are defined as follows. S [i] = (2 ^ i + k [1] × 2 ^ (i-1) + ...
+ K [i−1] × 2 + k [i]) * G T [i] = S [i] + G step1: i = 1 and S [0] = G. Step 2: Calculate T [0] = 2 * G. step3: It is determined whether k [i + 1] = 0 and k [i
When +1] = 0, the following is done. S [i + 1] = 2 * S [i] T [i + 1] = S [i] + T [i] Otherwise, calculate as follows: S [i + 1] = S [i] + T [i] T [i + 1 ] = 2 * T [i] step4: i ← i + 1. Step 5: It is determined whether i> n−1, and if i> n−1, S [n] is output as k * G. Otherwise, go to step 3.

【0038】図33は、このような従来技術3における
スカラ倍演算の計算手順を模式的に示す計算フロー図で
ある。ここでは、右から左に向かって、加算又は2倍算
を繰り返す様子が示されている。なお、本図において、
実線矢印は楕円曲線上の加算を示し、点線矢印は楕円曲
線上の2倍算を示し、矢印上の円で囲まれた数値は加算
の順番(それまでに行った加算の合計回数)を示し、矢
印上の括弧で囲まれた数値は2倍算の順番(それまでに
行った2倍算の合計回数)を示す。例えば、第1の加算
(丸数値1の加算)は、Gと2*Gとの楕円曲線上の加
算を行って3*Gを算出することを示し、また、第1の
2倍算(括弧付き数値1の加算)は、Gに対して楕円曲
線上の2倍算を行って2*Gを算出することを示してい
る。
FIG. 33 is a calculation flow chart schematically showing the calculation procedure of the scalar multiplication operation in the prior art 3 as described above. Here, it is shown that addition or doubling is repeated from right to left. In this figure,
Solid arrows indicate additions on the elliptic curve, dotted arrows indicate doubling on the elliptic curve, and numbers in circles on the arrows indicate the order of additions (total number of additions made so far). , The numbers in parentheses above the arrows indicate the order of doubling (the total number of doublings performed so far). For example, the first addition (addition of circled value 1) indicates that 3 * G is calculated by performing addition on the elliptic curve of G and 2 * G, and the first doubling (parentheses) The addition of the subscripted number 1) indicates that 2 * G is calculated by performing doubling on G on the elliptic curve.

【0039】この方法によれば、加算の対象となる2つ
の要素(加算要素)の差が常にG(既知)となっている
ので、その差の算出手間が不要となり、その計算量は、
加算と2倍算に要する正味の時間、つまり、n×EAd
d+n×EDobで済む。
According to this method, since the difference between the two elements (addition elements) to be added is always G (known), the labor for calculating the difference is unnecessary, and the calculation amount is
Net time required for addition and doubling, that is, n × EAd
d + n × EDob is enough.

【0040】具体的には、Gが既知であることから、Z
座標が1と考えることができるため、EAdd=3×M
ul+2×Sq、EDob=3×Mul+2×Sqであ
る。ただし、Mul、Sqはそれぞれ、GF(p)の乗
算、2乗算の計算量であり、一般にSq=0.8×Mu
lである。これらの式を代入すると、従来技術3の計算
量は、 n×(3×Mul+2×Sq)+n×(3×Mul+2
×Sq)=6×n×Mul+4×n×Sq=46/5×
n×Mul となる。
Specifically, since G is known, Z
Since the coordinate can be considered as 1, EAdd = 3 × M
ul + 2 × Sq and EDob = 3 × Mul + 2 × Sq. However, Mul and Sq are the calculation amounts of multiplication and multiplication of GF (p), respectively, and generally Sq = 0.8 × Mu.
It is l. By substituting these equations, the calculation amount of the prior art 3 is n × (3 × Mul + 2 × Sq) + n × (3 × Mul + 2
× Sq) = 6 × n × Mul + 4 × n × Sq = 46/5 ×
It becomes n × Mul.

【0041】[0041]

【非特許文献1】ニイルコブリッツ著 "ア コウス
イン ナンバア セオリイ アンド クリプトグラヒ
イ"(Neal Koblitz, " A Course in Number theory and
Cryptography", Springer-Verlag,1987)
[Non-Patent Document 1] Nikol Blitz "Acous
In Namba Atheory and Cryptgrahy (Neal Koblitz, "A Course in Number theory and
Cryptography ", Springer-Verlag, 1987)

【0042】[0042]

【非特許文献2】"Efficient elliptic curve exponent
iation"(Miyaji, Ono, and Cohen著、Advances in cry
ptology-proceedings of ICICS'97, Lecture notes i
n computer science, 1997, Springer-verlag, 282-29
0.)
[Non-Patent Document 2] "Efficient elliptic curve exponent
iation "(Miyaji, Ono, and Cohen, Advances in cry
ptology-proceedings of ICICS'97, Lecture notes i
n computer science, 1997, Springer-verlag, 282-29
0.)

【0043】[0043]

【非特許文献3】"Speeding the Pollard and Elliptic
Curve Methods of Factorization"(P.L.Montgomery著,
Math. of Comp. 48, 1987, pp.243-264)
[Non-Patent Document 3] "Speeding the Pollard and Elliptic
Curve Methods of Factorization "(PL Montgomery,
Math. Of Comp. 48, 1987, pp.243-264)

【0044】[0044]

【発明が解決しようとする課題】しかしながら、上記従
来技術3の計算方法は、従来技術2のように(2^i)
*Gを予め計算しておく(テーブルを利用する)ことを
考えると、(2^i)*Gの点を使用するアルゴリズム
とはなっていないために、従来技術2のようには計算量
が削減されず、(2^i)*Gを予め計算することのメ
リットが少ない。また、モンゴメリ型楕円曲線のスカラ
倍演算において、このような(2^i)*Gなどのスカ
ラ倍点を予め計算することが有効になるような方法が存
在しない。したがって、モンゴメリ型楕円曲線は、従来
技術3のようにスカラ倍点のテーブルをもたない方法に
おいては高速であるが、テーブルをもつ場合に有効な方
法が存在しないという問題を有している。
However, the calculation method of the prior art 3 is (2 ^ i) like the prior art 2.
Considering that * G is calculated in advance (using a table), the algorithm does not use the point of (2 ^ i) * G. There is no reduction, and there is little merit in pre-calculating (2 ^ i) * G. In addition, in the scalar multiplication operation of a Montgomery-type elliptic curve, there is no method that makes it effective to calculate a scalar multiplication point such as (2 ^ i) * G in advance. Therefore, the Montgomery-type elliptic curve is fast in the method that does not have the table of the scalar multiplication points as in the case of the conventional technique 3, but has a problem that there is no effective method when the table is provided.

【0045】つまり、従来のモンゴメリ型楕円曲線のス
カラ倍演算方法は、ある点の2のべき乗倍(スカラ倍)
点のテーブルをもつ場合に有効な方法になっていないと
いう問題点がある。
That is, the conventional scalar multiplication operation method of the Montgomery-type elliptic curve is a power of 2 of a certain point (scalar multiplication).
There is a problem that it is not an effective method when there is a table of points.

【0046】また、上述の説明から分かるように、モン
ゴメリ型楕円曲線上での加算及び2倍算では、x座標
(3項組の射影座標では、x座標とz座標)は得られる
が、y座標は得られないという問題点もある。そのため
に、従来のモンゴメリ型楕円曲線のスカラ倍演算方法
は、スカラ倍点のy座標が必要とされる楕円曲線暗号に
適用することができない。
As can be seen from the above description, x-coordinates (x-coordinates and z-coordinates in the projective coordinates of the triplet) can be obtained by addition and doubling on the Montgomery-form elliptic curve, but y There is also the problem that coordinates cannot be obtained. Therefore, the conventional Montgomery-type elliptic curve scalar multiplication method cannot be applied to the elliptic curve cryptography in which the y coordinate of the scalar multiplication point is required.

【0047】そこで、本発明は、モンゴメリ型楕円曲線
におけるスカラ倍演算方法において、ある点Gの2のべ
き乗倍等の一定のスカラ倍点の座標を格納したテーブル
を有効活用することが可能な高速な楕円曲線演算装置等
を提供することを第1の目的とする。
Therefore, according to the present invention, in a scalar multiplication operation method on a Montgomery-type elliptic curve, it is possible to effectively use a table storing the coordinates of a constant scalar multiplication point such as a power of 2 of a certain point G. A first object is to provide a simple elliptic curve calculation device and the like.

【0048】また、上記スカラ倍演算で得られたスカラ
倍点のx座標だけでなく、y座標をも生成することが可
能な楕円曲線演算装置等を提供することを第2の目的と
する。
A second object of the present invention is to provide an elliptic curve calculation device capable of generating not only the x coordinate of the scalar multiplication point obtained by the scalar multiplication operation but also the y coordinate thereof.

【0049】[0049]

【課題を解決するための手段】上記第1の目的を達成す
るために、本発明に係る楕円曲線演算装置は、nビット
の任意の整数kを入力とし、予め与えられた有限体F上
のモンゴメリ型楕円曲線E上の点Gに対して、スカラ倍
点k*Gを出力する楕円曲線演算装置であって、G,2
*G,(2^2)*G,…,(2^(n−1))*Gの
いずれかを第1加算要素とする前記楕円曲線E上の加算
を繰り返すことによって前記スカラ倍点k*Gを算出す
るスカラ倍演算手段を備えることを特徴とする。
In order to achieve the above first object, an elliptic curve calculation device according to the present invention takes an n-bit arbitrary integer k as an input and puts it on a finite field F given in advance. An elliptic curve calculation device for outputting a scalar multiplication point k * G with respect to a point G on a Montgomery type elliptic curve E.
The scalar multiplication point k is obtained by repeating addition on the elliptic curve E with any one of * G, (2 ^ 2) * G, ..., (2 ^ (n-1)) * G as the first addition element. It is characterized by comprising a scalar multiplication unit for calculating * G.

【0050】ここで、前記楕円曲線演算装置は、さら
に、前記楕円曲線E上の加算の繰り返し手順を示す計算
手順を生成する計算手順生成手段を備え、前記スカラ倍
演算手段は、前記計算手順生成手段が生成した計算手順
に従って前記スカラ倍点k*Gを算出してもよい。
Here, the elliptic curve calculation device further comprises a calculation procedure generation means for generating a calculation procedure indicating an iterative procedure of addition on the elliptic curve E, and the scalar multiplication unit calculates the calculation procedure generation. The scalar multiplication point k * G may be calculated according to the calculation procedure generated by the means.

【0051】また、前記計算手順生成手段は、自然数
m,uに対して、(2^(m−1)+u)*G、(2^
(m−1))*G及びu*Gから(2^m+u)*Gを
算出する第1計算、又は、(2^m)*G、(2^m−
u)*G及びu*Gから(2^(m+1)−u)*Gを
算出する第2計算、又は、(2^m)*G、−(2^m
−u)*G及び(2^(m+1)−u)*Gからu*G
を算出する第3計算を前記楕円曲線E上の加算とする計
算手順を生成してもよい。
Further, the calculation procedure generation means (2 ^ (m-1) + u) * G, (2 ^) for natural numbers m and u.
The first calculation for calculating (2 ^ m + u) * G from (m-1)) * G and u * G, or (2 ^ m) * G, (2 ^ m-
A second calculation for calculating (2 ^ (m + 1) -u) * G from u) * G and u * G, or (2 ^ m) * G,-(2 ^ m
-U) * G and (2 ^ (m + 1) -u) * G to u * G
A calculation procedure may be generated in which the third calculation for calculating is the addition on the elliptic curve E.

【0052】また、前記計算手順生成手段は、前記kの
各ビットの値に応じて、前記楕円曲線E上の加算と前記
第1〜第3計算の少なくとも1つとを対応づけることに
より、前記計算手順を生成してもよい。
Further, the calculation procedure generating means associates the addition on the elliptic curve E with at least one of the first to third calculations according to the value of each bit of the k to perform the calculation. The procedure may be generated.

【0053】また、前記計算手順生成手段は、前記kの
ビットの値が0である場合には、そのビットに対応する
前記楕円曲線E上の加算として少なくとも前記第1計算
を対応させ、前記ビットの値が1である場合には、その
ビットに対応する前記楕円曲線E上の加算として少なく
とも前記第2計算を対応させることにより、前記計算手
順を生成してもよい。
Further, when the value of the bit of k is 0, the calculation procedure generating means associates at least the first calculation as addition on the elliptic curve E corresponding to the bit, and the bit is calculated. If the value of 1 is 1, the calculation procedure may be generated by associating at least the second calculation as an addition on the elliptic curve E corresponding to that bit.

【0054】また、前記計算手順生成手段は、前記楕円
曲線E上の加算の繰り返しにおける個々の加算におい
て、前記第1加算要素と加算される第2加算要素の表現
形式が前記第1計算におけるプラス表現(2^(m−
1)+u)*Gであるか、前記第2計算におけるマイナ
ス表現(2^m−u)*Gであるかを特定する表現形式
情報を前記計算手順として生成し、前記スカラ倍演算手
段は、前記楕円曲線E上の加算の繰り返しにおける個々
の加算においては、前記表現形式情報に基づいて、前記
第1〜第3計算のいずれかの計算を行ってもよい。
Further, in the calculation procedure generating means, in each addition in the repetition of addition on the elliptic curve E, the expression form of the second addition element to be added with the first addition element is positive in the first calculation. Expression (2 ^ (m-
1) + u) * G or minus expression (2 ^ m−u) * G in the second calculation, the expression format information specifying the expression format is generated as the calculation procedure, and the scalar multiplication unit calculates In each addition in the repetition of addition on the elliptic curve E, any one of the first to third calculations may be performed based on the expression format information.

【0055】また、前記表現形式情報は、前記楕円曲線
E上の加算の繰り返しにおける加算ごとに、前記第2加
算要素が前記プラス表現及び前記マイナス表現のいずれ
の表現からいずれの表現に切り替わるかを示す情報であ
ってもよいし、前記楕円曲線E上の加算の繰り返しにお
いて、前記第2加算要素が前記プラス表現及び前記マイ
ナス表現のいずれかの表現形式で連続して出現する個数
を示す情報であってもよい。
Further, the expression format information indicates whether the second addition element is switched from which expression of the plus expression and the minus expression to which expression each time the addition is repeated on the elliptic curve E. The information may be the information indicating the number of times the second addition element appears consecutively in one of the plus expression and the minus expression in the repetition of addition on the elliptic curve E. It may be.

【0056】また、前記スカラ倍演算手段は、G,2*
G,(2^2)*G,…,(2^(n−1))*Gの少
なくとも一部を記憶するテーブル記憶部を有し、前記テ
ーブル記憶部に記憶された点を第1加算要素として前記
楕円曲線E上の加算を行ってもよい。
The scalar multiplication unit is G, 2 *
G, (2 ^ 2) * G, ..., (2 ^ (n-1)) * G has a table storage unit for storing at least a part thereof, and the points stored in the table storage unit are first added. As an element, addition on the elliptic curve E may be performed.

【0057】また、本発明に係る楕円曲線演算装置は、
nビットの任意の整数kを入力とし、予め与えられた有
限体F上のモンゴメリ型楕円曲線E上の点Gに対して、
スカラ倍点k*Gを出力する楕円曲線演算装置であっ
て、2*G,3*G,6*G,12*G,…,(2^
(n−1)+2(n−2))*Gのいずれかを第1加算
要素とする前記楕円曲線E上の加算を繰り返すことによ
って前記スカラ倍点k*Gを算出するスカラ倍演算手段
を備えてもよい。
Further, the elliptic curve calculation device according to the present invention is
Using an arbitrary n-bit integer k as an input, for a point G on a Montgomery-form elliptic curve E on a finite field F given in advance,
An elliptic curve calculation device that outputs a scalar multiplication point k * G, which is 2 * G, 3 * G, 6 * G, 12 * G, ..., (2 ^
Scalar multiplication means for calculating the scalar multiplication point k * G by repeating addition on the elliptic curve E with any one of (n-1) +2 (n-2)) * G as the first addition element. You may prepare.

【0058】ここで、前記楕円曲線演算装置は、さら
に、前記楕円曲線E上の加算の繰り返し手順を示す計算
手順を生成する計算手順生成手段を備え、前記スカラ倍
演算手段は、前記計算手順生成手段が生成した計算手順
に従って前記スカラ倍点k*Gを算出してもよい。
Here, the elliptic curve calculation device further comprises calculation procedure generation means for generating a calculation procedure indicating an iterative procedure of addition on the elliptic curve E, and the scalar multiplication calculation means generates the calculation procedure. The scalar multiplication point k * G may be calculated according to the calculation procedure generated by the means.

【0059】また、前記計算手順生成手段は、自然数
m,uに対して、第1加算要素(2^(m−1)+2^
(m−2))*G、第2加算要素(2^(m−2)+
u)*G及び前記第1加算要素と前記第2加算要素との
差(2^(m−1)−u)から(2^m+u)*Gを算
出する第1計算、又は、第1加算要素(2^m+2^
(m−1))*G、第2加算要素(2^(m−1)−
u)*G及び前記第1加算要素と前記第2加算要素との
差(2^m+u)から(2^(m+1)−u)*Gを算
出する第2計算を前記楕円曲線E上の加算とする計算手
順を生成してもよい。
Further, the calculation procedure generating means adds the first addition element (2 ^ (m-1) + 2 ^) to natural numbers m and u.
(M-2)) * G, second addition element (2 ^ (m-2) +
u) * G and a first calculation for calculating (2 ^ m + u) * G from the difference (2 ^ (m-1) -u) between the first addition element and the second addition element, or the first addition Element (2 ^ m + 2 ^
(M-1)) * G, second addition element (2 ^ (m-1)-
u) * G and a second calculation for calculating (2 ^ (m + 1) -u) * G from the difference (2 ^ m + u) between the first addition element and the second addition element is added on the elliptic curve E. May be generated.

【0060】また、前記計算手順生成手段は、前記第1
又は前記第2計算による楕円曲線E上の加算によって得
られた結果を、次の繰り返し加算における第2加算要素
とするか第1加算要素と第2加算要素との差とするかを
示す分割対象情報を前記計算手順として生成してもよ
い。
Further, the calculation procedure generating means is the first
Alternatively, a division target indicating whether the result obtained by the addition on the elliptic curve E by the second calculation is the second addition element in the next iterative addition or the difference between the first addition element and the second addition element. Information may be generated as the calculation procedure.

【0061】また、前記スカラ倍演算手段は、2*G,
3*G,6*G,12*G,…,(2^(n−1)+2
(n−2))*Gの少なくとも一部を記憶するテーブル
記憶部を有し、前記テーブル記憶部に記憶された点を第
1加算要素として前記楕円曲線E上の加算を行ってもよ
い。
Further, the scalar multiplication unit is 2 * G,
3 * G, 6 * G, 12 * G, ..., (2 ^ (n-1) +2
(N−2)) * G may be provided with a table storage unit for storing at least a part thereof, and the points stored in the table storage unit may be used as the first addition element to perform addition on the elliptic curve E.

【0062】また、上記第2の目的を達成するために、
本発明に係る楕円曲線演算装置は、前記楕円曲線演算装
置において、さらに、前記スカラ倍点k*Gのy座標を
復元するy座標復元手段を備えることを特徴とする。
In order to achieve the second object,
An elliptic curve calculation device according to the present invention is characterized in that, in the elliptic curve calculation device, a y coordinate restoration means for restoring the y coordinate of the scalar multiplication point k * G is further provided.

【0063】ここで、前記第1加算要素は、G,2*
G,(2^2)*G,…,(2^(n−1))*Gのい
ずれかであり、前記スカラ倍演算手段は、3項組の射影
座標(x、y、z)を用いて、前記第1加算要素のx座
標を用いた前記楕円曲線E上の加算を繰り返すことによ
って、前記スカラ倍点k*Gのx及びz座標を算出し、
前記y座標復元手段は、3項組の射影座標(x、y、
z)を用いて、前記スカラ倍点k*Gのx及びz座標
と、前記スカラ倍点k*Gの算出に用いられた第1加算
要素と加算された第2加算要素のx及びz座標と、前記
第1加算要素のx及びy座標とから前記スカラ倍点k*
Gのy座標を復元してもよい。
Here, the first addition element is G, 2 *
G, (2 ^ 2) * G, ..., (2 ^ (n-1)) * G, and the scalar multiplication unit calculates the projection coordinates (x, y, z) of the triplet. Using, by repeating addition on the elliptic curve E using the x coordinate of the first addition element, the x and z coordinates of the scalar multiplication point k * G are calculated,
The y-coordinate restoring means is a projection coordinate (x, y,
z), the x and z coordinates of the scalar multiplication point k * G and the x and z coordinates of the second addition element added to the first addition element used to calculate the scalar multiplication point k * G. And the x and y coordinates of the first addition element, the scalar multiplication point k *
The y coordinate of G may be restored.

【0064】また、前記第1加算要素は、2*G,3*
G,6*G,12*G,…,(2^(n−1)+2(n
−2))*Gのいずれかであり、前記スカラ倍演算手段
は、3項組の射影座標(x、y、z)を用いて、前記第
1加算要素のx座標を用いた前記楕円曲線E上の加算を
繰り返すことによって、前記スカラ倍点k*Gのx及び
z座標を算出し、前記y座標復元手段は、3項組の射影
座標(x、y、z)を用いて、前記スカラ倍点k*Gの
x及びz座標と、前記スカラ倍点k*Gの算出に用いら
れた第1加算要素と加算された第2加算要素のx及びz
座標と、前記第1加算要素のx及びy座標とから前記ス
カラ倍点k*Gのy座標を復元してもよい。
The first addition element is 2 * G, 3 *.
G, 6 * G, 12 * G, ..., (2 ^ (n-1) +2 (n
-2)) * G, and the scalar multiplication unit uses the triplet projective coordinates (x, y, z) to generate the elliptic curve using the x coordinate of the first addition element. By repeating the addition on E, the x and z coordinates of the scalar multiple k * G are calculated, and the y coordinate restoring means uses the triplet projective coordinates (x, y, z) to The x and z coordinates of the scalar multiplication point k * G and the x and z of the second addition element added to the first addition element used to calculate the scalar multiplication point k * G.
The y coordinate of the scalar multiple k * G may be restored from the coordinate and the x and y coordinates of the first addition element.

【0065】さらに、本発明は、上記楕円曲線演算装置
を用いた暗号装置や復号装置として実現したり、上記手
段をステップとする楕円曲線演算方法として実現した
り、上記手段としてコンピュータに機能させるプログラ
ムとして実現したり、そのようなプログラムが記録され
たコンピュータ読み取り可能な記録媒体として実現した
りすることもできる。
Further, the present invention is realized as an encryption device or a decryption device using the above elliptic curve calculation device, as an elliptic curve calculation method using the above means as steps, or a program causing a computer to function as the above means. Or as a computer-readable recording medium in which such a program is recorded.

【0066】[0066]

【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら詳細に説明する。 [実施の形態1] 1.楕円曲線演算装置200の構成及び動作 図1は、実施の形態1における楕円曲線演算装置200
の構成を示す機能ブロック図である。この楕円曲線演算
装置200は、専用のプログラムを実行するコンピュー
タ装置又はLSI等の論理回路で実現され、有限体GF
(p)上のモンゴメリ型楕円曲線E:B×y^2=x^
3+A×x^2+xのパラメータp(素数)、GF
(p)の元A、Bと、E(GF(p))に属する点Gと、
その点Gの2のべき乗倍点(2^i)*G(i=1,
2,……,n−1)のx座標が予め与えられ、nビット
の任意のkを入力として、点Gのスカラ倍点k*Gのx
座標を出力する演算装置であり、点Gの2のべき乗倍
(2^i)*Gを有効活用しながら計算する点に特徴を
有し、計算手順生成部210とスカラ倍演算部220と
から構成される。なお、上記nはkのビット数を示して
いる。
BEST MODE FOR CARRYING OUT THE INVENTION Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. [Embodiment 1] 1. Configuration and Operation of Elliptic Curve Calculation Device 200 FIG. 1 shows elliptic curve calculation device 200 according to the first embodiment.
It is a functional block diagram showing the configuration of. The elliptic curve calculation device 200 is realized by a computer device that executes a dedicated program or a logic circuit such as an LSI, and the finite field GF.
(P) Montgomery-type elliptic curve E: B × y ^ 2 = x ^
3 + A × x ^ 2 + x parameter p (prime number), GF
Elements A and B of (p) and a point G belonging to E (GF (p)),
The power of 2 of the point G (2 ^ i) * G (i = 1,
2, ..., n-1) is given in advance, and an arbitrary k of n bits is input, and a scalar multiplication point of point G x * of point k * G
It is an arithmetic unit that outputs coordinates, and is characterized in that it makes a calculation while making effective use of the power of 2 of the point G (2 ^ i) * G. The calculation procedure generating unit 210 and the scalar multiplication unit 220 Composed. The above n indicates the number of bits of k.

【0067】計算手順生成部210は、点Gのスカラ倍
k*Gを算出するための計算手順を生成する予備計算を
実行する処理部であり、k*GをGの2のべき乗倍(2
^i)*Gを用いた加算形に分割することを繰り返すこ
とによって加算要素を特定する加算要素特定部210a
と、加算要素特定部210aによって特定された加算要
素を配列として出力する配列生成出力部210bとから
なる。
The calculation procedure generation unit 210 is a processing unit for executing preliminary calculation for generating a calculation procedure for calculating the scalar multiple k * G of the point G, and k * G is a power of 2 of G (2
^ I) An addition element specifying unit 210a that specifies an addition element by repeating division into addition forms using * G
And an array generation output unit 210b that outputs the addition element specified by the addition element specification unit 210a as an array.

【0068】具体的には、計算手順生成部210は、図
2に示されるフローチャートのように、整数kを入力と
して、計算手順を示す配列CS[i](i=1,2,…
…)を出力する。ここで、1つの配列CS[i]は、1
つの加算を特定する4つの要素、即ち、(加算結果、第
1加算要素、第2加算要素、第1加算要素と第2加算要
素との差)からなる。なお、第1加算要素及び第2加算
要素の少なくとも1つは、点Gの2のべき乗倍である。
Specifically, as shown in the flowchart of FIG. 2, the calculation procedure generating section 210 receives an integer k as an input and outputs an array CS [i] (i = 1, 2, ...
...) is output. Here, one array CS [i] is 1
It is composed of four elements that specify one addition, that is, (addition result, first addition element, second addition element, difference between first addition element and second addition element). Note that at least one of the first addition element and the second addition element is a power of 2 of the point G.

【0069】加算要素特定部210aは、以下の手順に
従って、配列CS[i]を特定する。 ステップS201:w←kとする。ただし、w←kはw
にkを代入することを示している。 ステップS202:カウンタc←1、oldflag←
0、newflag←0とする。 ステップS203:w=2^(|w|−1)+uとなる
ようにuをおく。ここで、|w|はwのビット数を示し
ている。 ステップS204:w=2^|w|−vとなるようにv
をおく。 ステップS205:u>vであるか判定する。成り立つ
場合は、ステップS206へ。成り立たない場合は、ス
テップS207へ。 ステップS206:newflagを1とし、計算手順
CS[c]をタイプIの値、即ち、[(2^|w|−
v)*G,(2^(|w|−1))*G,(2^(|w
|−1)−v)*G,v*G]と定め、w←2^(|w
|−1)−vとする。ステップS210へ。
The addition element specifying unit 210a specifies the array CS [i] according to the following procedure. Step S201: Set w ← k. However, w ← k is w
It indicates that k is substituted for. Step S202: Counter c ← 1, oldflag ←
0 and newflag ← 0. Step S203: u is set so that w = 2 ^ (| w | −1) + u. Here, | w | indicates the number of bits of w. Step S204: v so that w = 2 ^ | w | −v
Put. Step S205: Determine whether u> v. If yes, go to step S206. If not, go to step S207. Step S206: The newflag is set to 1, and the calculation procedure CS [c] is a value of type I, that is, [(2 ^ | w |-
v) * G, (2 ^ (| w | -1)) * G, (2 ^ (| w
| -1) -v) * G, v * G], and w ← 2 ^ (| w
| -1) -v. Go to step S210.

【0070】ここで、計算手順[x1*G,x2*G,
x3*G,x4*G]は,x2*Gとx3*Gとの楕円
曲線加算x1*Gをx2*G,x3*G,x4*G(=
x2*G−x3*G)を用いて計算することを示してい
る。 ステップS207:oldflag=1であるか判定す
る。成り立つ場合は、ステップS208へ。成り立たな
い場合は、ステップS209へ。 ステップS208:計算手順CS[c]をタイプIIの
値、即ち、[v*G,(2^|v|)*G,−(2^|
v|−v)*G,w*G]として、c←c+1とする。 ステップS209:newflagを0として、計算手
順CS[c]をタイプIIIの値、即ち、[(2^(|
w|−1)+u)*G,(2^(|w|−2)+u)*
G,(2^(|w|−2))*G,u*G]と定め、w
←2^(|w|−2)+uとする。 ステップS210:oldflag←newflag,
c←c+1,w←とする。 ステップS211:w=3×2^e(e≧0)とおける
か判定する。成り立つ場合は、ステップS212へ。成
り立たない場合は、ステップS203へ。 ステップS212:CS[c]をタイプIVの値、即
ち、[(3×2^e)*G,(2^(e−1))*G,
(2^e)*G,(2^e)*G]と定める。最後に、配
列生成出力部210bは、加算要素特定部210aによ
って特定された全ての計算手順CS[i](i=1,
2,……)とcとをスカラ倍演算部220に出力し、終
了する。
Here, the calculation procedure [x1 * G, x2 * G,
x3 * G, x4 * G] is the elliptic curve addition x1 * G of x2 * G and x3 * G, and x2 * G, x3 * G, x4 * G (=
x2 * G-x3 * G). Step S207: It is determined whether oldflag = 1. If yes, go to step S208. If not, go to step S209. Step S208: The calculation procedure CS [c] is set to a value of type II, that is, [v * G, (2 ^ | v |) * G,-(2 ^ |
v | −v) * G, w * G], and c ← c + 1. Step S209: With newflag set to 0, the calculation procedure CS [c] is set to a value of type III, that is, [(2 ^ (|
w | -1) + u) * G, (2 ^ (| w | -2) + u) *
G, (2 ^ (| w | -2)) * G, u * G], and w
← 2 ^ (| w | -2) + u. Step S210: oldflag ← newflag,
Let c ← c + 1 and w ←. Step S211: It is determined whether or not w = 3 × 2 ^ e (e ≧ 0). If yes, go to step S212. If not, go to step S203. Step S212: CS [c] is a value of type IV, that is, [(3 × 2̂e) * G, (2̂ (e−1)) * G,
(2 ^ e) * G, (2 ^ e) * G]. Finally, the array generation / output unit 210b has all the calculation procedures CS [i] (i = 1, i = 1, 1 specified by the addition element identification unit 210a.
2, ...) And c are output to the scalar multiplication unit 220, and the process ends.

【0071】スカラ倍演算部220は、計算手順生成部
210から出力された計算手順CS[i](i=1,
2,……)とカウンタcとに基づいて、楕円曲線上の加
算を繰り返すことで、最終的な計算結果k*Gを算出し
出力する演算部であり、図3に示されるような点Gの2
のべき乗倍((2^i)*G;i=1,2,…;ただ
し、x座標のみ)を予め記憶しているテーブル記憶部2
20b、ワーキング用のメモリである一時記憶部220
c、楕円曲線上での加算を行う加算器である楕円曲線加
算部220d及び計算手順生成部210からの計算手順
CS[i]に従って各構成要素220b〜220dを制
御する演算制御部220aからなる。なお、テーブル記
憶部220bに点Gの2のべき乗倍点のx座標だけが格
納されているのは、上述のモンゴメリ型楕円曲線の説明
から分かるように、モンゴメリ型楕円曲線上での加算及
び2倍算では、y座標が不要だからである。
The scalar multiplication unit 220 calculates the calculation procedure CS [i] (i = 1, 1 output from the calculation procedure generation unit 210.
2, ...) and the counter c, the calculation unit for calculating and outputting the final calculation result k * G by repeating addition on the elliptic curve. The point G as shown in FIG. Of 2
A table storage unit 2 that stores in advance a power of ((2 ^ i) * G; i = 1, 2, ...; However, only the x coordinate).
20b, a temporary storage unit 220 that is a working memory
c, an elliptic curve addition unit 220d that is an adder that performs addition on an elliptic curve, and an arithmetic control unit 220a that controls each of the components 220b to 220d according to the calculation procedure CS [i] from the calculation procedure generation unit 210. Note that the table storage unit 220b stores only the x-coordinate of the power-of-two point of the point G, as can be seen from the above description of the Montgomery-form elliptic curve. This is because the y coordinate is unnecessary in multiplication.

【0072】このスカラ倍演算部220は、図4に示さ
れるフローチャートに従って、k*Gを算出する。具体
的には、演算制御部220aは、以下のステップで、計
算・制御を行う。 ステップS301:カウンタdにcを代入する。 ステップS302:CS[c]を読み出し(S302
a)、その計算手順[x1*G,x2*G,x3*G,
x4*G]に従って、楕円曲線加算部220dに、楕円
曲線加算を実行させ、点x1*G(=x2*G+x3*
G)を算出させる(S302b)。このとき、(2^
i)*G(2のべき乗倍)については、テーブル記憶部
220bから読み出した値を用いることとし、得られた
加算結果x1*Gについては、一時記憶部220cに格
納し、次の計算で使用するように楕円曲線加算部220
dを制御する。 ステップS303:d←d−1とする。 ステップS304:d=0であるか判定する(S304
a)。成り立つ場合、楕円曲線加算部220dに、最後
に計算した結果x1*Gを出力させ、終了する(S30
4b)。成り立たない場合は、ステップS302へ。
The scalar multiplication unit 220 calculates k * G according to the flowchart shown in FIG. Specifically, the arithmetic control unit 220a performs calculation / control in the following steps. Step S301: Substitute c for the counter d. Step S302: Read CS [c] (S302
a), the calculation procedure [x1 * G, x2 * G, x3 * G,
x4 * G], the elliptic curve addition unit 220d is caused to perform elliptic curve addition, and the point x1 * G (= x2 * G + x3 *
G) is calculated (S302b). At this time, (2 ^
i) * G (power of 2), the value read from the table storage unit 220b is used, and the obtained addition result x1 * G is stored in the temporary storage unit 220c and used in the next calculation. So that the elliptic curve addition unit 220
Control d. Step S303: Set d ← d-1. Step S304: Determine whether d = 0 (S304
a). If so, the elliptic curve addition unit 220d is caused to output the last calculated result x1 * G, and the processing ends (S30).
4b). If not, go to step S302.

【0073】ここで、上記のステップで使用される楕円
曲線上の加算方法を以下に示す。P=(X1,Y1,Z
1)、 Q=(X2,Y2,Z2)、2点の差P−Q=
(X3',Y3',Z3')から、P+Q=(X3、Y
3、Z3)を以下のようにして求める。 (step1−1)中間値の計算 U1=X1+Z1 U2=X2+Z2 V1=X1−Z1 V2=X2−Z2 (step1−2)P+Q=(X3,Y3,Z3)の計
算 X3=Z3'×(V1×U2+U1×V2)^2 Z3=X3'×(V1×U2−U1×V2)^2 なお、これらの式から分かるように、モンゴメリ型楕円
曲線上での加算は、y座標が出現しないので、x座標だ
け(3項組の射影座標では、x座標とz座標)に関する
演算となる。楕円曲線演算装置200で使用するモンゴ
メリ型楕円曲線については、"Speeding the Pollard an
d Elliptic Curve Methods of Factorization"(P.L.Mon
tgomery著, Math. of Comp. 48, 1987, pp.243-264)が
詳しい。
Here, the addition method on the elliptic curve used in the above steps will be described below. P = (X1, Y1, Z
1), Q = (X2, Y2, Z2), difference between two points P−Q =
From (X3 ′, Y3 ′, Z3 ′), P + Q = (X3, Y
3, Z3) is obtained as follows. (Step1-1) Calculation of intermediate value U1 = X1 + Z1 U2 = X2 + Z2 V1 = X1-Z1 V2 = X2-Z2 (step1-2) P + Q = (X3, Y3, Z3) calculation X3 = Z3 ′ × (V1 × U2 + U1) XV2) ^ 2 Z3 = X3'x (V1xU2-U1xV2) ^ 2 As can be seen from these equations, the y coordinate does not appear in the addition on the Montgomery-form elliptic curve, so the x coordinate Only (in the projection coordinate of the triplet, the x coordinate and the z coordinate) are calculated. For the Montgomery type elliptic curve used in the elliptic curve calculation device 200, see "Speeding the Pollard an
d Elliptic Curve Methods of Factorization "(PLMon
See tgomery, Math. of Comp. 48, 1987, pp.243-264).

【0074】以上のように構成された楕円曲線演算装置
200の全体的な動作は、次の通りである。楕円曲線演
算装置200は、入力の整数kを受け取り、計算手順生
成部210へ入力する。計算手順生成部210は、入力
された整数kより、計算手順CS[i](i=1,2,
……)を求め、スカラ倍演算部220へ入力する。スカ
ラ倍演算部220は、入力された計算手順CS[i]
(i=1,2,……)より、楕円曲線の点Gのスカラ倍
点k*Gを算出し、出力する。
The overall operation of the elliptic curve calculation device 200 configured as described above is as follows. The elliptic curve calculation device 200 receives the input integer k and inputs it to the calculation procedure generation unit 210. The calculation procedure generation unit 210 uses the input integer k to calculate the calculation procedure CS [i] (i = 1, 2,
......) is obtained and input to the scalar multiplication unit 220. The scalar multiplication unit 220 receives the input calculation procedure CS [i].
From (i = 1, 2, ...), the scalar multiplication point k * G of the point G of the elliptic curve is calculated and output.

【0075】2.具体的な数値例に対する楕円曲線演算
装置200の動作 以下では、k=102の場合の数値例を示す。計算手順
生成部210による処理を説明する。カウンタcの値に
対する処理を以下に示す。 (カウンタc=1のとき) ステップS203:w=102=2^6+38であるの
で、u←38 ステップS204:w=102=2^7−26であるの
で、v←26 ステップS205:38>26であるので、ステップS
206へ。 ステップS206:newflag←1、CS[1]←
[(2^7−26)*G(=102*G),(2^6)
*G,(2^6−26)*G(=38*G),26*
G]、w←2^6−26=38、ステップS210へ。 ステップS210:oldflag←newflag=
1、c←c+1 ステップS211:w=38であり3×2^eで表せな
いため、ステップS203へ。 (カウンタc=2のとき) ステップS203:w=38=2^5+6であるので、
u←6 ステップS204:w=38=2^6−26であるの
で、v←26 ステップS205:6<26であるので、ステップS2
07へ。 ステップS207:oldflag=1であるので、ス
テップS208へ。 ステップS208:CS[2]←[26*G,(2^
5)*G,−(2^5−26)*G(=−6*G),
(2^6−26)*G(=38*G)]、c←c+1ス
テップS209:newflag←0、CS[3]←
[(2^5+6)*G(=38*G),(2^4+6)
*G(=22*G),(2^4)*G,6*G]、w←
2^4+6=22 ステップS210:oldflag←newflag=
0,c←c+1 ステップS211:w=22であり3×2^eで表せな
いステップS203へ。 (カウンタc=4のとき) ステップS203:w=22=2^4+6であるので、
u←6 ステップS204:w=22=2^5−10であるの
で、v←10 ステップS205:6<10であるので、ステップS2
07へ。 ステップS207:oldflag=0であるので、ス
テップS209へ。 ステップS209:newflag←0、CS[4]←
[(2^4+6)*G(=22*G),(2^3+6)
*G(=14*G),(2^3)*G,6*G]、w←
2^3+6=14 ステップS210:oldflag←newflag=
0,c←c+1 ステップS211:w=14であり3×2^eで表せな
いため、ステップS203へ。 (カウンタc=5のとき) ステップS203:w=14=2^3+6であるので、
u←6 ステップS204:w=14=2^4−2であるので、
v←2 ステップS205:6>2であるので、ステップS20
6へ。 ステップS206:newflag←1、CS[5]←
[(2^4−2)*G(=14*G),(2^3)*
G,(2^3−2)*G(=6*G),2*G]、w←
2^3−2=6、ステップS210へ。 ステップS210:oldflag←newflag=
1、c←c+1 ステップS211:w=6であり、w=3×2と表せる
ため、ステップS212へ。 ステップS212:CS[6]←[(3×2)*G(=
6*G),(2^2)*G,2*G,2*G],終了。
2. Operation of Elliptic Curve Calculation Device 200 for Specific Numerical Example Below, a numerical example in the case of k = 102 will be shown. The processing by the calculation procedure generation unit 210 will be described. The processing for the value of the counter c is shown below. (When counter c = 1) Step S203: w = 102 = 2 ^ 6 + 38, so u ← 38 Step S204: w = 102 = 2 ^ 7−26, so v ← 26 Step S205: 38> 26 Therefore, step S
To 206. Step S206: newflag ← 1, CS [1] ←
[(2 ^ 7-26) * G (= 102 * G), (2 ^ 6)
* G, (2 ^ 6-26) * G (= 38 * G), 26 *
G], w ← 2 ^ 6-26 = 38, go to step S210. Step S210: oldflag ← newflag =
1, c ← c + 1 Step S211: Since w = 38 and cannot be represented by 3 × 2 ^ e, go to Step S203. (When counter c = 2) Step S203: Since w = 38 = 2 ^ 5 + 6,
u ← 6 Step S204: w = 38 = 2 ^ 6-26, so v ← 26 Step S205: 6 <26, so Step S2
To 07. Step S207: Since oldflag = 1, go to Step S208. Step S208: CS [2] ← [26 * G, (2 ^
5) * G,-(2 ^ 5-26) * G (= -6 * G),
(2 ^ 6-26) * G (= 38 * G)], c ← c + 1 Step S209: newflag ← 0, CS [3] ←
[(2 ^ 5 + 6) * G (= 38 * G), (2 ^ 4 + 6)
* G (= 22 * G), (2 ^ 4) * G, 6 * G], w ←
2 ^ 4 + 6 = 22 Step S210: oldflag ← newflag =
0, c ← c + 1 Step S211: Go to Step S203 where w = 22 and cannot be represented by 3 × 2 ^ e. (When counter c = 4) Step S203: Since w = 22 = 2 ^ 4 + 6,
u ← 6 Step S204: Since w = 22 = 2 ^ 5-10, v ← 10 Step S205: Since 6 <10, Step S2
To 07. Step S207: Since oldflag = 0, go to Step S209. Step S209: newflag ← 0, CS [4] ←
[(2 ^ 4 + 6) * G (= 22 * G), (2 ^ 3 + 6)
* G (= 14 * G), (2 ^ 3) * G, 6 * G], w ←
2 ^ 3 + 6 = 14 Step S210: oldflag ← newflag =
0, c ← c + 1 Step S211: Since w = 14 and cannot be represented by 3 × 2 ^ e, go to Step S203. (When counter c = 5) Step S203: Since w = 14 = 2 ^ 3 + 6,
u ← 6 Step S204: Since w = 14 = 2 ^ 4-2,
v ← 2 Step S205: Since 6> 2, Step S20
Go to 6. Step S206: newflag ← 1, CS [5] ←
[(2 ^ 4-2) * G (= 14 * G), (2 ^ 3) *
G, (2 ^ 3-2) * G (= 6 * G), 2 * G], w ←
2 ^ 3-2 = 6, go to step S210. Step S210: oldflag ← newflag =
1, c ← c + 1 Step S211: Since w = 6 and w = 3 × 2, the processing proceeds to Step S212. Step S212: CS [6] ← [(3 × 2) * G (=
6 * G), (2 ^ 2) * G, 2 * G, 2 * G], end.

【0076】以上より、計算手順生成部210の出力
は、 CS[1]=[102*G,(2^6)*G,38*G,26*G] CS[2]=[26*G,(2^5)*G,−6*G,38*G] CS[3]=[38*G,22*G,(2^4)*G,6*G] CS[4]=[22*G,14*G,(2^3)*G,6*G] CS[5]=[14*G,(2^3)*G,6*G,2*G] CS[6]=[6*G,(2^2)*G,2*G,2*G] とc=6である。
From the above, the output of the calculation procedure generator 210 is CS [1] = [102 * G, (2 ^ 6) * G, 38 * G, 26 * G] CS [2] = [26 * G , (2 ^ 5) * G, -6 * G, 38 * G] CS [3] = [38 * G, 22 * G, (2 ^ 4) * G, 6 * G] CS [4] = [ 22 * G, 14 * G, (2 ^ 3) * G, 6 * G] CS [5] = [14 * G, (2 ^ 3) * G, 6 * G, 2 * G] CS [6] = [6 * G, (2 ^ 2) * G, 2 * G, 2 * G] and c = 6.

【0077】次に、スカラ倍演算部220の処理を説明
する。まず、最初にステップS301でdにc=6を代
入する。以降カウンタdに対する処理を以下に示す。 (カウンタd=6のとき) ステップS302:CS[6]=[6*G,(2^2)
*G,2*G,2*G]であるので、2^2*G、2*
G及びその差2*Gより楕円曲線加算を行って6*Gを
求める。 ステップS303:d←d−1=5 ステップS304:d=5であるので、ステップS30
2へ。 (カウンタd=5のとき) ステップS302:CS[5]=[14*G,(2^
3)*G,6*G,2*G]であるので、(2^3)*
G,6*G及びその差2*Gより楕円曲線加算を行って
14*Gを求める。ここで、6*Gはカウンタd=6の
ときに計算済であるので、そこでの計算結果を用いる。 ステップS303:d←d−1=4 ステップS304:d=4であるので、ステップS30
2へ。 (カウンタd=4のとき) ステップS302:CS[4]=[22*G,14*
G,(2^3)*G,6*G]であるので、14*G,
(2^3)*G及びその差6*Gより楕円曲線加算を行
って22*Gを求める。ここで、14*G及び6*Gは
それぞれカウンタd=5,6のときに計算済であるの
で、そこでの計算結果を用いる。 ステップS303:d←d−1=3 ステップS304:d=3であるので、ステップS30
2へ。 (カウンタd=3のとき) ステップS302:CS[3]=[38*G,22*
G,(2^4)*G,6*G]であるので、22*G,
(2^4)*G及びその差6*Gより楕円曲線加算を行
って38*Gを求める。ここで、22*G及び6*Gは
それぞれカウンタd=4,6のときに計算済であるの
で、そこでの計算結果を用いる。 ステップS303:d←d−1=2 ステップS304:d=2であるので、ステップS30
2へ。 (カウンタd=2のとき) ステップS302:CS[2]=[26*G,(2^
5)*G,−6*G,38*G]であるので、(2^
5)*G,−6*G及びその差38*Gより楕円曲線加
算を行って26*Gを求める。ここで、38*Gはカウ
ンタd=3のときに計算済であり、−6*Gはd=6の
ときに計算して得た6*GのY座標に(−1)を掛けた
ものであるので、そこでの計算結果より得られる。 ステップS303:d←d−1=1 ステップS304:d=1であるので、ステップS30
2へ。 (カウンタd=1のとき) ステップS302:CS[1]=[102*G,(2^
6)*G,38*G,26*G]であるので、(2^
6)*G,38*G及びその差26*Gより楕円曲線加
算を行って102*Gを求める。ここで、38*G及び
26*Gはそれぞれカウンタd=3,4のときに計算済
であるので、そこでの計算結果を用いる。 ステップS303:d←d−1=0 ステップS304:d=0であるので、102*Gを出
力し、終了。
Next, the processing of the scalar multiplication unit 220 will be described. First, in step S301, c = 6 is substituted for d. The processing for the counter d is shown below. (When counter d = 6) Step S302: CS [6] = [6 * G, (2 ^ 2)
* G, 2 * G, 2 * G], so 2 ^ 2 * G, 2 *
Elliptic curve addition is performed from G and the difference 2 * G to obtain 6 * G. Step S303: d ← d-1 = 5 Step S304: Since d = 5, step S30
Go to 2. (When counter d = 5) Step S302: CS [5] = [14 * G, (2 ^
3) * G, 6 * G, 2 * G], so (2 ^ 3) *
Elliptic curve addition is performed from G, 6 * G and the difference 2 * G to obtain 14 * G. Here, since 6 * G has already been calculated when the counter d = 6, the calculation result there is used. Step S303: d ← d-1 = 4 Step S304: Since d = 4, step S30
Go to 2. (When counter d = 4) Step S302: CS [4] = [22 * G, 14 *
G, (2 ^ 3) * G, 6 * G], so 14 * G,
Elliptic curve addition is performed from (2 ^ 3) * G and the difference 6 * G to obtain 22 * G. Here, since 14 * G and 6 * G have already been calculated when the counters d = 5 and 6, respectively, the calculation results there are used. Step S303: d ← d−1 = 3 Step S304: Since d = 3, step S30
Go to 2. (When counter d = 3) Step S302: CS [3] = [38 * G, 22 *
G, (2 ^ 4) * G, 6 * G], so 22 * G,
Elliptic curve addition is performed from (2 ^ 4) * G and the difference 6 * G to obtain 38 * G. Here, 22 * G and 6 * G have already been calculated when the counters d = 4 and 6, so the calculation results there are used. Step S303: d ← d−1 = 2 Step S304: Since d = 2, step S30
Go to 2. (When counter d = 2) Step S302: CS [2] = [26 * G, (2 ^
5) * G, -6 * G, 38 * G], so (2 ^
5) Elliptic curve addition is performed from * G, -6 * G and the difference 38 * G to obtain 26 * G. Here, 38 * G is already calculated when the counter d = 3, and −6 * G is the Y coordinate of 6 * G obtained when d = 6 is multiplied by (−1). Therefore, it is obtained from the calculation result there. Step S303: d ← d-1 = 1 Step S304: Since d = 1, step S30
Go to 2. (When counter d = 1) Step S302: CS [1] = [102 * G, (2 ^
6) * G, 38 * G, 26 * G], so (2 ^
6) 102 * G is obtained by performing elliptic curve addition from * G, 38 * G and the difference 26 * G. Here, since 38 * G and 26 * G have already been calculated when the counters d = 3 and 4, respectively, the calculation results there are used. Step S303: d ← d-1 = 0 Step S304: Since d = 0, 102 * G is output, and the process ends.

【0078】以上のように、上記数値例において楕円曲
線演算装置200は正しくスカラ倍点102*Gを求め
ることができる。 3.計算フロー図による説明 次に、本実施の形態1における楕円曲線演算装置200
の動作について、計算フロー図に従って説明する。
As described above, in the above numerical example, the elliptic curve calculation device 200 can correctly obtain the scalar multiplication point 102 * G. 3. Description by Calculation Flow Diagram Next, the elliptic curve calculation device 200 according to the first embodiment.
The operation will be described with reference to a calculation flow chart.

【0079】図5は、実施の形態1における楕円曲線演
算装置200によるスカラ倍演算の手法(基本的な考
え;アプローチ1)を示す計算フロー図である。本実施
の形態の楕円曲線演算装置200の計算手順生成部21
0は、本図の上欄[係数分割の指針]に記されているよ
うに、点Gのスカラ倍k*Gの演算に際し、予め、係数
kに対する2分割を繰り返していくが、このとき、2の
べき乗係数が毎回出現するように分割する(以下、この
ような係数の分割を「係数分割」という。)。
FIG. 5 is a calculation flow chart showing a scalar multiplication operation method (basic idea; approach 1) by the elliptic curve operation device 200 in the first embodiment. Calculation procedure generation unit 21 of elliptic curve calculation device 200 of the present embodiment
As described in the upper part of this figure [coefficient division guideline], 0 is repeatedly divided into two for the coefficient k in advance when calculating the scalar multiple k * G of the point G. At this time, Division is performed so that a power-of-two coefficient appears every time (hereinafter, such division of coefficients is referred to as "coefficient division").

【0080】具体的には、図5の下欄[具体例]に示さ
れる計算フロー図のように、楕円曲線加算の一方の係数
が2のべき乗となるように、高い桁から低い桁に向け
て、スカラ係数kの2分割を繰り返す。なお、本図で
は、点Gの係数だけが示されている(つまり、「*G」
の表記が省略されている;以下の計算フロー図において
も同様)。また、実線矢印は楕円曲線上の加算を示し、
3つの加算要素は、加算の対象となる2つの加算要素
(うち1つは2のべき乗)とそれら2つの加算要素の差
である。
Specifically, as shown in the calculation flow chart shown in the lower column [specific example] of FIG. 5, one coefficient of the elliptic curve addition becomes a power of 2 from a high digit to a low digit. Then, the scalar coefficient k is divided into two. In this figure, only the coefficient at the point G is shown (that is, "* G").
Is omitted; the same applies to the following calculation flow chart). Also, the solid arrow indicates addition on the elliptic curve,
The three addition elements are two addition elements to be added (one of them is a power of 2) and the difference between these two addition elements.

【0081】例えば、本図では、87*G、つまり、
((2^6)+23)*Gを、第1加算要素((2^
5)+23)*Gと第2加算要素(2^5)*Gに分割
するとともに、それらの差23*Gを算出する。このと
き、一方の加算要素(2^5)*Gが点Gの2のべき乗
倍となるように分割する。続いて、2のべき乗倍でない
加算要素((2^5)+23)*Gについて、同様にし
て、第1加算要素((2^4)+23)*Gと第2加算
要素(2^4)*Gに分割するとともに、それらの差2
3*Gを算出する。このときも、一方の加算要素(2^
4)*Gが点Gの2のべき乗倍となるように分割する。
このようにして、分割することができなくなるまで、2
のべき乗倍でない加算要素に対する2分割を繰り返すこ
とで計算手順が決定される。
For example, in this figure, 87 * G, that is,
((2 ^ 6) +23) * G is the first addition element ((2 ^ 6)
5) +23) * G and the second addition element (2 ^ 5) * G, and the difference 23 * G between them is calculated. At this time, one addition element (2 ^ 5) * G is divided so that it becomes a power of 2 of the point G. Subsequently, for the addition element ((2 ^ 5) +23) * G that is not a power of 2 in the same manner, the first addition element ((2 ^ 4) +23) * G and the second addition element (2 ^ 4) are similarly set. * Divided into G and their difference 2
Calculate 3 * G. Also at this time, one addition element (2 ^
4) Divide * G so that it is a power of 2 of point G.
In this way, 2 until
The calculation procedure is determined by repeating the division into two for the addition elements that are not powers of.

【0082】このようにして決定された計算手順に対し
て、楕円曲線演算装置200のスカラ倍演算部220
は、低い桁から高い桁に向けて、楕円曲線加算を繰り返
すことで、最終的な結果k*Gを求める。具体的には、
まず、(2^1)*Gと1*Gと1*Gとも用いて、
(2^1)*Gと1*Gとの楕円曲線加算を行い、その
結果((2^1)+1)*Gを求める。続いて、いま得
られた結果((2^1)+1)*Gと(2^1)*Gと
1*Gとを用いて、((2^1)+1)*Gと(2^
1)*Gとの楕円曲線加算を行う・・・ということを繰
り返し(ここでは、合計9回の加算を繰り返し)、最終
的な結果87*Gを算出する。
For the calculation procedure thus determined, the scalar multiplication unit 220 of the elliptic curve calculation device 200
Calculates the final result k * G by repeating the elliptic curve addition from the lower digit to the higher digit. In particular,
First, using (2 ^ 1) * G, 1 * G and 1 * G,
Elliptic curve addition of (2 ^ 1) * G and 1 * G is performed, and the result ((2 ^ 1) +1) * G is obtained. Then, using the results ((2 ^ 1) +1) * G, (2 ^ 1) * G, and 1 * G obtained now, ((2 ^ 1) +1) * G and (2 ^)
1) The elliptic curve addition with * G is repeated (here, addition is repeated 9 times in total), and the final result 87 * G is calculated.

【0083】なお、個々の楕円曲線加算において、点G
の2のべき乗倍については、予め算出されている値(テ
ーブル記憶部220bに格納された値)を用いること
で、その算出が不要となる。また、楕円曲線加算のとき
に必要とされる差分値(第1加算要素と第2加算要素と
の差)は、必ず、それまでの楕円曲線加算の過程で出現
した値であるので、新たに算出する必要がない。つま
り、過去に出現した値を保持しておき、再利用すること
で足りる。例えば、本図における最後の楕円曲線加算で
必要とされる差分値23*Gは、その2つ前の楕円曲線
加算で算出された値(2^4+7)*Gに等しいので、
新たに算出する必要がない。
In addition, in each elliptic curve addition, the point G
For the power of 2 of the above, by using a value calculated in advance (a value stored in the table storage unit 220b), the calculation becomes unnecessary. In addition, the difference value (difference between the first addition element and the second addition element) required at the time of elliptic curve addition is always the value that has appeared in the process of the elliptic curve addition up to that point. No need to calculate. In other words, it is sufficient to retain the values that have appeared in the past and reuse them. For example, the difference value 23 * G required in the last elliptic curve addition in this figure is equal to the value (2 ^ 4 + 7) * G calculated in the preceding elliptic curve addition,
There is no need to newly calculate.

【0084】図6は、実施の形態1における楕円曲線演
算装置200によるスカラ倍演算の手法(実施の形態で
採用している考え;アプローチ2;アプローチ1を発展
させたもの)を示す計算フロー図である。ここでは、本
図の上欄[係数分割の指針]に示されるように、上記ア
プローチ1による加算表現(合計9回の加算形による表
現)を短くする(より少ない回数の加算で表現する)た
めに、加算要素の表現形式として、プラス表現だけでな
く、マイナス表現を導入している。なお、プラス表現と
は、(2^n)+cという加算形の表現形式であり、マ
イナス表現とは、(2^(n+1))−dという減算形
の表現形式である。
FIG. 6 is a calculation flow chart showing a method of scalar multiplication by the elliptic curve calculation device 200 according to the first embodiment (a concept adopted in the embodiments; approach 2; a development of approach 1). Is. Here, as shown in the upper column of this figure [coefficient division guideline], in order to shorten the addition expression by the above-mentioned approach 1 (representation by the addition form of 9 times in total) (representation by a smaller number of times of addition) In addition, not only the positive expression but also the negative expression is introduced as the expression form of the addition element. The plus expression is an addition type expression format of (2 ^ n) + c, and the minus expression is a subtraction type expression format of (2 ^ (n + 1))-d.

【0085】つまり、分割の対象となる値として、プラ
ス表現((2^n)+c)*Gとマイナス表現((2^
(n+1))−d)*Gとを候補とし、その係数におけ
る2のべき乗を除く項(c、−dなど)の絶対値が小さ
い方の表現形式を採用することにしている。
That is, as a value to be divided, a plus expression ((2 ^ n) + c) * G and a minus expression ((2 ^ n
(N + 1))-d) * G is used as the candidate, and the expression format with the smaller absolute value of the term (c, -d, etc.) except the power of 2 in the coefficient is adopted.

【0086】具体的には、図6の下欄[具体例]に示さ
れる計算フロー図のように、例えば、分割の対象となる
係数として、(2^5)+23が得られた場合には、そ
の値と同じ値を示すマイナス表現(2^6)−9とを比
較し、2のべき乗を除く項(5及び−9)の絶対値が小
さい方の表現形式(2^6)−9を採用することにす
る。その結果、係数分割後に得られる2つの加算要素の
差がより小さくなり、合計分割数が減少することにな
る。本図に示されるように、上記アプローチ1で9回の
加算が必要とされた計算手順が、このアプローチ2で
は、7回に減少している。
More specifically, for example, when (2 ^ 5) +23 is obtained as the coefficient to be divided, as shown in the calculation flow chart in the lower column [Specific example] of FIG. , The negative expression (2 ^ 6) -9 showing the same value as that value is compared, and the expression form (2 ^ 6) -9 of the smaller absolute value of the terms (5 and -9) excluding the power of 2 is Will be adopted. As a result, the difference between the two addition elements obtained after the coefficient division becomes smaller, and the total number of divisions decreases. As shown in this figure, the calculation procedure that required 9 additions in the above approach 1 is reduced to 7 times in the approach 2.

【0087】4.実施形態1の効果 本実施の形態における楕円曲線演算装置200は、スカ
ラ倍演算部220の処理からもわかるとおり、楕円曲線
加算の繰り返し計算において、(2^i)*Gがカウン
タ値ごとに出現しており、(2^i)*G(i=1,
2,……,n−1)の座標のテーブルを有効に使用する
ことができている。そのため、計算量が削減され、計算
速度は、従来の方法より高速になる。詳細な計算量は、
kをnビットとするとき、kによって計算量は異なる
が、それを平均すると、 (5/4×n−3)×EAdd である。ここで、EAddは楕円曲線加算の計算量であ
る。
4. Effect of Embodiment 1 As can be seen from the processing of the scalar multiplication unit 220, the elliptic curve calculation device 200 according to the present embodiment causes (2 ^ i) * G to appear for each counter value in repeated calculation of elliptic curve addition. And (2 ^ i) * G (i = 1,
The table of coordinates 2, ..., N-1) can be effectively used. Therefore, the amount of calculation is reduced, and the calculation speed is faster than the conventional method. Detailed calculation amount is
When k is n bits, the amount of calculation differs depending on k, but when it is averaged, it is (5/4 × n−3) × EAAdd. Here, EAdd is the calculation amount of elliptic curve addition.

【0088】従来技術3と異なり、2点の差Uは予め計
算できないので、Z座標が1とは限らない。そのため、
EAdd=4×Mul+2×Sq、EDob=3×Mu
l+2×Sqである。ただし、Mul、Sqはそれぞ
れ、GF(p)の乗算、2乗算の計算量であり、一般に
Sq=0.8×Mulである。これらの式を代入する
と、楕円曲線演算装置200の計算量は、 (5/4×n−3)×(4×Mul+2×Sq)=(5
×n−12)×Mul+(5/2×n−6)×Sq=
(7×n−84/5)×Mul であり、従来技術3の計算量は、 n×(3×Mul+2×Sq)+n×(3×Mul+2
×Sq)=6×n×Mul+4×n×Sq=46/5×
n×Mul である。したがって、楕円曲線演算装置200の方が従
来技術3に比べて、約1.3倍高速である。
Unlike the prior art 3, since the difference U between two points cannot be calculated in advance, the Z coordinate is not always 1. for that reason,
EAdd = 4 × Mul + 2 × Sq, EDob = 3 × Mu
1 + 2 × Sq. However, Mul and Sq are calculation amounts of multiplication and multiplication of GF (p), respectively, and generally Sq = 0.8 × Mul. When these equations are substituted, the calculation amount of the elliptic curve calculation device 200 is (5/4 × n−3) × (4 × Mul + 2 × Sq) = (5
× n-12) × Mul + (5/2 × n-6) × Sq =
(7 × n−84 / 5) × Mul, and the calculation amount of the prior art 3 is n × (3 × Mul + 2 × Sq) + n × (3 × Mul + 2
× Sq) = 6 × n × Mul + 4 × n × Sq = 46/5 ×
n × Mul. Therefore, the elliptic curve calculation device 200 is about 1.3 times faster than the prior art 3.

【0089】図7は、図33に示された従来技術3の計
算手法と本実施の形態1での計算手法(図6の下欄)と
を比較する図である。この図から分かるように、例え
ば、87*Gの演算については、従来技術3によれば6
回の加算と5回の2倍算が必要とされるのに対し、本実
施の形態1によれば7回の加算だけで済む。つまり、計
算量にして、従来技術3と本実施の形態1とは、50.
6:39.2となり、計算速度にして、本実施の形態1
は、従来技術3の1.3倍だけ高速化される。
FIG. 7 is a diagram comparing the calculation method of the prior art 3 shown in FIG. 33 and the calculation method of the first embodiment (lower column of FIG. 6). As can be seen from this figure, for example, for the calculation of 87 * G, according to the prior art 3, 6
While addition of 5 times and doubling of 5 times are required, according to the first embodiment, only 7 additions are required. In other words, in terms of the amount of calculation, the prior art 3 and the first embodiment have 50.
It becomes 6: 39.2, and the calculation speed is set to the first embodiment.
Is 1.3 times faster than the prior art 3.

【0090】以上より、実施形態1によって、高速な楕
円曲線演算が可能になり、本発明の実用的価値は非常に
大きい。
As described above, according to the first embodiment, high-speed elliptic curve calculation can be performed, and the practical value of the present invention is very large.

【0091】[実施の形態2]次に、本発明の実施の形
態2における楕円曲線演算装置について説明する。 1.楕円曲線演算装置300の構成及び動作 図8は、実施の形態2における楕円曲線演算装置300
の構成を示すブロック図である。この楕円曲線演算装置
300は、実施の形態1と同様に、専用のプログラムを
実行するコンピュータ装置又はLSI等の論理回路で実
現され、有限体GF(p)上のモンゴメリ型楕円曲線
E:B×y^2=x^3+A×x^2+xのパラメータ
p(素数)、GF(p)の元A、Bと、E(GF(p))
に属する点Gと、その点Gの2のべき乗倍点(2^i)
*G(i=1,2,……,n−1)のx座標が予め与え
られ、nビットの任意のkを入力として、点Gのスカラ
倍点k*Gのx座標を出力する演算装置であり、点Gの
2のべき乗倍(2^i)*Gを有効活用しながら計算す
る点に特徴を有し、計算手順生成部310とスカラ倍演
算部320とから構成される。
[Second Embodiment] Next, an elliptic curve calculation device according to a second embodiment of the present invention will be described. 1. Configuration and Operation of Elliptic Curve Calculation Device 300 FIG. 8 is an elliptic curve calculation device 300 according to the second embodiment.
3 is a block diagram showing the configuration of FIG. This elliptic curve calculation device 300 is realized by a logic device such as a computer device or an LSI that executes a dedicated program, as in the first embodiment, and the Montgomery type elliptic curve E: B × on a finite field GF (p). y ^ 2 = x ^ 3 + A × x ^ 2 + x parameter p (prime number), elements A and B of GF (p), and E (GF (p))
Point G that belongs to and a power-of-two point of that point G (2 ^ i)
* G (i = 1, 2, ..., N-1) x-coordinate is given in advance, and an arbitrary n-bit k is input and the x-coordinate of scalar multiplication point k * G of point G is output. It is a device, and is characterized in that it makes a calculation while making effective use of the power of 2 of the point G (2 ^ i) * G, and is composed of a calculation procedure generation unit 310 and a scalar multiplication unit 320.

【0092】この楕円曲線演算装置300は、点Gのス
カラ倍演算について、2進表現を利用した予備計算(計
算機処理に向いた計算)に基づいて計算手順を生成し、
生成した計算手順に従って点Gのスカラ倍演算を実行し
ている点で、計算機による処理効率を考慮していない実
施の形態1と異なる。
This elliptic curve calculation device 300 generates a calculation procedure for the scalar multiplication of the point G based on preliminary calculation (calculation suitable for computer processing) using binary representation,
This is different from the first embodiment in which the processing efficiency by the computer is not taken into consideration in that the scalar multiplication operation of the point G is executed according to the generated calculation procedure.

【0093】計算手順生成部310は、点Gのスカラ倍
k*Gを算出するための計算手順を生成する予備計算を
実行する処理部であり、k*GをGの2のべき乗倍(2
^i)*Gを用いた加算形に分割することを繰り返すと
ともに、得られた加算要素の表現形式(プラス表現/マ
イナス表現)の切り替わりの種別(加算タイプ)を特定
する加算タイプ特定部310aと、加算タイプ特定部3
10aによって特定された加算タイプを配列として出力
する配列生成出力部310bとからなる。
The calculation procedure generation unit 310 is a processing unit for executing preliminary calculation for generating a calculation procedure for calculating a scalar multiple k * G of the point G, and k * G is a power of 2 of G (2
^ I) An addition type specifying unit 310a that repeats division into addition forms using * G and specifies the type (addition type) of switching of the expression form (plus expression / minus expression) of the obtained addition element , Addition type identification unit 3
An array generation / output unit 310b that outputs the addition type specified by 10a as an array.

【0094】具体的には、計算手順生成部310は、図
9に示されるフローチャートのように、整数kを入力と
して、配列{S[i]}(S[i]は配列のi番目の
数、1≦i≦|k|)を出力する。ここで、配列S
[i]は、k*Gを算出するための繰り返し加算におけ
る第i番目の加算のタイプ、即ち、点Gの2のべき乗倍
でない加算要素(又は、加算の結果得られる値)の係数
の表現形式に着目し、その加算によって係数がプラス表
現からプラス表現になった場合に「0」、プラス表現か
らマイナス表現になった場合に「1」、マイナス表現か
らマイナス表現になった場合に「2」、マイナス表現か
らプラス表現になった場合に「3」にセットされる。
Specifically, as shown in the flowchart of FIG. 9, the calculation procedure generator 310 receives the integer k as an input, and the array {S [i]} (S [i] is the i-th number of the array. 1 ≦ i ≦ | k |) is output. Where the array S
[I] is the type of the i-th addition in the repeated addition for calculating k * G, that is, the expression of the coefficient of the addition element (or the value obtained as a result of the addition) that is not a power of 2 of the point G. Paying attention to the form, "0" when the coefficient is changed from the positive expression to the positive expression by the addition, "1" when the coefficient is changed from the positive expression to the negative expression, and "2" when the coefficient is changed from the negative expression to the negative expression. “,” Is set to “3” when the negative expression is changed to the positive expression.

【0095】図9において、加算タイプ特定部310a
は、以下の手順に従って、配列{S[i]}を特定す
る。なお、以下では、 k=k[n−1]×2^(n−1)+k[n−2]×2
^(n−2)+……+k[1]×2+k[0] とおいたときのkのビット表現を[k[n−1]、k
[n−2]、……、k[1]、k[0]]とする。 ステップS401:w←kとする。ただし、w←kはw
にkを代入することを示している。 ステップS402:カウンタc←n−1とする。 ステップS403:u←w−2^cとする。 ステップS404:u[c−1]が1であるかを判定す
る。1であるときステップS406へ。それ以外は次の
ステップへ。 ステップS405:u[c−2]が0であるかを判定す
る(S405a)。0であるとき、S[c]←0,w←
w−2^(c−1)とする(S405b)。1であると
き、S[c]←1、w←w−2^(c−1)、u←w−
2^(c−1)とする(S405c)。ステップS40
7へ。 ステップS406:u[c−2]が1であるかを判定す
る(S406a)。1であるとき、S[c]←2、w←
w−2^c、u←u−2^cとする(406b)。0で
あるとき、S[c]←3、w←w−2^c、u←w−2
^(c−1)とする(S406c)。 ステップS407:w=2^(c−1)+2^(c−
2)であるか判定する(S407a)。この式が成り立
つ場合、加算タイプ特定部310aは、S[1]←c−
1とし、配列生成出力部310bは、配列{S[i]}
をスカラ倍演算部320に出力して終了する(S407
b)。それ以外は、次のステップへ。 ステップS408:c←c−1とする。ステップS40
4へ。
In FIG. 9, the addition type specifying unit 310a
Specifies the array {S [i]} according to the following procedure. In the following, k = k [n-1] * 2 ^ (n-1) + k [n-2] * 2
^ (N-2) + ... + k [1] × 2 + k [0], the bit representation of k is [k [n-1], k
Let [n-2], ..., K [1], k [0]]. Step S401: Set w ← k. However, w ← k is w
It indicates that k is substituted for. Step S402: Counter c ← n-1. Step S403: u ← w-2 ^ c. Step S404: It is determined whether u [c-1] is 1. If it is 1, go to step S406. Otherwise, go to the next step. Step S405: It is determined whether u [c-2] is 0 (S405a). When 0, S [c] ← 0, w ←
Let w-2 ^ (c-1) (S405b). When 1, S [c] ← 1, w ← w-2 ^ (c-1), u ← w-
Let 2 ^ (c-1) (S405c). Step S40
Go to 7. Step S406: It is determined whether u [c-2] is 1 (S406a). When 1, S [c] ← 2, w ←
Let w-2 ^ c and u ← u-2 ^ c (406b). When 0, S [c] ← 3, w ← w-2 ^ c, u ← w-2
^ (C-1) (S406c). Step S407: w = 2 ^ (c-1) + 2 ^ (c-
It is determined whether it is 2) (S407a). If this expression holds, the addition type identifying unit 310a determines that S [1] ← c−
1, and the array generation / output unit 310b sets the array {S [i]}
Is output to the scalar multiplication unit 320 and the processing is terminated (S407).
b). Otherwise, go to the next step. Step S408: Set c ← c-1. Step S40
Go to 4.

【0096】スカラ倍演算部320は、計算手順生成部
310から出力された計算手順S[i](i=1,2,
……)に基づいて、楕円曲線上の加算を繰り返すこと
で、最終的な計算結果k*Gを算出し出力する演算部で
あり、点Gの2のべき乗倍((2^i)*G;i=1,
2,…;ただし、x座標のみ)を予め記憶しているテー
ブル記憶部320b、ワーキング用のメモリである一時
記憶部320c、楕円曲線上での加算を行う加算器であ
る楕円曲線加算部320d及び計算手順生成部310か
らの計算手順S[i]に従って各構成要素320b〜3
20dを制御する演算制御部320aからなる。
The scalar multiplication unit 320 calculates the calculation procedure S [i] (i = 1, 2,
, Which is a calculation unit that calculates and outputs the final calculation result k * G by repeating addition on the elliptic curve based on (2) i (* 2 ^ i) * G I = 1,
2, ...; However, only the x coordinate) is stored in advance, a table storage unit 320b, a temporary storage unit 320c that is a working memory, an elliptic curve addition unit 320d that is an adder that performs addition on an elliptic curve, and In accordance with the calculation procedure S [i] from the calculation procedure generation unit 310, each of the constituent elements 320b-3
The calculation control unit 320a controls the 20d.

【0097】このスカラ倍演算部320は、図10に示
されるフローチャートに従って、k*Gを算出する。具
体的には、演算制御部320aは、以下のステップで、
計算・制御を行う。 ステップS501:d←S1とする。楕円曲線加算部3
20dに楕円曲線加算2^d*G+2^(d−1)*G
を実行させ、Tに代入し、U←2^(d−1)*Gとす
る。 ステップS502:d←d+1とする。 ステップS503:T'←Tとする。 ステップS504:S[d]の値を判定し(S504
a)、以下のように処理する。 (1) S[d]=0または1のとき、楕円曲線加算部
320dに、Tと2^(d−1)*G(2点の差はU)
の楕円曲線加算を計算させ、その結果をTに代入する
(S504b)。 (2) S[d]=2または3のとき、楕円曲線加算部
320dに、2^d*GとT(2点の差はU)の楕円曲
線加算を計算させ、その結果をTに代入する(S504
c)。
The scalar multiplication unit 320 calculates k * G according to the flowchart shown in FIG. Specifically, the arithmetic control unit 320a performs the following steps.
Calculate and control. Step S501: d ← S1. Elliptic curve adder 3
Add elliptic curve to 20d 2 ^ d * G + 2 ^ (d-1) * G
Is executed and is substituted into T, and U ← 2̂ (d−1) * G. Step S502: Set d ← d + 1. Step S503: T ′ ← T. Step S504: The value of S [d] is determined (S504
a), process as follows. (1) When S [d] = 0 or 1, T and 2 ^ (d−1) * G (the difference between the two points is U) in the elliptic curve addition unit 320d.
The elliptic curve addition of is calculated and the result is substituted for T (S504b). (2) When S [d] = 2 or 3, let the elliptic curve addition unit 320d calculate elliptic curve addition of 2 ^ d * G and T (the difference between two points is U), and substitute the result in T. Yes (S504
c).

【0098】なお、(2^d)*G等の2のべき乗倍に
ついては、テーブル記憶部320bから読み出した値を
用いることとし、得られた加算結果については、一時記
憶部320cに格納することで変数Tに代入したりす
る。 ステップS505:d=|k|−1であるか判定し(S
505a)、この式を満たす場合、Tを出力し(S50
5b)、終了する。それ以外は次のステップへ。 ステップS506:S[d+1]の値を調べ(S506
a)、S[d+1]=1であるとき、U←T'とする
(S506b)。S[d+1]=3であるとき、楕円曲
線加算部320dに、2^d*Gと−U(2点の差は
T)の楕円曲線加算を実行させ、その結果をUに代入す
る(S506c)。ステップS502へ。
For powers of 2 such as (2 ^ d) * G, the value read from the table storage unit 320b is used, and the obtained addition result is stored in the temporary storage unit 320c. And substitute it for the variable T. Step S505: It is determined whether d = | k | −1 (S
505a), if this expression is satisfied, T is output (S50
5b), the process ends. Otherwise, go to the next step. Step S506: Check the value of S [d + 1] (S506
a) and when S [d + 1] = 1, U ← T ′ is set (S506b). When S [d + 1] = 3, the elliptic curve addition unit 320d is caused to execute elliptic curve addition of 2 ^ d * G and −U (the difference between the two points is T), and the result is substituted for U (S506c). ). Go to step S502.

【0099】なお、上記のステップで使用される楕円曲
線加算の具体的な計算方法は、実施形態1で説明した通
りである。以上のように構成された楕円曲線演算装置3
00の全体的な動作は次の通りである。
The specific calculation method of the elliptic curve addition used in the above steps is as described in the first embodiment. Elliptic curve calculation device 3 configured as described above
The overall operation of 00 is as follows.

【0100】楕円曲線演算装置300は、入力の整数k
を受け取り、計算手順生成部310へ入力する。計算手
順生成部310は、入力された整数kより、配列{S
[i]}を計算し、スカラ倍演算部320へ入力する。
スカラ倍演算部320は、入力された配列{S[i]}
より、楕円曲線の点Gのスカラ倍点k*Gを算出し、出
力する。
The elliptic curve calculation device 300 uses the input integer k.
Is input to the calculation procedure generation unit 310. The calculation procedure generation unit 310 calculates the array {S from the input integer k.
[I]} is calculated and input to the scalar multiplication unit 320.
The scalar multiplication unit 320 receives the input array {S [i]}
Then, the scalar multiplication point k * G of the point G of the elliptic curve is calculated and output.

【0101】2.具体的な数値例に対する楕円曲線演算
装置300の動作 以下では、k=102の場合の数値例を示す。まず、計
算手順生成部310に処理を説明する。n=7であるた
め、カウンタcの初期値は、6である。カウンタcの値
に対する処理を以下に示す。 (カウンタc=6のとき) ステップS403:u←w−2^(n−1)=38 ステップS404:u[c−1]=u[5]の判定。u
[5]=1(∵u=2^5+6)であるため、ステップ
S406へ。 ステップS406:u[c−2]=u[4]の判定。u
[4]=0であるため、S[6]←3、w←w−2^c
=102−2^6=38、u←w−2^(c−1)=3
8−2^5=6 ステップS407:w=2^(c−1)+2^(c−
2)であるかの判定。満たさない ステップS408:c←c−1=5として、ステップS
404へ。 (カウンタc=5のとき) ステップS404:u[c−1]=u[4]の判定。u
[4]=0であるため、ステップS405へ。 ステップS405:u[c−2]=u[3]の判定。u
[3]=0であるため、S[5]←0、w←w−2^
(c−1)=38−2^4=22。ステップS407
へ。 ステップS407:w=2^(c−1)+2^(c−
2)であるかの判定。満たさない ステップS408:c←c−1=4として、ステップS
404へ。 (カウンタc=4のとき) ステップS404:u[c−1]=u[3]の判定。u
[3]=0であるため、ステップS405へ。 ステップS405:u[c−2]=u[2]の判定。u
[2]=1であるため、S[4]←1、w←w−2^
(c−1)=22−2^3=14、u←w−2^(c−
1)=14−2^3=6。ステップS407へ。 ステップS407:w=2^(c−1)+2^(c−
2)であるかの判定。満たさない ステップS408:c←c−1=3として、ステップS
404へ。 (カウンタc=3のとき) ステップS404:u[c−1]=u[2]の判定。u
[2]=1であるため、ステップS406へ。 ステップS406:u[c−2]=u[1]の判定。u
[1]=1であるため、S[3]←2、w←w−2^c
=14−2^3=6、u←u−2^(c−1)=6−2
^2=2。ステップS407へ。 ステップS407:w=2^(c−1)+2^(c−
2)であるかの判定。w=6=2^2+2^1であるた
め、満たすため、S[1]=c−1=2として、配列
{S[i]}を出力し終了。
2. Operation of Elliptic Curve Calculation Device 300 for Specific Numerical Example Below, a numerical example in the case of k = 102 will be shown. First, the process of the calculation procedure generation unit 310 will be described. Since n = 7, the initial value of the counter c is 6. The processing for the value of the counter c is shown below. (When Counter c = 6) Step S403: u ← w−2 ^ (n−1) = 38 Step S404: Determination of u [c−1] = u [5]. u
Since [5] = 1 (∵u = 2 ^ 5 + 6), the process proceeds to step S406. Step S406: determination of u [c-2] = u [4]. u
Since [4] = 0, S [6] ← 3, w ← w-2 ^ c
= 102-2 ^ 6 = 38, u ← w-2 ^ (c-1) = 3
8-2 ^ 5 = 6 Step S407: w = 2 ^ (c-1) + 2 ^ (c-
2) determination of whether or not. Not satisfying step S408: Step S is performed by setting c ← c-1 = 5
To 404. (When Counter c = 5) Step S404: Determination of u [c−1] = u [4]. u
Since [4] = 0, go to step S405. Step S405: determination of u [c-2] = u [3]. u
Since [3] = 0, S [5] ← 0, w ← w-2 ^
(C-1) = 38-2 ^ 4 = 22. Step S407
What. Step S407: w = 2 ^ (c-1) + 2 ^ (c-
2) determination of whether or not. Not satisfying step S408: assuming that c ← c-1 = 4, step S408
To 404. (When Counter c = 4) Step S404: Determination of u [c-1] = u [3]. u
Since [3] = 0, go to step S405. Step S405: determination of u [c-2] = u [2]. u
Since [2] = 1, S [4] ← 1, w ← w-2 ^
(C-1) = 22-2 ^ 3 = 14, u ← w-2 ^ (c-
1) = 14-2-2 = 6. Go to step S407. Step S407: w = 2 ^ (c-1) + 2 ^ (c-
2) determination of whether or not. Not satisfying step S408: assuming c ← c-1 = 3, step S408
To 404. (When Counter c = 3) Step S404: Determination of u [c−1] = u [2]. u
Since [2] = 1, the process proceeds to step S406. Step S406: determination of u [c-2] = u [1]. u
Since [1] = 1, S [3] ← 2, w ← w-2 ^ c
= 14-2 ^ 3 = 6, u ← u-2 ^ (c-1) = 6-2
^ 2 = 2. Go to step S407. Step S407: w = 2 ^ (c-1) + 2 ^ (c-
2) determination of whether or not. Since w = 6 = 2̂2 + 2̂1 is satisfied, S [1] = c−1 = 2 is set and the array {S [i]} is output and the processing ends.

【0102】以上より、計算手順生成部310の出力
は、[2、0、2、1、0、3]である。
From the above, the output of the calculation procedure generation unit 310 is [2, 0, 2, 1, 0, 3].

【0103】次に、スカラ倍演算部320による処理を
説明する。S1=2であるため、d=2となる。まず、
ステップS501にて、2^2*G+2^1*Gを計算
し、Qに代入し、U←2^1*Gとする。次に、ステッ
プS502にて、d←d+1=3とする。以下にそれ以
降のdの値に対する処理を示す。 (d=3のとき) ステップS503:Q'←Q ステップS504:S[d]=S[3]の値を判定。S
[3]=2であるため、2^3*GとQ(2点の差は、
2^3*G−Q=(2^3−(2^2+2^1))*G
=2*G=U)の楕円曲線加算を行い、Qに代入(Q=
14*G)。 ステップS505:d=|k|−1=6であるか判定。
満たさない ステップS506:S[d+1]=S[4]の判定。S
[4]=1であるため、U←Q'(=6*G)。ステッ
プS502へ。 (d=4のとき) ステップS503:Q'←Q ステップS504:S[d]=S[4]の値を判定。S
[4]=0であるため、Qと2^3*G(2点の差は、
Q−2^3*G=(14−2^3)*G=6*G=U)
の楕円曲線加算を行い、Qに代入(Q=22*G)。 ステップS505:d=|k|−1=6であるか判定。
満たさない ステップS506:S[d+1]=S[5]の判定。S
[5]=0であるため、ここでの処理はない。ステップ
S502へ。 (d=5のとき) ステップS503:Q'←Q ステップS504:S[d]=S[5]の値を判定。S
[5]=0であるため、Qと2^4*G(2点の差は、
Q−2^4*G=(22−2^4)*G=6*G=U)
の楕円曲線加算を行い、Qに代入(Q=38*G)。 ステップS505:d=|k|−1=6であるか判定。
満たさない ステップS506:S[d+1]=S[6]の値を判
定。S[6]=3であるため、2^5*Gと−U(2点
の差は2^5*G−(−U)=(2^5+6)*G=3
8*G)の楕円曲線加算を行い、Uに代入(U=26*
G)。ステップS502へ。 (d=6のとき) ステップS503:Q'←Q ステップS504:S[d]=S[6]の値を判定。S
[6]=3であるため、2^6*GとQ(2点の差は、
2^6*G−Q=(2^6−38)*G=26*G=
U)の楕円曲線加算を行い、Qに代入(Q=102*
G)。 ステップS505:d=|k|−1=6であるか判定。
満たすため、Q(=102*G)を出力し終了。
Next, the processing by the scalar multiplication unit 320 will be described. Since S1 = 2, d = 2. First,
In step S501, 2 ^ 2 * G + 2 ^ 1 * G is calculated and substituted for Q, so that U ← 2 ^ 1 * G. Next, in step S502, d ← d + 1 = 3. The processing for the subsequent values of d is shown below. (When d = 3) Step S503: Q ′ ← Q Step S504: Determine the value of S [d] = S [3]. S
Since [3] = 2, 2 ^ 3 * G and Q (the difference between the two points is
2 ^ 3 * G-Q = (2 ^ 3- (2 ^ 2 + 2 ^ 1)) * G
= 2 * G = U) elliptic curve addition and substitute for Q (Q =
14 * G). Step S505: Determine whether d = | k | −1 = 6.
Not satisfying step S506: determination of S [d + 1] = S [4]. S
Since [4] = 1, U ← Q ′ (= 6 * G). Go to step S502. (When d = 4) Step S503: Q ′ ← Q Step S504: Determine the value of S [d] = S [4]. S
Since [4] = 0, Q and 2 ^ 3 * G (the difference between the two points is
Q-2 ^ 3 * G = (14-2 ^ 3) * G = 6 * G = U)
Then, the elliptic curve is added and the value is substituted for Q (Q = 22 * G). Step S505: Determine whether d = | k | −1 = 6.
Not satisfying step S506: determination of S [d + 1] = S [5]. S
Since [5] = 0, there is no processing here. Go to step S502. (When d = 5) Step S503: Q ′ ← Q Step S504: Determine the value of S [d] = S [5]. S
Since [5] = 0, Q and 2 ^ 4 * G (the difference between the two points is
Q-2 ^ 4 * G = (22-2 ^ 4) * G = 6 * G = U)
Then, the elliptic curve is added and the value is substituted for Q (Q = 38 * G). Step S505: Determine whether d = | k | −1 = 6.
Not satisfied Step S506: Determine the value of S [d + 1] = S [6]. Since S [6] = 3, 2 ^ 5 * G and -U (the difference between the two points is 2 ^ 5 * G-(-U) = (2 ^ 5 + 6) * G = 3.
8 * G) elliptic curve addition and substitute for U (U = 26 *
G). Go to step S502. (When d = 6) Step S503: Q ′ ← Q Step S504: Determine the value of S [d] = S [6]. S
Since [6] = 3, 2 ^ 6 * G and Q (the difference between the two points is
2 ^ 6 * G-Q = (2 ^ 6-38) * G = 26 * G =
U) elliptic curve addition and substitute for Q (Q = 102 *
G). Step S505: Determine whether d = | k | −1 = 6.
To satisfy the condition, output Q (= 102 * G) and end.

【0104】以上のように、上記数値例において楕円曲
線演算装置300は正しくスカラ倍点102*Gを求め
ることができる。
As described above, in the above numerical example, the elliptic curve calculation device 300 can correctly obtain the scalar multiplication point 102 * G.

【0105】3.計算フロー図による説明 次に、本実施の形態2における楕円曲線演算装置300
の動作について、計算フロー図に従って説明する。
3. Description by Calculation Flow Diagram Next, the elliptic curve calculation device 300 according to the second embodiment.
The operation will be described with reference to a calculation flow chart.

【0106】図11は、実施の形態2における楕円曲線
演算装置300によるスカラ倍演算の手法を示す計算フ
ロー図である。本実施の形態の楕円曲線演算装置300
の計算手順生成部310は、本図の上欄[係数分割の指
針]に記されているように、点Gのスカラ倍k*Gの演
算に際し、予め、係数kに対する2分割を繰り返してい
くが、このとき、分割の対象となる係数については、そ
の係数の2進表現における最上位2桁に着目し、「1
0」である場合には、プラス表現で表現し、一方、「1
1」である場合には、マイナス表現で表現した上で、係
数分割を実行する。そして、係数分割ごとに、分割の対
象(係数)の表現形式がどのように切り替わったかを示
す加算タイプ(0/1/2/3)を特定する。
FIG. 11 is a calculation flowchart showing a method of scalar multiplication by the elliptic curve calculation device 300 according to the second embodiment. Elliptic curve calculation device 300 of the present embodiment
As described in the upper column of this figure [coefficient division guideline], the calculation procedure generation unit 310 repeats two divisions for the coefficient k in advance when calculating the scalar multiple k * G of the point G. However, at this time, regarding the coefficient to be divided, paying attention to the most significant two digits in the binary representation of the coefficient, "1
If it is "0", it is expressed as a plus expression, while "1"
If it is "1", it is expressed by a minus expression and then coefficient division is executed. Then, for each coefficient division, an addition type (0/1/2/3) indicating how the expression format of the division target (coefficient) is switched is specified.

【0107】具体的には、図11の中欄[具体例]に示
される計算フロー図のように、分割の対象となる係数1
02について、その2進表現が1100110であり、
最上位2桁が「11」であるので、102を2^7−2
6というマイナス表現で表現した上で、2^6と2^6
−26(=38)とに分割する。続いて、分割の対象と
なる38について、その2進表現が100110であ
り、最上位2桁が「10」であるので、38を2^5+
6というプラス表現で表現した上で、2^4と2^4+
6とに分割する。このとき、第1の係数分割(102に
対する分割)によって、分割の対象がマイナス表現から
プラス表現になったので、図11の下欄に示される表現
形式の切り替わり種別の中から該当するものの値「3」
を配列S[i]の値としてセットする。
Specifically, as shown in the calculation flow chart in the middle column [specific example] of FIG.
For 02, its binary representation is 1100110,
Since the highest two digits are "11", 102 is 2 ^ 7-2
Expressed with a negative expression of 6, then 2 ^ 6 and 2 ^ 6
-26 (= 38). Next, since 38 has a binary representation of 100110 and the highest two digits are "10", the 38 to be divided is 2 ^ 5 +.
Expressed as a positive expression of 6, then 2 ^ 4 and 2 ^ 4 +
Divide into 6 and 6. At this time, the first coefficient division (division for 102) changes the division target from the negative expression to the positive expression. Therefore, the value of the corresponding one of the expression type switching types shown in the lower column of FIG. 3 "
Is set as the value of the array S [i].

【0108】このように、本図の例では、分割対象の係
数は、分割に伴って、マイナス表現、プラス表現、プラ
ス表現、マイナス表現、マイナス表現、…と変化してい
るので、出力される配列S[i]は、3,0,1,2,
…となる。
As described above, in the example of this figure, the coefficient to be divided changes in the negative expression, the positive expression, the positive expression, the negative expression, the negative expression, ... The array S [i] is 3,0,1,2,
… Will be.

【0109】なお、分割対象の表現形式がマイナス表現
からプラス表現に切り替わった場合に、分割によって生
成された2つの加算要素の差分値についても、分割して
おく必要がある。本図の例では、分割対象がマイナス表
現(2^7−26)からプラス表現(2^5+6)に切
り替わったときに生成された差分値26についても図示
される加算要素に分割している。
When the expression form of the division target is switched from the minus expression to the plus expression, the difference value between the two addition elements generated by the division also needs to be divided. In the example of this figure, the difference value 26 generated when the division target is switched from the minus expression (2 ^ 7-26) to the plus expression (2 ^ 5 + 6) is also divided into the addition elements shown.

【0110】以上のように、実施の形態2では、計算手
順生成部310が生成する計算手順S[i]は、スカラ
係数kに対する繰り返し分割における対象係数の表現形
式の切り替わり情報であり、全ての分割要素(加算要
素)を計算手順として出力する実施の形態1と比べ、簡
素化された情報となっている。
As described above, in the second embodiment, the calculation procedure S [i] generated by the calculation procedure generation unit 310 is the switching information of the representation format of the target coefficient in the iterative division with respect to the scalar coefficient k, and The information is simplified as compared with the first embodiment in which the division element (addition element) is output as the calculation procedure.

【0111】4.実施形態2の効果 本実施の形態における楕円曲線演算装置300は、実施
の形態1と同様に、スカラ倍演算部320の処理からも
わかるとおり、楕円曲線加算の繰り返し計算において、
(2^i)*Gが加算ごとに出現しており、(2^i)
*G(i=1,2,……,n−1)の座標のテーブルを
有効に使用することができている。そのため、計算量が
削減され、従来技術3に比べ、計算速度は、約1.3倍
高速である。
4. Effects of Second Embodiment As is apparent from the processing of the scalar multiplication unit 320, the elliptic curve calculation device 300 according to the present embodiment is similar to the first embodiment, in the repeated calculation of the elliptic curve addition,
(2 ^ i) * G appears at each addition, and (2 ^ i)
The table of coordinates of * G (i = 1, 2, ..., N-1) can be effectively used. Therefore, the amount of calculation is reduced, and the calculation speed is about 1.3 times faster than that of the conventional technique 3.

【0112】実施の形態1の楕円曲線演算装置200と
異なる点は、装置の処理の記述がより計算機に適した形
(2進表現と関連した処理)になっていることである。
そのため、プログラミングが容易になる。以上より、実
施形態2によって、高速な楕円曲線演算が可能になり、
さらにその処理は計算機に適した形になっており、本発
明の実用的価値は非常に大きい。
The difference from the elliptic curve calculation device 200 of the first embodiment is that the description of the process of the device is in a form more suitable for a computer (process related to binary representation).
Therefore, programming becomes easy. As described above, the second embodiment enables high-speed elliptic curve calculation,
Further, the processing is in a form suitable for a computer, and the practical value of the present invention is very large.

【0113】[実施の形態3]次に、本発明の実施の形
態3における楕円曲線演算装置について説明する。 1.楕円曲線演算装置400の構成及び動作 図12は、実施の形態3における楕円曲線演算装置40
0の構成を示すブロック図である。この楕円曲線演算装
置400は、実施の形態1及び2と同様に、専用のプロ
グラムを実行するコンピュータ装置又はLSI等の論理
回路で実現され、有限体GF(p)上のモンゴメリ型楕
円曲線E:B×y^2=x^3+A×x^2+xのパラ
メータp(素数)、GF(p)の元A、Bと、E(GF
(p))に属する点Gと、その点Gの2のべき乗倍点
(2^i)*G(i=1,2,……,n−1)のx座標
が予め与えられ、nビットの任意のkを入力として、点
Gのスカラ倍点k*Gのx座標を出力する演算装置であ
り、点Gの2のべき乗倍(2^i)*Gを有効活用しな
がら計算する点に特徴を有し、計算手順生成部410と
スカラ倍演算部420とから構成される。
[Third Embodiment] Next, an elliptic curve calculation device according to a third embodiment of the present invention will be described. 1. Configuration and Operation of Elliptic Curve Calculation Device 400 FIG. 12 shows elliptic curve calculation device 40 according to the third embodiment.
It is a block diagram which shows the structure of 0. Like the first and second embodiments, the elliptic curve calculation device 400 is realized by a logic circuit such as a computer device or an LSI that executes a dedicated program, and the Montgomery elliptic curve E on the finite field GF (p): B × y ^ 2 = x ^ 3 + A × x ^ 2 + x parameter p (prime number), elements A and B of GF (p), and E (GF
(P)) and the x coordinate of a point G belonging to (p)) and a power-of-two point (2 ^ i) * G (i = 1, 2, ..., N-1) of the point G are given in advance, and n bits are set. Is an arithmetic unit that outputs the x-coordinate of the scalar multiplication point k * G of the point G by inputting an arbitrary k of the point G, and a point that calculates while effectively utilizing the power of 2 of the point G (2 ^ i) * G And has a calculation procedure generation unit 410 and a scalar multiplication unit 420.

【0114】この楕円曲線演算装置400は、点Gのス
カラ倍演算について、2進表現を利用した予備計算(計
算機処理に向いた計算)に基づいて加算要素の表現形式
の切り替わりに関する計算手順を生成する点で実施の形
態2と共通し、個々の切り替わり情報ではなく、同一表
現形式の連続個数を計算手順として生成する点で実施の
形態2と異なる。以下、実施の形態2と異なる点を中心
に説明する。
This elliptic curve calculation device 400 generates a calculation procedure for switching the representation form of the addition element based on preliminary calculation (calculation suitable for computer processing) using binary representation for scalar multiplication of point G. The second embodiment is different from the second embodiment in that it is common to the second embodiment in that the number of consecutive pieces of the same expression format is generated as a calculation procedure instead of the individual switching information. Hereinafter, points different from the second embodiment will be mainly described.

【0115】計算手順生成部410は、点Gのスカラ倍
k*Gを算出するための計算手順を生成する予備計算を
実行する処理部であり、k*GをGの2のべき乗倍(2
^i)*Gを用いた加算形に分割することを繰り返すと
ともに、得られた加算要素の表現形式の切り替わり点
(同一の表現形式が何個連続した後に切り替わるかの情
報)を特定する加算要素表現切替点特定部410aと、
加算要素表現切替点特定部410aによって特定された
切り替わり点を配列として出力する配列生成出力部41
0bとからなる。
The calculation procedure generation unit 410 is a processing unit for executing preliminary calculation for generating a calculation procedure for calculating the scalar multiple k * G of the point G, and k * G is a power of 2 of G (2
^ I) An addition element that repeats division into addition forms using * G and specifies a switching point of the expression form of the obtained addition element (information about how many times the same expression form continues and then switches) An expression switching point specifying unit 410a,
Array generation output unit 41 that outputs the switching points specified by the addition element expression switching point specifying unit 410a as an array
It consists of 0b.

【0116】具体的には、計算手順生成部410は、図
13に示されるフローチャートのように、整数kを入力
として、配列{S[i]}(i=1,2,…,S[1]
+2)を出力する。ここで、配列{S[i]}は、以下
の値から構成される。
Specifically, as shown in the flowchart in FIG. 13, the calculation procedure generation unit 410 receives the integer k as an input and outputs the array {S [i]} (i = 1, 2, ..., S [1 ]
+2) is output. Here, the array {S [i]} is composed of the following values.

【0117】S[1]:係数分割の結果得られた表現形
式の遷移列において出現した表現形式(同一の表現形式
が連続する場合には、1個とする)の総数。例えば、分
割対象の表現形式が、−(マイナス表現),+(プラス
表現),+,−,−であった場合には、3(「−」、
「+」、「−」の3個)となる。
S [1]: The total number of expression forms (in the case where the same expression form is continuous, the number is one) that appears in the transition sequence of the expression forms obtained as a result of coefficient division. For example, when the expression form of the division target is − (minus expression), + (plus expression), +, −, −, 3 (“−”,
"+", "-").

【0118】S[2]:係数分割の最後に得られる加算
要素に含まれる「0」(2進表現)の数。なお、係数分
割の最後に得られる加算要素は、2進表現で、必ず10
…(1と0個以上の0が続く表現)となる。
S [2]: Number of "0" (binary expression) contained in the addition element obtained at the end of coefficient division. The addition element obtained at the end of the coefficient division is a binary expression and must be 10
... (an expression in which 1 and 0 or more 0s continue).

【0119】S[3]:係数分割によって得られた表現
形式の遷移列において、上位桁から第1番目の表現形式
が連続する個数。例えば、分割対象の表現形式が、−,
+,+,−,−であった場合には、1(1番目の表現形
式「−」は1個)となる。
S [3]: The number of consecutive first-form representation forms from the upper digit in the representation-sequence transition sequence obtained by coefficient division. For example, the expression format of the division target is −,
If it is +, +,-,-, it is 1 (the first expression form "-" is one).

【0120】S[4]:係数分割によって得られた表現
形式の遷移列において、上位桁から第2番目の表現形式
が連続する個数。例えば、分割対象の表現形式が、−,
+,+,−,−であった場合には、2(2番目の表現形
式「+」は2個)となる。
S [4]: The number of consecutive second expression formats from the upper digit in the transition string of the expression formats obtained by coefficient division. For example, the expression format of the division target is −,
If it is +, +,-,-, it is 2 (the second expression form "+" is two).

【0121】以下、同様にして、S[S[1]+2]ま
で続く。図13において、加算要素表現切替点特定部4
10aは、以下の手順に従って、配列{S[i]}を特
定する。 ステップS601:与えられたkを係数分割の対象とす
る。 ステップS602:分割対象について、実施の形態2と
同様の判断(図6の「係数分割の指針」)によって表現
形式を特定して記憶しておくとともに、分割対象をその
表現形式で表現する。 ステップS603:分割対象を、実施の形態2と同様
に、第1加算要素(2のべき乗の項)と第2加算要素と
に分割するとともに、それらの差分値を特定する。 ステップS604:全ての係数分割が終了したか否かを
判断するために、次の分割対象となる第2加算要素が3
×2^eで表せるか判断する。 ステップS605:上記ステップS604で肯定的に判
断された場合には、次の分割対象の表現形式をマイナス
表現とし、その分割対象に対する最後の分割を行う。 ステップS606:最後に、配列生成出力部410b
は、それまでの係数分割で得られた分割対象についての
表現形式の並びから、出現した表現形式の個数をS
[1]にセットし、最後の係数分割で得られた第2加算
要素に含まれる「0」(2進表現)の個数をS[2]に
セットし、係数分割によって得られた表現形式の遷移列
において、上位桁から第1番目の表現形式が連続する個
数をS[3]にセットし、同様に、第2番目の表現形式
が連続する個数をS[4]にセットし、・・・、最後の
分割対象の表現形式が連続する個数をS[S[1]+
2]にセットし、スカラ倍演算部420に出力する。 ステップS607:ステップS604において否定的に
判断された場合には、さらなる係数分割を続けるため
に、第2加算要素を新たな分割対象とし、同様の手順
(ステップS602〜S604)を繰り返す。
In the same manner, the process continues until S [S [1] +2]. In FIG. 13, the addition element expression switching point identification unit 4
10a identifies the array {S [i]} according to the following procedure. Step S601: The given k is a target of coefficient division. Step S602: With respect to the division target, the expression form is specified and stored by the same judgment as the second embodiment (“coefficient division guideline” in FIG. 6), and the division target is expressed in the expression form. Step S603: Similar to the second embodiment, the division target is divided into the first addition element (term of a power of 2) and the second addition element, and the difference value thereof is specified. Step S604: In order to determine whether or not all coefficient divisions have been completed, the second addition element to be the next division target is 3
Determine if it can be represented by × 2 ^ e. Step S605: If the affirmative determination is made in step S604, the expression format of the next division target is set to a negative expression, and the final division is performed on the division target. Step S606: Finally, the array generation / output unit 410b
Is the number of appearance formats that have appeared from the array of expression formats for the division target obtained by the coefficient division up to that point.
Set to [1], set the number of “0” (binary expression) included in the second addition element obtained by the last coefficient division to S [2], and set the expression format obtained by the coefficient division. In the transition sequence, the number of consecutive first representation formats from the upper digit is set to S [3], and similarly, the number of consecutive second representation formats is set to S [4], ... .. S [S [1] +
2] and output to the scalar multiplication unit 420. Step S607: When a negative determination is made in step S604, the second addition element is set as a new division target in order to continue the further coefficient division, and the same procedure (steps S602 to S604) is repeated.

【0122】スカラ倍演算部420は、計算手順生成部
410から出力された計算手順{S[i]}に基づい
て、楕円曲線上の加算を繰り返すことで、最終的な計算
結果k*Gを算出し出力する演算部であり、点Gの2の
べき乗倍((2^i)*G;i=1,2,…;ただし、
x座標のみ)を予め記憶しているテーブル記憶部420
b、ワーキング用のメモリである一時記憶部420c、
楕円曲線上での加算を行う加算器である楕円曲線加算部
420d及び計算手順生成部410からの計算手順{S
[i]}に従って各構成要素420b〜420dを制御
する演算制御部420aからなる。
The scalar multiplication unit 420 repeats addition on the elliptic curve based on the calculation procedure {S [i]} output from the calculation procedure generation unit 410 to obtain the final calculation result k * G. This is a calculation unit that calculates and outputs, and is a power of 2 of the point G ((2 ^ i) * G; i = 1, 2, ...;
Table storage unit 420 storing in advance (x coordinate only)
b, a temporary storage unit 420c that is a working memory,
A calculation procedure {S from the elliptic curve addition unit 420d and the calculation procedure generation unit 410, which is an adder that performs addition on the elliptic curve
[I]} according to [i]}, and comprises the arithmetic control part 420a which controls each component 420b-420d.

【0123】このスカラ倍演算部420は、図14に示
されるフローチャートに従って、k*Gを算出する。具
体的には、演算制御部420aは、以下のステップで、
計算・制御を行う。 ステップS701:計算手順生成部410から与えられ
た配列要素S[2]に基づいて、最初の楕円曲線加算に
必要な第1加算要素、第2加算要素及び差分を特定す
る。 ステップS702〜S704:計算手順生成部410か
ら与えられた配列要素S[1]が示す回数だけ、同一タ
イプの楕円曲線加算(ステップS703)を繰り返す。 ステップS703:上記S[1]回の楕円曲線加算にお
ける第i番目の楕円曲線加算においては、計算手順生成
部410から与えられた配列要素S[i+2]が示す回
数だけ、同一タイプの楕円曲線加算を繰り返す。
The scalar multiplication unit 420 calculates k * G according to the flowchart shown in FIG. Specifically, the arithmetic control unit 420a performs the following steps.
Calculate and control. Step S701: The first addition element, the second addition element, and the difference necessary for the first elliptic curve addition are specified based on the array element S [2] given from the calculation procedure generation unit 410. Steps S702 to S704: Elliptic curve addition of the same type (step S703) is repeated the number of times indicated by the array element S [1] given from the calculation procedure generation unit 410. Step S703: In the i-th elliptic curve addition in the S [1] times of elliptic curve addition, elliptic curve addition of the same type is performed the number of times indicated by the array element S [i + 2] given from the calculation procedure generation unit 410. repeat.

【0124】2.具体的な数値例に対する楕円曲線演算
装置400の動作 次に、本実施の形態3における楕円曲線演算装置400
の動作について、具体的な数値例及び計算フロー図を用
いて説明する。
2. Operation of Elliptic Curve Calculation Device 400 for Specific Numerical Example Next, the elliptic curve calculation device 400 according to the third embodiment.
The operation will be described with reference to specific numerical examples and calculation flow charts.

【0125】まず、計算手順生成部410による処理を
説明する。図15は、計算手順生成部410による計算
手順(配列{S[i]})の生成過程を示す計算フロー
図である。本図の上欄[具体例]に示される計算フロー
図と図11に示された計算フロー図とを比較して分かる
ように、本実施の形態における係数分割の基本処理は実
施の形態2と同様である。つまり、係数kに対する2分
割を繰り返し、このとき、分割の対象となる係数の2進
表現における最上位2桁が「10」である場合には、プ
ラス表現で表現し、一方、「11」である場合には、マ
イナス表現で表現した上で、係数分割を実行する。
First, the processing by the calculation procedure generation unit 410 will be described. FIG. 15 is a calculation flowchart showing a process of generating a calculation procedure (array {S [i]}) by the calculation procedure generation unit 410. As can be seen by comparing the calculation flow chart shown in the upper section [specific example] of this figure with the calculation flow chart shown in FIG. 11, the basic processing of coefficient division in this embodiment is the same as that in the second embodiment. It is the same. That is, the division into two is repeated for the coefficient k. At this time, if the most significant two digits in the binary expression of the coefficient to be divided are “10”, they are expressed in plus, while “11” is used. In some cases, the coefficient is divided after the negative expression.

【0126】ただし、本実施の形態の計算手順生成部4
10は、係数分割において、分割対象の表現形式が何か
ら何に切り替わっていくかを示す配列を生成するではな
く、本図の下欄[配列生成(計算手順生成)]に示され
るように、何回のステップ(分割)で表現形式が切り替
わるかを示す情報を配列{S[i]}として生成する。
However, the calculation procedure generation unit 4 of the present embodiment
In the coefficient division, 10 does not generate an array indicating what the expression form of the division object is switched to, but as shown in the lower column [array generation (calculation procedure generation)] of the figure, Information indicating how many steps (division) the expression format is switched is generated as an array {S [i]}.

【0127】具体的には、本図に示される係数「10
2」については、係数分割に伴って、表現形式がマイナ
ス表現、プラス表現、プラス表現、マイナス表現、マイ
ナス表現と遷移したので、(1,2,2)と特定し、そ
れぞれ、配列要素S[3],S[4],S[5]にセッ
トする。そして、いまセットした合計数「3」を配列要
素S[1]にセットするとともに、係数分割の最後に得
られた加算要素「2」(2進表現で「10」)に含まれ
る「0」の個数「1」を配列要素S[2]にセットし、
計算手順を示す配列{S[i]}として出力する。
Specifically, the coefficient "10" shown in this figure is used.
"2" is changed to the negative expression, the positive expression, the positive expression, the negative expression, and the negative expression with the coefficient division, so that it is specified as (1, 2, 2), and the array element S [ 3], S [4], S [5]. Then, the total number "3" just set is set in the array element S [1], and "0" included in the addition element "2" (binary expression "10") obtained at the end of the coefficient division. Set the number "1" in the array element S [2],
It is output as an array {S [i]} indicating the calculation procedure.

【0128】次に、スカラ倍演算部420による処理を
説明する。図16は、図15に示された具体例に対応す
るスカラ倍演算部420の動作を示す図である。つま
り、図15に示された配列(3,1,1,2,2)を受
け取ったスカラ倍演算部420が図14に示されたフロ
ーチャートに従って102*Gの値を算出するまでの計
算過程及び中間値が示されている。
Next, the processing by the scalar multiplication unit 420 will be described. FIG. 16 is a diagram showing an operation of the scalar multiplication unit 420 corresponding to the specific example shown in FIG. That is, the calculation process until the scalar multiplication unit 420 that has received the array (3, 1, 1, 2, 2) shown in FIG. 15 calculates the value of 102 * G according to the flowchart shown in FIG. Intermediate values are shown.

【0129】スカラ倍演算部420は、計算手順生成部
410から与えられた配列要素S[1]に基づいて、同
一タイプの楕円曲線加算の繰り返し回数dを初期化した
後に、最初の楕円曲線加算に必要な第1加算要素W、第
2加算要素T及び差分U等を特定する(ステップS80
1)。
The scalar multiplication unit 420 initializes the number of repetitions d of the elliptic curve addition of the same type based on the array element S [1] given from the calculation procedure generation unit 410, and then performs the first elliptic curve addition. The first addition element W, the second addition element T, the difference U, and the like required for are specified (step S80).
1).

【0130】そして、S[3+2]=2より、マイナス
表現の加算値を生成する2回の楕円曲線加算を行い、差
分値Uを更新する(ステップS802)。続いて、S
[2+2]=2より、プラス表現の加算値を生成する2
回の楕円曲線加算を行い、差分値Uを更新する(ステッ
プS803)。
Then, from S [3 + 2] = 2, elliptic curve addition is performed twice to generate an addition value in the negative expression, and the difference value U is updated (step S802). Then S
[2 + 2] = 2 is used to generate a plus expression addition value 2
Elliptic curve addition is performed twice to update the difference value U (step S803).

【0131】最後に、S[1+2]=1より、マイナス
表現の加算値を生成する1回の楕円曲線加算を行い、得
られた加算結果Tを最終的な結果(102*G)として
出力する(ステップS804)。
Finally, from S [1 + 2] = 1, one-time elliptic curve addition for generating an addition value in the negative expression is performed, and the obtained addition result T is output as the final result (102 * G). (Step S804).

【0132】3.実施形態3の効果 本実施の形態における楕円曲線演算装置400は、実施
の形態1及び2と同様に、スカラ倍演算部420の処理
からもわかるとおり、楕円曲線加算の繰り返し計算にお
いて、(2^i)*Gが加算ごとに出現しており、(2
^i)*G(i=1,2,……,n−1)の座標のテー
ブルを有効に使用することができている。そのため、計
算量が削減され、従来技術3に比べ、計算速度は、約
1.3倍高速である。
3. Effect of Embodiment 3 As with Embodiments 1 and 2, the elliptic curve calculation device 400 according to the present embodiment can calculate (2 ^) in repeated calculation of elliptic curve addition, as can be seen from the processing of the scalar multiplication unit 420. i) * G appears at each addition, and (2
^ I) * G (i = 1, 2, ..., N-1) coordinate table can be effectively used. Therefore, the amount of calculation is reduced, and the calculation speed is about 1.3 times faster than that of the conventional technique 3.

【0133】実施の形態1の楕円曲線演算装置200と
異なる点は、装置の処理の記述がより計算機に適した形
(2進表現と関連した処理)になっていることであり、
また、実施の形態2の楕円曲線演算装置300と異なる
点は、計算手順生成部410による計算手順の表現が圧
縮された短い形式となっていることである。そのため、
プログラミングが容易になるとともに、計算過程で必要
とされる中間値の個数が抑制される。
The difference from the elliptic curve calculation device 200 of the first embodiment is that the description of the process of the device is in a form more suitable for a computer (process related to binary expression).
A difference from the elliptic curve calculation device 300 of the second embodiment is that the expression of the calculation procedure by the calculation procedure generation unit 410 is in a compressed short form. for that reason,
Programming is facilitated and the number of intermediate values required in the calculation process is suppressed.

【0134】以上より、実施の形態3によって、高速な
楕円曲線演算が可能になり、さらにその処理は計算機に
適した形になっているとともに、より小さなワーキング
メモリ領域での演算が可能となり、本発明の実用的価値
は非常に大きい。
As described above, according to the third embodiment, a high-speed elliptic curve calculation is possible, the processing is suitable for a computer, and the calculation can be performed in a smaller working memory area. The practical value of the invention is enormous.

【0135】[実施の形態4]次に、本発明の実施の形
態4における楕円曲線演算装置について説明する。 1.楕円曲線演算装置500の構成及び動作 図17は、実施の形態4における楕円曲線演算装置50
0の構成を示すブロック図である。この楕円曲線演算装
置500は、実施の形態1〜3と同様に、専用のプログ
ラムを実行するコンピュータ装置又はLSI等の論理回
路で実現され、有限体GF(p)上のモンゴメリ型楕円
曲線E:B×y^2=x^3+A×x^2+xのパラメ
ータp(素数)、GF(p)の元A、Bと、E(GF
(p))に属する点Gと、その点Gの2のべき乗倍点
(2^i)*G(i=1,2,……,n−1)のx座標
が予め与えられ、nビットの任意のkを入力として、点
Gのスカラ倍点k*Gのx座標を出力する演算装置であ
り、点Gの2のべき乗倍(2^i)*Gを有効活用しな
がら計算する点に特徴を有し、演算制御部510とテー
ブル記憶部520と楕円曲線加算部530とから構成さ
れる。
[Embodiment 4] Next, an elliptic curve calculation device according to Embodiment 4 of the present invention will be described. 1. Configuration and Operation of Elliptic Curve Calculation Device 500 FIG. 17 is an elliptic curve calculation device 50 according to the fourth embodiment.
It is a block diagram which shows the structure of 0. This elliptic curve calculation device 500 is realized by a logic circuit such as a computer device or an LSI that executes a dedicated program, as in the first to third embodiments, and the Montgomery type elliptic curve E on the finite field GF (p): B × y ^ 2 = x ^ 3 + A × x ^ 2 + x parameter p (prime number), elements A and B of GF (p), and E (GF
(P)) and the x coordinate of a point G belonging to (p)) and a power-of-two point (2 ^ i) * G (i = 1, 2, ..., N-1) of the point G are given in advance, and n bits Is an arithmetic unit that outputs the x-coordinate of the scalar multiplication point k * G of the point G by inputting an arbitrary k of the point G, and a point that calculates while effectively utilizing the power of 2 of the point G (2 ^ i) * G And has an arithmetic control unit 510, a table storage unit 520, and an elliptic curve addition unit 530.

【0136】この楕円曲線演算装置500は、実施の形
態1〜3と異なり、点Gのスカラ倍演算に対して、予備
計算によって一連の計算手順を事前に生成しておくので
はなく、与えられたkを下位桁から上位桁に向けて解析
しながら、楕円曲線加算を繰り返していくことで、最終
的な結果k*Gを算出する。つまり、計算手順の生成と
楕円曲線加算という2段階ではなく、楕円曲線加算だけ
で最終的な結果を求めている。
Unlike the first to third embodiments, this elliptic curve calculation device 500 does not generate a series of calculation procedures in advance by a preliminary calculation for the scalar multiplication of the point G, but provides it. The final result k * G is calculated by repeating the elliptic curve addition while analyzing k from the lower digit to the upper digit. That is, the final result is obtained only by the elliptic curve addition, instead of the two steps of generating the calculation procedure and elliptic curve addition.

【0137】演算制御部510は、与えられた係数kに
対して、k*Gを算出するための一時的な処理や楕円曲
線加算部530に対する制御を行う処理部であり、係数
kの2進表現における各ビットの値(1/0)を判定す
るビット判定部510aと、ビット判定部510aによ
る判定結果に基づいて、楕円曲線加算に必要な3つの値
(2つの加算要素とそれらの差分値)を特定する加算要
素特定部510bと、ワーキング用のメモリである一時
記憶部510cとからなる。
The arithmetic control unit 510 is a processing unit for performing a temporary process for calculating k * G for a given coefficient k and a control for the elliptic curve addition unit 530. Based on the determination result by the bit determination unit 510a that determines the value (1/0) of each bit in the expression and the determination result by the bit determination unit 510a, three values required for elliptic curve addition (two addition elements and their difference values) ), And a temporary storage unit 510c that is a working memory.

【0138】テーブル記憶部520は、点Gの2のべき
乗倍((2^i)*G;i=1,2,…;ただし、x座
標のみ)を予め記憶しているテーブルであり、実施の形
態1のテーブル記憶部220b等と同一である。
The table storage unit 520 is a table in which the power of 2 of the point G ((2 ^ i) * G; i = 1, 2, ...; However, only the x coordinate) is stored in advance. This is the same as the table storage unit 220b and the like in the first form.

【0139】楕円曲線加算部530は、演算制御部51
0による制御に従って、演算制御部510から指示され
た値又はテーブル記憶部520から読み出した値を用い
て楕円曲線上の加算を行う加算器等である。
The elliptic curve addition unit 530 is included in the calculation control unit 51.
It is an adder or the like that performs addition on an elliptic curve using a value instructed by the arithmetic control unit 510 or a value read from the table storage unit 520 according to the control by 0.

【0140】図18は、本実施の形態における楕円曲線
演算装置500の動作を示すフローチャートである。 ステップS901:演算制御部510は、係数kを取得
する。 ステップS902:取得した係数kの2進表現における
最下位の「1」を特定し、その桁をk[s]とする。そ
して、その桁k[s]に対応する値2^sを最初の加算
対象(2のべき乗と加算される要素)と特定する。 ステップS903〜S907:続いて、その桁k[s]
から最上位桁の手前k[n−2]に向けて、順次、桁k
[i]の値(1/0)に応じた楕円曲線加算(ステップ
S904〜S906)を繰り返す。 ステップS904:具体的には、まず、ビット判定部5
10aは、当該桁k[i]が1か0かを判定する。 ステップS905:その結果、k[s]=1であると判
定された場合には、加算要素特定部510bは、加算対
象をマイナス表現とする加算要素を特定する。つまり、
加算対象を2^(s+1)−dと表現した場合には、楕
円曲線加算に必要な要素として、2^(s+1)−dと
2^(s+1)とdとを生成する。そして、それらを用
いた楕円曲線加算を実行するように、それらの値や制御
指示を楕円曲線加算部530に与える。なお、楕円曲線
加算部530は、点Gの2のべき乗倍については、加算
要素特定部510bからの指示に従って、テーブル記憶
部520から読み出した値を使用する。 ステップS906:一方、ステップS904で当該桁k
[i]が0であると判定された場合には、加算要素特定
部510bは、加算対象をプラス表現とする加算要素を
特定する。つまり、加算対象を2^s+dと表現した場
合には、楕円曲線加算に必要な要素として、2^s+d
と2^sとdとを生成する。そして、それらを用いた楕
円曲線加算を実行するように、それらの値や制御指示を
楕円曲線加算部530に与える。
FIG. 18 is a flow chart showing the operation of the elliptic curve calculation device 500 according to this embodiment. Step S901: The arithmetic control unit 510 acquires the coefficient k. Step S902: The lowest "1" in the binary representation of the obtained coefficient k is specified, and its digit is designated as k [s]. Then, the value 2 ^ s corresponding to the digit k [s] is specified as the first addition target (element to be added to the power of 2). Steps S903 to S907: Next, the digit k [s]
From the most significant digit to k [n-2], the digit k
The elliptic curve addition (steps S904 to S906) according to the value (1/0) of [i] is repeated. Step S904: Specifically, first, the bit determination unit 5
10a determines whether the digit k [i] is 1 or 0. Step S905: As a result, when it is determined that k [s] = 1, the addition element identification unit 510b identifies an addition element whose addition target is a negative expression. That is,
When the addition target is expressed as 2 ^ (s + 1) -d, 2 ^ (s + 1) -d, 2 ^ (s + 1), and d are generated as the elements necessary for the elliptic curve addition. Then, those values and control instructions are given to the elliptic curve addition unit 530 so that the elliptic curve addition using them is executed. The elliptic curve addition unit 530 uses the value read from the table storage unit 520 in accordance with the instruction from the addition element identification unit 510b for the power of 2 of the point G. Step S906: On the other hand, the digit k at step S904
When [i] is determined to be 0, the addition element identification unit 510b identifies an addition element whose addition target is a plus expression. That is, when the addition target is expressed as 2 ^ s + d, the elements necessary for the elliptic curve addition are 2 ^ s + d.
And 2 ^ s and d are generated. Then, those values and control instructions are given to the elliptic curve addition unit 530 so that the elliptic curve addition using them is executed.

【0141】なお、楕円曲線加算によって得られた中間
値等は、一時記憶部510cに記憶され、次の楕円曲線
加算に用いられる。
The intermediate value and the like obtained by the elliptic curve addition are stored in the temporary storage unit 510c and used for the next elliptic curve addition.

【0142】2.具体的な数値例に対する楕円曲線演算
装置500の動作 図19は、具体的な数値に対する楕円曲線演算装置50
0の動作を示す計算フロー図である。この楕円曲線演算
装置500は、k*Gを算出するにあたり、係数kの下
位桁から順に参照していくことで、点Gの2のべき乗倍
と得られた結果との楕円曲線加算を繰り返していくが、
その際に、本図の上欄[楕円曲線加算の指針]に示され
るように、着目している係数k[i]の値が「1」であ
る場合には、加算対象(加算の初期値又は直前の楕円曲
線加算で得られた値)をプラス表現にした上で、楕円曲
線加算を実行し、一方、着目している係数k[i]の値
が「0」である場合には、加算対象をマイナス表現にし
た上で、楕円曲線加算を実行する。
2. Operation of Elliptic Curve Calculation Device 500 for Specific Numerical Example FIG. 19 shows an elliptic curve calculation device 50 for specific numerical values.
It is a calculation flowchart which shows operation | movement of 0. In calculating k * G, the elliptic curve calculation device 500 repeats elliptic curve addition of the power of 2 of the point G and the obtained result by sequentially referring to the lower digits of the coefficient k. Go,
At that time, if the value of the coefficient k [i] of interest is “1” as shown in the upper column of the figure [guideline for addition of elliptic curve], the addition target (initial value of addition) Alternatively, the value obtained by the immediately preceding elliptic curve addition) is expressed in plus, and the elliptic curve addition is executed. On the other hand, when the value of the coefficient k [i] of interest is “0”, Elliptic curve addition is executed after the addition target is expressed as a negative expression.

【0143】具体的には、本図の下欄[具体例]に示さ
れるように、演算制御部510は、まず、与えられた係
数kの2進表現における最下位の「1」(ここでは、k
[s];s=1)を特定する。その桁k[s]に対応す
る値2^1を最初の加算対象(2のべき乗と加算される
要素)と特定する。
More specifically, as shown in the lower column [Specific example] of this figure, the arithmetic control unit 510 first sets the lowest "1" (in this case, 1) in the binary representation of the given coefficient k. , K
[S]; s = 1) is specified. The value 2 ^ 1 corresponding to the digit k [s] is specified as the first addition target (element to be added to the power of 2).

【0144】続いて、その桁k[1]からk[5]に向
けて、順次、桁k[i]の値(1/0)に応じた楕円曲
線加算を繰り返す。具体的には、まず、ビット判定部5
10aは、当該桁k[1]の値を判定する。その結果、
k[1]=0より、加算要素特定部510bは、加算対
象をマイナス表現とする加算要素を特定する。具体的に
は、楕円曲線加算に必要な要素として、(2^(1+
1)−2)*Gと(2^(1+1))*Gと2*Gとを
生成し、楕円曲線加算部530に楕円曲線加算を実行さ
せる。
Subsequently, the elliptic curve addition according to the value (1/0) of the digit k [i] is sequentially repeated from the digit k [1] to k [5]. Specifically, first, the bit determination unit 5
10a determines the value of the digit k [1]. as a result,
From k [1] = 0, the addition element identification unit 510b identifies an addition element whose addition target is a negative expression. Specifically, (2 ^ (1+
1) -2) * G and (2 ^ (1 + 1)) * G and 2 * G are generated, and the elliptic curve addition unit 530 is made to perform elliptic curve addition.

【0145】続いて、ビット判定部510aは、次の上
位桁k[2]の値を判定する。その結果、k[1]=0
より、加算要素特定部510bは、同様にして、加算対
象をマイナス表現とする加算要素を特定する。具体的に
は、楕円曲線加算に必要な要素として、(2^(2+
1)−2)*Gと(2^(2+1))*Gと2*Gとを
生成し、楕円曲線加算部530に楕円曲線加算を実行さ
せる。
Subsequently, the bit determining section 510a determines the value of the next higher digit k [2]. As a result, k [1] = 0
Accordingly, the addition element identification unit 510b similarly identifies the addition element whose addition target is a negative expression. Specifically, (2 ^ (2+
1) -2) * G and (2 ^ (2 + 1)) * G and 2 * G are generated, and the elliptic curve addition unit 530 is made to perform elliptic curve addition.

【0146】続いて、ビット判定部510aは、次の上
位桁k[3]の値を判定する。その結果、k[1]=1
より、加算要素特定部510bは、加算対象をプラス表
現とする加算要素を特定する。具体的には、楕円曲線加
算に必要な要素として、(2^3+6)*Gと(2^
3)*Gと6*Gとを生成し、楕円曲線加算部530に
楕円曲線加算を実行させる。
Then, the bit determination unit 510a determines the value of the next higher digit k [3]. As a result, k [1] = 1
Accordingly, the addition element identification unit 510b identifies the addition element whose addition target is a plus expression. Specifically, (2 ^ 3 + 6) * G and (2 ^
3) Generate * G and 6 * G, and make the elliptic curve addition unit 530 execute elliptic curve addition.

【0147】このようにして、k[1]からk[5]に
ついて、プラス表現又はマイナス表現を用いた楕円曲線
加算を繰り返すことで、最終的な値k*Gが算出され
る。
In this way, the final value k * G is calculated by repeating the elliptic curve addition using the positive expression or the negative expression for k [1] to k [5].

【0148】3.実施形態4の効果 本実施の形態における楕円曲線演算装置500は、実施
の形態1〜3と同様に、楕円曲線加算の繰り返し計算に
おいて、(2^i)*Gが加算ごとに出現しており、
(2^i)*G(i=1,2,……,n−1)の座標の
テーブルを有効に使用することができている。そのた
め、計算量が削減され、従来技術3に比べ、計算速度
は、約1.3倍高速である。
3. Effect of Fourth Embodiment In the elliptic curve calculation device 500 according to the present embodiment, (2 ^ i) * G appears for each addition in the repeated calculation of the elliptic curve addition, as in the first to third embodiments. ,
The table of coordinates of (2 ^ i) * G (i = 1, 2, ..., N-1) can be effectively used. Therefore, the amount of calculation is reduced, and the calculation speed is about 1.3 times faster than that of the conventional technique 3.

【0149】実施の形態1〜3の楕円曲線演算装置と異
なる点は、一連の計算手順を一括で生成するための予備
計算を行っていない点である。本実施の形態では、計算
手順を一括で生成しておくのではなく、スカラ倍演算に
おける楕円曲線加算ごとに分散して計算手順を生成(表
現形式を判断)している。これによって、予備計算とス
カラ倍演算とが渾然と一体化されることとなり、個々の
楕円曲線加算に必要なパラメータだけが生成されて使用
されることとなり、プログラム規模や回路規模が縮小化
され、処理速度が向上され得る。
A difference from the elliptic curve calculation devices of the first to third embodiments is that preliminary calculation for collectively generating a series of calculation procedures is not performed. In the present embodiment, the calculation procedure is not generated all at once, but the calculation procedure is generated for each addition of elliptic curves in the scalar multiplication operation (the expression format is determined). As a result, the preliminary calculation and the scalar multiplication operation are united with each other, only the parameters necessary for each elliptic curve addition are generated and used, and the program scale and circuit scale are reduced. Processing speed can be improved.

【0150】以上より、実施の形態4によって、高速な
楕円曲線演算が可能になり、さらにその処理は計算機に
適した形になっているとともに、より小さな規模のプロ
グラムや回路での実現が可能であり、本発明の実用的価
値は非常に大きい。
As described above, according to the fourth embodiment, a high-speed elliptic curve calculation is possible, the processing is in a form suitable for a computer, and it can be realized by a program or circuit of a smaller scale. Yes, the practical value of the present invention is very great.

【0151】[実施の形態5]次に、本発明の実施の形
態5における楕円曲線演算装置について説明する。 1.楕円曲線演算装置600の構成及び動作 図20は、実施の形態5における楕円曲線演算装置60
0の構成を示すブロック図である。この楕円曲線演算装
置600は、実施の形態1と同様に、専用のプログラム
を実行するコンピュータ装置又はLSI等の論理回路で
実現され、有限体GF(p)上のモンゴメリ型楕円曲線
E:B×y^2=x^3+A×x^2+xのパラメータ
p(素数)、GF(p)の元A、Bと、E(GF(p))
に属する点Gと、その点Gの一定倍数の点のx座標が予
め与えられ、nビットの任意のkを入力として、点Gの
スカラ倍点k*Gのx座標を出力する演算装置であり、
点Gの一定倍数の値を有効活用しながら計算する点に特
徴を有し、計算手順生成部610とスカラ倍演算部62
0とから構成される。
[Fifth Embodiment] An elliptic curve calculation device according to a fifth embodiment of the present invention will now be described. 1. Configuration and Operation of Elliptic Curve Calculating Device 600 FIG. 20 shows elliptic curve calculating device 60 according to the fifth embodiment.
It is a block diagram which shows the structure of 0. This elliptic curve calculation device 600 is realized by a logic circuit such as a computer device or an LSI that executes a dedicated program, as in the first embodiment, and is a Montgomery type elliptic curve E: B × on a finite field GF (p). y ^ 2 = x ^ 3 + A × x ^ 2 + x parameter p (prime number), elements A and B of GF (p), and E (GF (p))
In the arithmetic unit, the x-coordinates of the point G that belongs to and the point of a constant multiple of the point G are given in advance, and the x-coordinate of the scalar-multiplied point k * G of the point G is input by inputting any k of n bits Yes,
It has a feature in performing calculation while effectively utilizing a value of a fixed multiple of the point G, and has a calculation procedure generation unit 610 and a scalar multiplication unit 62.
It consists of 0 and.

【0152】この楕円曲線演算装置600は、予め保持
する点Gの一定倍数の値を用いる点で実施の形態1と共
通するが、それらの値が、2*G及び(2^(i+1)
+2^i)*G(ただし、i=0,1,2,……,n−
2)である点で、(2^i)*G(ただし、i=1,
2,……,n−1)を予め保持する実施の形態1と異な
る。
This elliptic curve calculation device 600 is common to the first embodiment in that it uses a value of a constant multiple of the point G held in advance, but those values are 2 * G and (2 ^ (i + 1).
+ 2 ^ i) * G (where i = 0, 1, 2, ..., N-
2), (2 ^ i) * G (where i = 1,
2, ..., N-1) is different from that of the first embodiment.

【0153】計算手順生成部610は、点Gのスカラ倍
k*Gを算出するための計算手順を生成する予備計算を
実行する処理部であり、k*GをGの一定倍、つまり、
2*G又は(2^(i+1)+2^i)*Gを用いた加
算形に分割することを繰り返すとともに、そのときの分
割の対象が分割によって得られた加算要素であるか2つ
の加算要素の差であるか(分割タイプ)を特定する分割
対象特定部610aと、分割対象特定部610aによっ
て特定された分割タイプを配列として出力する配列生成
出力部610bとからなる。
The calculation procedure generation unit 610 is a processing unit for executing preliminary calculation for generating a calculation procedure for calculating the scalar multiple k * G of the point G, and k * G is a constant multiple of G, that is,
Repeating division into an addition form using 2 * G or (2 ^ (i + 1) + 2 ^ i) * G, and the object of division at that time is an addition element obtained by the division or two addition elements The division target specifying unit 610a that specifies the difference (division type), and the array generation output unit 610b that outputs the division type specified by the division target specifying unit 610a as an array.

【0154】図21は、計算手順生成部610による係
数分割の手法を示す計算フロー図である。本実施の形態
においては、分割対象特定部610aは、次の2つのル
ールに従って、係数分割をする。
FIG. 21 is a calculation flow chart showing a method of coefficient division by the calculation procedure generation unit 610. In the present embodiment, the division target specifying unit 610a performs coefficient division according to the following two rules.

【0155】ルール1は、分割の方法に関するものであ
る。ここでは、分割対象特定部610aは、本図の上欄
[係数分割の指針]のルール1に示されるように、分割
の対象((2^n)+c)*Gに対して、c≦2^(n
−1)である場合には、プラス表現の加算要素に分割、
つまり、(2^(n−2)+c)*Gと(2^(n−
1)+2^(n−2))*Gとに分割し、c>2^(n
−1)である場合には、マイナス表現の加算要素に分
割、つまり、(2^(n−1)+d)*Gと(2^n+
2^(n−1))*Gとに分割する(ただし、d=2^
n−c)。
Rule 1 relates to the division method. Here, the division target specifying unit 610a sets c ≦ 2 for the division target ((2̂n) + c) * G, as shown in Rule 1 of the upper column [coefficient division guideline] of this figure. ^ (N
-1), it is divided into addition elements of plus expression,
That is, (2 ^ (n-2) + c) * G and (2 ^ (n-
1) + 2 ^ (n-2)) * G and c> 2 ^ (n
If it is −1), it is divided into addition elements represented by minus, that is, (2 ^ (n-1) + d) * G and (2 ^ n +).
2 ^ (n-1)) * G (where d = 2 ^)
n-c).

【0156】このように、分割によって得られる加算要
素の少なくとも1つが、2つの連続する2のべき乗和
(2^(n−1)+2^(n−2))となるように分割
する。つまり、係数が2のべき乗和(2^(n−1)+
2^(n−2))となる加算要素(以下、「第1加算要
素」と呼ぶ)と、そうでない加算要素(以下、「第2加
算要素」と呼ぶ)とに分割する。なお、係数分割によっ
て2つの連続する2のべき乗和(2^(n−1)+2^
(n−2))を生成するのは、後述するように、このよ
うな係数倍の点Gの値が予め保持された記憶テーブルを
有効に使用して楕円曲線加算を行うためである。
In this way, at least one of the addition elements obtained by the division is divided so as to be the sum of powers of two consecutive 2s (2 ^ (n-1) + 2 ^ (n-2)). That is, the coefficient sum of powers of 2 (2 ^ (n-1) +
2 ^ (n−2)) is added (hereinafter referred to as “first addition element”) and other addition elements (hereinafter referred to as “second addition element”). Note that the coefficient division divides two consecutive powers of 2 (2 ^ (n-1) + 2 ^
The reason why (n-2)) is generated is to perform elliptic curve addition by effectively using a storage table in which the value of the point G of such coefficient multiplication is held in advance, as described later.

【0157】ルール2は、分割の対象に関するものであ
る。ここでは、分割対象特定部610aは、本図の上欄
[係数分割の指針]のルール2に示されるように、
(i)第2加算要素と、(ii)第1加算要素と第2加算
要素との差のうち、大きい方を分割する。つまり、第2
加算要素と上記差とを比較し、大きい方に対して分割す
るという処理を繰り返す。これによって、係数分割の回
数が減少される。
Rule 2 relates to the object of division. Here, the division target specifying unit 610a, as shown in Rule 2 of the upper column of the figure [coefficient division guideline],
The larger of the difference between (i) the second addition element and (ii) the first addition element and the second addition element is divided. That is, the second
The process of comparing the addition element and the difference and dividing the larger one is repeated. This reduces the number of coefficient divisions.

【0158】具体的には、本図のルール2に示されるよ
うに、(2^6+7)を分割して得られる第1加算要素
(2^5+2^4)、第2加算要素(2^4+7)及び
差(2^5−7)において、第2加算要素(2^4+
7)と差(2^5−7)とを比較し、大きい方(2^5
−7)に対して、次の係数分割を繰り返す。
Specifically, as shown in rule 2 of the figure, the first addition element (2 ^ 5 + 2 ^ 4) and the second addition element (2 ^ 4 + 7) obtained by dividing (2 ^ 6 + 7) ) And the difference (2 ^ 5-7), the second addition element (2 ^ 4 +
7) and the difference (2 ^ 5-7) are compared, and the larger one (2 ^ 5)
-7), the following coefficient division is repeated.

【0159】なお、上記比較における残った方(小さい
方)の値に対する係数分割が不要であるのは、続く係数
分割において必ず出現することになる(係数分割の対象
になる)からである。
The reason why the coefficient division for the remaining (smaller) value in the above comparison is not necessary is that it will always appear in the subsequent coefficient division (becomes a target of coefficient division).

【0160】以上の2つのルールに従って係数分割した
場合の具体例は、本図の[具体例]に示される通りであ
る。87*Gについて、まず、その係数(87;2^6
+23)を第1加算要素(2^5+2^4)と第2加算
要素(2^4+23)とに分割し、さらに、それらの差
(2^5−23)を算出することで、最初の係数分割を
終える。
A specific example of coefficient division according to the above two rules is as shown in [Specific Example] of this figure. For 87 * G, the coefficient (87; 2 ^ 6)
+23) is divided into the first addition element (2 ^ 5 + 2 ^ 4) and the second addition element (2 ^ 4 + 23), and the difference (2 ^ 5-23) between them is calculated to obtain the first coefficient. Finish the division.

【0161】次に、得られた第2加算要素(2^4+2
3=2^5+7)と差(2^5−23=2^3+1)と
を比較し、大きい方(2^5+7)に対して係数分割を
行う。その結果、第1加算要素(2^4+2^3)と第
2加算要素(2^3+7)とそれらの差(2^4−7)
を得る。
Next, the obtained second addition element (2 ^ 4 + 2)
3 = 2 ^ 5 + 7) is compared with the difference (2 ^ 5-23 = 2 ^ 3 + 1), and coefficient division is performed on the larger one (2 ^ 5 + 7). As a result, the first addition element (2 ^ 4 + 2 ^ 3) and the second addition element (2 ^ 3 + 7) and their difference (2 ^ 4-7)
To get

【0162】このようにして、第2加算要素の係数と差
の係数のいずれもが、2つの連続する2のべき乗和、又
は、2となるまで、繰り返す。なお、このような係数分
割を終えた後は、係数分割とは逆の方向(下位桁から上
位桁に向けて)に、後述する記憶テーブルを参照しなが
ら楕円曲線加算を繰り返すことで、最終的に、点Gのス
カラ倍点(87*G)を得ることができる。
In this way, both the coefficient of the second addition element and the coefficient of the difference are repeated until the power of two consecutive sums of 2 or 2, respectively. After such coefficient division, the elliptic curve addition is repeated in the opposite direction to the coefficient division (from the lower digit to the upper digit) by referring to a storage table described later to obtain the final curve. Then, the scalar multiplication point (87 * G) of the point G can be obtained.

【0163】図22は、計算手順生成部610の詳細な
処理手順を示すフローチャートである。なお、この計算
手順生成部610が生成する計算手順については、以下
のルールで表現するものとしている。
FIG. 22 is a flow chart showing the detailed processing procedure of the calculation procedure generation unit 610. The calculation procedure generated by the calculation procedure generation unit 610 is expressed by the following rules.

【0164】つまり、計算手順生成部610は、kビッ
トの任意の整数kを入力として、配列{S[i]}(S
[i]は配列のi番目の数、1≦i≦|k|)を出力す
る。配列S[i]において、S[1]は、kの2進表現
における最下位桁から連続する「0」の個数に関する情
報を示し、S[2]は、係数分割における最後の分割対
象についての分割タイプを示し、S[i](i=3,
4,…)は、第i番目の係数分割における分割タイプを
示す。
That is, the calculation procedure generator 610 receives an arbitrary integer k of k bits as an input and outputs the array {S [i]} (S
[I] outputs the i-th number of the array, 1 ≦ i ≦ | k |). In the array S [i], S [1] indicates information about the number of "0" s consecutive from the least significant digit in the binary representation of k, and S [2] indicates the last division target in the coefficient division. A division type is shown, and S [i] (i = 3,
4, ...) Indicate the division type in the i-th coefficient division.

【0165】具体的には、S[1]は、k=k'×2^
eと表現したときにおける値eを示し、S[2]は、以
下に示されるように、最後の分割における分割タイプを
示し、S[i](i=3,4,…)は、第i番の係数分
割において、その分割後に分割されるものが第2加算要
素であるか(そのときには、第1の分割タイプであるこ
とを示すように、S[i]=1とする)、又は、その分
割後に分割されるものが両加算要素の差であるか(その
ときには、第2の分割タイプであることを示すように、
S[i]=2とする)を示す。ここで、k[1]及びk
[2]については、(1)k'=1の場合には(特殊な
場合であるが)、S[1]=1、S[2]=3とし、
(2)k'=3の場合には(特殊な場合であるが)、S
[1]=e、S[2]=4とし、(3)それ以外は(ほ
とんどの場合であるが)、(a)最後の分割対象となる
係数が2^2+1の場合には、S[1]=e、S[2]
=1とし、(b)最後の分割対象となる係数が2^3+
1の場合には、S[1]=e、S[2]=2としてい
る。
Specifically, S [1] is k = k '× 2 ^
The value e when expressed as e, S [2] indicates the division type in the last division, as shown below, and S [i] (i = 3, 4, ...) Is the i-th In the second coefficient division, whether the element to be divided after the division is the second addition element (at that time, S [i] = 1 to indicate the first division type), or Is it the difference between the two addition elements that is divided after that division (at that time, as shown by the second division type,
S [i] = 2) is shown. Where k [1] and k
Regarding [2], if (1) k ′ = 1 (a special case), then S [1] = 1 and S [2] = 3,
(2) If k ′ = 3 (a special case), S
[1] = e, S [2] = 4, and (3) otherwise (most cases), (a) if the last division target coefficient is 2 ^ 2 + 1, S [ 1] = e, S [2]
= 1 and (b) the last division target coefficient is 2 ^ 3 +
In the case of 1, S [1] = e and S [2] = 2.

【0166】なお、上記(3)の場合は、最後の分割対
象となる係数は、上記(a)及び(b)のいずれかにな
ることがわかっている。図22において、分割対象特定
部610aは、以下の手順に従って、配列{S[i]}
を特定する。なお、以下では、 k=k[n−1]×2^(n−1)+k[n−2]×2
^(n−2)+……+k[1]×2+k[0] とおいたときのkのビット表現を[k[n−1]、k
[n−2]、……、k[1]、k[0]]とする。 ステップS951:k=k'×2^eを満たす最大の
e,k'を求める。 ステップS952:処理対象となるビット位置を示すカ
ウンタc←n−e−1,配列S[i]の要素を指定する
インデックスc1←3とする。 ステップS953:k'=1であるか判定。k'=1の場
合、上記(1)のケースに相当し、ステップS954
へ。それ以外はステップS955へ。 ステップS954:S[1]←1,S[2]←3,S
[3]←2,S[4]←2,…,S[e]←2として
(S954a)、配列{S[i]}を出力し(S954
b)、終了。 ステップS955:k'=3であるか判定(S955
a)。k'=3の場合、上記(2)のケースに相当し、
S[1]←e,S[2]←4として(S955b)、配
列{S[i]}を出力し(S955c)、終了。 ステップS956:k'[c−1]=1であるか判定
(S956a)。k'[c−1]=1の場合、マイナス
表現による係数分割に相当し、c←c+1,c2←0と
して(S956b)、ステップS958へ。それ以外
は、プラス表現による係数分割に相当し、次のステップ
へ。 ステップS957:k'[c−2]=0,k'[c−3]
=0の両方が成り立つか判定(S957a)。両方成り
立つ場合は、この係数分割の次に分割されるものが両加
算要素の差となるケースであるので、c2←−1として
(S957b)、次のステップへ。それ以外は、この係
数分割の次に分割されるものが第2加算要素となるケー
スであるので、ステップS959へ。 ステップS958:k'←2^c+2^(c−1)−k'
としてk'を更新し,S[c1]←2とセットすること
で、第2の分割タイプによる係数分割を終える。ステッ
プS961へ。 ステップS959:k'[c−2]=0が成り立つか判
定(S959a)。成り立つ場合、c2←−1(S95
9b),成り立たない場合は、c2←0(S959c)
とする。 ステップS960:k'←k'−2^(c−1)−2^
(c−2)としてk'を更新し,S[c1]←1とセッ
トすることで、第1の分割タイプによる係数分割を終え
る。 ステップS961:次の桁に移行するために、c←c−
1+c2,c1←c1+1とする。 ステップS962:k'=5またはk'=9であるか判
定。k'=5の場合、上記(3)(a)のケースに相当
し、次のステップへ。k'=9の場合、上記(3)
(b)のケースに相当し、ステップS964へ。それ以
外は、さらに係数分割の必要があるので、ステップS9
56へ戻り、分割対象が「5」又は「9」となるまで、
同様の処理を繰り返す。 ステップS963:S[1]←e,S[2]←1とし
て、配列{S[i]}を出力し、終了。 ステップS964:S[1]←e,S[2]←2とし
て、配列{S[i]}を出力し、終了。
In the case of the above (3), it is known that the final division target coefficient is either the above (a) or (b). In FIG. 22, the division target specifying unit 610a follows the procedure described below for array {S [i]}.
Specify. In the following, k = k [n-1] * 2 ^ (n-1) + k [n-2] * 2
^ (N-2) + ... + k [1] × 2 + k [0], the bit representation of k is [k [n-1], k
Let [n-2], ..., K [1], k [0]]. Step S951: The maximum e, k 'that satisfies k = k' × 2 ^ e is obtained. Step S952: The counter c ← n−1 indicating the bit position to be processed and the index c1 ← 3 designating the element of the array S [i] are set. Step S953: It is determined whether k '= 1. If k ′ = 1, this corresponds to the case of (1) above, and step S954
What. Otherwise, go to step S955. Step S954: S [1] ← 1, S [2] ← 3, S
As [3] ← 2, S [4] ← 2, ..., S [e] ← 2 (S954a), the array {S [i]} is output (S954).
b), end. Step S955: Determine whether k '= 3 (S955
a). When k ′ = 3, it corresponds to the case of (2) above,
S [1] ← e and S [2] ← 4 are set (S955b), the array {S [i]} is output (S955c), and the processing is ended. Step S956: It is determined whether k '[c-1] = 1 (S956a). When k ′ [c−1] = 1, this corresponds to coefficient division by the minus expression, c ← c + 1 and c2 ← 0 are set (S956b), and the process proceeds to step S958. Other than that, it corresponds to the coefficient division by the plus expression, and goes to the next step. Step S957: k '[c-2] = 0, k' [c-3]
It is determined whether both = 0 are satisfied (S957a). In the case where both are satisfied, it is the case that the difference after the coefficient division is the difference between both addition elements, so c2 ← -1 is set (S957b), and the process proceeds to the next step. In other cases, the second divided element is the one that is divided after this coefficient division, and therefore the processing proceeds to step S959. Step S958: k '← 2 ^ c + 2 ^ (c-1) -k'
By updating k ′ and setting S [c1] ← 2, the coefficient division by the second division type is completed. Go to step S961. Step S959: It is determined whether k ′ [c−2] = 0 holds (S959a). If so, c2 ← -1 (S95
9b), if not satisfied, c2 ← 0 (S959c)
And Step S960: k '← k'-2 ^ (c-1) -2 ^
By updating k'as (c-2) and setting S [c1] ← 1, coefficient division by the first division type is completed. Step S961: c ← c− to shift to the next digit
Let 1 + c2, c1 ← c1 + 1. Step S962: It is determined whether k '= 5 or k' = 9. When k ′ = 5, this corresponds to the case of (3) (a) above, and the process proceeds to the next step. When k ′ = 9, the above (3)
This corresponds to the case of (b), and proceeds to step S964. Otherwise, it is necessary to further divide the coefficients, so step S9
Return to 56, until the division target is "5" or "9",
The same process is repeated. Step S963: The array {S [i]} is output as S [1] ← e, S [2] ← 1, and the process ends. Step S964: The array {S [i]} is output as S [1] ← e, S [2] ← 2, and the process ends.

【0167】スカラ倍演算部620は、計算手順生成部
610から出力された計算手順S[i](i=1,2,
……)に基づいて、楕円曲線上の加算を繰り返すこと
で、最終的な計算結果k*Gを算出し出力する演算部で
あり、点Gの一定倍を予め記憶しているテーブル記憶部
620b、ワーキング用のメモリである一時記憶部62
0c、楕円曲線上での加算を行う加算器である楕円曲線
加算部620d及び計算手順生成部610からの計算手
順S[i]に従って各構成要素620b〜620dを制
御する演算制御部620aからなる。
The scalar multiplication unit 620 calculates the calculation procedure S [i] output from the calculation procedure generation unit 610 (i = 1, 2,
, Which is a calculation unit for calculating and outputting the final calculation result k * G by repeating addition on the elliptic curve based on the table storage unit 620b that stores a predetermined multiple of the point G in advance. , A temporary storage unit 62 that is a working memory
0c, an elliptic curve addition unit 620d that is an adder that performs addition on an elliptic curve, and an operation control unit 620a that controls each of the components 620b to 620d according to the calculation procedure S [i] from the calculation procedure generation unit 610.

【0168】テーブル記憶部620bは、図23に示さ
れるように、n個の点Gの一定倍点のx座標、つまり、
2*Gと(2^(i+1)+2^i)*G(ただし、i
=0,1,2,……,n−2)のx座標を予め記憶して
いるROM等である。つまり、記憶している値の個数
は、実施の形態1とほぼ同じであるが、その値が異なっ
ている。
As shown in FIG. 23, the table storage unit 620b stores the x-coordinates of the constant multiple points of the n points G, that is,
2 * G and (2 ^ (i + 1) + 2 ^ i) * G (where i
= 0, 1, 2, ..., N−2) x-coordinate is stored in advance in a ROM or the like. That is, the number of stored values is almost the same as that in the first embodiment, but the values are different.

【0169】この演算制御部620aは、計算手順生成
部610による図21の計算フロー(係数分割)とは逆
の手順、即ち、テーブル記憶部620bに格納された値
を参照しながら、低い桁から高い桁に向けて、楕円曲線
加算を繰り返すように各構成要素620b〜620dを
制御することによって、k*Gを算出させる。具体的に
は、演算制御部620aは、図24のフローチャートに
従ってスカラ倍演算部620が動作するように、以下の
ステップに従って、計算・制御を行う。 ステップS971:まず、S[2]を判定(S971
a)。S[2]=4の場合、上記(2)のケースに相当
し、k*Gをテーブル記憶部620bから参照して(S
971b)、出力し(S971c)、終了。 ステップS972:e←S[1]とした後に(S972
a)、k[n−2]=1であるか判定(S972b)。
成り立つ場合、必要な係数分割の回数(桁数)を示すカ
ウンタc1←n−e(S972c),それ以外は、c1
←n−e−1とする(S972d)。 ステップS973:S[2]=3であるか判定(S97
3a)。成り立つ場合、上記(1)のケースに相当し、
U←G,V←2*G,c2←1として(S973b)、
ステップS975へ。それ以外は、ステップS974
へ。なお、本フローでは、Uは第2加算要素、Vは第1
加算要素と第2加算要素との差を格納するパラメータで
ある。また、2*Gについては、テーブル記憶部620
bから読み出された値である。 ステップS974:S[2]=1であるか判定(S97
4a)。成り立つ場合、U←2*G,V←G,c2←1
とし(S974b)、それ以外は、U←3*G,V←3
*G,c2←2,c1←c1−1とする(S974
c)。なお、2*G及び3*Gについては、テーブル記
憶部620bから読み出された値である。 ステップS975:以上のようにして、初期値U及びV
を決定した後に、テーブル記憶部620bを参照するこ
とにより、W←(2^c2+2^(c2−1))*Gと
する。Wは第1加算要素を格納するパラメータである。
なお、(2^c2+2^(c2−1))*Gについて
は、テーブル記憶部620bから読み出された値であ
る。 ステップS976:S[c1]=1であるか判定。成り
立つ場合、第1の分割タイプに対応する楕円曲線加算、
即ち、第2加算要素Uを生成するために、次のステップ
へ。それ以外は、第2の分割タイプに対応する楕円曲線
加算、即ち、両加算要素の差Vを生成するために、ステ
ップS978へ。 ステップS977:楕円曲線加算部620dに楕円曲線
加算を実行させることで、U←W+U(差はV)を算出
させる。 ステップS978:T←Vとした後に、楕円曲線加算部
620dにV←W+U(差はV)を算出させ、U←Tと
する。 ステップS979:c1=3であるか判定。成り立つ場
合は、最後の楕円曲線加算を実行するために、ステップ
S981へ。 ステップS980:c1←c1−1,c2←c2+1と
して、c1=2となるまで、同様の楕円曲線加算を繰り
返すために、ステップS975へ戻る。 ステップS981:テーブル記憶部620bを参照する
ことで、W←(2^c2+1+2^c2)*Gとし,楕
円曲線加算部620dにU←W+U (差はV)を計算
させ(S981a)、その結果Uを最終結果として出力
し(S981b)、終了する。
The calculation control unit 620a reverses the calculation flow (coefficient division) of FIG. 21 by the calculation procedure generation unit 610, that is, referring to the values stored in the table storage unit 620b, starting from the lowest digit. By controlling each of the constituent elements 620b to 620d so as to repeat the elliptic curve addition toward higher digits, k * G is calculated. Specifically, the arithmetic control unit 620a performs calculation / control according to the following steps so that the scalar multiplication unit 620 operates according to the flowchart of FIG. Step S971: First, S [2] is determined (S971
a). The case of S [2] = 4 corresponds to the case of (2) above, and k * G is referred from the table storage unit 620b (S
971b), output (S971c), and end. Step S972: After setting e ← S [1] (S972
a), it is determined whether k [n-2] = 1 (S972b).
If it holds, a counter c1 ← n−e (S972c) indicating the number of necessary coefficient divisions (number of digits), c1 otherwise.
← n-e-1 (S972d). Step S973: It is determined whether S [2] = 3 (S97
3a). If it holds, it corresponds to the case of (1) above,
U ← G, V ← 2 * G, c2 ← 1 (S973b),
Go to step S975. Otherwise, step S974
What. In this flow, U is the second addition element and V is the first addition element.
This is a parameter that stores the difference between the addition element and the second addition element. For 2 * G, the table storage unit 620
It is the value read from b. Step S974: Determine whether S [2] = 1 (S97
4a). If so, U ← 2 * G, V ← G, c2 ← 1
(S974b), otherwise, U ← 3 * G, V ← 3
* G, c2 ← 2, c1 ← c1-1 (S974
c). Note that 2 * G and 3 * G are values read from the table storage unit 620b. Step S975: As described above, the initial values U and V
After determining, the table storage unit 620b is referenced to set W ← (2 ^ c2 + 2 ^ (c2-1)) * G. W is a parameter for storing the first addition element.
Note that (2 ^ c2 + 2 ^ (c2-1)) * G is a value read from the table storage unit 620b. Step S976: It is determined whether S [c1] = 1. Elliptic curve addition corresponding to the first split type, if
That is, to generate the second addition element U, go to the next step. Otherwise, go to step S978 to generate an elliptic curve addition corresponding to the second division type, that is, a difference V between both addition elements. Step S977: The elliptic curve addition unit 620d is caused to execute the elliptic curve addition to calculate U ← W + U (the difference is V). Step S978: After setting T ← V, the elliptic curve adding unit 620d is caused to calculate V ← W + U (the difference is V), and U ← T. Step S979: Determine whether c1 = 3. If so, go to step S981 to execute the final elliptic curve addition. Step S980: c1 ← c1-1, c2 ← c2 + 1 is set, and the same elliptic curve addition is repeated until c1 = 2, and the process returns to step S975. Step S981: By referring to the table storage unit 620b, W ← (2 ^ c2 + 1 + 2 ^ c2) * G, and let the elliptic curve addition unit 620d calculate U ← W + U (the difference is V) (S981a), and the result U Is output as the final result (S981b), and the process ends.

【0170】なお、(2^c2+2^(c2−1))*
Gについては、テーブル記憶部620bから読み出され
た値である。また、上記のステップで使用される楕円曲
線加算の具体的な計算方法は、実施形態1で説明した通
りである。
Note that (2 ^ c2 + 2 ^ (c2-1)) *
G is a value read from the table storage unit 620b. The specific calculation method of the elliptic curve addition used in the above steps is as described in the first embodiment.

【0171】以上のように構成された楕円曲線演算装置
600の全体的な動作は、次の通りである。楕円曲線演
算装置600は、入力された整数kを受け取り、計算手
順生成部610へ入力する。計算手順生成部610は、
その整数kより、配列{S[i]}を計算し、スカラ倍
演算部620へ入力する。スカラ倍演算部620は、入
力された配列{S[i]}より、テーブル記憶部620
bに格納された値を参照しながら楕円曲線加算を繰り返
すことで、楕円曲線の点Gのスカラ倍点k*Gを算出
し、出力する。
The overall operation of the elliptic curve calculation device 600 configured as described above is as follows. The elliptic curve calculation device 600 receives the input integer k and inputs it to the calculation procedure generation unit 610. The calculation procedure generation unit 610
An array {S [i]} is calculated from the integer k and input to the scalar multiplication unit 620. The scalar multiplication unit 620 calculates the table storage unit 620 from the input array {S [i]}.
By repeating the elliptic curve addition while referring to the value stored in b, the scalar multiplication point k * G of the point G of the elliptic curve is calculated and output.

【0172】2.具体的な数値例に対する楕円曲線演算
装置600の動作 以下では、図25に示されるk=102の場合の数値例
を示す。まず、計算手順生成部610での処理を説明す
る。ここでは、計算手順生成部610による機械的な処
理(ビット処理)ではなく、その意味内容の観点から説
明する。
2. Operation of Elliptic Curve Calculation Device 600 for Specific Numerical Example Below, a numerical example in the case of k = 102 shown in FIG. 25 will be shown. First, the processing in the calculation procedure generation unit 610 will be described. Here, not the mechanical processing (bit processing) by the calculation procedure generation unit 610 but the meaning and content thereof will be described.

【0173】図25の[計算手順生成]に示されるよう
に、分割対象特定部610aは、102=51×2^1
より、k'=51、e=1と特定する(ステップS95
2)。なお、k'=51より、k'[5]、k'[4]、
k'[3]、k'[2]、k'[1]、k'[0]は、それ
ぞれ、1,1,0,0,1,1である。
As shown in [Generation of Calculation Procedure] in FIG. 25, the division target specifying unit 610a is 102 = 51 × 2̂1.
From this, k ′ = 51 and e = 1 are specified (step S95).
2). From k ′ = 51, k ′ [5], k ′ [4],
k ′ [3], k ′ [2], k ′ [1], and k ′ [0] are 1,1,0,0,1,1 respectively.

【0174】次に、k'に対して係数分割を繰り返す
(ステップS952〜S962)。まず、k'=51=
2^5+19に対して、19>2^4より、マイナス表
現による係数分割、即ち、2^5+19=2^6−13
を、第1加算要素の係数(2^5+2^4)と第2加算
要素の係数(2^4−13)とに分割し、さらに、それ
らの差(2^5+13)を算出する。そして、第2加算
要素の係数(2^4−13)と差(2^5+13)と比
較し、差のほうが大きいので、次には、その差(2^5
+13)を分割する。同時に、そのこと(第2の分割タ
イプによる係数分割)を示す配列要素(S[3]=2)
を決定する(ステップS958)。
Next, the coefficient division is repeated for k '(steps S952 to S962). First, k '= 51 =
For 2 ^ 5 + 19, from 19> 2 ^ 4, coefficient division by negative expression, that is, 2 ^ 5 + 19 = 2 ^ 6-13
Is divided into a coefficient (2 ^ 5 + 2 ^ 4) of the first addition element and a coefficient (2 ^ 4-13) of the second addition element, and a difference (2 ^ 5 + 13) between them is calculated. Then, the coefficient (2 ^ 4-13) of the second addition element is compared with the difference (2 ^ 5 + 13). Since the difference is larger, the difference (2 ^ 5)
+13) is divided. At the same time, an array element (S [3] = 2) indicating that (coefficient division by the second division type)
Is determined (step S958).

【0175】次に、分割の対象となる係数(2^5+1
3)に対しては、13≦2^4より、プラス表現による
係数分割、即ち、第1加算要素の係数(2^4+2^
3)と第2加算要素の係数(2^3+13)とに分割
し、さらに、それらの差(2^4−1)を算出する。そ
して、第2加算要素の係数(2^3+13)と差(2^
413)と比較し、第2加算要素のほうが大きいので、
次には、その第2加算要素(2^3+13)を分割す
る。同時に、そのこと(第1の分割タイプによる係数分
割)を示す配列要素(S[4]=1)を決定する(ステ
ップS960)。
Next, the coefficient (2 ^ 5 + 1) to be divided is
For 3), from 13 ≦ 2 ^ 4, coefficient division by the plus expression, that is, the coefficient of the first addition element (2 ^ 4 + 2 ^)
3) and the coefficient of the second addition element (2 ^ 3 + 13), and the difference (2 ^ 4-1) between them is calculated. Then, the coefficient (2 ^ 3 + 13) of the second addition element and the difference (2 ^ 3)
413), the second addition element is larger, so
Next, the second addition element (2 ^ 3 + 13) is divided. At the same time, the array element (S [4] = 1) indicating that (coefficient division by the first division type) is determined (step S960).

【0176】以下、同様の係数分割を繰り返すことによ
り、配列要素S[5]=1を決定し(ステップS96
0)、最後の分割対象「9」を得る。この分割対象
「9」は、上記(3)(b)のケースに相当することか
ら、S[1]=e=1、S[2]=2と決定する(ステ
ップS964)。
Thereafter, the same coefficient division is repeated to determine the array element S [5] = 1 (step S96).
0), the final division target “9” is obtained. Since this division target “9” corresponds to the cases of (3) and (b) above, it is determined that S [1] = e = 1 and S [2] = 2 (step S964).

【0177】最後に、配列生成出力部610bは、以上
の係数分割で得られた配列S[1]、S[2]、S
[3]、S[4]、S[5]の値、即ち、{1,2,
2,1,1}をスカラ倍演算部620に出力する(ステ
ップS965)。
Finally, the array generation / output unit 610b outputs the arrays S [1], S [2], S obtained by the above coefficient division.
The value of [3], S [4], S [5], that is, {1, 2,
2, 1, 1} is output to the scalar multiplication unit 620 (step S965).

【0178】次に、計算手順生成部610から上記配列
{S[i]}を取得したスカラ倍演算部620の処理に
ついて、機械的な処理(ビット処理)ではなく、その意
味内容の観点から説明する。
Next, the processing of the scalar multiplication unit 620 that has acquired the array {S [i]} from the calculation procedure generation unit 610 will be described in terms of its meaning rather than mechanical processing (bit processing). To do.

【0179】図25の[スカラ倍演算]に示されるよう
に、スカラ倍演算部620は、まず、S[2]=2、S
[1]=1より、初期値として、第2加算要素U(6*
G)と両加算要素の差(6*G)を得る(ステップS9
74c;なお、S[1]=1より、各係数は2^1倍さ
れる)。
As shown in [Scalar multiplication operation] in FIG. 25, the scalar multiplication operation unit 620 first sets S [2] = 2, S.
Since [1] = 1, as the initial value, the second addition element U (6 *
G) and the difference (6 * G) between both addition elements (step S9)
74c; each coefficient is multiplied by 2 ^ 1 since S [1] = 1).

【0180】そして、テーブル記憶部620bから第1
加算要素W((2^3+2^2)*G)を読み出し(ス
テップS975)、S[5]=1より(ステップS97
6)、テーブル記憶部620bから参照した第1加算要
素W((2^3+2^2)*G)と初期値の第2加算要
素U((2^2+2^1)*G)との楕円曲線加算を実
行し、その結果を、第2加算要素U((2^4+2^
1)*G)とする(ステップS977)。
From the table storage section 620b, the first
The addition element W ((2 ^ 3 + 2 ^ 2) * G) is read (step S975), and from S [5] = 1 (step S97).
6), an elliptic curve of the first addition element W ((2 ^ 3 + 2 ^ 2) * G) referenced from the table storage unit 620b and the second addition element U ((2 ^ 2 + 2 ^ 1) * G) of the initial value The addition is executed, and the result is the second addition element U ((2 ^ 4 + 2 ^
1) * G) (step S977).

【0181】同様にして、S[4]=1より(ステップ
S976)、テーブル記憶部620bから参照した第1
加算要素W((2^4+2^3)*G)と直前で算出し
た第2加算要素U((2^3+10)*G)との楕円曲
線加算を実行し、その結果を、第2加算要素U((2^
5+10)*G)とする(ステップS977)。
Similarly, from S [4] = 1 (step S976), the first reference from the table storage unit 620b is performed.
Elliptic curve addition of the addition element W ((2 ^ 4 + 2 ^ 3) * G) and the second addition element U ((2 ^ 3 + 10) * G) calculated immediately before is executed, and the result is the second addition element. U ((2 ^
5 + 10) * G) (step S977).

【0182】続いて、S[3]=2より(ステップS9
76)、テーブル記憶部620bから参照した第1加算
要素W((2^5+2^4)*G)と直前で算出した第
2加算要素U((2^4+26)*G)との楕円曲線加
算を実行し、その結果を、差分値V((2^6+26)
*G)とする(ステップS978)。
Then, from S [3] = 2 (step S9)
76), elliptic curve addition of the first addition element W ((2 ^ 5 + 2 ^ 4) * G) referenced from the table storage unit 620b and the second addition element U ((2 ^ 4 + 26) * G) calculated immediately before And the result is the difference value V ((2 ^ 6 + 26)
* G) (step S978).

【0183】最後に、テーブル記憶部620bから参照
した第1加算要素W((2^6+2^5)*G)と直前
で算出した差分値V((2^6+26)*G)に基づい
て、第1加算要素W((2^6+2^5)*G)と第2
加算要素U((2^5−26)*G)との楕円曲線加算
を実行し(ステップS981a)、その結果を、最終的
な結果(2^7−26)*G、つまり、102*Gの結
果として出力する(ステップS981b)。
Finally, based on the first addition element W ((2 ^ 6 + 2 ^ 5) * G) referenced from the table storage section 620b and the difference value V ((2 ^ 6 + 26) * G) calculated immediately before, The first addition element W ((2 ^ 6 + 2 ^ 5) * G) and the second
Elliptic curve addition with the addition element U ((2 ^ 5-26) * G) is executed (step S981a), and the result is the final result (2 ^ 7-26) * G, that is, 102 * G. Is output as a result (step S981b).

【0184】以上のように、実施の形態5では、計算手
順生成部610が生成する計算手順S[i]は、予め保
持された点Gの2のべき乗倍の値を用いるのではなく、
点Gに対して2つの連続する2のべき乗和だけスカラ倍
された値を用いるように、係数分割している。これによ
って、実施の形態1と比べ、より少ない回数の楕円曲線
加算で、点Gのスカラ倍k*Gが算出される。
As described above, in the fifth embodiment, the calculation procedure S [i] generated by the calculation procedure generation unit 610 does not use the value of the power of 2 of the point G held in advance,
Coefficient division is performed so that a value that is scalar-multiplied by two consecutive sums of powers of 2 is used for the point G. As a result, the scalar multiple k * G of the point G is calculated with a smaller number of times of elliptic curve addition as compared with the first embodiment.

【0185】3.実施形態5の効果 本実施の形態の楕円曲線演算装置600によれば、例え
ば、図11に示された実施の形態2における102*G
の計算フロー(6回の加算)と、図25に示された本実
施の形態のもの(4回の加算)と比較してわかるよう
に、102*Gについては、実施の形態1〜4に比べ、
1.5倍高速である。つまり、従来技術3と比べ、2.
26倍高速となる。
3. Effects of Fifth Embodiment According to the elliptic curve calculation device 600 of the present embodiment, for example, 102 * G in the second embodiment shown in FIG.
As can be seen by comparing the calculation flow of (6 additions) with that of the present embodiment (4 additions) shown in FIG. compared,
1.5 times faster. That is, compared with the prior art 3, 2.
26 times faster.

【0186】また、87*Gの計算であれば、本実施の
形態の楕円曲線演算装置600によれば、4回の加算で
済み、7回の加算を必要とする実施の形態1〜4に比
べ、1.75倍高速となり、従来技術3と比べ、2.2
6倍高速となる。
Further, in the case of calculation of 87 * G, according to the elliptic curve calculation device 600 of the present embodiment, the addition of 4 times is sufficient, and the addition of 7 times is required in the first to fourth embodiments. Compared with Prior Art 3, the speed is 1.75 times faster, which is 2.2.
6 times faster.

【0187】なお、本実施の形態におけるテーブル記憶
部620bに格納されている値は、実施の形態1〜4と
異なるが、その個数は、ほぼ同じであるので(実施の形
態1〜4では(n−1)個の値が格納され、実施の形態
5ではn個の値が格納されているので)、その記憶容量
はほぼ同一である。
The values stored in the table storage unit 620b in this embodiment are different from those in the first to fourth embodiments, but the numbers are almost the same (in the first to fourth embodiments, ( (n-1) values are stored, and since n values are stored in the fifth embodiment), their storage capacities are almost the same.

【0188】以上より、実施形態5によって、記憶テー
ブルのサイズがほぼ同一であるにも拘わらず、実施の形
態1〜4に比べ、よりも高速に、点Gのスカラ倍演算が
実行され、リアルタイム通信における秘匿化等の応用す
ることができ、本発明の実用的価値は非常に大きい。
As described above, according to the fifth embodiment, the scalar multiplication operation of the point G is executed faster than in the first to fourth embodiments, even though the sizes of the storage tables are almost the same, and the real time is performed. It can be applied to concealment in communication, and the practical value of the present invention is very large.

【0189】なお、実施の形態5では、テーブル記憶部
620bに、n個の点Gの一定倍、つまり、2*Gと
(2^(i+1)+2^i)*G(ただし、i=0,
1,2,……,n−2)が予め記憶されていたが、これ
らの一部だけが記憶されていてもよい。例えば、2*G
については、スカラ倍演算部620が2倍算を行うこと
によって算出し、テーブル記憶部620b内に格納しな
くてもよい。これによって、テーブル記憶部620bに
予め格納される値の個数は、(n−1)個となり、実施
の形態1〜4と同じになる。
In the fifth embodiment, the table storage unit 620b stores a constant multiple of n points G, that is, 2 * G and (2 ^ (i + 1) + 2 ^ i) * G (where i = 0. ,
1, 2, ..., N-2) are stored in advance, but only a part of them may be stored. For example, 2 * G
Is calculated by the scalar multiplication unit 620 performing doubling, and need not be stored in the table storage unit 620b. As a result, the number of values stored in advance in the table storage unit 620b becomes (n-1), which is the same as in the first to fourth embodiments.

【0190】[実施の形態6]次に、本発明の実施の形
態6における楕円曲線演算装置について説明する。 1.楕円曲線演算装置700の構成及び動作 図26は、実施の形態6における楕円曲線演算装置70
0の構成を示すブロック図である。この楕円曲線演算装
置700は、実施の形態1と同様に、専用のプログラム
を実行するコンピュータ装置又はLSI等の論理回路で
実現され、有限体GF(p)上のモンゴメリ型楕円曲線
E:B×y^2=x^3+A×x^2+xのパラメータ
p(素数)、GF(p)の元A、Bと、E(GF(p))
に属する点Gと、その点Gの一定倍数の点が予め与えら
れ、nビットの任意のkを入力として、点Gのスカラ倍
k*Gを出力する演算装置であり、点Gの一定倍数の値
を有効活用しながら計算するとともに、そのスカラ倍点
k*Gのx座標だけでなく、y座標も出力する点に特徴
を有する。
[Sixth Embodiment] Next, an elliptic curve calculation device according to a sixth embodiment of the present invention will be described. 1. Configuration and Operation of Elliptic Curve Calculation Device 700 FIG. 26 shows an elliptic curve calculation device 70 according to the sixth embodiment.
It is a block diagram which shows the structure of 0. This elliptic curve calculation device 700 is realized by a logic circuit such as a computer device or an LSI that executes a dedicated program, as in the first embodiment, and is a Montgomery type elliptic curve E: B × on a finite field GF (p). y ^ 2 = x ^ 3 + A × x ^ 2 + x parameter p (prime number), elements A and B of GF (p), and E (GF (p))
Is a computing unit that is given in advance a point G belonging to the point G and a point of a constant multiple of the point G, and outputs a scalar multiple k * G of the point G by inputting an arbitrary k of n bits. It is characterized in that it calculates while effectively utilizing the value of, and outputs not only the x coordinate of the scalar multiplication point k * G but also the y coordinate.

【0191】つまり、実施の形態1〜5における楕円曲
線演算装置は、求めるスカラ倍点k*Gのx座標だけを
算出していたが、本実施の形態における楕円曲線演算装
置700は、求めるスカラ倍点k*Gのx座標とy座標
を算出する。これは、次の理由による。
In other words, the elliptic curve calculation devices according to the first to fifth embodiments calculate only the x coordinate of the scalar multiplication point k * G to be calculated, but the elliptic curve calculation device 700 according to the present embodiment calculates the scalar to be calculated. Calculate the x and y coordinates of the double point k * G. This is for the following reason.

【0192】楕円曲線を用いた暗号システムの中には、
ある点のスカラ倍演算(点Pに対するk*P、点Qに対
するL*Qなど)だけでなく、k*P+L*Qという加
算が必要とされるものがある(例えば、ECDSAの検
証など)。ところが、モンゴメリ型楕円曲線では、k*
PやL*Qの計算は可能であるが、k*P+L*Qの加
算は不可能である。そのために、k*P+L*Qについ
ては、ワイヤーシュトラス型楕円曲線と同様の加算を行
う必要があり、その加算のためにY座標が必要となる。
つまり、k*P+L*Qの演算が必要とされる暗号シス
テムに対応させるために、本実施の形態の楕円曲線演算
装置700は、スカラ倍点k*Gのx座標だけでなく、
y座標も算出する。
Some encryption systems using elliptic curves include
Not only the scalar multiplication operation of a certain point (k * P for the point P, L * Q for the point Q, etc.) but also the addition of k * P + L * Q is required (for example, ECDSA verification). However, in the Montgomery-type elliptic curve, k *
Although P and L * Q can be calculated, k * P + L * Q cannot be added. Therefore, for k * P + L * Q, it is necessary to perform the same addition as for the Weierstrass-form elliptic curve, and the Y coordinate is required for the addition.
In other words, the elliptic curve calculation device 700 according to the present embodiment uses not only the x coordinate of the scalar multiple k * G but also the cryptographic system that requires the calculation of k * P + L * Q.
The y coordinate is also calculated.

【0193】この楕円曲線演算装置700は、点Gのス
カラ倍K*Gを算出するための計算手順として、k*G
をGの一定倍、つまり、2*G又は(2^(i+1)+
2^i)*Gを用いた加算形に分割することを繰り返し
ている点、予め保持する点Gの一定倍数の値として、2
*G及び(2^(i+1)+2^i)*G(ただし、i
=0,1,2,……,n−2)を記憶している点におい
て、実施の形態5の楕円曲線演算装置600と共通す
る。つまり、この楕円曲線演算装置700は、実施の形
態5の楕円曲線演算装置600と同一の計算手順生成部
610と、実施の形態5とほぼ同様の手順でスカラ倍演
算を実行するスカラ倍演算部720とから構成される。
以下、実施の形態5の楕円曲線演算装置600と共通す
る構成要素については、同じ符号を付し、その説明を省
略し、異なる点を中心に説明する。
The elliptic curve calculation device 700 uses k * G as a calculation procedure for calculating the scalar multiple K * G of the point G.
Is a constant multiple of G, that is, 2 * G or (2 ^ (i + 1) +
2 ^ i) A point that is repeatedly divided into addition forms using * G, and a value that is a constant multiple of the point G held in advance is 2
* G and (2 ^ (i + 1) + 2 ^ i) * G (where i
= 0, 1, 2, ..., N−2) is stored in common with the elliptic curve calculation device 600 according to the fifth embodiment. In other words, this elliptic curve calculation device 700 has the same calculation procedure generation unit 610 as the elliptic curve calculation device 600 of the fifth embodiment, and a scalar multiplication unit that executes a scalar multiplication operation in a procedure substantially similar to that of the fifth embodiment. And 720.
Hereinafter, components common to the elliptic curve calculation device 600 of the fifth embodiment will be denoted by the same reference numerals, description thereof will be omitted, and different points will be mainly described.

【0194】スカラ倍演算部720は、計算手順生成部
710から出力された計算手順S[i](i=1,2,
……)に基づいて、楕円曲線上の加算を繰り返すこと
で、最終的な計算結果k*Gを算出し出力する演算部で
あり、実施の形態5のスカラ倍演算部620とほぼ同様
の構成要素を備えるが、実施の形態5のテーブル記憶部
620bに代えてテーブル記憶部720bを備える点、
及び、Y座標復元部720eをさらに備える点において
相違する。
The scalar multiplication unit 720 calculates the calculation procedure S [i] output from the calculation procedure generation unit 710 (i = 1, 2,
..) to calculate and output the final calculation result k * G by repeating addition on the elliptic curve, which has substantially the same configuration as the scalar multiplication unit 620 of the fifth embodiment. Elements are provided, but a table storage unit 720b is provided instead of the table storage unit 620b of the fifth embodiment,
Also, the difference is that a Y-coordinate restoring unit 720e is further provided.

【0195】テーブル記憶部720bは、図27に示さ
れるように、n個の点Gの一定倍点のx座標及びy座
標、つまり、2*Gと(2^(i+1)+2^i)*G
(ただし、i=0,1,2,……,n−2)のx座標及
びy座標を予め記憶しているROM等である。
As shown in FIG. 27, the table storage unit 720b stores the x-coordinates and the y-coordinates of the constant multiple points of the n points G, that is, 2 * G and (2 ^ (i + 1) + 2 ^ i) *. G
It is a ROM or the like in which the x and y coordinates of (where i = 0, 1, 2, ..., N-2) are stored in advance.

【0196】Y座標復元部720eは、実施の形態5で
のスカラ倍演算と同様の繰り返し計算によって楕円曲線
加算部620dによる最後の楕円曲線加算が行われた後
に、最後の楕円曲線加算における要素(P1+P2→P
における点P,P1,P2、ただし、点P2はテーブル
記憶部720bに格納された点)の座標を用いたY座標
復元の公式に従って、最終的に求めるスカラ倍点k*G
のy座標を復元(算出)する。具体的には、点P及びP
1のx及びz座標と点P2のx及びy座標を用いて、Y
座標復元の公式に従って、点Pのy座標を復元する。
The Y coordinate restoring unit 720e performs the final elliptic curve addition by the elliptic curve adding unit 620d by the same iterative calculation as the scalar multiplication operation in the fifth embodiment, and then the element ( P1 + P2 → P
Points P, P1, P2 in the above, where the point P2 is the scalar multiplication point k * G finally obtained according to the formula of the Y coordinate restoration using the coordinates of the point stored in the table storage unit 720b).
Restore (calculate) the y-coordinate of Specifically, points P and P
Using the x and z coordinates of 1 and the x and y coordinates of the point P2, Y
The y coordinate of the point P is restored according to the coordinate restoration formula.

【0197】図28は、Y座標復元部720eによるY
座標復元の基本的なアプローチを説明する図である。本
図の上欄[Y座標復元の公式]には、その前提、記号及
び公式が示されている。いま、モンゴメリ型楕円曲線:
B×y^2=x^3+A×x^2+xにおいて、点P1
(X1,Y1,Z1)と点P2(x2,y2,1)との
楕円曲線加算によって、最終的なスカラ倍点P(X,
Y,Z)を求めるとする。ここで、各点の座標は、射影
座標(X,Y,Zの3項組)で表現している。また、点
P2は、そのx座標とy座標とがテーブル記憶部720
bに予め格納されている点である。
FIG. 28 shows the Y by the Y coordinate restoration unit 720e.
It is a figure explaining the basic approach of coordinate restoration. The premise, symbols, and formulas are shown in the upper column of the figure [Y-coordinate restoration formula]. Now, the Montgomery elliptic curve:
At B × y ^ 2 = x ^ 3 + A × x ^ 2 + x, the point P1
By the elliptic curve addition of (X1, Y1, Z1) and the point P2 (x2, y2, 1), the final scalar multiplication point P (X,
Suppose that Y, Z) is obtained. Here, the coordinates of each point are expressed by projective coordinates (a triplet of X, Y, Z). Further, the point P2 has its x-coordinate and y-coordinate set in the table storage unit 720.
This is the point previously stored in b.

【0198】このとき、点PのY座標復元後の座標を
(Xrec,Yrec,Zrec)とすると、それらの座標は、
以下の公式で表される。 Xrec=−(2×B×y2×Z×Z1)×X Yrec=Z1×[(X+x2×Z+2×A×Z)×(X
×x2+Z)−2×A×Z^2]−(X−x2×Z)^
2×X1 Zrec=−(2×B×y2×Z×Z1)×Z つまり、点PのY座標復元に必要な座標は、点P及びP
1のX及びZ座標と点P2のX及びY座標である。
At this time, assuming that the coordinates of the point P after the Y coordinate restoration are (Xrec, Yrec, Zrec), these coordinates are
It is expressed by the following formula. Xrec =-(2 * B * y2 * Z * Z1) * X Yrec = Z1 * [(X + x2 * Z + 2 * A * Z) * (X
Xx2 + Z) -2xAxZ ^ 2]-(X-x2xZ) ^
2 × X1 Zrec = − (2 × B × y2 × Z × Z1) × Z That is, the coordinates required to restore the Y coordinate of the point P are the points P and P.
The X and Z coordinates of 1 and the X and Y coordinates of the point P2.

【0199】本図の下欄[実施の形態への適用]には、
上記Y座標復元の公式を用いたY座標復元部720eの
処理手順が示されている。つまり、最終的な点P=k*
G=(2^n+c)*Gを算出するために、楕円曲線加
算部620dによって、点P2=(2^(n−1)+2
^(n−2))*Pと、点P1=(2^(n−1)+
c))*Pと、それらの差(2^(n−1)−c)*P
とを用いた楕円曲線加算が行われるので、その直後に、
Y座標復元部720eは、点P及びP1のX及びZ座標
と点P2のX及びY座標を用いて、上記Y座標復元の公
式に従って、点PのY座標を復元する。
In the lower column of this figure [application to the embodiment],
The processing procedure of the Y coordinate restoration unit 720e using the above Y coordinate restoration formula is shown. That is, the final point P = k *
In order to calculate G = (2 ^ n + c) * G, the point P2 = (2 ^ (n-1) +2 is calculated by the elliptic curve addition unit 620d.
^ (N-2)) * P and the point P1 = (2 ^ (n-1) +
c)) * P and their difference (2 ^ (n-1) -c) * P
Since the elliptic curve addition using and is performed, immediately after that,
The Y coordinate restoration unit 720e restores the Y coordinate of the point P using the X and Z coordinates of the points P and P1 and the X and Y coordinates of the point P2 according to the above Y coordinate restoration formula.

【0200】図29は、スカラ倍演算部720の動作を
示すフローチャートであり、実施の形態5におけるスカ
ラ倍演算部620のフローチャート(図24)に対応す
る。図24のフローチャートと異なる点は、最後の楕円
曲線加算(S181a)とY座標復元(S181b)で
ある。
FIG. 29 is a flowchart showing the operation of the scalar multiplication unit 720, which corresponds to the flowchart (FIG. 24) of the scalar multiplication unit 620 in the fifth embodiment. The difference from the flowchart of FIG. 24 is the final elliptic curve addition (S181a) and the Y coordinate restoration (S181b).

【0201】演算制御部620aによる制御の下で、楕
円曲線加算部620dは、最後の楕円曲線加算を行う
(S181a)。つまり、テーブル記憶部720bを参
照することで、その点(2^c2+1+2^c2)*G
を値Wに代入し、直前の楕円曲線加算で算出されている
値Uを値Tに代入した後に、それら値Wと値Uとの楕円
曲線加算を行い(差は値V)、得られた結果を値Uに代
入する(S181a)。
Under the control of the arithmetic control unit 620a, the elliptic curve addition unit 620d performs the final elliptic curve addition (S181a). That is, by referring to the table storage unit 720b, that point (2 ^ c2 + 1 + 2 ^ c2) * G
Is substituted for the value W, the value U calculated by the immediately preceding elliptic curve addition is substituted for the value T, and then the elliptic curve addition of the values W and U is performed (the difference is the value V) to obtain the value. The result is substituted for the value U (S181a).

【0202】そして、最後に、Y座標復元部720e
は、上記値T及びUのX及びZ座標と、上記WのX及び
Y座標(テーブル記憶部720bに格納された座標)を
用いて、上述したY座標復元の公式に従って、値UのY
座標を復元し(S181b)、得られた値U(X,Y及
びZ座標)を出力する(S181c)。
Finally, the Y coordinate restoration unit 720e
Is the X and Z coordinates of the values T and U and the X and Y coordinates of the W (coordinates stored in the table storage unit 720b) according to the Y coordinate restoration formula described above.
The coordinates are restored (S181b), and the obtained value U (X, Y and Z coordinates) is output (S181c).

【0203】このように、スカラ倍演算部620は、点
Gのスカラ倍演算(楕円曲線加算)の繰り返しにおいて
は(S971a〜181a)、実施の形態1〜5と同様
に、点Gのx座標(3項組の射影座標では、x座標とz
座標)についての算出を繰り返し、最終的な点k*Gを
求める楕円曲線加算を行った直後のY座標復元において
は(S181b)、点k*G(U)及び点k*Gを算出
するのに用いた第2加算要素(U)それぞれのX及びZ
座標と、点k*Gを算出するのに用いた第1加算要素
(W;テーブル記憶部720bに格納されている点)の
X及びY座標を用いて、点k*GのY座標を復元してい
る。
As described above, the scalar multiplication unit 620 repeats the scalar multiplication operation (elliptic curve addition) of the point G (S971a to 181a), similarly to the first to fifth embodiments, the x coordinate of the point G. (In the 3-tuple projective coordinate, x coordinate and z
(Coordinates) is repeated, and the point k * G (U) and the point k * G are calculated in the Y coordinate restoration immediately after the elliptic curve addition for obtaining the final point k * G is performed (S181b). X and Z of each second addition element (U) used in
The Y coordinate of the point k * G is restored using the coordinate and the X and Y coordinates of the first addition element (W; the point stored in the table storage unit 720b) used to calculate the point k * G. is doing.

【0204】2.具体的な数値例に対する楕円曲線演算
装置700の動作 以下では、図30に示されるk=102の場合の数値例
を示す。なお、計算手順生成部710での処理は、実施
の形態5における処理(図25の上欄)と同様であるの
で、本図では図示が省略されている。
2. Operation of Elliptic Curve Calculation Device 700 for Specific Numerical Example Below, a numerical example in the case of k = 102 shown in FIG. 30 will be shown. Note that the processing in the calculation procedure generation unit 710 is the same as the processing in the fifth embodiment (upper column in FIG. 25), and therefore is not shown in this figure.

【0205】本図の上欄[楕円曲線加算]には、スカラ
倍演算部720による計算例が示されている。つまり、
低い桁から高い桁に向けて、楕円曲線加算を繰り返すこ
とで、点Gのスカラ倍点(x座標及びz座標)の算出が
繰り返される様子が示されている。この計算手順は、実
施の形態5の場合(図25の下欄)と同様である。ただ
し、(2^6+2^5)*Gと(2^5−26)*Gと
の楕円曲線加算によって102*Gを算出した際に用い
た(2^5−26)*Gのx座標とz座標については、
次のY座標復元で使用するために、一時記憶部620c
に格納しておく。
An example of calculation by the scalar multiplication unit 720 is shown in the upper column of the figure [Elliptic curve addition]. That is,
It is shown that the calculation of the scalar multiple point (x coordinate and z coordinate) of the point G is repeated by repeating the elliptic curve addition from the lower digit to the higher digit. This calculation procedure is the same as in the case of the fifth embodiment (lower column of FIG. 25). However, with the x-coordinate of (2 ^ 5-26) * G used when 102 * G was calculated by elliptic curve addition of (2 ^ 6 + 2 ^ 5) * G and (2 ^ 5-26) * G For the z coordinate,
The temporary storage unit 620c is used for the next Y coordinate restoration.
Stored in.

【0206】本の下欄[Y座標復元]には、上記最後の
楕円曲線加算が行われた直後に実行されるY座標復元部
720eによるY座標復元の様子が示されている。つま
り、Y座標復元部720eは、102*G及び(2^5
−26)*Gのx及びz座標と、(2^6+2^5)*
Gのx及びy座標(テーブル記憶部720bに格納され
た値)とから、上述のY座標復元の公式に従って、10
2*Gのy座標を復元する。
[0206] The bottom section of the book, [Y Coordinate Restoration], shows the state of Y coordinate restoration by the Y coordinate restoration unit 720e which is executed immediately after the last elliptic curve addition is performed. That is, the Y-coordinate restoring unit 720e receives 102 * G and (2 ^ 5
-26) * G x and z coordinates and (2 ^ 6 + 2 ^ 5) *
From the x and y coordinates of G (values stored in the table storage unit 720b), according to the above Y coordinate restoration formula, 10
Restore the y coordinate of 2 * G.

【0207】スカラ倍演算部720は、このようにして
得られた102*G(x、y及びz座標)を出力する。 3.実施形態6の効果 本実施の形態の楕円曲線演算装置700によれば、最終
的に求める点Gのスカラ倍点k*Gのx座標(3項組の
射影座標ではx及びz座標)だけでなく、y座標も算出
されている。y座標の算出のために付加された演算は、
最後の楕円曲線加算の直後におけるY座標復元の演算だ
けである。
The scalar multiplication unit 720 outputs 102 * G (x, y and z coordinates) thus obtained. 3. Effects of Embodiment 6 According to the elliptic curve calculation device 700 of this embodiment, only the x coordinate (x and z coordinates in the projective coordinates of the triplet) of the scalar multiplication point k * G of the point G to be finally obtained is used. However, the y coordinate is also calculated. The operation added to calculate the y coordinate is
Only the Y coordinate restoration operation immediately after the final elliptic curve addition.

【0208】したがって、本実施の形態の楕円曲線演算
装置700により、わずかな演算量が追加されただけ
で、実施の形態5における効果に加えて、スカラ倍点の
y座標が必要とされる暗号システムにも適用できるとい
う効果が奏される。
Therefore, with the elliptic curve calculation device 700 of the present embodiment, only a small amount of calculation is added, and in addition to the effect of the fifth embodiment, the cipher requiring the y-coordinate of the scalar multiplication point is required. The effect that it can also be applied to the system is exhibited.

【0209】なお、本実施の形態の楕円曲線演算装置7
00は、実施の形態5の楕円曲線演算装置600に、Y
座標復元の機能が付加されたものであったが、本発明
は、このような組み合わせに限定されるものではない。
つまり、本実施の形態におけるY座標復元の機能(テー
ブル記憶部にx座標だけでなくy座標も記憶させておく
こと、及び、Y座標復元の演算を行う機能)を実施の形
態1〜4のいずれの楕円曲線演算装置に付加させてもよ
い。これによって、実施の形態1〜5のいずれの楕円曲
線演算装置であっても、スカラ倍点のx座標とy座標と
が生成され、これら楕円曲線演算装置の応用範囲が広が
る。
It should be noted that the elliptic curve calculation device 7 of the present embodiment.
00 indicates to the elliptic curve calculation device 600 of the fifth embodiment, Y
Although the function of coordinate restoration is added, the present invention is not limited to such a combination.
That is, the function of Y coordinate restoration in the present embodiment (the function of storing not only the x coordinate but also the y coordinate in the table storage unit and performing the calculation of the Y coordinate) is performed in the first to fourth embodiments. It may be added to any elliptic curve calculation device. As a result, in any of the elliptic curve calculation devices according to the first to fifth embodiments, the x coordinate and the y coordinate of the scalar multiplication point are generated, and the application range of these elliptic curve calculation devices is expanded.

【0210】以上の実施形態における楕円曲線演算装置
は、例えば、楕円曲線を用いた公開鍵暗号におけるシス
テムパラメータであるベース点Gのスカラ倍演算を高速
を行うことができ、公開鍵暗号を用いた秘密通信やデジ
タル署名の計算エンジンとして有効である。このような
楕円曲線演算装置は、汎用のコンピュータで実行される
プログラムとして実現したり、LSI等のICとして実
現することができる。
The elliptic curve calculation device in the above embodiments can perform, for example, the scalar multiplication operation of the base point G which is a system parameter in the public key cryptography using the elliptic curve, and uses the public key cryptography. It is effective as a calculation engine for secret communications and digital signatures. Such an elliptic curve calculation device can be realized as a program executed by a general-purpose computer or as an IC such as an LSI.

【0211】つまり、図31に示されるように、パーソ
ナルコンピュータや携帯電話機等の通信機器に、本実施
の形態における楕円曲線演算装置と、その楕円曲線演算
によるスカラ倍演算に基づく暗号、復号、デジタル署
名、デジタル署名検証又は鍵共有を行う暗号・復号化装
置とを備えさせることで、インターネット等の通信ネッ
トワークにおける電子決済、電子署名、電子メール、あ
るいは、携帯電話機等による通信データの秘匿化等を実
現することができる。
That is, as shown in FIG. 31, a communication device such as a personal computer or a mobile phone can be used in an elliptic curve calculation device according to the present embodiment and encryption, decryption, or digital processing based on scalar multiplication by the elliptic curve calculation. By providing an encryption / decryption device that performs signature, digital signature verification or key sharing, electronic payment, electronic signature, e-mail in a communication network such as the Internet, or concealment of communication data by a mobile phone, etc. Can be realized.

【0212】[0212]

【発明の効果】以上の説明から明らかなように、本発明
に係る楕円曲線演算装置は、以下の条件を満たすスカラ
倍演算を実行する。 (1)ワイヤーシュトラス型楕円曲線よりも高速に楕円
曲線演算(加算/2倍算)を行うことができるモンゴメ
リ型楕円曲線上の演算を行う。 (2)楕円曲線暗号におけるシステムパラメータである
ベース点Gのスカラ倍演算において、点Gの一定係数倍
の点、つまり、点Gの2のべき乗(2^i)*G倍の
値、あるいは、点Gの連続する2つの2のべき乗和(2
^(n−1)+2(n−2))*G倍の値のいずれかを
格納したテーブルを有効活用することができる。 (3)Y座標復元の機能を備えることで、スカラ倍点k
*Gのx座標(3項組の射影座標では、x座標とz座
標)だけでなく、y座標も算出することができる。
As is apparent from the above description, the elliptic curve calculation device according to the present invention executes a scalar multiplication operation satisfying the following conditions. (1) Performs an operation on a Montgomery-type elliptic curve capable of performing an elliptic curve operation (addition / multiplication) at a higher speed than the Wire-Strass elliptic curve. (2) In the scalar multiplication of the base point G, which is a system parameter in the elliptic curve cryptosystem, a point that is a constant coefficient multiple of the point G, that is, a power of 2 (2 ^ i) * G times the point G, or Two consecutive sums of two powers of point G (2
It is possible to effectively use a table that stores any one of ^ (n-1) +2 (n-2)) * G times. (3) Scalar multiplication point k
It is possible to calculate not only the x-coordinate of * G (x-coordinate and z-coordinate in the projective coordinate of the triplet) but also the y-coordinate.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の実施の形態1における楕円曲線演算装
置の構成を示す機能ブロック図である。
FIG. 1 is a functional block diagram showing a configuration of an elliptic curve calculation device according to a first embodiment of the present invention.

【図2】同楕円曲線演算装置の計算手順生成部の動作を
示すフローチャートである。
FIG. 2 is a flowchart showing an operation of a calculation procedure generation unit of the elliptic curve calculation device.

【図3】同楕円曲線演算装置のテーブル記憶部の格納デ
ータを示す図である。
FIG. 3 is a diagram showing data stored in a table storage unit of the same elliptic curve calculation device.

【図4】同楕円曲線演算装置のスカラ倍演算部の動作を
示すフローチャートである。
FIG. 4 is a flowchart showing an operation of a scalar multiplication unit of the elliptic curve calculation device.

【図5】同楕円曲線演算装置によるスカラ倍演算の手法
(基本的な考え;アプローチ1)を示す計算フロー図で
ある。
FIG. 5 is a calculation flowchart showing a method (basic idea; approach 1) of a scalar multiplication operation by the elliptic curve operation device.

【図6】同楕円曲線演算装置によるスカラ倍演算の手法
(アプローチ1を発展させたアプローチ2)を示す計算
フロー図である。
FIG. 6 is a calculation flowchart showing a method of scalar multiplication by the same elliptic curve calculation device (approach 2 obtained by expanding approach 1).

【図7】実施の形態1と従来技術3での計算手法を比較
説明するための図である。
FIG. 7 is a diagram for comparatively explaining the calculation methods in the first embodiment and the conventional technique 3.

【図8】本発明の実施の形態2における楕円曲線演算装
置の構成を示す機能ブロック図である。
FIG. 8 is a functional block diagram showing a configuration of an elliptic curve calculation device according to a second embodiment of the present invention.

【図9】同楕円曲線演算装置の計算手順生成部の動作を
示すフローチャートである。
FIG. 9 is a flowchart showing an operation of a calculation procedure generation unit of the elliptic curve calculation device.

【図10】同楕円曲線演算装置のスカラ倍演算部の動作
を示すフローチャートである。
FIG. 10 is a flowchart showing an operation of a scalar multiplication unit of the elliptic curve calculation device.

【図11】同楕円曲線演算装置によるスカラ倍演算の手
法を示す計算フロー図である。
FIG. 11 is a calculation flowchart showing a method of scalar multiplication by the elliptic curve calculation device.

【図12】本発明の実施の形態3における楕円曲線演算
装置の構成を示す機能ブロック図である。
FIG. 12 is a functional block diagram showing a configuration of an elliptic curve calculation device according to a third embodiment of the present invention.

【図13】同楕円曲線演算装置の計算手順生成部の動作
を示すフローチャートである。
FIG. 13 is a flowchart showing an operation of a calculation procedure generation unit of the elliptic curve calculation device.

【図14】同楕円曲線演算装置のスカラ倍演算部の動作
を示すフローチャートである。
FIG. 14 is a flowchart showing an operation of a scalar multiplication unit of the elliptic curve calculation device.

【図15】同楕円曲線演算装置の計算手順生成部による
計算手順(配列{S[i]})の生成過程を示す計算フ
ロー図である。
FIG. 15 is a calculation flowchart showing a generation process of a calculation procedure (array {S [i]}) by a calculation procedure generation unit of the elliptic curve calculation device.

【図16】図15に示された具体例に対応するスカラ倍
演算部の動作を示す図である。
16 is a diagram showing the operation of the scalar multiplication unit corresponding to the specific example shown in FIG.

【図17】本発明の実施の形態4における楕円曲線演算
装置の構成を示す機能ブロック図である。
FIG. 17 is a functional block diagram showing a configuration of an elliptic curve calculation device according to a fourth embodiment of the present invention.

【図18】同楕円曲線演算装置の動作を示すフローチャ
ートである。
FIG. 18 is a flowchart showing an operation of the elliptic curve calculation device.

【図19】同楕円曲線演算装置の動作を示す計算フロー
図である。
FIG. 19 is a calculation flowchart showing the operation of the elliptic curve calculation device.

【図20】本発明の実施の形態5における楕円曲線演算
装置の構成を示す機能ブロック図である。
FIG. 20 is a functional block diagram showing a configuration of an elliptic curve calculation device according to a fifth embodiment of the present invention.

【図21】同楕円曲線演算装置の計算手順生成部による
係数分割の手法を示す計算フロー図である。
FIG. 21 is a calculation flowchart showing a method of coefficient division by the calculation procedure generation unit of the elliptic curve calculation device.

【図22】同楕円曲線演算装置の計算手順生成部の詳細
な処理手順を示すフローチャートである。
FIG. 22 is a flowchart showing a detailed processing procedure of a calculation procedure generation unit of the elliptic curve calculation device.

【図23】同楕円曲線演算装置のテーブル記憶部の格納
データを示す図である。
FIG. 23 is a diagram showing data stored in a table storage unit of the elliptic curve calculation device.

【図24】同楕円曲線演算装置のスカラ倍演算部の動作
を示すフローチャートである。
FIG. 24 is a flowchart showing an operation of a scalar multiplication unit of the elliptic curve calculation device.

【図25】具体的な数値例に対する同楕円曲線演算装置
の処理を示す図である。
FIG. 25 is a diagram showing a process of the elliptic curve calculation device for a specific numerical example.

【図26】本発明の実施の形態6における楕円曲線演算
装置の構成を示す機能ブロック図である。
FIG. 26 is a functional block diagram showing the configuration of an elliptic curve calculation device according to a sixth embodiment of the present invention.

【図27】同楕円曲線演算装置のテーブル記憶部の格納
データを示す図である。
FIG. 27 is a diagram showing data stored in a table storage unit of the elliptic curve calculation device.

【図28】同楕円曲線演算装置のY座標復元部によるY
座標復元の基本的なアプローチを説明する図である。
FIG. 28 is a diagram illustrating Y by a Y coordinate restoration unit of the elliptic curve calculation device.
It is a figure explaining the basic approach of coordinate restoration.

【図29】同楕円曲線演算装置のスカラ倍演算部の動作
を示すフローチャートである。
FIG. 29 is a flowchart showing an operation of a scalar multiplication unit of the elliptic curve calculation device.

【図30】具体的な数値例に対する同楕円曲線演算装置
の処理を示す図である。
FIG. 30 is a diagram showing a process of the elliptic curve calculation device for a specific numerical example.

【図31】本発明に係る楕円曲線演算装置の適用例を示
す図である。
FIG. 31 is a diagram showing an application example of the elliptic curve calculation device according to the present invention.

【図32】エルガマル署名によるデジタル署名方式の手
順を示すシーケンス図である。
FIG. 32 is a sequence diagram showing a procedure of a digital signature method using an El Gamal signature.

【図33】従来技術3におけるスカラ倍演算の計算手順
を模式的に示す計算フロー図である。
FIG. 33 is a calculation flow chart schematically showing a calculation procedure of a scalar multiplication operation in Conventional Technique 3.

【符号の説明】[Explanation of symbols]

200、300、400、500、600、700
楕円曲線演算装置 210、310、410、610 計算手順生成部 210a、510a 加算要素特定部 210b、310b、410b、610b 配列生成出
力部 220、320、420、620、720 スカラ倍
演算部 220a、320a、420a、510、620a 演
算制御部 220b、320b、420b、520、620b、7
20b テーブル記憶部 220c、320c、420c、510c、620c
一時記憶部 220d、320d、420d、530、620d 楕
円加算部 310a 加算タイプ特定部 410a 加算要素表現切替点特定部 510a ビット判定部 610a 分割対象特定部 720e Y座標復元部
200, 300, 400, 500, 600, 700
Elliptic curve calculation device 210, 310, 410, 610 Calculation procedure generation unit 210a, 510a Addition element identification unit 210b, 310b, 410b, 610b Array generation output unit 220, 320, 420, 620, 720 Scalar multiplication calculation unit 220a, 320a, 420a, 510, 620a Operation control units 220b, 320b, 420b, 520, 620b, 7
20b Table storage units 220c, 320c, 420c, 510c, 620c
Temporary storage units 220d, 320d, 420d, 530, 620d Ellipse addition unit 310a Addition type identification unit 410a Addition element representation switching point identification unit 510a Bit determination unit 610a Division target identification unit 720e Y coordinate restoration unit

Claims (31)

【特許請求の範囲】[Claims] 【請求項1】 nビットの任意の整数kを入力とし、予
め与えられた有限体F上のモンゴメリ型楕円曲線E上の
点Gに対して、スカラ倍点k*Gを出力する楕円曲線演
算装置であって、 予め決定されたn以下の種類のスカラを係数とする点G
のスカラ倍点を第1加算要素とする前記楕円曲線E上の
加算を繰り返すことによって前記スカラ倍点k*Gを算
出するスカラ倍演算手段を備えることを特徴とする楕円
曲線演算装置。
1. An elliptic curve operation for inputting an arbitrary n-bit integer k and outputting a scalar multiplication point k * G for a point G on a Montgomery-form elliptic curve E on a finite field F given in advance. A point G having a predetermined scalar value of n or less as a coefficient
An elliptic curve calculation device comprising: a scalar multiplication unit for calculating the scalar multiplication point k * G by repeating addition on the elliptic curve E using the scalar multiplication point as a first addition element.
【請求項2】 前記第1加算要素は、G,2*G,(2
^2)*G,…,(2^(n−1))*Gのいずれかで
あることを特徴とする請求項1記載の楕円曲線演算装
置。
2. The first addition element is G, 2 * G, (2
The elliptic curve calculation device according to claim 1, wherein any one of ^ 2) * G, ..., (2 ^ (n-1)) * G.
【請求項3】 前記楕円曲線演算装置は、さらに、前記
楕円曲線E上の加算の繰り返し手順を示す計算手順を生
成する計算手順生成手段を備え、 前記スカラ倍演算手段は、前記計算手順生成手段が生成
した計算手順に従って前記スカラ倍点k*Gを算出する
ことを特徴とする請求項2記載の楕円曲線演算装置。
3. The elliptic curve calculation device further comprises calculation procedure generation means for generating a calculation procedure indicating an iterative procedure of addition on the elliptic curve E, and the scalar multiplication operation means is the calculation procedure generation means. The elliptic curve calculation device according to claim 2, wherein the scalar multiplication point k * G is calculated in accordance with the calculation procedure generated by.
【請求項4】 前記計算手順生成手段は、自然数m,u
に対して、 (2^(m−1)+u)*G、(2^(m−1))*G
及びu*Gから(2^m+u)*Gを算出する第1計
算、又は、 (2^m)*G、(2^m−u)*G及びu*Gから
(2^(m+1)−u)*Gを算出する第2計算、又
は、 (2^m)*G、−(2^m−u)*G及び(2^(m
+1)−u)*Gからu*Gを算出する第3計算を前記
楕円曲線E上の加算とする計算手順を生成することを特
徴とする請求項3記載の楕円曲線演算装置。
4. The calculation procedure generating means is a natural number m, u
, (2 ^ (m-1) + u) * G, (2 ^ (m-1)) * G
And a first calculation for calculating (2 ^ m + u) * G from u * G, or (2 ^ (m + 1)-from (2 ^ m) * G, (2 ^ m-u) * G and u * G. u) * G for the second calculation, or (2 ^ m) * G,-(2 ^ m-u) * G and (2 ^ (m
4. The elliptic curve calculation device according to claim 3, wherein a calculation procedure for generating a third calculation for calculating u * G from +1) -u) * G as addition on the elliptic curve E is generated.
【請求項5】 前記計算手順生成手段は、前記kの各ビ
ットの値に応じて、前記楕円曲線E上の加算と前記第1
〜第3計算の少なくとも1つとを対応づけることによ
り、前記計算手順を生成することを特徴とする請求項4
記載の楕円曲線演算装置。
5. The calculation procedure generation means is configured to perform addition on the elliptic curve E and the first calculation according to the value of each bit of the k.
5. The calculation procedure is generated by associating with at least one of the third calculations.
The elliptic curve calculation device described.
【請求項6】 前記計算手順生成手段は、前記kのビッ
トの値が0である場合には、そのビットに対応する前記
楕円曲線E上の加算として少なくとも前記第1計算を対
応させ、前記ビットの値が1である場合には、そのビッ
トに対応する前記楕円曲線E上の加算として少なくとも
前記第2計算を対応させることにより、前記計算手順を
生成することを特徴とする請求項5記載の楕円曲線演算
装置。
6. The calculation procedure generation means, when the value of the bit of k is 0, associates at least the first calculation as an addition on the elliptic curve E corresponding to the bit, and the bit 6. The calculation procedure is generated when at least the second calculation is made to correspond to the addition on the elliptic curve E corresponding to the bit when the value of is 1. Elliptic curve calculator.
【請求項7】 前記計算手順生成手段は、前記楕円曲線
E上の加算の繰り返しにおける個々の加算において、前
記第1加算要素と加算される第2加算要素の表現形式が
前記第1計算におけるプラス表現(2^(m−1)+
u)*Gであるか、前記第2計算におけるマイナス表現
(2^m−u)*Gであるかを特定する表現形式情報を
前記計算手順として生成し、 前記スカラ倍演算手段は、前記楕円曲線E上の加算の繰
り返しにおける個々の加算においては、前記表現形式情
報に基づいて、前記第1〜第3計算のいずれかの計算を
行うことを特徴とする請求項3記載の楕円曲線演算装
置。
7. The calculation procedure generation means is configured such that, in each addition in the repetition of addition on the elliptic curve E, the expression form of the second addition element to be added with the first addition element is positive in the first calculation. Expression (2 ^ (m-1) +
u) * G or minus expression (2 ^ m−u) * G in the second calculation, the expression procedure information is generated as the calculation procedure, and the scalar multiplication unit calculates the ellipse. The elliptic curve calculation device according to claim 3, wherein any one of the first to third calculations is performed based on the expression format information in each addition in the repetition of addition on the curve E. .
【請求項8】 前記表現形式情報は、前記楕円曲線E上
の加算の繰り返しにおける加算ごとに、前記第2加算要
素が前記プラス表現及び前記マイナス表現のいずれの表
現からいずれの表現に切り替わるかを示す情報であるこ
とを特徴とする請求項7記載の楕円曲線演算装置。
8. The expression format information indicates whether the second addition element is switched from which expression of the positive expression and the negative expression to which expression each time the addition is repeated on the elliptic curve E. The elliptic curve calculation device according to claim 7, which is information indicating.
【請求項9】 前記表現形式情報は、前記楕円曲線E上
の加算の繰り返しにおいて、前記第2加算要素が前記プ
ラス表現及び前記マイナス表現のいずれかの表現形式で
連続して出現する個数を示す情報であることを特徴とす
る請求項7記載の楕円曲線演算装置。
9. The expression format information indicates the number of consecutive occurrences of the second addition element in one of the expression expressions of the plus expression and the minus expression in the repetition of addition on the elliptic curve E. The elliptic curve calculation device according to claim 7, which is information.
【請求項10】 前記スカラ倍演算手段は、G,2*
G,(2^2)*G,…,(2^(n−1))*Gの少
なくとも一部を記憶するテーブル記憶部を有し、前記テ
ーブル記憶部に記憶された点を第1加算要素として前記
楕円曲線E上の加算を行うことを特徴とする請求項2記
載の楕円曲線演算装置。
10. The scalar multiplication unit is G, 2 *
G, (2 ^ 2) * G, ..., (2 ^ (n-1)) * G has a table storage unit for storing at least a part thereof, and the points stored in the table storage unit are first added. The elliptic curve calculation device according to claim 2, wherein addition on the elliptic curve E is performed as an element.
【請求項11】 前記第1加算要素は、2*G,3*
G,6*G,12*G,…,(2^(n−1)+2(n
−2))*Gのいずれかであることを特徴とする請求項
1記載の楕円曲線演算装置。
11. The first addition element is 2 * G, 3 *.
G, 6 * G, 12 * G, ..., (2 ^ (n-1) +2 (n
2. The elliptic curve calculation device according to claim 1, which is any one of -2)) * G.
【請求項12】 前記楕円曲線演算装置は、さらに、前
記楕円曲線E上の加算の繰り返し手順を示す計算手順を
生成する計算手順生成手段を備え、 前記スカラ倍演算手段は、前記計算手順生成手段が生成
した計算手順に従って前記スカラ倍点k*Gを算出する
ことを特徴とする請求項11記載の楕円曲線演算装置。
12. The elliptic curve calculation device further comprises calculation procedure generation means for generating a calculation procedure indicating an iterative procedure of addition on the elliptic curve E, and the scalar multiplication operation means is the calculation procedure generation means. The elliptic curve calculation device according to claim 11, wherein the scalar multiplication point k * G is calculated according to the calculation procedure generated by.
【請求項13】 前記計算手順生成手段は、自然数m,
uに対して、 第1加算要素(2^(m−1)+2^(m−2))*
G、第2加算要素(2^(m−2)+u)*G及び前記
第1加算要素と前記第2加算要素との差(2^(m−
1)−u)から(2^m+u)*Gを算出する第1計
算、又は、 第1加算要素(2^m+2^(m−1))*G、第2加
算要素(2^(m−1)−u)*G及び前記第1加算要
素と前記第2加算要素との差(2^m+u)から(2^
(m+1)−u)*Gを算出する第2計算を前記楕円曲
線E上の加算とする計算手順を生成することを特徴とす
る請求項12記載の楕円曲線演算装置。
13. The calculation procedure generating means is a natural number m,
For u, the first addition element (2 ^ (m-1) + 2 ^ (m-2)) *
G, the second addition element (2 ^ (m-2) + u) * G, and the difference between the first addition element and the second addition element (2 ^ (m-
1) -u) to calculate (2 ^ m + u) * G, or a first addition element (2 ^ m + 2 ^ (m-1)) * G and a second addition element (2 ^ (m- 1) -u) * G and the difference (2 ^ m + u) between the first addition element and the second addition element from (2 ^)
13. The elliptic curve calculation device according to claim 12, wherein a calculation procedure that generates a second calculation for calculating (m + 1) -u) * G is addition on the elliptic curve E is generated.
【請求項14】 前記計算手順生成手段は、前記第1又
は前記第2計算による楕円曲線E上の加算によって得ら
れた結果を、次の繰り返し加算における第2加算要素と
するか第1加算要素と第2加算要素との差とするかを示
す分割対象情報を前記計算手順として生成することを特
徴とする請求項13記載の楕円曲線演算装置。
14. The calculation procedure generation means sets the result obtained by the addition on the elliptic curve E by the first or the second calculation as a second addition element in the next iterative addition, or a first addition element. The elliptic curve calculation device according to claim 13, wherein division target information indicating whether the difference between the second addition element and the second addition element is generated is the calculation procedure.
【請求項15】 前記計算手順生成手段は、前記kを
k'×2^eと表現した場合における値k'及び値eに関
する情報を初期情報として前記計算手順に含ませて生成
することを特徴とする請求項14記載の楕円曲線演算装
置。
15. The calculation procedure generation means generates information including the value k ′ and the value e in the case where k is expressed as k ′ × 2 ^ e, as initial information included in the calculation procedure. The elliptic curve calculation device according to claim 14.
【請求項16】 前記計算手順生成手段は、前記k'が
1、3及びそれ以外の値のいずれであるかを示す情報を
前記初期情報に含ませて生成することを特徴とする請求
項15記載の楕円曲線演算装置。
16. The calculation procedure generating means generates the initial information including information indicating whether k ′ is 1, 3 or another value, in the initial information. The elliptic curve calculation device described.
【請求項17】 前記スカラ倍演算手段は、2*G,3
*G,6*G,12*G,…,(2^(n−1)+2
(n−2))*Gの少なくとも一部を記憶するテーブル
記憶部を有し、前記テーブル記憶部に記憶された点を第
1加算要素として前記楕円曲線E上の加算を行うことを
特徴とする請求項11記載の楕円曲線演算装置。
17. The scalar multiplication unit is 2 * G, 3.
* G, 6 * G, 12 * G, ..., (2 ^ (n-1) +2
(N−2)) * G has a table storage unit that stores at least a part of it, and performs addition on the elliptic curve E by using the point stored in the table storage unit as a first addition element. The elliptic curve calculation device according to claim 11.
【請求項18】 前記楕円曲線演算装置は、さらに、前
記スカラ倍点k*Gのy座標を復元するy座標復元手段
を備えることを特徴とする請求項1記載の楕円曲線演算
装置。
18. The elliptic curve calculation device according to claim 1, further comprising y-coordinate restoration means for restoring the y-coordinate of the scalar multiple k * G.
【請求項19】 前記第1加算要素は、G,2*G,
(2^2)*G,…,(2^(n−1))*Gのいずれ
かであり、 前記スカラ倍演算手段は、3項組の射影座標(x、y、
z)を用いて、前記第1加算要素のx座標を用いた前記
楕円曲線E上の加算を繰り返すことによって、前記スカ
ラ倍点k*Gのx及びz座標を算出し、 前記y座標復元手段は、3項組の射影座標(x、y、
z)を用いて、前記スカラ倍点k*Gのx及びz座標
と、前記スカラ倍点k*Gの算出に用いられた第1加算
要素と加算された第2加算要素のx及びz座標と、前記
第1加算要素のx及びy座標とから前記スカラ倍点k*
Gのy座標を復元することを特徴とする請求項18記載
の楕円曲線演算装置。
19. The first addition element is G, 2 * G,
One of (2 ^ 2) * G, ..., (2 ^ (n-1)) * G, wherein the scalar multiplication unit is a triplet of projective coordinates (x, y,
z), the x and z coordinates of the scalar multiplication point k * G are calculated by repeating addition on the elliptic curve E using the x coordinate of the first addition element, and the y coordinate restoration means. Is the projection coordinate (x, y,
z), the x and z coordinates of the scalar multiplication point k * G and the x and z coordinates of the second addition element added to the first addition element used to calculate the scalar multiplication point k * G. And the x and y coordinates of the first addition element, the scalar multiplication point k *
The elliptic curve calculation device according to claim 18, wherein the y coordinate of G is restored.
【請求項20】 前記第1加算要素は、2*G,3*
G,6*G,12*G,…,(2^(n−1)+2(n
−2))*Gのいずれかであり、 前記スカラ倍演算手段は、3項組の射影座標(x、y、
z)を用いて、前記第1加算要素のx座標を用いた前記
楕円曲線E上の加算を繰り返すことによって、前記スカ
ラ倍点k*Gのx及びz座標を算出し、 前記y座標復元手段は、3項組の射影座標(x、y、
z)を用いて、前記スカラ倍点k*Gのx及びz座標
と、前記スカラ倍点k*Gの算出に用いられた第1加算
要素と加算された第2加算要素のx及びz座標と、前記
第1加算要素のx及びy座標とから前記スカラ倍点k*
Gのy座標を復元することを特徴とする請求項18記載
の楕円曲線演算装置。
20. The first addition element is 2 * G, 3 *
G, 6 * G, 12 * G, ..., (2 ^ (n-1) +2 (n
-2)) * G, wherein the scalar multiplication unit is a triplet of projective coordinates (x, y,
z), the x and z coordinates of the scalar multiplication point k * G are calculated by repeating addition on the elliptic curve E using the x coordinate of the first addition element, and the y coordinate restoration means. Is the projection coordinate (x, y,
z), the x and z coordinates of the scalar multiplication point k * G and the x and z coordinates of the second addition element added to the first addition element used to calculate the scalar multiplication point k * G. And the x and y coordinates of the first addition element, the scalar multiplication point k *
The elliptic curve calculation device according to claim 18, wherein the y coordinate of G is restored.
【請求項21】 モンゴメリ型楕円曲線上での演算に基
づく暗号を行う暗号装置であって、 nビットの任意の整数kを入力とし、予め与えられた有
限体F上のモンゴメリ型楕円曲線E上の点Gに対して、
スカラ倍点k*Gを出力する楕円曲線演算手段と、 前記楕円曲線演算手段による前記スカラ倍演算に基づい
て、暗号、復号、デジタル署名、デジタル署名検証又は
鍵共有を行う利用手段とを備え、 前記楕円曲線演算手段は、予め決定されたn以下の種類
のスカラを係数とする点Gのスカラ倍点を第1加算要素
とする前記楕円曲線E上の加算を繰り返すことによって
前記スカラ倍点k*Gを算出することを特徴とする暗号
装置。
21. A cryptographic device for performing encryption based on an arithmetic operation on a Montgomery-type elliptic curve, wherein an arbitrary n-bit integer k is input, and on a Montgomery-type elliptic curve E on a finite field F given in advance. For point G of
An elliptic curve calculation means for outputting a scalar multiplication point k * G; and a utilization means for performing encryption, decryption, digital signature, digital signature verification or key sharing based on the scalar multiplication operation by the elliptic curve calculation means, The elliptic curve calculation means repeats addition on the elliptic curve E with the scalar multiplication point of the point G having a predetermined scalar value of n or less as a coefficient to be the first addition element to repeat the scalar multiplication point k. A cryptographic device characterized by calculating * G.
【請求項22】 nビットの任意の整数kを入力とし、
予め与えられた有限体F上のモンゴメリ型楕円曲線E上
の点Gに対して、スカラ倍点k*Gを出力する楕円曲線
演算方法であって、 予め決定されたn以下の種類のスカラを係数とする点G
のスカラ倍点を第1加算要素とする前記楕円曲線E上の
加算を繰り返すことによって前記スカラ倍点k*Gを算
出するスカラ倍演算ステップを含むことを特徴とする楕
円曲線演算方法。
22. Inputting an arbitrary integer k of n bits,
This is an elliptic curve calculation method for outputting a scalar multiplication point k * G for a point G on a Montgomery-form elliptic curve E on a finite field F given in advance. Point G as coefficient
An elliptic curve calculation method comprising: a scalar multiplication operation step of calculating the scalar multiplication point k * G by repeating addition on the elliptic curve E using the scalar multiplication point as a first addition element.
【請求項23】 前記第1加算要素は、G,2*G,
(2^2)*G,…,(2^(n−1))*Gのいずれ
かであることを特徴とする請求項22記載の楕円曲線演
算方法。
23. The first addition element is G, 2 * G,
23. The elliptic curve calculation method according to claim 22, wherein one of (2 ^ 2) * G, ..., (2 ^ (n-1)) * G.
【請求項24】 前記第1加算要素は、2*G,3*
G,6*G,12*G,…,(2^(n−1)+2(n
−2))*Gのいずれかであることを特徴とする請求項
22記載の楕円曲線演算方法。
24. The first addition element is 2 * G, 3 *
G, 6 * G, 12 * G, ..., (2 ^ (n-1) +2 (n
23) The elliptic curve calculation method according to claim 22, wherein any one of -2)) * G.
【請求項25】 前記楕円曲線演算方法は、さらに、前
記楕円曲線E上の加算の繰り返し手順を示す計算手順を
生成する計算手順生成ステップを含み、 前記スカラ倍演算ステップでは、前記計算手順生成ステ
ップが生成した計算手順に従って前記スカラ倍点k*G
を算出することを特徴とする請求項22記載の楕円曲線
演算方法。
25. The elliptic curve calculation method further includes a calculation procedure generation step of generating a calculation procedure indicating an iterative procedure of addition on the elliptic curve E, and in the scalar multiplication step, the calculation procedure generation step. The scalar multiplication point k * G according to the calculation procedure generated by
23. The elliptic curve calculation method according to claim 22, wherein
【請求項26】 前記楕円曲線演算方法は、さらに、前
記スカラ倍点k*Gのy座標を復元するy座標復元ステ
ップを含むことを特徴とする請求項22記載の楕円曲線
演算方法。
26. The elliptic curve calculation method according to claim 22, further comprising a y coordinate restoration step of restoring the y coordinate of the scalar multiplication point k * G.
【請求項27】 nビットの任意の整数kを入力とし、
予め与えられた有限体F上のモンゴメリ型楕円曲線E上
の点Gに対して、スカラ倍点k*Gを出力する楕円曲線
演算装置のためのプログラムであって、 予め決定されたn以下の種類のスカラを係数とする点G
のスカラ倍点を第1加算要素とする前記楕円曲線E上の
加算を繰り返すことによって前記スカラ倍点k*Gを算
出するスカラ倍演算ステップを含むことを特徴とするプ
ログラム。
27. Inputting an arbitrary n-bit integer k,
A program for an elliptic curve calculation device that outputs a scalar multiplication point k * G for a point G on a Montgomery-form elliptic curve E on a finite field F given in advance. Point G with a coefficient of a scalar type
And a scalar multiplication operation step for calculating the scalar multiplication point k * G by repeating addition on the elliptic curve E using the scalar multiplication point as a first addition element.
【請求項28】 前記第1加算要素は、G,2*G,
(2^2)*G,…,(2^(n−1))*Gのいずれ
かであることを特徴とする請求項27記載のプログラ
ム。
28. The first addition element is G, 2 * G,
The program according to claim 27, wherein the program is any one of (2 ^ 2) * G, ..., (2 ^ (n-1)) * G.
【請求項29】 前記第1加算要素は、2*G,3*
G,6*G,12*G,…,(2^(n−1)+2(n
−2))*Gのいずれかであることを特徴とする請求項
27記載のプログラム。
29. The first addition element is 2 * G, 3 *.
G, 6 * G, 12 * G, ..., (2 ^ (n-1) +2 (n
The program according to claim 27, which is any one of -2)) * G.
【請求項30】 前記プログラムは、さらに、前記楕円
曲線E上の加算の繰り返し手順を示す計算手順を生成す
る計算手順生成ステップを含み、 前記スカラ倍演算ステップでは、前記計算手順生成ステ
ップが生成した計算手順に従って前記スカラ倍点k*G
を算出することを特徴とする請求項27記載のプログラ
ム。
30. The program further includes a calculation procedure generation step for generating a calculation procedure indicating a repeating procedure of addition on the elliptic curve E, and the scalar multiplication operation step generates the calculation procedure generation step. According to the calculation procedure, the scalar multiplication point k * G
28. The program according to claim 27, wherein
【請求項31】 前記プログラムは、さらに、前記スカ
ラ倍点k*Gのy座標を復元するy座標復元ステップを
含むことを特徴とする請求項27記載のプログラム。
31. The program according to claim 27, wherein the program further includes a y-coordinate restoring step of restoring the y-coordinate of the scalar multiple k * G.
JP2002313361A 2002-01-28 2002-10-28 Elliptic curve calculation device and elliptic curve calculation method Expired - Fee Related JP4203944B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002313361A JP4203944B2 (en) 2002-01-28 2002-10-28 Elliptic curve calculation device and elliptic curve calculation method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002019071 2002-01-28
JP2002-19071 2002-01-28
JP2002313361A JP4203944B2 (en) 2002-01-28 2002-10-28 Elliptic curve calculation device and elliptic curve calculation method

Publications (3)

Publication Number Publication Date
JP2003288014A true JP2003288014A (en) 2003-10-10
JP2003288014A5 JP2003288014A5 (en) 2005-10-27
JP4203944B2 JP4203944B2 (en) 2009-01-07

Family

ID=29253274

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002313361A Expired - Fee Related JP4203944B2 (en) 2002-01-28 2002-10-28 Elliptic curve calculation device and elliptic curve calculation method

Country Status (1)

Country Link
JP (1) JP4203944B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008233941A (en) * 2005-04-28 2008-10-02 Matsushita Electric Ind Co Ltd Cryptographic processing apparatus and cryptographic processing method
JP2009515206A (en) * 2005-11-03 2009-04-09 サーティコム コーポレイション Simultaneous scalar multiplication method
CN111339546A (en) * 2020-03-20 2020-06-26 苏州链原信息科技有限公司 Method for generating data tag, electronic device and computer storage medium

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008233941A (en) * 2005-04-28 2008-10-02 Matsushita Electric Ind Co Ltd Cryptographic processing apparatus and cryptographic processing method
US7724897B2 (en) 2005-04-28 2010-05-25 Panasonic Corporation Program converter, encrypting device, and encrypting method
US8184805B2 (en) 2005-04-28 2012-05-22 Panasonic Corporation Program converter, encrypting device, and encrypting method
JP2009515206A (en) * 2005-11-03 2009-04-09 サーティコム コーポレイション Simultaneous scalar multiplication method
JP2012185517A (en) * 2005-11-03 2012-09-27 Certicom Corp Simultaneous scalar multiplication method
US8284930B2 (en) 2005-11-03 2012-10-09 Certicom Corp. Simultaneous scalar multiplication method
CN111339546A (en) * 2020-03-20 2020-06-26 苏州链原信息科技有限公司 Method for generating data tag, electronic device and computer storage medium
CN111339546B (en) * 2020-03-20 2023-12-01 苏州链原信息科技有限公司 Method for generating data tag, electronic device and computer storage medium

Also Published As

Publication number Publication date
JP4203944B2 (en) 2009-01-07

Similar Documents

Publication Publication Date Title
JP4034585B2 (en) Elliptic curve calculation device and elliptic curve calculation method
US7209555B2 (en) Elliptic curve converting device, elliptic curve converting method, elliptic curve utilization device and elliptic curve generating device
Smart Elliptic curve cryptosystems over small fields of odd characteristic
US8862651B2 (en) Method and apparatus for modulus reduction
Wollinger Computer architectures for cryptosystems based on hyperelliptic curves.
CN105574269A (en) Design verification method of special instruction processor
Azarderakhsh et al. FPGA-SIDH: High-performance implementation of supersingular isogeny Diffie-Hellman key-exchange protocol on FPGA
JP4203944B2 (en) Elliptic curve calculation device and elliptic curve calculation method
US7849125B2 (en) Efficient computation of the modulo operation based on divisor (2n-1)
JPWO2009020216A1 (en) Calculation method and calculation device
CN111740821A (en) Method and apparatus for establishing shared key
Saffar et al. High performance methods of elliptic curve scalar multiplication
KR101309797B1 (en) Method for generating sparse w-NAF key, method for processing and method for encrypting thereof
Realpe-Muñoz et al. High-performance elliptic curve cryptoprocessors over GF (2 m) on Koblitz curves
CN100432922C (en) Method and device for realizing square operation in finite field
Yang et al. Fast multicomputation with asynchronous strategy
JP4225764B2 (en) Elliptic curve conversion device, elliptic curve conversion method, elliptic curve utilization device, and elliptic curve generation device
JP2005316038A (en) Scalar multiplication method, apparatus and program for elliptic curve cryptography
KR100564765B1 (en) Finite polynomial division device and method
Kumar et al. Design and Evaluation of FPGA-Optimized Symmetrical Three-Term Karatsuba Multipliers
Hung et al. Some Results For Computation Theory In Hyperelliptic Curves Type
Kodali An efficient scalar multiplication algorithm for ECC in WSNs
JP2004151234A (en) Exponentiation arithmetic unit
JP2001194996A (en) Division device for polynomial
Jeon et al. An evolutionary approach to the design of cellular automata architecture for multiplication in elliptic curve cryptography over finite fields

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050715

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080819

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

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

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111024

Year of fee payment: 3

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

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees