JP2011075587A - Scalar multiplication computing method, program, and device in elliptic curve cryptography - Google Patents

Scalar multiplication computing method, program, and device in elliptic curve cryptography Download PDF

Info

Publication number
JP2011075587A
JP2011075587A JP2009223619A JP2009223619A JP2011075587A JP 2011075587 A JP2011075587 A JP 2011075587A JP 2009223619 A JP2009223619 A JP 2009223619A JP 2009223619 A JP2009223619 A JP 2009223619A JP 2011075587 A JP2011075587 A JP 2011075587A
Authority
JP
Japan
Prior art keywords
scalar
elliptic curve
unit
multiplication
scalar multiplication
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.)
Pending
Application number
JP2009223619A
Other languages
Japanese (ja)
Inventor
Keisuke Hakuta
恵輔 伯田
Hisanobu Sato
尚宜 佐藤
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009223619A priority Critical patent/JP2011075587A/en
Publication of JP2011075587A publication Critical patent/JP2011075587A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide a fast elliptic curve scalar multiplication computing method in a scalar multiplication computing device using an elliptic curve capable of executing endomorphism Φ which is different from integer multiplication on the elliptic curve, and to provide a program and a device using the same. <P>SOLUTION: In the scalar multiplication computing device for computing a scalar multiple point from a scalar value and a point on the elliptic curve capable of executing the endomorphism Φ being different from integer multiplication on the elliptic curve defined on a definition field F<SB>q</SB>having a characteristic polynomial Φ<SP>2</SP>+Φ+q (q is a power of an odd prime number), Φ-ary expansion which is a first numerical sequence is computed from the scalar value and, when adjacent two digits in the Φ-ary expansion of the scalar value do not satisfy a predetermined condition, a computing is performed on the two digits and one digit next to the two digits, or each of two digits. Thereby, a second numerical sequence is computed from the scalar value, and scalar multiplication is performed from the second numerical sequence and the point on the elliptic curve. <P>COPYRIGHT: (C)2011,JPO&INPIT

Description


本発明は、セキュリティ技術に係り、特に楕円曲線演算を用いたメッセージ処理技術に関する。

The present invention relates to security technology, and more particularly to message processing technology using elliptic curve calculation.


楕円曲線暗号はN.Koblitz、V. S. Millerにより提案された公開鍵暗号の一種である。公開鍵暗号には、公開鍵(Public Key)と呼ばれる一般に公開してよい情報と、秘密鍵(Private Key)と呼ばれる秘匿しなければならない秘密情報がある。与えられたメッセージの暗号化や署名の検証には公開鍵を用い、与えられたメッセージの復号化や署名の生成には秘密鍵を用いる。

Elliptic curve cryptography is a kind of public key cryptography proposed by N. Koblitz and VS Miller. Public key cryptography includes information that can be disclosed to the public called a public key and secret information that must be kept secret, called a private key. A public key is used for encrypting a given message and verifying a signature, and a secret key is used for decrypting a given message and generating a signature.


楕円曲線暗号における秘密鍵は、スカラー値が担っている。また、楕円曲線暗号の安全性は楕円曲線上の離散対数問題の求解が困難であることに由来している。楕円曲線上の離散対数問題とは、楕円曲線上のある点Pとそのスカラー倍の点dPが与えられた時、スカラー値dを求める問題である。楕円曲線上の点とは、楕円曲線の定義方程式を満たす数の組をいい、楕円曲線上の点全体には、無限遠点という仮想的な点を単位元とした演算、すなわち楕円曲線上の加法(乃至は加算)が定義される。そして、同じ点同士による楕円曲線上の加法のことを、特に楕円曲線上の2倍算という。

The secret key in elliptic curve cryptography is a scalar value. The security of elliptic curve cryptography comes from the difficulty of solving discrete logarithm problems on elliptic curves. The discrete logarithm problem on an elliptic curve is a problem of obtaining a scalar value d when a certain point P on the elliptic curve and a point dP that is a scalar multiple thereof are given. A point on the elliptic curve is a set of numbers that satisfy the definition equation of the elliptic curve. The entire point on the elliptic curve is calculated based on a virtual point called an infinity point, that is, on the elliptic curve. Addition (or addition) is defined. The addition on the elliptic curve by the same points is called doubling on the elliptic curve.


楕円曲線上の2点の加法は次のようにして計算される。2点を通る直線を引くとその直線は楕円曲線と他の点において交わる。その交わった点とx軸に関して対称な点を、加法を行った結果の点とする。

The addition of two points on an elliptic curve is calculated as follows: When you draw a straight line that passes through two points, the straight line intersects the elliptic curve at another point. The point that is symmetric with respect to the intersecting point and the x-axis is the result of the addition.


例えば、ワイエルシュトラス型楕円曲線(以後、楕円曲線Eと呼ぶ。)の場合には、点(x1,y1)と点(x2,y2)とを加算した結果の点(x3,y3)((x3,y3)=(x1,y1)+(x2,y2))は、

x32-x1-x2 (式1)

y3=(x1-x3)λ-y1 (式2)

λ=(y2-y1)/(x2-x1) (式3)

を計算することにより得られる。

For example, in the case of a Weierstrass-type elliptic curve (hereinafter referred to as an elliptic curve E), the point (x 1 , y 1 ) and the point (x 2 , y 2 ) are added (x 3 , y 3 ) ((x 3 , y 3 ) = (x 1 , y 1 ) + (x 2 , y 2 ))

x 3 = λ 2 -x 1 -x 2 (Formula 1)

y 3 = (x 1 -x 3 ) λ-y 1 (Formula 2)

λ = (y 2 -y 1 ) / (x 2 -x 1 ) (Formula 3)

Is obtained by calculating.


ここで、楕円曲線Eの定義方程式は、

y2=x3+ax+b,(a,bはともに有限体Fqの元) (式4)

で与えられる。なお、点(x1,y1)と点(x2,y2)と点(x3,y3)はいずれも楕円曲線E上にある。すなわち、(式4)のx,yに各々xi,yi(i=1,2,3)を代入しても、(式4)の等式は成り立つ。

Here, the defining equation of the elliptic curve E is

y 2 = x 3 + ax + b, where both a and b are elements of the finite field F q (Equation 4)

Given in. Note that the point (x 1 , y 1 ), the point (x 2 , y 2 ), and the point (x 3 , y 3 ) are all on the elliptic curve E. That is, even if x i and y i (i = 1, 2, 3) are substituted for x and y in (Equation 4), the equation of (Equation 4) holds.


また、有限体Fqは(式4)で与えられる楕円曲線Eの定義体と呼ばれる。ここで、qは正の整数である。

Further, the finite field F q is called a definition field of the elliptic curve E given by (Expression 4). Here, q is a positive integer.


以後、正の整数qは、ある自然数rを用いて、

q=pr (式5)

と表されるものとする。ここで、pは3以上の素数である。

After that, the positive integer q uses a certain natural number r,

q = p r (Formula 5)

It shall be expressed as Here, p is a prime number of 3 or more.


また、以後、楕円曲線暗号に用いる可換群としてE(Fq m)を考える。

Hereinafter, E (F q m ) is considered as a commutative group used for elliptic curve cryptography.


ただし、E(Fq m)は、(式4)の定義方程式で与えられる楕円曲線であり、楕円曲線上の各点P=(x,y)に対して、x,yがともにFq mの元であることを意味し、mは拡大次数と呼ばれる自然数である。

However, E (F q m ) is an elliptic curve given by the definition equation of (Equation 4). For each point P = (x, y) on the elliptic curve, both x and y are F q m M is a natural number called the extension order.


楕円曲線上の点の2倍算は次のようにして計算される。楕円曲線上の点における接線をひくと、その接線は楕円曲線上の他の一点において交わる。その交わった点とx座標に関して対称な点を、2倍算を行った結果の点とする。例えば、楕円曲線Eの場合には、点(x1,y1)の2倍算を行った結果の点(x3,y3)((x3,y3)=2(x1,y1)=(x1,y1)+(x1,y1))は、(式1)、(式2)及び

λ=(3x1 2+a)/2y1 (式6)

を計算することにより得られる。

The doubling of points on the elliptic curve is calculated as follows. When a tangent line at a point on the elliptic curve is drawn, the tangent line intersects at another point on the elliptic curve. The intersected point and a point that is symmetric with respect to the x-coordinate are taken as the result of doubling. For example, in the case of the elliptic curve E, the point (x 3 , y 3 ) ((x 3 , y 3 ) = 2 (x 1 , y) as a result of doubling the point (x 1 , y 1 ) 1 ) = (x 1 , y 1 ) + (x 1 , y 1 )) (Equation 1), (Equation 2) and

λ = (3x 1 2 + a) / 2y 1 (Formula 6)

Is obtained by calculating.


また、楕円曲線E上の点に対して、フロベニウス写像Φと呼ばれる自己準同型写像を施すことが可能である。点(x1,y1)に対してフロベニウス写像Φを施すとは、

Φ(x1,y1)=(x1 q,y1 q) (式7)

を計算することである。また、

(x2q,x2q)+q(x,y)=t(xq,yq) (式8)

が成り立つことが知られており、(式8)の性質によりΦを、

Φ2+q=tΦ (式9)

を満たす複素数と考えることができる。ここで、tは(式4)で与えられる楕円曲線Eのトレースと呼ばれる整数である。以下、トレースtは-1とする。

In addition, a self-homogeneous map called Frobenius map Φ can be applied to points on the elliptic curve E. Applying the Frobenius map Φ to the point (x 1 , y 1 )

Φ (x 1 , y 1 ) = (x 1 q , y 1 q ) (Equation 7)

Is to calculate Also,

(X 2q , x 2q ) + q (x, y) = t (x q , y q ) (Equation 8)

Is known to hold, and Φ by the nature of (Equation 8),

Φ 2 + q = tΦ (Formula 9)

It can be thought of as a complex number that satisfies. Here, t is an integer called a trace of the elliptic curve E given by (Equation 4). Hereinafter, the trace t is -1.


ある点に対し、特定の回数だけ加法を行うことをスカラー倍といい、その結果の点をスカラー倍点、その回数のことをスカラー値という。

Adding a certain number of times to a certain point is called scalar multiplication, the resulting point is called a scalar multiple, and the number of times is called a scalar value.


楕円曲線暗号においては、与えられたメッセージの暗号化、復号化、署名の生成、及び、その検証は、楕円曲線演算を用いて行う。その中で楕円曲線上のスカラー倍の計算は、上記の暗号化、復号化等の各処理において最も計算時間を要する計算である。そのため、楕円曲線暗号を高速に実行するためには、楕円曲線上のスカラー倍計算を高速に行う必要がある。

In the elliptic curve cryptography, encryption, decryption, signature generation, and verification of a given message are performed using elliptic curve computation. Among them, the calculation of the scalar multiplication on the elliptic curve is the calculation that requires the most calculation time in each processing such as encryption and decryption. Therefore, in order to execute elliptic curve cryptography at high speed, it is necessary to perform scalar multiplication on the elliptic curve at high speed.


一般に楕円曲線上のスカラー倍計算では、エンコードされたスカラー値の各桁を見て、零でない(非零)場合に楕円曲線上の加算を行い、桁をずらすために楕円曲線上の2倍算を行う。ここで、スカラー値のエンコードとは、スカラー値の表現を小さな数値列に変換すること(以後、Φ進展開と呼ぶ。)である。ところが、楕円曲線上の2倍算は、楕円曲線上の加算、整数倍算とは異なる自己準同型写像と比べて処理が重い。

In general, scalar multiplication on an elliptic curve looks at each digit of the encoded scalar value, adds it on the elliptic curve if it is not zero (non-zero), and doubles on the elliptic curve to shift the digit I do. Here, encoding of a scalar value is converting the expression of the scalar value into a small numerical string (hereinafter referred to as Φ-adic expansion). However, the doubling on the elliptic curve is heavier than the self-homogeneous mapping, which is different from the addition and integer multiplication on the elliptic curve.


これに対し、整数倍算とは異なる自己準同型写像を実行することができる楕円曲線上のスカラー倍計算では、桁をずらすために楕円曲線上の2倍算を行う代わりに整数倍算とは異なる自己準同型写像を用いることができることが知られている。整数倍算とは異なる自己準同型写像は、楕円曲線暗号実装の際に、楕円曲線上の点を、正規基底を用いて実装した場合、シフト演算のみを用いて計算でき、2倍算に比べて処理が高速である。

On the other hand, in scalar multiplication on an elliptic curve that can perform a self-homogeneous mapping different from integer multiplication, integer multiplication is used instead of doubling on the elliptic curve to shift digits. It is known that different automorphisms can be used. Self-homogeneous mapping, which is different from integer multiplication, can be calculated using only shift operations when the points on the elliptic curve are implemented using normal basis when implementing elliptic curve cryptography. Processing is fast.


従って、楕円曲線暗号実装の際に楕円曲線として、整数倍算とは異なる自己準同型写像を持つ楕円曲線を採用すれば、スカラー倍計算の高速化が可能となる。

Therefore, if an elliptic curve having a self-homomorphic mapping different from integer multiplication is used as an elliptic curve when implementing elliptic curve cryptography, the speed of scalar multiplication can be increased.


この性質を利用して、楕円曲線上のスカラー倍計算を高速に行う手法の一つとして、楕円曲線暗号におけるスカラー値のΦ進展開表現の高速化を図る方法がある(例えば、特許文献1、及び非特許文献1、2、3参照。)。多項式基底、及び、正規基底については、例えば、非特許文献2に記載されている。

Using this property, as one of the methods for performing high-speed scalar multiplication on an elliptic curve, there is a method for speeding up the Φ-adic expansion expression of a scalar value in elliptic curve cryptography (for example, Patent Document 1, And Non-Patent Documents 1, 2, and 3). The polynomial basis and the normal basis are described in Non-Patent Document 2, for example.


また、2倍算を減らすだけでなく、スカラー倍計算の際に必要な楕円曲線上の加算回数自体を低減することにより、スカラー倍計算は高速化できる。楕円曲線上のスカラー倍計算では、上述のように、非零の場合に加算が行われるため、非零濃度を最小とすることにより、高速化する方法がある。ここで、非零濃度とは、(非零桁の個数)/(桁長)の漸近的な値を指す。一般に、与えられたスカラー値に対して、ある展開における非零濃度が最小のとき、その展開を用いたスカラー倍計算は、スカラー倍計算に関して高速化されることは、上述のように知られている。

In addition to reducing doubling, scalar multiplication can be speeded up by reducing the number of additions on the elliptic curve necessary for scalar multiplication. In scalar multiplication on an elliptic curve, as described above, addition is performed when non-zero, so there is a method of speeding up by minimizing non-zero density. Here, the non-zero concentration refers to an asymptotic value of (number of non-zero digits) / (digit length). In general, it is known as described above that, for a given scalar value, when the non-zero density in a certain development is minimal, the scalar multiplication using that expansion is accelerated with respect to the scalar multiplication. Yes.


この性質を利用して楕円曲線上のスカラー倍計算を高速に行う手法の一つとして、与えられたスカラー値に対して、予め定められた整数を用いてエンコードした場合のスカラー値の非零濃度が最小となる展開(rNAF)を行うことにより、楕円曲線上のスカラー倍計算の高速化を図る方法がある(例えば、非特許文献4参照。)。

A non-zero density of a scalar value when encoding using a predetermined integer for a given scalar value as one of the methods for performing high-speed scalar multiplication on an elliptic curve using this property There is a method of speeding up scalar multiplication on an elliptic curve by performing expansion (rNAF) that minimizes (see Non-Patent Document 4, for example).


特開2007-041461号公報JP 2007-041461


N. P. Smart,Elliptic Curve Cryptosystems over Small Fields of Odd Characteristic, Journalof Cryptology, Vol.12, No.2, pp.141&#8211;151, 1999.N. P. Smart, Elliptic Curve Cryptosystems over Small Fields of Odd Characteristic, Journalof Cryptology, Vol.12, No.2, pp.141 &#8211; 151, 1999. J. A.Solinas, Efficient Arithmetic on Koblitz Curves, Designs, Codes andCryptography, Vol.19, No.2-3, Kluwer Academic Publishers, pp.195-249, 2000.J. A. Solinas, Efficient Arithmetic on Koblitz Curves, Designs, Codes and Cryptography, Vol.19, No.2-3, Kluwer Academic Publishers, pp.195-249, 2000. K. Hakuta, H.Sato, and T. Takagi, Efficient Arithmetic on Subfield Elliptic Curves overSmall Finite Fields of Odd Characteristic, In Information Security Practice andExperience Conference &#8211; ISPEC2008, Vol.4991 of Lecture Notes in Computer Science,pp.304-318, 2008.K. Hakuta, H. Sato, and T. Takagi, Efficient Arithmetic on Subfield Elliptic Curves overSmall Finite Fields of Odd Characteristic, In Information Security Practice and Experience Conference &#8211; ISPEC2008, Vol.4991 of Lecture Notes in Computer Science, pp. 304-318, 2008. T. Takagi, S.M. Yen, and B. C. Wu, Radix-r Non-adjacent Form, In Information SecurityConference - ISC2004, Vol.3225 of Lecture Notes in Computer Science, pp.99-110,2004.T. Takagi, S.M.Yen, and B. C. Wu, Radix-r Non-adjacent Form, In Information Security Conference-ISC2004, Vol.3225 of Lecture Notes in Computer Science, pp.99-110,2004.


情報通信ネットワークの進展と共に電子情報に対する秘匿や認証の為に暗号技術は不可欠な要素となってきている。暗号技術に課せられる要件としては、安全性以外にも、処理速度やメモリ使用量などがある。しかし、一般に安全性、処理速度、メモリ使用量の間にはトレードオフの関係があり、全ての要件を満たすことは難しい。

Cryptographic technology has become an indispensable element for concealing and authenticating electronic information with the development of information and communication networks. In addition to security, requirements imposed on cryptographic technology include processing speed and memory usage. However, there is generally a trade-off relationship between safety, processing speed, and memory usage, and it is difficult to satisfy all requirements.


一般に、暗号に用いられる鍵の長さ(鍵長)は安全性の指標とされ、長いほど安全性が高くなることが知られている。しかしながら、鍵長が長いほど処理に時間はかかる。

In general, the length of a key (key length) used for encryption is an index of security, and it is known that the longer the key, the higher the security. However, the longer the key length, the longer the processing.


楕円曲線上の離散対数問題の求解の困難性は素因数分解の困難性に比べて高いため、素因数分解の困難性を安全性の根拠にしている暗号と比べて、楕円曲線暗号は鍵長を比較的短くすることができる。従って、楕円曲線暗号によれば、計算能力、メモリ容量などのリソースが比較的少なくても、素因数分解の困難性を利用する暗号処理と同等の安全性を有する暗号処理を短時間の処理、すなわち、リソースへの負担が少ない処理で実現することが可能である。

Since the difficulty of finding discrete logarithm problems on elliptic curves is higher than that of prime factorization, elliptic curve cryptosystems compare key lengths with ciphers based on the difficulty of prime factorization. Can be shortened. Therefore, according to elliptic curve cryptography, even if resources such as calculation capacity and memory capacity are relatively small, cryptographic processing having the same security as cryptographic processing using difficulty of prime factorization is performed in a short time, that is, It can be realized by processing with less burden on resources.


最近では、スマートカード(ICカードともいう)等、利用可能なリソースがかなり限られている環境においても、安全性の高い暗号処理の必要性が高まっている。スマートカードのようなリソースの少ない環境では、限られたリソース内で暗号処理の最適化を図る必要があり、安全性を高めるために鍵長を長くすると処理負担の増大が大きいため、さらにリソースへの負担の少ない高速な処理が求められている。

Recently, the need for highly secure cryptographic processing is increasing even in environments where available resources are considerably limited, such as smart cards (also called IC cards). In environments with few resources such as smart cards, it is necessary to optimize cryptographic processing within limited resources, and increasing the key length to increase security increases the processing burden. High-speed processing with less burden is demanded.


上記非特許文献1には、整数倍算とは異なる自己準同型写像を実行することができる全ての楕円曲線に対する、整数倍算とは異なる自己準同型写像を用いた楕円曲線スカラー倍計算方法が記載されている。しかし、スカラー倍計算の際に必要な楕円曲線上の加算回数の低減については考慮されていないため、充分な速度が得られない場合がある。

Non-Patent Document 1 discloses an elliptic curve scalar multiplication method using an automorphism map different from integer multiplication for all elliptic curves that can execute an automorphism map different from integer multiplication. Are listed. However, since the reduction of the number of times of addition on the elliptic curve necessary for the scalar multiplication calculation is not taken into consideration, a sufficient speed may not be obtained.


上記非特許文献2では、整数倍算とは異なる自己準同型写像を実行することができる楕円曲線の中で、特殊な定義方程式を持つ楕円曲線(Koblitz曲線)に関してのみ、スカラー倍計算の際の加算回数の低減について考察されている。しかし、一般的な定義方程式を持つ楕円曲線については考察がなされていないため、適用できる楕円曲線が限られる。

In Non-Patent Document 2 above, only elliptic curves (Koblitz curves) with special definition equations among elliptic curves that can execute automorphism mapping different from integer multiplication are used for scalar multiplication. Reduction of the number of additions is considered. However, since elliptic curves having general definition equations have not been considered, applicable elliptic curves are limited.


上記特許文献1、及び、上記非特許文献3では、整数倍算とは異なる自己準同型写像を実行することができる楕円曲線の中で、より広範な楕円曲線に関し、スカラー倍計算の際の加算回数の低減について考察されている。しかし、上記楕円曲線は、定義体上でトレースが1であるという条件があるため、その他のトレースをもつ楕円曲線では、上記特許文献1、及び、上記非特許文献3のスカラー倍計算方法が使用できない。

In Patent Document 1 and Non-Patent Document 3 described above, addition in the case of scalar multiplication is performed for a wider range of elliptic curves among the elliptic curves that can execute self-homogeneous mapping different from integer multiplication. The reduction of the frequency is considered. However, since the elliptic curve has a condition that the trace is 1 on the definition body, the scalar multiplication method described in Patent Document 1 and Non-Patent Document 3 is used for the elliptic curve having other traces. Can not.


また、上記非特許文献4の技術は、与えられたスカラー値に対して、予め定められた整数を用いて非零濃度が最小となる展開(rNAF)について考察されている。しかし、整数以外の、例えば複素数を用いた展開に関するrNAFまでは考察されていない。

Further, the technique of Non-Patent Document 4 discusses development (rNAF) in which the non-zero density is minimized using a predetermined integer for a given scalar value. However, rNAF related to expansion using complex numbers other than integers is not considered.


すなわち、従来の楕円曲線上でのスカラー倍計算においては、定義体Fq上定義された楕円曲線上の整数倍算とは異なる自己準同型写像Φを実行することができ、かつ上述のKoblitz曲線や整数倍算とは異なる自己準同型写像を実行することができるトレースが1かつ定義体の標数が奇数である楕円曲線以外の楕円曲線に対して、さらなる高速化を図ることに関しては不十分である。

That is, in the conventional scalar multiplication on the elliptic curve, a self-homogeneous mapping Φ different from the integer multiplication on the elliptic curve defined on the definition field F q can be executed, and the above-mentioned Koblitz curve It is not enough to further speed up elliptic curves other than elliptic curves that have a single trace and an odd characteristic of the definition field that can perform self-homogeneous mapping different from integer multiplication It is.


本発明は、上記課題に鑑みてなされたもので、リソースが限られた環境で、安全性を低下させることなく、Koblitz曲線や整数倍算とは異なる自己準同型写像を実行することができるトレースが1かつ定義体の標数が奇数である楕円曲線以外の広範な楕円曲線に対して、従来の楕円曲線上のスカラー倍計算よりさらに高速に処理可能な楕円曲線演算技術を実現する。

The present invention has been made in view of the above problems, and can perform a self-homogeneous mapping different from a Koblitz curve or integer multiplication without reducing safety in an environment where resources are limited. For elliptic curves other than elliptic curves with a characteristic number of 1 and an odd number of characteristic definition, an elliptic curve calculation technique capable of processing at higher speed than the conventional scalar multiplication on an elliptic curve is realized.


本発明は、楕円曲線暗号におけるスカラー倍計算を高速化する。すなわち、スカラー値のエンコード処理を、通常のΦ進展開の桁集合より、桁集合を広げた際のΦ進展開表現が小さな非零濃度を持つように行うことにより、高速計算可能な楕円曲線演算装置を提供する。

The present invention speeds up scalar multiplication in elliptic curve cryptography. In other words, the encoding of scalar values is performed so that the Φ-adic expansion expression when expanding the digit set has a smaller non-zero density than the normal Φ-adic expansion digit set, so that elliptic curve calculation that can be calculated at high speed is possible. Providing equipment.


本発明はさらに、上記楕円曲線演算装置を用いた暗号化処理装置、復号化処理装置、署名生成装置、署名検証装置、及び、データ共有装置を提供する。

The present invention further provides an encryption processing device, a decryption processing device, a signature generation device, a signature verification device, and a data sharing device using the above elliptic curve calculation device.


具体的には、特性多項式Φ2+Φ+q(qは奇素数のべき)を持つ、定義体Fq上定義された楕円曲線上の整数倍算とは異なる自己準同型写像Φを実行することができる楕円曲線を用いて、スカラー値、及び、 楕円曲線上の点とからスカラー倍点を計算する楕円曲線暗号におけるスカラー倍計算方法であって、 楕円曲線の定義体はFqであり、 スカラー値を、第一の数値列(bn-1,bn-2,…,b0)(nは スカラー値を第一の数値列にエンコードした際の桁長)にエンコードする第一のステップと、 第一の数値列を、 第一の数値列とは異なる第二の数値列にエンコードする第二のステップと、
楕円曲線上の点から事前計算テーブルを作成する第三のステップと、 第二の数値列、及び、 事前計算テーブルから、
スカラー倍点を計算する第四のステップと、を備えることを特徴とするスカラー倍計算方法を提供する。

Specifically, a self-homogeneous mapping Φ having a characteristic polynomial Φ 2 + Φ + q (where q is an odd prime) and different from integer multiplication on an elliptic curve defined on the definition field F q is executed. A method of scalar multiplication in elliptic curve cryptography that uses a elliptic curve to calculate a scalar multiple from a scalar value and a point on the elliptic curve, and the definition of the elliptic curve is F q , The first to encode the scalar value into the first numeric string (b n-1 , b n-2 , ..., b 0 ) (where n is the digit length when the scalar value is encoded into the first numeric string) A second step of encoding the first numeric sequence into a second numeric sequence different from the first numeric sequence;
From the third step of creating a pre-calculation table from points on the elliptic curve, from the second numerical sequence, and from the pre-calculation table,
And a fourth step of calculating a scalar multiplication point.


さらに、第一のステップは、前記スカラー値に対するΦ進展開を計算し、

第二のステップは、

bnとbn+1とbn+2とbn+3とを生成してそれぞれ0とするステップと(nはスカラー値に対するΦ進展開の桁長)、

iが0からnまでの間、

bi=0を満たすとき、biをbiとする変換を行った後iを1増加させ、

bi≠0、かつ、|-qbi+1+bi|≦(q2-1)/2を満たすとき、bi→-qbi+1+bi,bi+1→0,bi+2→-bi+1+bi+2とする変換を行った後iを2増加させ、

bi≠0、かつ、-qbi+1+bi>(q2-1)/2を満たすとき、bi→- bi+1q+bi-q2,bi+1→0,bi+2→bi+2- bi+1-(q-1),bi+3→bi+3+1とする変換を行った後iを2増加させ、

bi≠0、かつ、-qbi+1+bi<-(q2-1)/2を満たすとき、bi→- bi+1q+bi+q2,bi+1→0,bi+2→bi+2- bi+1+(q-1),

bi+3→bi+3-1とする変換を行った後iを2増加させる処理を繰り返す変換ステップと、を備えることを特徴とする。

Further, the first step calculates a Φ-adic expansion for the scalar value,

The second step is

generating b n , b n + 1 , b n + 2 and b n + 3 and setting them to 0 respectively (n is the digit length of Φ-adic expansion for scalar values),

i is between 0 and n

When b i = 0 is satisfied, i is increased by 1 after performing the conversion of b i to b i ,

If b i ≠ 0 and | −qb i + 1 + b i | ≦ (q 2 −1) / 2, then b i → −qb i + 1 + b i , b i + 1 → 0, b i + 2 → -b i + 1 + b i + 2

When b i ≠ 0 and -qb i + 1 + b i > (q 2 -1) / 2, b i →-b i + 1 q + b i -q 2 , b i + 1 → 0 , B i + 2 → b i + 2 − b i + 1 − (q−1), b i + 3 → b i + 3 +1 and then i is increased by 2,

When b i ≠ 0 and -qb i + 1 + b i <-(q 2 -1) / 2, b i →-b i + 1 q + b i + q 2 , b i + 1 → 0, b i + 2 → b i + 2 -b i + 1 + (q-1),

and a conversion step of repeating a process of increasing i by 2 after performing conversion from b i + 3 → b i + 3 −1.


本発明によれば、リソースが限られた環境で、安全性を低下させることなく、従来の楕円曲線演算よりさらに高速に処理可能な楕円曲線演算技術を実現することができる。

According to the present invention, it is possible to realize an elliptic curve calculation technique capable of processing at higher speed than the conventional elliptic curve calculation without reducing safety in an environment where resources are limited.


図1は、第一の実施形態の暗号通信システムのシステム構成を例示する図である。FIG. 1 is a diagram illustrating a system configuration of the cryptographic communication system according to the first embodiment. 図2は、第一の実施形態のコンピュータ内の各処理部間の情報の受け渡しを例示するための図である。FIG. 2 is a diagram for illustrating the exchange of information between the processing units in the computer according to the first embodiment. 図3は、第一の実施形態のスカラー倍計算部の機能ブロック例である。FIG. 3 is a functional block example of the scalar multiplication unit of the first embodiment. 図4は、第一の実施形態のエンコード部の処理を例示するためのフローチャートである。FIG. 4 is a flowchart for illustrating the processing of the encoding unit according to the first embodiment. 図5は、第一の実施形態の事前計算部の処理を例示するためのフローチャートである。FIG. 5 is a flowchart for illustrating the process of the pre-calculation unit of the first embodiment. 図6は、第一の実施形態の実計算部の処理を例示するためのフローチャートである。FIG. 6 is a flowchart for illustrating the process of the real calculation unit of the first embodiment. 図7は、第二の実施形態の署名検証システムのシステム構成を例示する図である。FIG. 7 is a diagram illustrating a system configuration of the signature verification system according to the second embodiment.


以下、本発明を適用した第一の実施形態を図面により説明する。

Hereinafter, a first embodiment to which the present invention is applied will be described with reference to the drawings.


図1は、本実施形態の暗号通信システムのシステム構成図である。本図に示すように、本実施形態の暗号通信システムは、ネットワーク142により接続されたコンピュータA101、コンピュータB121とを備える。

FIG. 1 is a system configuration diagram of the cryptographic communication system of the present embodiment. As shown in the figure, the cryptographic communication system of this embodiment includes a computer A101 and a computer B121 connected by a network 142.


本実施形態の暗号通信システムにおいては、コンピュータA101でメッセージPmの暗号化を行い、コンピュータB121で暗号文の復号を行う。

In the cryptographic communication system of the present embodiment, to encrypt the message P m a computer A101, decodes the cipher text on the computer B 121.


kは乱数、dは秘密鍵を示す定数、Qは定点、dQは公開鍵を示す点とすると、コンピュータA101において、Pm+k(dQ)及びkQを計算して出力する。そして、コンピュータB121において、秘密鍵d、及び、kQより-d(kQ)を計算し、

(Pm+k(dQ))d(kQ) (式10)

を計算して出力する。

If k is a random number, d is a constant indicating a secret key, Q is a fixed point, and dQ is a point indicating a public key, P m + k (dQ) and kQ are calculated and output in the computer A101. Then, in the computer B121, -d (kQ) is calculated from the secret key d and kQ,

(P m + k (dQ)) d (kQ) (Equation 10)

Is calculated and output.


ここで、メッセージPmを復元するためには、kdQ、すなわちkQのd倍を計算する必要がある。ところが、暗号通信システムでは、ネットワーク142には、Pm+k(dQ)、kQが送信され、秘密鍵dは送信されないため、秘密鍵dを保持しているものだけが、Pmを復元できることになる。

Here, in order to restore the message P m , it is necessary to calculate kdQ, that is, d times kQ. However, in the cryptographic communication system, P m + k (dQ) and kQ are transmitted to the network 142, and the secret key d is not transmitted. Therefore, only the one holding the secret key d can restore P m. become.


図1において、コンピュータA101は、CPU113やコプロセッサ114などの演算装置、RAM103、ROM106や外部記憶装置107などの記憶装置、コンピュータ外部とのデータ入出力を行う入出力インタフェース110を装備し、外部にはコンピュータA101をユーザが操作するためのディスプレイ108、キーボード109、着脱可能な可搬型記憶媒体の読み書き装置などが接続されている。

In FIG. 1, a computer A101 is equipped with an arithmetic device such as a CPU 113 and a coprocessor 114, a storage device such as a RAM 103, a ROM 106 and an external storage device 107, and an input / output interface 110 for performing data input / output with the outside of the computer. Are connected to a display 108 for operating a computer A101 by a user, a keyboard 109, and a removable portable storage medium read / write device.


更にコンピュータA101は、RAM103、ROM106や外部記憶装置107などの記憶装置によって、記憶部102を実現し、CPU113やコプロセッサ114などの演算装置が、記憶部102に格納されたプログラムを実行することにより、データ処理部112、スカラー倍計算部115とそれらに含まれる各処理部を実現する。

Further, the computer A101 realizes the storage unit 102 by a storage device such as the RAM 103, the ROM 106, and the external storage device 107, and the arithmetic device such as the CPU 113 and the coprocessor 114 executes the program stored in the storage unit 102. The data processing unit 112, the scalar multiplication calculation unit 115, and the processing units included therein are realized.


データ処理部112は、本実施形態においては、暗号化処理部として機能し、入力されたメッセージの暗号化を行う。

In this embodiment, the data processing unit 112 functions as an encryption processing unit, and encrypts an input message.


スカラー倍計算部115は、データ処理部(暗号化処理部)112で暗号化を行うのに必要なパラメタを計算する。記憶部102は、定数104(例えば、楕円曲線の定義式や楕円曲線上の定点)、秘密情報105(例えば、秘密鍵)などを記憶している。

The scalar multiplication calculation unit 115 calculates parameters necessary for the data processing unit (encryption processing unit) 112 to perform encryption. The storage unit 102 stores a constant 104 (for example, an elliptic curve definition formula or a fixed point on the elliptic curve), secret information 105 (for example, a secret key), and the like.


コンピュータB121は、コンピュータAと同様のハードウェア構成を備え、CPU133やコプロセッサ134などの演算装置、RAM123、ROM126や外部記憶装置127などの記憶装置、コンピュータ外部とのデータ入出力を行う入出力インタフェース130を装備し、外部にはコンピュータB101をユーザが操作するためのディスプレイ128、キーボード129、着脱可能な可搬型記憶媒体の読み書き装置などが接続されている。

The computer B121 has the same hardware configuration as the computer A, and includes an arithmetic device such as a CPU 133 and a coprocessor 134, a storage device such as a RAM 123, a ROM 126, and an external storage device 127, and an input / output interface for performing data input / output with the outside of the computer 130, and a display 128 for operating the computer B101 by the user, a keyboard 129, a removable portable storage medium read / write device, and the like are connected to the outside.


更にコンピュータB121は、RAM123、ROM126や外部記憶装置127などの記憶装置によって、記憶部122を実現し、CPU133やコプロセッサ134などの演算装置が、記憶部122に格納されたプログラムを実行することにより、データ処理部132、スカラー倍計算部135とそれらに含まれる各処理部を実現する。

Further, the computer B121 realizes the storage unit 122 by a storage device such as the RAM 123, the ROM 126, and the external storage device 127, and the arithmetic device such as the CPU 133 and the coprocessor 134 executes the program stored in the storage unit 122. The data processing unit 132, the scalar multiplication calculation unit 135, and the processing units included therein are realized.


データ処理部132は、本実施形態においては、復号化処理部として機能し、暗号化されたメッセージである暗号文141の復号を行う。

In the present embodiment, the data processing unit 132 functions as a decryption processing unit, and decrypts the ciphertext 141 that is an encrypted message.


スカラー倍計算部135は、データ処理部(復号化処理部)132で復号化を行うのに必要なパラメタを計算する。記憶部122は、定数124(例えば、使用する楕円曲線の定義式や楕円曲線上の定点)、秘密情報125(例えば、秘密鍵)などを記憶している。

The scalar multiplication calculation unit 135 calculates parameters necessary for the data processing unit (decoding processing unit) 132 to perform decoding. The storage unit 122 stores a constant 124 (for example, a definition formula of an elliptic curve to be used or a fixed point on the elliptic curve), secret information 125 (for example, a secret key), and the like.


なお、上記プログラムは、予め上記コンピュータ内の記憶部102、122に格納されていてもよいし、必要な時に、入出力インタフェース110、130および上記コンピュータが利用可能な媒体を介して、他の装置から上記記憶部102、122に導入されてもよい。媒体とは、例えば、入出力インタフェースに着脱可能な記憶媒体、または通信媒体(すなわち、ネットワークまたはネットワークを伝搬するディジタル信号や搬送波)を指す。

Note that the program may be stored in advance in the storage units 102 and 122 in the computer, or other devices via the input / output interfaces 110 and 130 and a medium usable by the computer when necessary. To the storage units 102 and 122. The medium refers to, for example, a storage medium that can be attached to and detached from an input / output interface, or a communication medium (that is, a digital signal or a carrier wave that propagates through a network or a network).


次に、メッセージの暗号化処理および復号化処理を行う場合の、それぞれ、コンピュータA101およびコンピュータB121内の各処理部間での情報の送受信について説明する。図2は、コンピュータA101、コンピュータB121の各処理部が行う情報の受け渡しを説明するための図である。

Next, transmission / reception of information between the respective processing units in the computer A101 and the computer B121 in the case of performing message encryption processing and decryption processing will be described. FIG. 2 is a diagram for explaining information exchange performed by each processing unit of the computer A101 and the computer B121.


まず、コンピュータA101が、入力されたメッセージを暗号化する場合の動作について説明する。メッセージはディジタル化されたデータであればよく、テキスト、画像、映像、音などの種類は問わない。

First, an operation when the computer A101 encrypts an input message will be described. The message may be any digitized data, and may be any type of text, image, video, sound, etc.


データ処理部(暗号化処理部)112は、入出力インタフェース110を介して、平文メッセージ(入力メッセージ)を受け取ると(ステップ204)、入力された平文メッセージのビット長があらかじめ定めたビット長か否かを判断する。予め定めたビット長よりも長い場合には、予め定めたビット長となるように平文メッセージを区切る。以下、メッセージは、所定のビット長に区切られている部分メッセージ(単にメッセージと呼ぶ。)であるものとして説明する。

When the data processing unit (encryption processing unit) 112 receives a plaintext message (input message) via the input / output interface 110 (step 204), whether the bit length of the input plaintext message is a predetermined bit length or not. Determine whether. When the bit length is longer than a predetermined bit length, the plaintext message is divided so as to have a predetermined bit length. In the following description, the message is assumed to be a partial message (simply called a message) divided into a predetermined bit length.


次に、データ処理部(暗号化処理部)112は、メッセージのビット列によって表される数値をx座標(x1)に持つ楕円曲線上の点Pmのy座標(y1)の値を計算する。

Next, the data processing unit (encryption processing unit) 112 calculates the value of the y coordinate (y 1 ) of the point P m on the elliptic curve having the numerical value represented by the bit string of the message at the x coordinate (x 1 ). To do.


例えば、使用する楕円曲線をワイエルシュトラス型楕円曲線とすると、ワイエルシュトラス型楕円曲線は、a,bを定数とするとき、

y1 2=x1 3+ax1+b (式11)

で表されるので、本式によりy座標の値を求めることができる。

For example, if the elliptic curve to be used is a Weierstrass-type elliptic curve, the Weierstrass-type elliptic curve has a and b as constants.

y 1 2 = x 1 3 + ax 1 + b (Formula 11)

Therefore, the y-coordinate value can be obtained from this equation.


次に、データ処理部(暗号化処理部)112は、乱数kを生成する。そして記憶部102に格納されている定数104から公開鍵dQとQのx座標とを読み出す(ステップ205)。そして、読み出した公開鍵dQとQのx座標と、求めたy座標の値と、乱数kとをスカラー倍計算部115へ送る(ステップ206)。

Next, the data processing unit (encryption processing unit) 112 generates a random number k. Then, the public key dQ and the x coordinate of Q are read from the constant 104 stored in the storage unit 102 (step 205). Then, the read public key dQ, the x coordinate of Q, the value of the obtained y coordinate, and the random number k are sent to the scalar multiplication unit 115 (step 206).


スカラー倍計算部115は、Qのx座標、y座標の値、乱数kによるスカラー倍点(xd1,yd1)=kQと、公開鍵dQのx座標、y座標の値、乱数によるスカラー倍点(xd2,yd2)=k(dQ)とを計算し、計算したスカラー倍点をデータ処理部(暗号化処理部)112へ送る(ステップ207)。

The scalar multiplication calculator 115 calculates the x-coordinate and y-coordinate values of Q, and the scalar multiplication point (x d1 , y d1 ) = kQ by the random number k, and the x-coordinate and y-coordinate values of the public key dQ, and the scalar multiplication by the random number The point (x d2 , y d2 ) = k (dQ) is calculated, and the calculated scalar multiple is sent to the data processing unit (encryption processing unit) 112 (step 207).


データ処理部(暗号化処理部)112は、受け取ったスカラー倍点を用いて、暗号化処理を行う。例えば、ワイエルシュトラス型楕円曲線の場合、Pm+k(dQ)とkQを計算する。すなわち、

xe1=((yd1-y1)/(xd1-x1))2-x1-xd1 (式12)

xe2=xd2 (式13)

を計算し、暗号化されたメッセージxe1,xe2を得る。

The data processing unit (encryption processing unit) 112 performs an encryption process using the received scalar multiple. For example, in the case of a Weierstrass-type elliptic curve, P m + k (dQ) and kQ are calculated. That is,

x e1 = ((y d1 -y 1 ) / (x d1 -x 1 )) 2 -x 1 -x d1 (Equation 12)

x e2 = x d2 (Formula 13)

To obtain encrypted messages x e1 and x e2 .


コンピュータA101はデータ処理部(暗号化処理部)112で暗号化された1つ以上の部分メッセージから暗号化された出力メッセージを組み立て、データ141として入出力インタフェース110より出力する(ステップ208)。データ141は、ネットワーク142を介してコンピュータB121へ転送される。

The computer A101 assembles an output message encrypted from one or more partial messages encrypted by the data processing unit (encryption processing unit) 112, and outputs the output message as data 141 from the input / output interface 110 (step 208). The data 141 is transferred to the computer B121 via the network 142.


なお、図2において記憶部102からの情報の読み出し(ステップ205)は、スカラー倍計算部115へ当該情報を送る前であればよい。例えば、入力メッセージを受け付ける(ステップ204)前であってもよい。

In FIG. 2, reading of information from the storage unit 102 (step 205) may be performed before the information is sent to the scalar multiplication calculation unit 115. For example, it may be before the input message is received (step 204).


次に、コンピュータB121が、暗号化されたメッセージであるデータ141を復号化する場合の動作について、同じく図2を用いて説明する。

Next, the operation when the computer B 121 decrypts the data 141 which is an encrypted message will be described with reference to FIG.


データ処理部(復号化処理部)132は、入出力インタフェース110を介して、暗号化されたデータ141が入力メッセージとして入力されると(ステップ204)、データ141のビット長が予め定めたビット長か否かを判断する。予め定めたビット長よりも長い場合は、予め定めたビット長となるように暗号化されたデータを区切る。以下、メッセージは、所定のビット長に区切られている部分データ(単にデータともいう)であるものとして説明する。

When the encrypted data 141 is input as an input message via the input / output interface 110 (step 204), the data processing unit (decryption processing unit) 132 sets the bit length of the data 141 to a predetermined bit length. Determine whether or not. If it is longer than the predetermined bit length, the encrypted data is divided so as to have a predetermined bit length. In the following description, the message is assumed to be partial data (also simply referred to as data) divided into a predetermined bit length.


データ処理部(復号化処理部)132は、データ141のビット列によって表される数値をx座標にもつ楕円曲線上のy座標の値を計算する。

The data processing unit (decoding processing unit) 132 calculates the value of the y coordinate on the elliptic curve having the numerical value represented by the bit string of the data 141 at the x coordinate.


暗号化されたメッセージがxe1,xe2のビット列であり、ワイエルシュトラス型楕円曲線の場合、y座標の値(ye1)は、

ye1 2=xe1 3+axe1+b (式14)

(ただし、a,bはそれぞれ(式11)と同じ定数である。)から得ることができる。

If the encrypted message is a bit string of x e1 and x e2 and is a Weierstrass-type elliptic curve, the y coordinate value (y e1 ) is

y e1 2 = x e1 3 + ax e1 + b (Formula 14)

(However, a and b are the same constants as in (Equation 11).)


データ処理部(復号化処理部)132は、記憶部122に格納されている秘密情報125から秘密鍵dを読み出す(ステップ205)。そして、読み出した秘密鍵dと、x座標、y座標の値(xe2,ye2)を、スカラー倍計算部135へ送る(ステップ206)。

The data processing unit (decryption processing unit) 132 reads the secret key d from the secret information 125 stored in the storage unit 122 (step 205). Then, the read secret key d and the x-coordinate and y-coordinate values (x e2 , y e2 ) are sent to the scalar multiplication unit 135 (step 206).


スカラー倍計算部135は、x座標、y座標の値、秘密情報125(秘密鍵d)を用いてスカラー倍点(xd3,yd3)=d(xe2,ye2)を計算する。スカラー倍計算部135は、計算されたスカラー倍点をデータ処理部(復号化処理部)132へ送る(ステップ207)。データ処理部(復号化処理部)132は、送られたスカラー倍点を用いて、復号化処理を行う。

The scalar multiplication unit 135 calculates a scalar multiple (x d3 , y d3 ) = d (x e2 , y e2 ) using the x-coordinate and y-coordinate values and the secret information 125 (secret key d). The scalar multiplication calculator 135 sends the calculated scalar multiple to the data processor (decoding processor) 132 (step 207). The data processing unit (decoding processing unit) 132 performs a decoding process using the sent scalar multiple.


例えば、暗号化されたメッセージが、xe1,xe2のビット列であり、ワイエルシュトラス型楕円曲線の場合は、

(Pm+k(dQ))d(kQ)=(xe1,ye1)-(xd3,yd3) (式15)

を計算することにより達成できる。すなわち、

xf1=((ye1+yd3)/(xe1-xd3))2-xe1-xd3 (式16)

を計算し、暗号化される前の部分メッセージx1に相当するxf1を得る。

For example, if the encrypted message is a bit string of x e1 and x e2 and is a Weierstrass-type elliptic curve,

(P m + k (dQ)) d (kQ) = (x e1 , y e1 ) − (x d3 , y d3 ) (Formula 15)

Can be achieved by calculating That is,

x f1 = ((y e1 + y d3 ) / (x e1 -x d3 )) 2 -x e1 -x d3 (Equation 16)

And x f1 corresponding to the partial message x 1 before being encrypted is obtained.


コンピュータB121は、データ処理部(復号化処理部)132で復号された部分メッセージから平文メッセージを組み立て、入出力インタフェース110を介して、ディスプレイ108などから出力する(ステップ208)。

The computer B 121 assembles a plaintext message from the partial message decrypted by the data processing unit (decryption processing unit) 132, and outputs it from the display 108 or the like via the input / output interface 110 (step 208).


次に、本実施形態において、コンピュータA101が、暗号化処理を行う場合の、スカラー倍計算部115の処理を詳細に説明する。なお、コンピュータB101が復号化処理を行う場合のスカラー倍計算部135の処理も基本的に同様である。このため、以下においては、スカラー倍計算部115の処理を代表して説明する。

Next, in the present embodiment, the processing of the scalar multiplication calculation unit 115 when the computer A101 performs encryption processing will be described in detail. The process of the scalar multiplication calculation unit 135 when the computer B101 performs the decoding process is basically the same. Therefore, in the following, the process of the scalar multiplication calculation unit 115 will be described as a representative.


本実施形態のスカラー倍計算部115の機能ブロックを図3に示す。本図に示すように、本実施形態のスカラー倍計算部115は、エンコード部302と、事前計算部303と、実計算部304とを備える。

FIG. 3 shows functional blocks of the scalar multiplication calculation unit 115 of this embodiment. As shown in the figure, the scalar multiplication calculation unit 115 of this embodiment includes an encoding unit 302, a pre-calculation unit 303, and an actual calculation unit 304.


また、エンコード部302は、Φ進展開部321、δ剰余取得部322、ビット対判定部323、ビット対変換部324、桁上がり計算部325、繰り返し判定部326を備える。事前計算部303は、加算部331、2倍算部332、繰り返し判定部333を備える。実計算部304は、ビット値判定部341、加算部342、Φ倍算部343、繰り返し判定部344を備える。

The encoding unit 302 includes a Φ-adic expansion unit 321, a δ residue acquisition unit 322, a bit pair determination unit 323, a bit pair conversion unit 324, a carry calculation unit 325, and a repetition determination unit 326. The pre-calculation unit 303 includes an addition unit 331, a doubling unit 332, and a repetition determination unit 333. The actual calculation unit 304 includes a bit value determination unit 341, an addition unit 342, a Φ multiplication unit 343, and a repetition determination unit 344.


スカラー倍計算部115が、これらの機能を用いて、スカラー値dと整数倍算とは異なる自己準同型写像Φを持つ楕円曲線上の点Pとから、楕円曲線におけるスカラー倍点dPを計算する第1の計算方法を説明する。

The scalar multiplication unit 115 uses these functions to calculate the scalar multiple dP in the elliptic curve from the scalar value d and the point P on the elliptic curve having a self-homogeneous map Φ different from the integer multiplication. The first calculation method will be described.


以下、本実施形態においては、自己準同型写像Φとして、例えば、フロベニウス写像を用いることができる。すなわち、本計算方法は、上記非特許文献1に記載されているスカラー値のフロベニウス展開に、上記非特許文献4に記載されている整数展開rNAFを適用したエンコード方法であり、以下、本エンコード方法をFrNAF(Frobenius - adic Radix-r Non - Adjacent Form)と呼ぶ。

Hereinafter, in the present embodiment, for example, the Frobenius map can be used as the self-homomorphic map Φ. That is, this calculation method is an encoding method in which the integer expansion rNAF described in Non-Patent Document 4 is applied to the Frobenius expansion of the scalar value described in Non-Patent Document 1, and hereinafter, this encoding method Is called FrNAF (Frobenius-adic Radix-r Non-Adjacent Form).


スカラー値のフロベニウス展開にrNAFを適用するために、本実施形態では、特性多項式Φ2+Φ+q(qは奇素数のべき)を持つ、定義体Fq上定義された楕円曲線上の、整数倍算とは異なる自己準同型写像Φを実行することができる楕円曲線を選択する。

In order to apply rNAF to the Frobenius expansion of scalar values, in the present embodiment, on the elliptic curve defined on the definition field F q having the characteristic polynomial Φ 2 + Φ + q (q should be an odd prime number), Select an elliptic curve that can perform a self-homogeneous mapping Φ different from integer multiplication.


また、本楕円曲線上の点とスカラー値とからスカラー倍点を計算するにあたり、スカラー値を第一の数値列にエンコードした後、さらに、第一の数値列とは異なる第二の数値列にエンコードし、第二の数値列を用いてスカラー倍点を計算する。このとき、第一の数値列は、スカラー値をΦ進展開することにより得、第二の数値列は、前記第一の数値列の隣り合う2桁が予め定められた条件を満たすか否かに応じて変換を行う。すなわち、満たさない場合、その2桁と、当該2桁と隣り合う1桁、または2桁のそれぞれに対し演算を行い、変換後の数値列を第一の数値列とし、本処理を繰り返す。

In addition, when calculating a scalar multiple from a point on this elliptic curve and a scalar value, after the scalar value is encoded into the first numerical sequence, it is further converted into a second numerical sequence different from the first numerical sequence. Encode and calculate a scalar multiple using the second sequence of numbers. At this time, the first numerical sequence is obtained by expanding the scalar value by Φ, and the second numerical sequence is determined whether two adjacent digits of the first numerical sequence satisfy a predetermined condition. Perform conversion according to. That is, when not satisfy | filling, it calculates with respect to each of the 2 digits and the 1 digit adjacent to the 2 digits, or 2 digits, makes the converted numerical sequence a 1st numerical sequence, and repeats this process.


この第二の数値列とこの楕円曲線上の点とを用いてスカラー倍計算を実行することにより、高速化を実現する。以下、上記計算方法を具体的に説明する。

By executing the scalar multiplication using the second numerical sequence and the points on the elliptic curve, speeding up is realized. Hereinafter, the calculation method will be specifically described.


まず、本実施形態のスカラー倍計算処理全体の概要を説明する。

First, an overview of the entire scalar multiplication calculation process of the present embodiment will be described.


スカラー倍計算部115が暗号化処理部112からスカラー値dと楕円曲線上の点Pを受け取ると、エンコード部302は、入力されたスカラー値dから値d’を計算し、値d’を数値列eiにエンコードする。すなわち、

d’=e0+e1Φ+e2Φ2+…+en+3Φn+3 (式17)

-(q2-1)/2≦ei≦(q2-1)/2 (式18)

ei mod q≠0(ei≠0のとき) (式19)

を満たすeiに、スカラー値d’を変換する。

When the scalar multiplication calculation unit 115 receives the scalar value d and the point P on the elliptic curve from the encryption processing unit 112, the encoding unit 302 calculates the value d ′ from the input scalar value d, and calculates the value d ′ as a numerical value. Encode to column e i . That is,

d '= e 0 + e 1 Φ + e 2 Φ 2 +… + e n + 3 Φ n + 3 (Formula 17)

-(Q 2 -1) / 2≤e i ≤ (q 2 -1) / 2 (Formula 18)

e i mod q ≠ 0 (when e i ≠ 0) (Equation 19)

Convert the scalar value d ′ to e i satisfying.


ここで、d'は

δ=(Φn-1)/(Φ-1) (式20)

を満たす複素数δに対して

d=δQ+d' (式21)

を満たす整数であり、Qは複素数である。

また、(式17)の各iについて、隣り合う数値の対(ei+1, ei)は以下の条件

ei+1ei=0 (式22)

を満たし、kは

k≦[2logq2√|d'|]+4 (式23)

を満たす整数である。

Where d 'is

δ = (Φ n -1) / (Φ-1) (Formula 20)

For complex number δ satisfying

d = δQ + d '(Formula 21)

Where Q is a complex number.

In addition, for each i in (Equation 17), a pair of adjacent numerical values (e i + 1 , e i )

e i + 1 e i = 0 (Formula 22)

Meet k

k ≦ [2log q 2√ | d '|] +4 (Equation 23)

It is an integer that satisfies


なお、対(ei+1,ei)が、上記(式22)を満たすとき、対(ei+1,ei)は非隣接対であるという。

When the pair (e i + 1 , e i ) satisfies the above (formula 22), the pair (e i + 1 , e i ) is said to be a non-adjacent pair.


事前計算部303は、事前計算テーブルを作成する。事前計算テーブルは、

iP(i=1,…,(q2-1)/2) (式24)

を保持する。ただし、iは

i mod q≠0 (式25)

を満たす。

The pre-calculation unit 303 creates a pre-calculation table. The pre-calculation table is

iP (i = 1, ..., (q 2 -1) / 2) (Equation 24)

Hold. Where i is

i mod q ≠ 0 (Formula 25)

Meet.


実計算部304は、エンコードされたスカラー値d=(en+3,en+2,…,e1,e0)と事前計算テーブルに保持されているデータとを用いてスカラー倍点dPを計算する。

The actual calculation unit 304 uses the encoded scalar value d = (e n + 3 , e n + 2 ,..., E 1 , e 0 ) and the data stored in the pre-calculation table to obtain a scalar multiple dP. Calculate


次に、上記スカラー倍計算処理時のエンコード部302、事前計算部303、実計算部304の行う各処理について詳細に説明する。

Next, each process performed by the encoding unit 302, the pre-calculation unit 303, and the actual calculation unit 304 during the scalar multiplication calculation process will be described in detail.


まず、図4を用いて本実施形態のエンコード部302の行う処理について説明する。ここでは、スカラー値を第一の数値列にエンコードし、さらに、第一の数値列を第二の数値列にエンコードする処理を行う。図4は、本実施形態のエンコード部302の処理を説明するためのフローチャートである。

First, processing performed by the encoding unit 302 of the present embodiment will be described using FIG. Here, the scalar value is encoded into the first numerical sequence, and further, the first numerical sequence is encoded into the second numerical sequence. FIG. 4 is a flowchart for explaining the processing of the encoding unit 302 of this embodiment.


エンコード部302は、スカラー値dの入力を受ける(ステップ401)。

The encoding unit 302 receives the scalar value d (Step 401).


δ剰余取得部322は、受け取ったスカラー値dに対して、第一の実施形態の(式21)を満たす整数d'を計算する。そして、Φ進展開部321は、整数d'を、

d'=c0+c1Φ+…+cn-1Φn-1 (式26)

|ci|≦(q-1)/2 (式27)

に変換する(ステップ402)。

The δ residue acquisition unit 322 calculates an integer d ′ that satisfies (Expression 21) of the first embodiment with respect to the received scalar value d. Then, the Φ-adic expansion unit 321 converts the integer d ′ to

d '= c 0 + c 1 Φ +… + c n-1 Φ n-1 (Formula 26)

| c i | ≤ (q-1) / 2 (Formula 27)

(Step 402).


スカラー値dから整数d'を計算する方法、及び、整数d'を、(式26)、(式27)を満たすように展開する方法は、非特許文献1に記載されている。すなわち、以下の処理i)、ii)を繰り返すことにより得られる。


i)スカラー値dをδで割り、その余りをd'とする。


ii)整数d'をΦで割り、その余りをciとする。

Non-Patent Document 1 describes a method for calculating an integer d ′ from a scalar value d and a method for expanding the integer d ′ so as to satisfy (Equation 26) and (Equation 27). That is, it is obtained by repeating the following processes i) and ii).


i) Divide the scalar value d by δ and let the remainder be d ′.


ii) Divide the integer d ′ by Φ, and let the remainder be c i .


次に、第一の数値列(c0,c1,c2,…cn-1)から(b0,b1,b2,…bn-1,bn,bn+1,bn+2,bn+3)を経て、第二の数値列(e0,e1,…en,en+1,en+2,en+3)を生成する。

Next, from the first numerical sequence (c 0 , c 1 , c 2 ,... C n-1 ), (b 0 , b 1 , b 2 ,... B n−1 , b n , b n + 1 , b n + 2, b n + 3 ) through a second numeric string (e 0, e 1, ... e n, generates a e n + 1, e n + 2, e n + 3).


まず、ビット対変換部324は、b0にc0を、b1にc1を、bnに0を、bn+1に0を、bn+2に0を、bn+3に0をそれぞれ代入する(ステップ403)。

First, the bit-to-conversion unit 324, the c 0 to b 0, a c 1 to b 1, a 0 to b n, the b n + 1 to zero, the b n + 2 to 0, the b n + 3 Each of 0 is substituted (step 403).


繰り返し判定部326は、iに0を代入する(ステップ404)。

The repetition determination unit 326 substitutes 0 for i (step 404).


繰り返し判定部326は、i≦n+2であるかどうかを判定する(ステップ405)。i≦n+2が成立する場合、ステップ406へ行く。i≦n+2が成立しない場合、ステップ413へ行く。

The repetition determination unit 326 determines whether i ≦ n + 2 is satisfied (step 405). If i ≦ n + 2 holds, go to step 406. If i ≦ n + 2 does not hold, go to step 413.


ビット対判定部323は、bi=0であるかどうかを判定する(ステップ406)。bi=0である場合、ステップ407へ行く。bi=0でない場合、ステップ408へ行く。

The bit pair determination unit 323 determines whether b i = 0 (step 406). If b i = 0, go to step 407. If b i = 0 is not true, go to step 408.


桁上がり計算部325は、bi+2にci+2を代入し、格納部327は、eiに0を代入し、iにi+1を代入し、ステップ405へ行く(ステップ407)。

The carry calculation unit 325 substitutes c i + 2 for b i + 2 , and the storage unit 327 substitutes 0 for e i , substitutes i + 1 for i, and goes to step 405 (step 407). .


ビット対判定部323は、|-bi+1q+bi|≦(q2-1)/2であるかどうかを判定する(ステップ408)。|-bi+1q+bi|≦(q2-1)/2である場合、ステップ409へ行く。|-bi+1q+bi|≦(q2-1)/2でない場合、ステップ410へ行く。

The bit pair determination unit 323 determines whether or not | −b i + 1 q + b i | ≦ (q 2 −1) / 2 (step 408). If | −b i + 1 q + b i | ≦ (q 2 −1) / 2, go to Step 409. If | −b i + 1 q + b i | ≦ (q 2 −1) / 2, go to Step 410.


桁上がり計算部325は、bi+3にci+3を、bi+2にci+2-bi+1をそれぞれ代入し、格納部327は、ei+1に0を、eiに-bi+1q+biを代入し、iにi+2を代入し、ステップ405へ行く(ステップ409)。

Carry calculation section 325, a c i + 3 in b i + 3, the b i + 2 to c i + 2 -b i + 1 were respectively substituted, storage unit 327, e i + 1 to 0, Substitute -b i + 1 q + b i into e i , substitute i + 2 into i, and go to step 405 (step 409).


ビット対判定部323は、-bi+1q+bi<-(q2-1)/2であるかどうかを判定する(ステップ410)。-bi+1q+bi<-(q2-1)/2である場合、ステップ411へ行く。-bi+1q+bi<-(q2-1)/2でない場合、ステップ412へ行く。

The bit pair determination unit 323 determines whether or not −b i + 1 q + b i <− (q 2 −1) / 2 (step 410). If -b i + 1 q + b i <-(q 2 −1) / 2, go to step 411. If not -b i + 1 q + b i <-(q 2 −1) / 2, go to step 412.


桁上がり計算部325は、bi+3にci+3-1を、bi+2にci+2-bi+1+(q-1)をそれぞれ代入し、格納部327は、ei+1に0を、eiに-bi+1q+bi+q2を代入し、iにi+2を代入し、ステップ405へ行く(ステップ411)。

Carry calculation section 325, a c i + 3 -1 to b i + 3, b i + 2 to c i + 2 -b i + 1 + a (q-1) is substituted respectively, storage unit 327, 0 is substituted for e i + 1 , -b i + 1 q + b i + q 2 is substituted for e i , i + 2 is substituted for i, and the process goes to step 405 (step 411).


桁上がり計算部325は、bi+3にci+3+1を、bi+2にci+2-bi+1-(q-1)をそれぞれ代入し、格納部327は、ei+1に0を、eiに-bi+1q+bi-q2を代入し、iにi+2を代入し、ステップ405へ行く(ステップ412)。

Carry calculation section 325, a c i + 3 +1 to b i + 3, b i + 2 to c i + 2 -b i + 1 - (q-1) were respectively substituted, storage unit 327, 0 is assigned to e i + 1 , -b i + 1 q + b i -q 2 is assigned to e i , i + 2 is assigned to i, and the process goes to step 405 (step 412).


エンコード部302は、(en+3,en+2,…,e1,e0)を出力する(ステップ413)。

The encoding unit 302 outputs (e n + 3 , e n + 2 ,..., E 1 , e 0 ) (step 413).


なお、q≦5の場合、以下のステップを追加する。

When q ≦ 5, the following steps are added.


ステップ406でbi=0であるかどうかを判定する前に、biがqで割り切れるかどうかを判定する。biがqで割り切れる場合、bi+1にbi+1-bi/qを、bi+ 2にci+2-bi/qを、それぞれ代入し、iにi+1を代入する。

Before determining whether b i = 0 in step 406, it is determined whether b i is divisible by q. If b i is divisible by q, the b i + 1 to b i + 1 -b i / q, the b i + 2 to c i + 2 -b i / q, respectively substituted, substitutes i + 1 in the i To do.


次に図5を用いて本実施形態の事前計算部303の行う処理について説明する。図5は、本実施形態の事前計算部303の処理を説明するためのフローチャートである。ここでは、事前計算テーブルに保持するデータを生成する。事前計算テーブルに保持するデータは、上述のとおり、楕円曲線上の点Pの値、点Pのスカラー倍点の値2P、3P、…、((q2 - 1)/2)P(ただし、点iP(i = q, 2q ,…,((q - 1)/2)P)は含まれない。)である。

Next, processing performed by the pre-calculation unit 303 of the present embodiment will be described using FIG. FIG. 5 is a flowchart for explaining the processing of the pre-calculation unit 303 of the present embodiment. Here, data stored in the pre-calculation table is generated. Data held in the pre-calculated table, as described above, the value of the point P on the elliptic curve, the value 2P of the scalar-multiplied point of the point P, 3P, ..., (( q 2 - 1) / 2) P ( where The point iP (i = q, 2q, ..., ((q-1) / 2) P) is not included.).


事前計算部303は、Q1にPを代入し、2倍算部332は、点Pの2倍点2Pを計算し、事前計算部303は、Q2に2Pを代入する(ステップ501)。

The pre-calculation unit 303 substitutes P for Q 1 , the doubling unit 332 calculates the double point 2P of the point P, and the pre-calculation unit 303 substitutes 2P for Q 2 (step 501).


繰り返し判定部333は、iに2を代入する(ステップ502)。

The iterative determination unit 333 substitutes 2 for i (step 502).


繰り返し判定部333は、i≦(q2-1)/2であるかどうかを判定する(ステップ503)。i≦(q2-1)/2である場合、ステップ504へ行く。i≦(q2-1)/2でない場合、ステップ508へ行く。

The repetition determination unit 333 determines whether i ≦ (q 2 −1) / 2 (step 503). If i ≦ (q 2 −1) / 2, go to step 504. If i ≦ (q 2 −1) / 2, go to Step 508.


剰余判定部334は、i mod q≡0であるかどうかを判定する(ステップ504)。i mod q≡0である場合、ステップ506へ行く。i mod q≡0でない場合、ステップ505へ行く。

The remainder determination unit 334 determines whether i mod q≡0 (step 504). If i mod q≡0, go to step 506. If i mod q≡0 is not true, go to step 505.


加算部331は、Qi+Pを計算し、事前計算部303は、その結果をQi+1に代入する(ステップ505)。

Adder 331 calculates Q i + P, and precalculator 303 assigns the result to Q i + 1 (step 505).


加算部331は、Qi+Pを計算し、事前計算部303は、その結果をQi+2に代入する(ステップ506)。

The adding unit 331 calculates Q i + P, and the pre-calculating unit 303 assigns the result to Q i + 2 (step 506).


繰り返し判定部333は、iにi+1を代入し、ステップ503へ行く(ステップ507)。

The iterative determination unit 333 substitutes i + 1 for i and goes to Step 503 (Step 507).


事前計算部303は、点Q1,…,Q(q2-1)/2を事前計算テーブルに格納する(ステップ508)。ただし、上記Qiで、iはqの倍数ではない。

The pre-calculation unit 303 stores the points Q 1 ,..., Q (q2-1) / 2 in the pre-calculation table (step 508). However, in the above Q i , i is not a multiple of q.


最後に、図6を用いて実計算部304の行う処理について説明する。ここでは、エンコード部302により得られたエンコードされたスカラー値と、事前計算部303で得られたデータとから、スカラー倍点dPを計算する。図6は、本実施形態の実計算部304の処理を説明するためのフローチャートである。

Finally, processing performed by the actual calculation unit 304 will be described with reference to FIG. Here, the scalar multiple dP is calculated from the encoded scalar value obtained by the encoding unit 302 and the data obtained by the pre-calculation unit 303. FIG. 6 is a flowchart for explaining the processing of the actual calculation unit 304 of the present embodiment.


繰り返し判定部344は、iにn+3を代入する(ステップ601)。

The iterative determination unit 344 substitutes n + 3 for i (step 601).


ビット値判定部341は、ei≠0であるかどうかを判定する(ステップ602)。ei≠0である場合、ステップ603へ行く。ei≠0でない場合、ステップ604へ行く。

The bit value determination unit 341 determines whether or not e i ≠ 0 (step 602). If e i ≠ 0, go to step 603. If e i ≠ 0, go to step 604.


繰り返し判定部344は、iにi-1を代入する(ステップ603)。

The iterative determination unit 344 substitutes i−1 for i (step 603).


加算部342は、QにeiPを代入する(ステップ604)。

The adding unit 342 substitutes e i P for Q (step 604).


繰り返し判定部344は、iにi-1を代入する(ステップ605)。

The iterative determination unit 344 substitutes i−1 for i (step 605).


繰り返し判定部344は、i≧0であるかどうかを判定する(ステップ606)。i≧0である場合、ステップ607へ行く。i≧0でない場合、ステップ611へ行く。

The repetition determination unit 344 determines whether i ≧ 0 (step 606). If i ≧ 0, go to step 607. If i ≧ 0 is not true, go to step 611.


Φ倍算部343は、Φ(Q)を計算し、Qに代入する(ステップ607)。

The Φ multiplication unit 343 calculates Φ (Q) and substitutes it into Q (step 607).


ビット値判定部341は、ei≠0であるかどうかを判定する。ei≠0である場合、ステップ609へ行く。ei≠0でない場合、ステップ610へ行く。(ステップ608)

加算部342は、Q+eiPを計算し、Qに代入する(ステップ609)。

The bit value determination unit 341 determines whether e i ≠ 0. If e i ≠ 0, go to step 609. If e i ≠ 0, go to step 610. (Step 608)

The adding unit 342 calculates Q + e i P and substitutes it into Q (step 609).


繰り返し判定部344は、iにi-1を代入し、ステップ606へ行く(ステップ610)。

The iterative determination unit 344 substitutes i−1 for i and goes to Step 606 (Step 610).


実計算部304は、Qを出力する(ステップ611)。

The actual calculation unit 304 outputs Q (step 611).


以上の処理により、エンコード部302から出力されるeiは、(式17)を満たし、対(ei+1,ei)は、(式22)を満たす。この理由は次の通りである。

Through the above processing, e i output from the encoding unit 302 satisfies (Equation 17), and the pair (e i + 1 , e i ) satisfies (Equation 22). The reason is as follows.


ステップ406の直前で、bi+1,biはそれぞれ、|bi+1|≦(q-1)/2,|bi|≦q-1、または、|bi+1|≦(q+1)/2,|bi|≦2q-1(bi≠±q)を満たす。対(bi+1,bi)が隣接対のときは、ステップ407へ行く。対(bi+1,bi)が非隣接対の場合を考える。このとき、ステップ409、ステップ411、ステップ412の何れの場合も、ei+1=0となり、対(ei+1,ei)は(式22)を満たす。

Just before step 406, b i + 1 and b i are respectively | b i + 1 | ≦ (q−1) / 2, | b i | ≦ q−1, or | b i + 1 | ≦ ( q + 1) / 2, | b i | ≦ 2q-1 (b i ≠ ± q). If the pair (b i + 1 , b i ) is an adjacent pair, go to step 407. Consider the case where the pair (b i + 1 , b i ) is a non-adjacent pair. At this time, in any of Step 409, Step 411, and Step 412, e i + 1 = 0, and the pair (e i + 1 , e i ) satisfies (Equation 22).


また、エンコード部302が行う処理により、整数d'のΦ進展開の長さは(式23)を満たす。これは、ステップ406からステップ412の処理ループにおいて、すべてのiに対して(式17)を満たすように整数d'を変換するため、整数d'のΦ展開の長さは(式23)を満たすことがわかる。

Further, by the processing performed by the encoding unit 302, the length of the Φ-adic expansion of the integer d ′ satisfies (Equation 23). This is because, in the processing loop from step 406 to step 412, the integer d ′ is converted so as to satisfy (Equation 17) for all i, so the length of the Φ expansion of the integer d ′ is (Equation 23). You can see that it meets.


実計算部304が出力する点Qはスカラー倍点dPに等しい。この理由は、(式17)、(式20)、(式23)から明らかである。

The point Q output from the actual calculation unit 304 is equal to the scalar multiple dP. The reason for this is clear from (Equation 17), (Equation 20), and (Equation 23).


整数d'のFrNAF表現は一意的である。この理由は通常のrNAF表現の一意性と同様である。

The FrNAF representation of the integer d ′ is unique. The reason for this is the same as the uniqueness of normal rNAF representation.


以上の通り、本実施形態のスカラー倍計算方法によれば、Koblitz曲線や整数倍算とは異なる自己準同型写像を実行することができるトレースが1かつ定義体の標数が奇数である楕円曲線以外の楕円曲線を用い、非零濃度を小さくすることができ、スカラー倍計算処理を高速化することができる。また、楕円曲線の制限は、整数倍算とは異なる自己準同型写像Φを持つこと、及び、上記楕円曲線のトレースが-1であることであるため、幅広い楕円曲線を選択可能である。このため、より高い安全性が期待できる。

As described above, according to the scalar multiplication method of the present embodiment, an elliptic curve having one trace and an odd number characteristic of a defining body capable of executing a self-homogeneous mapping different from a Koblitz curve or integer multiplication. The non-zero density can be reduced by using an elliptic curve other than the above, and the scalar multiplication calculation process can be speeded up. Further, the limitation of the elliptic curve is that it has a self-homogeneous map Φ different from integer multiplication, and that the trace of the elliptic curve is −1, so that a wide range of elliptic curves can be selected. For this reason, higher safety can be expected.


すなわち、本実施形態によれば、楕円曲線暗号が持つ高い安全性とリソース利用効率の良さを保ちつつ、高速性に優れたメッセージ処理が可能になる。

That is, according to the present embodiment, it is possible to perform message processing with high speed while maintaining the high security and resource utilization efficiency of the elliptic curve cryptography.


次に、本発明を適用した署名検証システムを第二の実施形態として説明する。

Next, a signature verification system to which the present invention is applied will be described as a second embodiment.


図7は、本実施形態の署名検証システムのシステム構成図である。本図に示すように、本実施形態の署名検証システムは、スマートカード701と署名検証処理を行うコンピュータ721とを備える。

FIG. 7 is a system configuration diagram of the signature verification system of this embodiment. As shown in the figure, the signature verification system of this embodiment includes a smart card 701 and a computer 721 that performs signature verification processing.


スマートカード701は、第一の実施形態および第二の実施形態の図1のコンピュータA101と類似の構成を備える。すなわち、コンピュータA101の同名の構成は基本的に同じ機能を有する。ただし、スマートカード701は、CPU713、コプロセッサ714などの演算装置が記憶部702に格納されているプログラムを実行することにより、データ処理部111とスカラー倍計算部115の代わりに、署名生成処理部712とスカラー倍計算部715とを実現する。なお、図1に示す外部記憶装置107、ディスプレイ108、キーボード109を備えなくてもよい。

The smart card 701 has a configuration similar to the computer A101 of FIG. 1 of the first embodiment and the second embodiment. That is, the configuration with the same name of the computer A101 basically has the same function. However, the smart card 701 uses a signature generation processing unit instead of the data processing unit 111 and the scalar multiplication calculation unit 115 by executing a program stored in the storage unit 702 by an arithmetic device such as the CPU 713 and the coprocessor 714. 712 and the scalar multiplication calculation unit 715 are realized. Note that the external storage device 107, the display 108, and the keyboard 109 shown in FIG.


一方、コンピュータ721は、コンピュータA101と同様の構成を備える。すなわち、図1に示すコンピュータA101と同名の構成は、同様の機能を有する。ただし、CPU733、コプロセッサ734などの演算装置が記憶部722に格納されているプログラムを実行することにより、データ処理部111とスカラー倍計算部115の代わりに、署名検証処理部732とスカラー倍計算部735とを実現する。

On the other hand, the computer 721 has the same configuration as the computer A101. That is, the configuration having the same name as the computer A101 shown in FIG. 1 has the same function. However, the arithmetic unit such as the CPU 733 and the coprocessor 734 executes the program stored in the storage unit 722, so that the signature verification processing unit 732 and the scalar multiplication calculation are performed instead of the data processing unit 111 and the scalar multiplication calculation unit 115. Part 735 is realized.


なお、スカラー倍計算部715と735は、図1に示すスカラー倍計算部115または135と同様の機能を備える。

The scalar multiplication calculators 715 and 735 have the same function as the scalar multiplication calculator 115 or 135 shown in FIG.


本実施形態においても、第一の実施形態同様、コンピュータ721内の各プログラムは、予め、コンピュータ721内の記憶部722に格納されていても良いし、必要なときに、コンピュータ721が利用可能な媒体を介して、他の装置から記憶部722に導入されてもよい。

Also in this embodiment, as in the first embodiment, each program in the computer 721 may be stored in advance in the storage unit 722 in the computer 721, or the computer 721 can be used when necessary. The storage unit 722 may be introduced from another device via a medium.


さらに、スマートカード701内の各プログラムは、予め、スマートカード701内の記憶部702に格納されていても良いし、必要なときに、入出力インタフェース710を介して接続するコンピュータ、または当該コンピュータが利用可能な媒体を介して、記憶部702に導入されてもよい。媒体とは、たとえば当該コンピュータに着脱可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波)を指す。

Furthermore, each program in the smart card 701 may be stored in advance in the storage unit 702 in the smart card 701, or when necessary, a computer connected via the input / output interface 710 or the computer It may be introduced into the storage unit 702 via an available medium. The medium refers to, for example, a storage medium removable from the computer or a communication medium (that is, a network or a carrier wave propagating through the network).


次に、本実施形態の署名検証システムにおける署名生成と署名検証動作を、図2を参照して説明する。なお、本実施形態においては、図2のデータ処理部112、132は、署名生成処理部712、署名検証処理部732、スカラー倍計算部115、135は、スカラー倍計算部715、735、記憶部122、102は、記憶部702、722として以下、説明する。

Next, signature generation and signature verification operations in the signature verification system of this embodiment will be described with reference to FIG. In this embodiment, the data processing units 112 and 132 in FIG. 2 are the signature generation processing unit 712, the signature verification processing unit 732, the scalar multiplication calculation units 115 and 135, the scalar multiplication calculation units 715 and 735, and the storage unit. 122 and 102 will be described below as storage units 702 and 722, respectively.


離散対数問題に基づくディジタル署名方法を楕円曲線上の離散対数問題に基づく方法に対応させて構成する楕円曲線ディジタル署名アルゴリズム(ECDSA)という署名方法がある。ECDSA署名については、例えば、

D. Johnson, A. Menezes, The Elliptic Curve Digital
Signature Algorithm (ECDSA), Technial Report CORR 99-34, Dept. of C&O,
University of Waterloo, Canada.

<URL>
http://www.cacr.math.uwaterloo.ca/techreports/1999/corr99-34.pdf

に記載されている。

There is a signature method called an elliptic curve digital signature algorithm (ECDSA) that configures a digital signature method based on a discrete logarithm problem in correspondence with a method based on a discrete logarithm problem on an elliptic curve. For ECDSA signatures, for example:

D. Johnson, A. Menezes, The Elliptic Curve Digital
Signature Algorithm (ECDSA), Technial Report CORR 99-34, Dept. of C & O,
University of Waterloo, Canada.

<URL>
http://www.cacr.math.uwaterloo.ca/techreports/1999/corr99-34.pdf

It is described in.


コンピュータ721は、ランダムに選んだ数値をチャレンジコード742として、インタフェースを介してスマートカード701に転送する。

The computer 721 transfers the randomly selected numerical value as a challenge code 742 to the smart card 701 via the interface.


署名生成処理部712は、チャレンジコード742を入力メッセージとして受け付け(ステップ204)、チャレンジコード742のハッシュ値をとり、所定のビット長の数値fに変換する。

The signature generation processing unit 712 receives the challenge code 742 as an input message (step 204), takes the hash value of the challenge code 742, and converts it into a numerical value f having a predetermined bit length.


署名生成処理部712は、乱数uを生成し、記憶部702に格納されている定数704から楕円曲線上の定点Qを読み出す(ステップ205)。生成した乱数uを読み出した楕円曲線上の定点Qとともにスカラー倍計算部715へ送る(ステップ206)。

The signature generation processing unit 712 generates a random number u, and reads the fixed point Q on the elliptic curve from the constant 704 stored in the storage unit 702 (step 205). The generated random number u is sent to the scalar multiplication unit 715 together with the fixed point Q on the read elliptic curve (step 206).


スカラー倍計算部715は、定点Q、乱数uを用いてスカラー倍点uQ=(xu,yu)を計算し、計算されたスカラー倍点を署名生成処理部712へ送る(ステップ207)。

Scalar multiplication unit 715, scalar-multiplied point uQ = (x u, y u) was calculated using the fixed point Q, a random number u, and sends the calculated scalar-multiplied point to the signature generation processing unit 712 (step 207).


署名生成処理部712は、送られたスカラー倍点を用いて署名の生成を行う。例えば、上述のECDSA署名であれば、

s=xu mod q (式28)

t=u-1(f+ds) mod q (式29)

を計算することにより、チャレンジコード742に対応する署名(s,t)741を得る。

The signature generation processing unit 712 generates a signature using the sent scalar multiple. For example, if the ECDSA signature mentioned above,

s = x u mod q (Formula 28)

t = u -1 (f + ds) mod q (Equation 29)

To obtain a signature (s, t) 741 corresponding to the challenge code 742.


ここで、qは定点Qの位数、すなわち、定点Qのq倍点qQが無限遠点になり、qより小さな数値mに対する定点Qのm倍点mQは無限遠点にはならない、という数値のことである。

Where q is the order of the fixed point Q, that is, the q multiple point qQ of the fixed point Q is the infinity point, and the m multiple point mQ of the fixed point Q for a numerical value m smaller than q is not a infinity point. That is.


スマートカード701は、署名生成処理部712で生成した署名741を入出力インタフェース710より出力し(ステップ208)、インタフェースを介してコンピュータ721へ転送する。

The smart card 701 outputs the signature 741 generated by the signature generation processing unit 712 from the input / output interface 710 (step 208), and transfers it to the computer 721 via the interface.


コンピュータ721の署名検証処理部732は、署名741が入力されると(ステップ204)、署名741の数値s,tが適切な範囲内すなわち1≦s,t<qであるかを調べる。

When the signature 741 is input (step 204), the signature verification processing unit 732 of the computer 721 checks whether the numerical values s and t of the signature 741 are within an appropriate range, that is, 1 ≦ s and t <q.


数値s,tが上記範囲内になければチャレンジコード742に対する署名の検証結果として「無効」を出力し、スマートカード701を拒絶する(ステップ208)。

If the numerical values s and t are not within the above range, “invalid” is output as the signature verification result for the challenge code 742, and the smart card 701 is rejected (step 208).


一方、数値s,tが上記範囲内にあれば、署名検証処理部732は、

h=t-1 mod q (式30)

h1=fh mod q (式31)

h2=sh mod q (式32)

を計算する。

On the other hand, if the numerical values s and t are within the above range, the signature verification processing unit 732

h = t -1 mod q (Formula 30)

h 1 = fh mod q (Formula 31)

h 2 = sh mod q (Formula 32)

Calculate


署名検証処理部732は、記憶部722に格納されている定数724から公開鍵dQ及び定点Qを読み出す(ステップ205)。そして、読み出した公開鍵dQ及び定点Qと、計算したh1,h2とを、スカラー倍計算部735へ送る(ステップ206)。

The signature verification processing unit 732 reads the public key dQ and the fixed point Q from the constant 724 stored in the storage unit 722 (step 205). The read public key dQ and fixed point Q and the calculated h 1 and h 2 are sent to the scalar multiplication calculation unit 735 (step 206).


スカラー倍計算部735は、定点Qとh1とによるスカラー倍点h1Qと、公開鍵dQとh2とによるスカラー倍点h2dQとを計算し、計算されたスカラー倍点を署名検証処理部732へ送る(ステップ207)。

The scalar multiplication unit 735 calculates a scalar multiple h 1 Q based on the fixed points Q and h 1 and a scalar multiple h 2 dQ based on the public keys dQ and h 2, and verifies the calculated scalar multiple The data is sent to the processing unit 732 (Step 207).


署名検証処理部732は、送られたスカラー倍点を用いて、署名検証処理を行う。例えば、ECDSAの署名検証であれば、点Rを以下の式により計算し、

R=h1Q+h2dQ (式33)

そのx座標をxRとしたとき、

s'=xR mod q (式34)

を計算し、s'=sであればチャレンジコード742に対する署名の検証結果として「有効」を出力し(ステップ208)、スマートカード701を認証し、受け入れる。

The signature verification processing unit 732 performs signature verification processing using the sent scalar multiple. For example, for ECDSA signature verification, the point R is calculated by the following formula:

R = h 1 Q + h 2 dQ (Formula 33)

When the x coordinate is x R ,

s' = x R mod q (Formula 34)

If s ′ = s, “valid” is output as the signature verification result for the challenge code 742 (step 208), and the smart card 701 is authenticated and accepted.


一方、s'=sでなければ「無効」を出力し(ステップ208)、スマートカード701を拒絶する。

On the other hand, if s ′ = s, “invalid” is output (step 208), and the smart card 701 is rejected.


上述のように、署名の生成および検証の処理において、スカラー倍点を計算する。従って、署名生成、及び、署名検証を行う際に、第一の実施形態のスカラー倍計算方法を用いることが可能である。この実施形態のスカラー倍計算方法を用いることにより、スマートカードといったリソースが限られた環境においても、高い安全性と高速な処理とを実現することができる。

As described above, a scalar multiple is calculated in the signature generation and verification process. Therefore, when performing signature generation and signature verification, the scalar multiplication method of the first embodiment can be used. By using the scalar multiplication method of this embodiment, high security and high-speed processing can be realized even in an environment where resources such as smart cards are limited.


次に、本発明を楕円Diffie-Hellman鍵共有スキーム適用して実現する鍵交換システムを第三の実施形態として説明する。本実施形態の鍵交換システムのシステム構成は、図1と同様である。ただし、図1のデータ処理部112、132は、本実施形態においては、それぞれ鍵交換処理部112、132として機能する。

Next, a key exchange system that realizes the present invention by applying an elliptical Diffie-Hellman key agreement scheme will be described as a third embodiment. The system configuration of the key exchange system of this embodiment is the same as that shown in FIG. However, the data processing units 112 and 132 in FIG. 1 function as the key exchange processing units 112 and 132, respectively, in the present embodiment.


以下、本実施形態の鍵交換システムのコンピュータA101が、入力されたデータ143から共有情報の導出を行う場合の動作について図1、図2を参照して説明する。図2においても、データ処理部112、132は、鍵交換処理部112、132として説明する。

Hereinafter, the operation when the computer A101 of the key exchange system according to the present embodiment derives the shared information from the input data 143 will be described with reference to FIGS. Also in FIG. 2, the data processing units 112 and 132 will be described as the key exchange processing units 112 and 132.


コンピュータB121の鍵交換処理部132は、記憶部122の秘密情報125から秘密鍵bを読み出し、コンピュータB121の公開鍵bQを計算する。そして、鍵交換処理部132は、ネットワーク142を介して、公開鍵bQをデータ143としてコンピュータA101に転送する(ステップ208)。

The key exchange processing unit 132 of the computer B121 reads the secret key b from the secret information 125 of the storage unit 122, and calculates the public key bQ of the computer B121. Then, the key exchange processing unit 132 transfers the public key bQ as data 143 to the computer A101 via the network 142 (step 208).


コンピュータA101の鍵交換処理部112は、コンピュータB121の公開鍵bQのデータ143を入力メッセージとして受け付ける(ステップ204)。

The key exchange processing unit 112 of the computer A101 receives the data 143 of the public key bQ of the computer B121 as an input message (step 204).


鍵交換処理部112は、記憶部102から秘密情報105であるコンピュータA101の秘密鍵dを読み出し(ステップ205)、秘密鍵dとコンピュータB121の公開鍵bQとをスカラー倍計算部115へ送る(ステップ206)。

The key exchange processing unit 112 reads out the secret key d of the computer A101 that is the secret information 105 from the storage unit 102 (step 205), and sends the secret key d and the public key bQ of the computer B121 to the scalar multiplication unit 115 (step). 206).


スカラー倍計算部115は、公開鍵bQによるスカラー倍点dbQを計算し、計算したスカラー倍点と秘密鍵dとを鍵交換処理部112へ送る(ステップ207)。

The scalar multiplication unit 115 calculates a scalar multiple dbQ based on the public key bQ, and sends the calculated scalar multiple and the secret key d to the key exchange processing unit 112 (step 207).


鍵交換処理部112は、送られたスカラー倍点を用いて共有情報の導出を行い、記憶部102に秘密情報105として格納する。例えば、スカラー倍点dbQのx座標を、共有情報とする。

The key exchange processing unit 112 derives shared information using the sent scalar multiple, and stores it as the secret information 105 in the storage unit 102. For example, the x coordinate of the scalar multiple dbQ is used as shared information.


次に、コンピュータB121が、入力されたデータ141から共有情報の導出を行う場合の動作について説明する。

Next, an operation when the computer B121 derives shared information from the input data 141 will be described.


コンピュータA101の鍵交換処理部112は、記憶部102の秘密情報105から秘密鍵dを読み出しコンピュータA101の公開鍵dQを計算する。そして、ネットワーク142を介して、公開鍵dQをデータ141としてコンピュータB121に転送する(ステップ208)。

The key exchange processing unit 112 of the computer A101 reads the secret key d from the secret information 105 of the storage unit 102 and calculates the public key dQ of the computer A101. Then, the public key dQ is transferred as data 141 to the computer B 121 via the network 142 (step 208).


コンピュータB121の鍵交換処理部132は、コンピュータA101の公開鍵dQであるデータ141を、入力メッセージ204として受け付ける(ステップ204)。

The key exchange processing unit 132 of the computer B121 receives the data 141, which is the public key dQ of the computer A101, as the input message 204 (step 204).


鍵交換処理部132は、記憶部122の定数125から秘密情報125であるコンピュータB121の秘密鍵bを読み出し(ステップ205)、読み出した秘密鍵bとコンピュータA101の公開鍵dQとをスカラー倍計算部135へ送る(ステップ206)。

The key exchange processing unit 132 reads the secret key b of the computer B121, which is the secret information 125, from the constant 125 of the storage unit 122 (step 205), and calculates the read secret key b and the public key dQ of the computer A101 as a scalar multiplication unit. Send to 135 (step 206).


スカラー倍計算部135は、公開鍵dQによるスカラー倍点bdQを計算し、計算されたスカラー倍点と秘密鍵bとを鍵交換処理部132へ送る(図2の207)。

The scalar multiplication calculation unit 135 calculates a scalar multiplication point bdQ based on the public key dQ, and sends the calculated scalar multiplication point and the secret key b to the key exchange processing unit 132 (207 in FIG. 2).


鍵交換処理部132は、送られたスカラー倍点を用いて共有情報の導出を行い、記憶部122に秘密情報125として格納する。例えば、スカラー倍点bdQのx座標を、共有情報とする。

ここで、数dbと数bdとは数値として同じなので、点dbQと点bdQとは同じ点となり、同じ情報が導出されたことになる。

The key exchange processing unit 132 derives shared information using the sent scalar multiple and stores it as the secret information 125 in the storage unit 122. For example, the x coordinate of the scalar multiple bdQ is used as shared information.

Here, since the number db and the number bd are the same as numerical values, the point dbQ and the point bdQ are the same point, and the same information is derived.


ネットワーク142には、点dQと点bQが送信される。しかし、点dbQ(もしくは点bdQ)を計算するためには、秘密鍵dもしくは秘密鍵bが必要である。すなわち、秘密鍵dもしくは秘密鍵bを知らなければ、共有情報を得ることはできない。従って、上記の方法で得られた共有情報は、共通鍵暗号の秘密鍵として利用できる。

A point dQ and a point bQ are transmitted to the network 142. However, in order to calculate the point dbQ (or point bdQ), the secret key d or the secret key b is required. That is, the shared information cannot be obtained without knowing the secret key d or the secret key b. Therefore, the shared information obtained by the above method can be used as a secret key for common key encryption.


本実施形態の鍵交換システムでは、受け取った点のスカラー倍点を計算する。従って、鍵交換を行う際に、第一の実施形態のスカラー倍計算方法を用いることが可能である。この実施形態のスカラー倍計算方法を用いることにより、高い安全性と高速な処理とを実現することができる。

In the key exchange system of this embodiment, the scalar multiple of the received point is calculated. Therefore, when performing key exchange, it is possible to use the scalar multiplication calculation method of the first embodiment. By using the scalar multiplication method of this embodiment, high safety and high-speed processing can be realized.


なお、上記各実施形態では、暗号化処理部、復号化処理部、署名生成処理部、署名検証処理部、鍵交換処理部を、ソフトウェアで実現するものとして説明したが、専用のハードウェアを用いて実現してもよい。また、スカラー倍計算部をコプロセッサまたはそれ以外の専用ハードウェアで実現しても良い。また、データ処理部は、上記暗号化処理、復号化処理、署名生成処理、署名検証処理、鍵交換処理のうち、任意の一つ以上の処理を行うことができるよう構成してもよい。

In each of the above embodiments, the encryption processing unit, the decryption processing unit, the signature generation processing unit, the signature verification processing unit, and the key exchange processing unit have been described as being realized by software. However, dedicated hardware is used. May be realized. Further, the scalar multiplication calculation unit may be realized by a coprocessor or other dedicated hardware. The data processing unit may be configured to perform any one or more of the encryption process, the decryption process, the signature generation process, the signature verification process, and the key exchange process.


101:コンピュータA、102:記憶部、103:RAM、104:定数、105:秘密情報、106:ROM、107:外部記憶装置、108:ディスプレイ、109:キーボード、110:入出力インタフェース、111:処理部、112:データ処理部、113:CPU、114:コプロセッサ、115:スカラー倍計算部、121:コンピュータB、122:記憶部、123:RAM、124:定数、125:秘密情報、126:ROM、127:外部記憶装置、128:ディスプレイ、129:キーボード、130:入出力インタフェース、131:処理部、132:データ処理部、133:CPU、134:コプロセッサ、135:スカラー倍計算部、141:データ、142:ネットワーク、143:データ、302:エンコード部、303:事前計算部、304:実計算部、321:Φ進展開部、322:δ剰余取得部、323:ビット対判定部、324:ビット対変換部、325:桁上がり計算部、326:繰り返し判定部、327:格納部、331:加算部、332:2倍算部、333:繰り返し判定部、341:ビット値判定部、342:加算部、343:Φ倍算部、344:繰り返し判定部、701:スマートカード、702:記憶部、703:RAM、704:定数、705:秘密情報、706:ROM、710:入出力インタフェース、711:処理部、712:署名生成処理部、713:CPU、714:コプロセッサ、715:スカラー倍計算部、721:コンピュータ、722:記憶部、723:RAM、724:定数、725:秘密情報、726:ROM、727:外部記憶装置、728:ディスプレイ、729:キーボード、730:入出力インタフェース、731:処理部、732:署名検証処理部、733:CPU、734:コプロセッサ、735:スカラー倍計算部、741:署名、742:チャレンジコード。






101: Computer A, 102: Storage unit, 103: RAM, 104: Constant, 105: Secret information, 106: ROM, 107: External storage device, 108: Display, 109: Keyboard, 110: Input / output interface, 111: Processing Part, 112: data processing part, 113: CPU, 114: coprocessor, 115: scalar multiplication calculation part, 121: computer B, 122: storage part, 123: RAM, 124: constant, 125: secret information, 126: ROM , 127: external storage device, 128: display, 129: keyboard, 130: input / output interface, 131: processing unit, 132: data processing unit, 133: CPU, 134: coprocessor, 135: scalar multiplication calculation unit, 141: Data: 142: Network, 143: Data, 302: Encoding unit, 303: Prior calculation unit, 304: Actual calculation unit, 321: Φ-adic expansion unit, 322: δ residue acquisition unit, 323: Bit pair determination unit, 324: Bit pair conversion unit, 325: carry calculation unit, 326: repetition determination unit, 327: storage 331: adder, 332: doubling unit, 333: repetition determination unit, 341: bit value determination unit, 342: addition unit, 343: Φ multiplication unit, 344: repetition determination unit, 701: smart card, 702 : Storage unit, 703: RAM, 704: constant, 705: secret information, 706: ROM, 710: input / output interface, 711: processing unit, 712: signature generation processing unit, 713: CPU, 714: coprocessor, 715: Scalar multiplication calculation unit, 721: computer, 722: storage unit, 723: RAM, 724: constant, 725: secret information, 726: ROM, 727: external storage device, 728: display, 729: keyboard, 730: input / output interface , 731: processing unit, 732: signature verification processing unit, 733: CPU, 734: coprocessor, 735: scalar multiplication calculation unit, 741: signature, 742: challenge code.





Claims (10)


CPUがメモリに格納されたプログラムを実行することによりコンピュータ上に実現されるスカラー倍計算装置において、特性多項式Φ2+Φ+q(qは奇素数のべき)を持つ、定義体Fq上定義された楕円曲線上の整数倍算とは異なる自己準同型写像Φを実行することができる楕円曲線を用いて、スカラー値、及び、前記楕円曲線上の点とからスカラー倍点を計算する楕円曲線暗号におけるスカラー倍計算方法であって、

前記スカラー値を、第一の数値列(bn-1,bn-2,…,b0)(nは前記スカラー値を第一の数値列にエンコードした際の桁長)にエンコードする第一のステップと、

前記第一の数値列を、前記第一の数値列とは異なる第二の数値列にエンコードする第二のステップと、

前記楕円曲線上の点から事前計算テーブルを作成する第三のステップと、

前記第二の数値列、及び、前記事前計算テーブルから、前記スカラー倍点を計算する第四のステップと、を備える

ことを特徴とするスカラー倍計算方法。

Definition on definition field F q , with characteristic polynomial Φ 2 + Φ + q (q should be an odd prime number) in a scalar multiplication unit realized on a computer by CPU executing a program stored in memory An elliptic curve that calculates a scalar multiple from a scalar value and a point on the elliptic curve using an elliptic curve that can perform an automorphism Φ different from the integer multiplication on the elliptic curve A method of scalar multiplication in cryptography,

The scalar value is encoded into a first numerical sequence (b n−1 , b n−2 ,..., B 0 ) (n is a digit length when the scalar value is encoded into the first numerical sequence). One step,

A second step of encoding the first numeric sequence into a second numeric sequence different from the first numeric sequence;

A third step of creating a pre-calculation table from points on the elliptic curve;

And a fourth step of calculating the scalar multiple from the second numerical sequence and the pre-calculation table.

A scalar multiplication calculation method characterized by that.

請求項1に記載のスカラー倍計算方法であって、

前記第一のステップは、前記スカラー値に対するΦ進展開を計算し、

前記第二のステップは、

bnとbn+1とbn+2とbn+3とを生成してそれぞれ0とするステップと(nは前記スカラー値に対するΦ進展開の桁長)、

iが0からnまでの間、

bi=0を満たすとき、biをbiとする変換を行った後iを1増加させ、

bi≠0、かつ、|-qbi+1+bi|≦(q2-1)/2を満たすとき、bi→-qbi+1+bi,bi+1→0,bi+2→-bi+1+bi+2とする変換を行った後iを2増加させ、

bi≠0、かつ、-qbi+1+bi>(q2-1)/2を満たすとき、bi→-bi+1q+bi-q2,bi+1→0,bi+2→bi+2-bi+1-(q-1),bi+3→bi+3+1とする変換を行った後iを2増加させ、

bi≠0、かつ、-qbi+1+bi<-(q2-1)/2を満たすとき、bi→-bi+1q+bi+q2,bi+1→0,bi+2→bi+2-bi+1+(q-1),

bi+3→bi+3-1とする変換を行った後iを2増加させる処理を繰り返す変換ステップと、を備える

ことを特徴とするスカラー倍計算方法。

The scalar multiplication method according to claim 1,

The first step calculates a Φ-adic expansion for the scalar value;

The second step includes

generating b n , b n + 1 , b n + 2, and b n + 3 and setting them to 0 (n is the digit length of the Φ-adic expansion for the scalar value),

i is between 0 and n

When b i = 0 is satisfied, i is increased by 1 after performing the conversion of b i to b i ,

If b i ≠ 0 and | −qb i + 1 + b i | ≦ (q 2 −1) / 2, then b i → −qb i + 1 + b i , b i + 1 → 0, b i + 2 → -b i + 1 + b i + 2

When b i ≠ 0 and -qb i + 1 + b i > (q 2 -1) / 2, b i → -b i + 1 q + b i -q 2 , b i + 1 → 0 , B i + 2 → b i + 2 −b i + 1 − (q−1), b i + 3 → b i + 3 +1 and then i is increased by 2,

When b i ≠ 0 and -qb i + 1 + b i <-(q 2 -1) / 2, b i → -b i + 1 q + b i + q 2 , b i + 1 → 0, b i + 2 → b i + 2 -b i + 1 + (q-1),

a conversion step that repeats the process of increasing i by 2 after performing the conversion from b i + 3 → b i + 3 −1

A scalar multiplication calculation method characterized by that.

特性多項式Φ2+Φ+q(qは奇素数のべき)を持つ、定義体Fq上定義された楕円曲線上の整数倍算とは異なる自己準同型写像Φを実行することができる楕円曲線を用いて、スカラー値、及び、前記楕円曲線上の点とからスカラー倍点を計算する楕円曲線暗号におけるスカラー倍計算装置であって、

前記スカラー値を、第一の数値列(bn-1,bn-2,…,b0)(nは前記スカラー値を第一の数値列にエンコードした際の桁長)にエンコードする第一のエンコード手段と、

前記第一の数値列を、前記第一の数値列とは異なる第二の数値列にエンコードする第二のエンコード手段と、

前記楕円曲線上の点から事前計算テーブルを作成する事前計算手段と、

前記第二の数値列、及び、前記事前計算テーブルから、前記スカラー倍点を計算する実計算手段と、を備える

ことを特徴とするスカラー倍計算装置。

An elliptic curve having a characteristic polynomial Φ 2 + Φ + q (where q is a power of odd primes) and capable of performing an automorphism Φ different from integer multiplication on an elliptic curve defined on the definition field F q A scalar multiple calculation device in elliptic curve cryptography that calculates a scalar multiple from a scalar value and a point on the elliptic curve using

The scalar value is encoded into a first numerical sequence (b n−1 , b n−2 ,..., B 0 ) (n is a digit length when the scalar value is encoded into the first numerical sequence). An encoding means,

Second encoding means for encoding the first numerical sequence into a second numerical sequence different from the first numerical sequence;

Pre-calculation means for creating a pre-calculation table from points on the elliptic curve;

Real calculation means for calculating the scalar multiple from the second numerical sequence and the pre-calculation table.

A scalar multiplication calculator characterized by that.

請求項3に記載のスカラー倍計算装置であって、

前記第一のエンコード手段では、前記スカラー値に対するΦ進展開を計算することにより前記第一の数値列にエンコードし、

前記第二のエンコード手段では、

bnとbn+1とbn+2とbn+3とを生成してそれぞれ0とし、

iが0からnまでの間、

bi=0を満たすとき、biをbiとする変換を行った後iを1増加させ、

bi≠0、かつ、|-qbi+1+bi|≦(q2-1)/2を満たすとき、bi→-qbi+1+bi,bi+1→0,bi+2→-bi+1+bi+2とする変換を行った後iを2増加させ、

bi≠0、かつ、-qbi+1+bi>(q2-1)/2を満たすとき、bi→-bi+1q+bi-q2,bi+1→0,bi+2→bi+2-bi+1-(q-1),bi+3→bi+3+1とする変換を行った後iを2増加させ、

bi≠0、かつ、-qbi+1+bi<-(q2-1)/2を満たすとき、bi→-bi+1q+bi+q2,bi+1→0,bi+2→bi+2-bi+1+(q-1),

bi+3→bi+3-1とする変換を行った後iを2増加させる処理を繰り返すことにより、前記第一の数値列を前記第二の数値列にエンコードする

ことを特徴とするスカラー倍計算装置。

The scalar multiplication apparatus according to claim 3, wherein

The first encoding means encodes the first numeric string by calculating a Φ-adic expansion for the scalar value,

In the second encoding means,

b n , b n + 1 , b n + 2, and b n + 3 are generated and set to 0, respectively.

i is between 0 and n

When b i = 0 is satisfied, i is increased by 1 after performing the conversion of b i to b i ,

If b i ≠ 0 and | −qb i + 1 + b i | ≦ (q 2 −1) / 2, then b i → −qb i + 1 + b i , b i + 1 → 0, b i + 2 → -b i + 1 + b i + 2

When b i ≠ 0 and -qb i + 1 + b i > (q 2 -1) / 2, b i → -b i + 1 q + b i -q 2 , b i + 1 → 0 , B i + 2 → b i + 2 −b i + 1 − (q−1), b i + 3 → b i + 3 +1 and then i is increased by 2,

When b i ≠ 0 and -qb i + 1 + b i <-(q 2 -1) / 2, b i → -b i + 1 q + b i + q 2 , b i + 1 → 0, b i + 2 → b i + 2 -b i + 1 + (q-1),

Encoding the first numerical sequence to the second numerical sequence by repeating the process of increasing i by 2 after performing the conversion from b i + 3 → b i + 3 −1

A scalar multiplication calculator characterized by that.

請求項3または4に記載のスカラー倍計算装置であって、

前記自己準同型写像はフロベニウス写像である

ことを特徴とするスカラー倍計算装置。

The scalar multiplication apparatus according to claim 3 or 4, wherein

The automorphism map is a Frobenius map

A scalar multiplication calculator characterized by that.

データから署名データを生成する署名生成処理部と、前記署名データを作成するために必要なスカラー倍点を計算するスカラー倍計算部と、を有する署名生成装置であって、

前記スカラー倍計算部は、請求項3ないし請求項5いずれか一に記載のスカラー倍計算装置を用いてスカラー倍点を計算する手段を備える

ことを特徴とする署名生成装置。

A signature generation apparatus comprising: a signature generation processing unit that generates signature data from data; and a scalar multiple calculation unit that calculates a scalar multiple necessary for creating the signature data,

The scalar multiplication unit includes means for calculating a scalar multiple using the scalar multiplication apparatus according to any one of claims 3 to 5.

A signature generation apparatus characterized by the above.

データから署名データを検証する署名部と、前記署名データを作成するために必要なスカラー倍点を計算するスカラー倍計算部と、を有する署名検証装置であって、

前記スカラー倍計算部は、請求項3ないし請求項5いずれか一に記載のスカラー倍計算装置を用いてスカラー倍点を計算する手段を備える

ことを特徴とする署名生成装置。

A signature verification apparatus comprising: a signature unit that verifies signature data from data; and a scalar multiple calculation unit that calculates a scalar multiple necessary for creating the signature data,

The scalar multiplication unit includes means for calculating a scalar multiple using the scalar multiplication apparatus according to any one of claims 3 to 5.

A signature generation apparatus characterized by the above.

データから暗号化データを生成する暗号部と、前記暗号化データを作成するために必要なスカラー倍点を計算するスカラー倍計算部と、を有する暗号化装置であって、

前記スカラー倍計算部は、請求項3ないし請求項5いずれか一に記載のスカラー倍計算装置を用いてスカラー倍点を計算する手段を備える

ことを特徴とする暗号化装置。

An encryption device comprising: an encryption unit that generates encrypted data from data; and a scalar multiple calculation unit that calculates a scalar multiple necessary for creating the encrypted data,

The scalar multiplication unit includes means for calculating a scalar multiple using the scalar multiplication apparatus according to any one of claims 3 to 5.

An encryption device characterized by that.

暗号化データから復号化データを生成する復号部と、前記復号化データを作成するために必要なスカラー倍点を計算するスカラー倍計算部と、を有する復号化装置であって、

前記スカラー倍計算部は、請求項3ないし請求項5いずれか一に記載のスカラー倍計算装置を用いてスカラー倍点を計算する手段を備える

ことを特徴とする復号化装置。

A decryption device comprising: a decryption unit that generates decryption data from encrypted data; and a scalar multiple calculation unit that calculates a scalar multiple necessary for creating the decryption data,

The scalar multiplication unit includes means for calculating a scalar multiple using the scalar multiplication apparatus according to any one of claims 3 to 5.

A decoding device characterized by the above.

楕円Diffie-Hellman鍵共有スキームにおいて、秘密鍵から公開鍵を生成する生成部と、前記公開鍵を生成するために必要なスカラー倍点を計算するスカラー倍計算部と、を有する鍵生成装置であって、

前記スカラー倍計算部は、請求項3ないし請求項5いずれか一に記載のスカラー倍計算装置を用いてスカラー倍点を計算する手段を備える

ことを特徴とする鍵生成装置。








In the elliptic Diffie-Hellman key agreement scheme, a key generation device having a generation unit that generates a public key from a secret key, and a scalar multiplication unit that calculates a scalar multiple necessary for generating the public key. And

The scalar multiplication unit includes means for calculating a scalar multiple using the scalar multiplication apparatus according to any one of claims 3 to 5.

A key generation device characterized by that.







JP2009223619A 2009-09-29 2009-09-29 Scalar multiplication computing method, program, and device in elliptic curve cryptography Pending JP2011075587A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009223619A JP2011075587A (en) 2009-09-29 2009-09-29 Scalar multiplication computing method, program, and device in elliptic curve cryptography

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009223619A JP2011075587A (en) 2009-09-29 2009-09-29 Scalar multiplication computing method, program, and device in elliptic curve cryptography

Publications (1)

Publication Number Publication Date
JP2011075587A true JP2011075587A (en) 2011-04-14

Family

ID=44019685

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009223619A Pending JP2011075587A (en) 2009-09-29 2009-09-29 Scalar multiplication computing method, program, and device in elliptic curve cryptography

Country Status (1)

Country Link
JP (1) JP2011075587A (en)

Similar Documents

Publication Publication Date Title
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
JP3862500B2 (en) High-speed elliptic curve encryption method and apparatus by direct embedding method
RU2376651C2 (en) Using isogenies to design cryptosystems
US8111826B2 (en) Apparatus for generating elliptic curve cryptographic parameter, apparatus for processing elliptic curve cryptograph, program for generating elliptic curve cryptographic parameter, and program for processing elliptic cyptograph
CN109039640B (en) Encryption and decryption hardware system and method based on RSA cryptographic algorithm
US20110161390A1 (en) Modular multiplication processing apparatus
JP6974461B2 (en) Methods and systems for advanced data-centric cryptographic systems using geometric algebra
JP2007187958A (en) Cryptography processing device, cryptography processing method, and computer program
Boruah et al. Implementation of ElGamal Elliptic Curve Cryptography over prime field using C
EP0952697B1 (en) Elliptic curve encryption method and system
JP4690819B2 (en) Scalar multiplication calculation method and scalar multiplication calculation apparatus in elliptic curve cryptography
US9419789B2 (en) Method and apparatus for scalar multiplication secure against differential power attacks
JP4423900B2 (en) Scalar multiplication calculation method, apparatus and program for elliptic curve cryptography
Ismail et al. Bezier coefficients matrix for elgamal elliptic curve cryptosystem
Manajaih Modular arithmetic in RSA cryptography
JP4692022B2 (en) Scalar multiplication apparatus and program for elliptic curve cryptography
JP4783061B2 (en) Scalar multiplication unit for elliptic curve cryptography
Shams et al. Cryptosystem an Implementation of RSA using Verilog
JP2011075587A (en) Scalar multiplication computing method, program, and device in elliptic curve cryptography
Raharinirina Use of Signed Permutations in Cryptography
JP2007208410A (en) Id base encryption communication system
JP4502817B2 (en) Elliptic curve scalar multiplication method and apparatus
JP2005316038A (en) Scalar multiple computing method, device, and program in elliptic curve cryptosystem
JP2006309201A (en) Multiplex scalar multiplying operation device in elliptic curve cryptosystem, signature verification device, and programs
Debebe mproving the Execution Speed of Rivest-Shamir-Adleman Cryptosystem Using Modified Modular Exponentiation Algorithm