JP4783061B2 - Scalar multiplication unit for elliptic curve cryptography - Google Patents
Scalar multiplication unit for elliptic curve cryptography Download PDFInfo
- Publication number
- JP4783061B2 JP4783061B2 JP2005145449A JP2005145449A JP4783061B2 JP 4783061 B2 JP4783061 B2 JP 4783061B2 JP 2005145449 A JP2005145449 A JP 2005145449A JP 2005145449 A JP2005145449 A JP 2005145449A JP 4783061 B2 JP4783061 B2 JP 4783061B2
- Authority
- JP
- Japan
- Prior art keywords
- unit
- calculation
- scalar
- point
- elliptic curve
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7261—Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- General Engineering & Computer Science (AREA)
Description
本発明は、セキュリティ技術に関し、特に、楕円曲線演算を用いたメッセージ処理の技術に関する。 The present invention relates to a security technique, and more particularly to a message processing technique using an 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, V. S. Miller. Public key cryptography includes information that can be opened 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を求める問題である。楕円曲線上の点とは、楕円曲線の定義方程式を満たす数の組をいい、楕円曲線上の点全体には、無限遠点という仮想的な点を単位元とした演算、すなわち楕円曲線上の加法(乃至は加算)が定義される。 The secret key in elliptic curve cryptography is a scalar value. The security of elliptic curve cryptography is derived from the difficulty of solving the discrete logarithm problem on the elliptic curve. 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.
そして、同じ点同士による楕円曲線上の加法のことを、特に楕円曲線上の2倍算という。楕円曲線上の2点の加法は、次のようにして計算される。2点を通る直線を引くとその直線は楕円曲線と他の点において交わる。その交わった点とx軸に関して対称な点を、加法を行った結果の点とする。例えば、コブリッツ曲線の場合には、点(x1,y1)と点(x2,y2)の加算(x3,y3)=(x1,y1)+(x2,y2)は、下記(式1)〜(式3)を計算することにより得られる。 The addition on the elliptic curve by the same points is particularly called doubling on the elliptic curve. The addition of two points on the elliptic curve is calculated as follows. When a straight line passing through two points is drawn, the straight line intersects the elliptic curve at another point. The intersecting point and a point that is symmetric with respect to the x-axis are taken as points resulting from the addition. For example, in the case of a Kobritz curve, the addition (x 3 , y 3 ) = (x 1 , y 1 ) + (x 2 , y 2 ) of the point (x 1 , y 1 ) and the point (x 2 , y 2 ) ) Is obtained by calculating (Equation 1) to (Equation 3) below.
x3=λ2+λ+x1+x2+a ・・・(式1)
y3=(x1+x3)λ+x3+y1 ・・・(式2)
λ=(y1+y2)/(x1+x2) ・・・(式3)
ここで、コブリッツ曲線の定義方程式は、下記(式4)で与えられる。
x 3 = λ 2 + λ + x 1 + x 2 + a (Formula 1)
y 3 = (x 1 + x 3 ) λ + x 3 + y 1 (Expression 2)
λ = (y 1 + y 2 ) / (x 1 + x 2 ) (Formula 3)
Here, the definition equation of the Kobritz curve is given by the following (formula 4).
y2+xy=x3+ax2+1,(a=0 or 1) ・・・(式4)
すなわち、(式4)のx,yに、各々xi,yi(i=1,2,3)を代入した場合に、(式4)の等式が成り立つ。
y 2 + xy = x 3 + ax 2 +1, (a = 0 or 1) (Formula 4)
That is, when x i and y i (i = 1, 2, 3) are substituted for x and y in (Equation 4), the equation of (Equation 4) holds.
楕円曲線上の点の2倍算は次のようにして計算される。楕円曲線上の点における接線をひくと、その接線は楕円曲線上の他の一点において交わる。その交わった点とx座標に関して対称な点を、2倍算を行った結果の点とする。例えば、コブリッツ曲線の場合には、点(x1,y1)の2倍算(x3,y3)=2(x1,y1)=(x1,y1)+(x1,y1)は、(式1),(式2)及び下記(式5)を計算することにより得られる。
The doubling of the 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 intersecting 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 Koblitz curve, the
λ=(y1/x1)+x1 ・・・(式5)
また、コブリッツ曲線上の点に対して、τ倍算(タウ倍算)と呼ばれる演算を行うことが可能である。点(x1,y1)に対するτ倍算とは、下記(式6)を計算することである。
λ = (y 1 / x 1 ) + x 1 (Formula 5)
In addition, an operation called τ multiplication (tau multiplication) can be performed on points on the Kobritz curve. The τ multiplication for the point (x 1 , y 1 ) is to calculate the following (formula 6).
(x3,y3)=τ(x1,y1)=(x1 2,y1 2) ・・・(式6)
また、下記(式7),(式8)が成り立つことが知られており、(式7)の性質により、τを、下記(式9)を満たす複素数と考えることができる。
(X 3 , y 3 ) = τ (x 1 , y 1 ) = (x 1 2 , y 1 2 ) (Expression 6)
Further, it is known that the following (formula 7) and (formula 8) hold, and τ can be considered as a complex number satisfying the following (formula 9) due to the property of (formula 7).
(x4,x4)+2(x,y)=μ(x2,y2) ・・・(式7)
μ=(−1)a ・・・(式8)
τ2+2=μτ ・・・(式9)
楕円曲線上のある点に対し、特定の回数だけ加法を行うことをスカラー倍といい、その結果をスカラー倍点、その回数のことをスカラー値という。
(X 4 , x 4 ) +2 (x, y) = μ (x 2 , y 2 ) (Expression 7)
μ = (− 1) a (Expression 8)
τ 2 + 2 = μτ (Equation 9)
Adding a certain number of times on an elliptic curve a specific number of times is called scalar multiplication, the result is called a scalar multiple, and the number of times is called a scalar value.
楕円曲線暗号において標準化団体が推奨する楕円曲線は、ランダムな標数2の楕円曲線、コブリッツ曲線、及び、標数が大きな素体上の楕円曲線である。
The elliptic curve recommended by the standardization body in elliptic curve cryptography is a
楕円曲線上の離散対数問題の求解の困難性が理論的に確立されてきている一方で、実際の実装においては秘密鍵などの秘密情報に関連する情報、例えば計算時間や電力消費量などが暗号処理において漏洩する場合があり、その漏洩情報をもとに秘密情報を復元するといったサイドチャネル攻撃と呼ばれる攻撃法が提案されている。 While the difficulty of solving the discrete logarithm problem on an elliptic curve has been theoretically established, in an actual implementation, information related to secret information such as a secret key, such as calculation time and power consumption, is encrypted. An attack method called a side channel attack has been proposed in which there is a case of leak in processing, and secret information is restored based on the leaked information.
楕円曲線暗号に対して、標準化団体の推奨する楕円曲線については、例えば、非特許文献1に記載されている。
楕円曲線暗号に対するサイドチャネル攻撃について、非特許文献2に記載されている。
楕円曲線暗号においては、与えられたメッセージの暗号化、復号化、署名の生成、検証は、楕円曲線演算を用いて行う必要がある。特に楕円曲線上のスカラー倍の計算は、秘密情報であるスカラー値を用いた暗号処理において用いられる。 In elliptic curve cryptography, encryption, decryption, signature generation, and verification of a given message must be performed using elliptic curve computation. In particular, calculation of scalar multiplication on an elliptic curve is used in cryptographic processing using a scalar value that is secret information.
楕円曲線暗号に対するサイドチャネル攻撃の防御法について、非特許文献3に記載されている。
コブリッツ曲線におけるスカラー倍の高速計算手法について、非特許文献4に記載されている。また、正規基底については、例えば、非特許文献4に記載されている。
情報通信ネットワークの進展と共に電子情報に対する秘匿や認証の為の暗号技術は不可欠な要素となってきている。暗号技術に課せられる要件としては、安全性以外にも、処理速度や少ないメモリ使用量などがあるが、一般的に、安全性、処理速度、メモリ使用量の間にはトレードオフの関係があり、すべての要件を満たすことは難しい。他方、楕円曲線上の離散対数問題が非常に困難である為に、素因数分解の困難性を安全性の根拠にしている暗号と比べて、楕円曲線暗号では鍵長を比較的短くすることができる。 With the progress of information communication networks, encryption technology for secrecy and authentication of electronic information has become an indispensable element. In addition to security, requirements imposed on cryptographic technology include processing speed and low memory usage, but generally there is a trade-off relationship between security, processing speed, and memory usage. It is difficult to meet all requirements. On the other hand, the discrete logarithm problem on the elliptic curve is very difficult, so that the key length can be made relatively short in the elliptic curve cryptosystem compared to the cipher that uses the difficulty of prime factorization as the basis of security. .
そのため、楕円曲線暗号では、計算能力、メモリ容量などのリソースが比較的少なくても暗号処理を行うことが可能である。しかしながら、スマートカード(ICカード等ともいう)等においては、利用可能なリソースは少なく、限られたリソース内で暗号処理を最適化する必要がある。前記非特許文献4などに記載されているように、コブリッツ曲線では、点のスカラー倍算についてはτ倍算を用いることによって高速演算が可能であることが知られており、スマートカードで用いるのに有効である。
For this reason, elliptic curve cryptography can perform cryptographic processing even when resources such as calculation capacity and memory capacity are relatively small. However, in a smart card (also referred to as an IC card) or the like, there are few resources that can be used, and it is necessary to optimize cryptographic processing within limited resources. As described in
前記非特許文献3の技術は、サイドチャネル攻撃を防ぐ方法として有効であり、コブリッツ曲線に対して適用できるが、τ倍算を用いた形では適用できない。
The technique of
また、前記非特許文献4の技術は、コブリッツ曲線での高速計算手法としては有効であるが、サイドチャネル攻撃を防ぐという点については考慮されていない。
Further, although the technique of
本発明は以上のような問題に鑑みてなされたものであり、その目的は、コブリッツ曲線に適用可能で、サイドチャネル攻撃を防ぐことができ、かつメモリ使用量及び処理高速性に優れた、楕円曲線暗号におけるスカラー倍を計算する技術を提供することにある。 The present invention has been made in view of the above problems, and its object is to apply to a Kobritz curve, to prevent a side channel attack, and to have an elliptical shape with excellent memory usage and processing speed. An object of the present invention is to provide a technique for calculating a scalar multiplication in curve cryptography.
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明の楕円曲線暗号におけるスカラー倍を計算する技術は、以下に示す技術的手段を備えることを特徴とする。 Of the inventions disclosed in the present application, the outline of typical ones will be briefly described as follows. In order to achieve the above object, the technique for calculating the scalar multiplication in the elliptic curve cryptography of the present invention comprises the following technical means.
本発明のスカラー倍計算方法は、楕円曲線上の加算(第一の演算とする)と前記加算とは異なる第二の演算とを有する楕円曲線において、スカラー値と楕円曲線上の点からスカラー倍点を計算する、楕円曲線暗号におけるスカラー倍を計算する方法であって、計算機資源を用いて、前記スカラー値を数値列にエンコードするステップと、前記楕円曲線上の点から前記スカラー値とは独立に前記前計算テーブル(後段の計算で使用するために前以て計算された値が格納された情報)を作成するステップと、前記エンコードした結果の数値列と前記前計算テーブルから、前記楕円曲線上の加算と第二の演算を、前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算するステップとを有する処理を行う。 The scalar multiplication method of the present invention is an elliptic curve having an addition on the elliptic curve (first calculation) and a second calculation different from the addition, and the scalar multiplication from the scalar value and the point on the elliptic curve. A method of calculating a scalar multiplication in elliptic curve cryptography for calculating a point, wherein the scalar value is independent of the scalar value from the point on the elliptic curve by using a computer resource to encode the scalar value into a numerical sequence. A step of creating a pre-calculation table (information in which a value calculated in advance for use in a subsequent calculation) is stored, and from the encoded result numeric string and the pre-calculation table, the elliptic curve By performing the above addition and the second operation in a fixed order independent of the scalar value, a process including the step of calculating the scalar multiple is performed.
また、本発明のスカラー倍計算方法は、前記エンコードするステップは、前記スカラー値におけるΨ関数の値を計算するステップを含み、前記Ψ関数は、前記スカラー値d=xR+xTτに対して、Ψw(d)=(xR+xT*tw+1 mod 2w+1)−2wで与えられる。ここで、wは、ウィンドウ幅と呼ばれる正の整数、xR,xTは、整数、tw+1は、コブリッツ曲線上の演算τを複素数とみなしたときにwによって定まる整数である。なお、これらの記号の詳細については非特許文献4にも記載されている。
In the scalar multiplication method of the present invention, the encoding step includes a step of calculating a value of a Ψ function in the scalar value, and the Ψ function is calculated with respect to the scalar value d = x R + x T τ. , Ψ w (d) = (x R + x T * t w + 1 mod 2 w + 1 ) −2 w . Here, w is a positive integer called a window width, x R and x T are integers, and t w + 1 is an integer determined by w when the operation τ on the Kobritz curve is regarded as a complex number. Details of these symbols are also described in
また、本発明の他のスカラー倍計算方法は、楕円曲線演算において、スカラー値と楕円曲線上の点からスカラー倍点を計算する方法であって、計算機資源を用いて、前記楕円曲線上の点から前記前計算テーブルを作成するステップと、前記スカラー値及び前記前計算テーブルからスカラー倍点を計算するステップとを有する処理を行う。 Further, another scalar multiplication method of the present invention is a method of calculating a scalar multiple from a scalar value and a point on an elliptic curve in an elliptic curve calculation, and uses a computer resource to calculate the point on the elliptic curve. A process including the step of creating the pre-calculation table from the above and the step of calculating a scalar multiple from the scalar value and the pre-calculation table is performed.
以上のような手段により、コブリッツ曲線において適用可能で、サイドチャネル攻撃を防ぐことができる、かつメモリ使用量に優れた及び高速計算可能で処理高速性に優れた、楕円曲線暗号におけるスカラー倍計算方法を利用可能にする。また、このスカラー倍計算方法を用いた、暗号化処理、復号化処理、署名生成処理、署名検証処理、鍵交換などのデータ共有のためのデータ生成処理などを利用可能にする。また本発明は、演算装置や記憶装置などの計算機資源を備え、それら処理を行う装置、及び、それら処理を計算機に実行させるプログラムを提供する。 The scalar multiplication calculation method in elliptic curve cryptography that can be applied to the Kobritz curve by the above means, can prevent side channel attacks, has excellent memory usage, is capable of high-speed calculation, and is excellent in processing speed. Make available. In addition, data generation processing for data sharing such as encryption processing, decryption processing, signature generation processing, signature verification processing, and key exchange using the scalar multiplication method can be used. The present invention also provides an apparatus that includes computer resources such as an arithmetic device and a storage device, performs these processes, and a program that causes the computer to execute these processes.
本発明の方法、装置及びプログラムは、具体的には、以下のような特徴を有する。 Specifically, the method, apparatus and program of the present invention have the following features.
(1)楕円曲線上の加算と前記加算とは異なる第二の演算とを有する楕円曲線において、スカラー値及び前記楕円曲線上の点からスカラー倍点を計算する、楕円曲線暗号におけるスカラー倍計算方法であって、前記スカラー値を数値列にエンコードするステップと、前記楕円曲線上の点から前記スカラー値とは独立に前計算テーブルを作成するステップと、前記数値列及び前記前計算テーブルから、前記楕円曲線上の加算と第二の演算を、前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算するステップとを含むことを特徴とするスカラー倍計算方法。 (1) A scalar multiplication calculation method in elliptic curve cryptography, wherein a scalar multiple is calculated from a scalar value and a point on the elliptic curve in an elliptic curve having addition on the elliptic curve and a second operation different from the addition. The step of encoding the scalar value into a numerical sequence, the step of creating a pre-calculation table independently of the scalar value from the points on the elliptic curve, and the numerical sequence and the pre-calculation table, And a step of calculating the scalar multiple by performing addition on the elliptic curve and a second operation in a fixed order independently of the scalar value.
(2)楕円曲線上の加算と前記加算とは異なる第二の演算とを有する楕円曲線において、スカラー値及び前記楕円曲線上の点からスカラー倍点を計算する、楕円曲線暗号におけるスカラー倍計算方法であって、前記楕円曲線上の点から前記スカラー値とは独立に前計算テーブルを作成するステップと、前記前計算テーブルから、前記楕円曲線上の加算と第二の演算を、前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算するステップとを含むことを特徴とするスカラー倍計算方法。 (2) A scalar multiplication calculation method in elliptic curve cryptography for calculating a scalar multiple from a scalar value and a point on the elliptic curve in an elliptic curve having addition on the elliptic curve and a second operation different from the addition. A step of creating a pre-calculation table independently of the scalar value from a point on the elliptic curve, and addition and second operation on the elliptic curve from the pre-calculation table, the scalar value and And a step of calculating the scalar multiple by independently executing in a certain order.
(3)楕円曲線上の加算と前記加算とは異なる第二の演算とを有する楕円曲線において、あらかじめエンコードされたスカラー値、ウィンドウ幅、及び楕円曲線上の点からスカラー倍点を計算する、楕円曲線暗号におけるスカラー倍計算方法であって、前記楕円曲線上の点から前記スカラー値とは独立に前計算テーブルを作成するステップと、前記前計算テーブルから、前記楕円曲線上の加算と第二の演算を、前記スカラー値とは独立に一定の順序で前記ウィンドウ幅に応じて実行することにより、前記スカラー倍点を計算するステップとを含むことを特徴とするスカラー倍計算方法。 (3) In an elliptic curve having addition on the elliptic curve and a second operation different from the addition, an elliptic that calculates a scalar multiple from a pre-encoded scalar value, a window width, and a point on the elliptic curve A method of scalar multiplication in curve cryptography, comprising the steps of creating a pre-calculation table independently from the scalar value from points on the elliptic curve, adding from the pre-calculation table on the elliptic curve and a second And a step of calculating the scalar multiplication point by executing an operation according to the window width in a fixed order independently of the scalar value.
(4)前記楕円曲線はコブリッツ曲線であることを特徴とするスカラー倍計算方法。 (4) The scalar multiplication method, wherein the elliptic curve is a Kobritz curve.
(5)前記第二の演算はτ倍算であることを特徴とするスカラー倍計算方法。 (5) A scalar multiplication calculation method, wherein the second operation is τ multiplication.
(6)前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算するステップは、前記楕円曲線上の第二の演算をτとするとこの第二の演算τをあらかじめ定められた回数だけ実行する第一のステップと、前記楕円曲線上の加算を実行する第二のステップとを有し、前記第一と第二のステップを繰り返し行うことを特徴とするスカラー倍計算方法。 (6) The step of calculating the scalar multiple by executing in a fixed order independently of the scalar value is such that when the second operation on the elliptic curve is τ, the second operation τ is set in advance. A scalar multiplication calculation comprising: a first step for executing a predetermined number of times; and a second step for executing addition on the elliptic curve, wherein the first and second steps are repeated. Method.
(7)更に、前記スカラー値を数値列にエンコードするステップは、前記スカラー値におけるΨ関数の値を計算するステップを含み、前記Ψ関数は、前記スカラー値であるdに対して、Ψw(d)=(xR+xT*tw+1 mod 2w+1)−2wで与えられることを特徴とするスカラー倍計算方法。 (7) Furthermore, the step of encoding the scalar value into a numerical sequence includes a step of calculating a value of a Ψ function in the scalar value, and the Ψ function is Ψ w ( d) = (x R + x T * t w + 1 mod 2 w + 1 ) −2 w is given by the scalar multiplication calculation method.
(8)前記前計算テーブルは、前記楕円曲線上の点であるPとあらかじめ定めた正の整数であるwとに対して、{P,3P,5P,……,(2w−1)P}からなることを特徴とするスカラー倍計算方法。 (8) The pre-calculation table uses {P, 3P, 5P,..., (2 w −1) P for P that is a point on the elliptic curve and w that is a predetermined positive integer. } A scalar multiplication calculation method characterized by comprising:
(9)前記前計算テーブルは、前記楕円曲線上の点であるPとあらかじめ定めた正の整数であるwと前記楕円曲線上の第二の演算であるτとに対して、P±τP±τ2P±……±τw−1Pからなることを特徴とするスカラー倍計算方法。 (9) The pre-calculation table includes P ± τP ± for P which is a point on the elliptic curve, w which is a predetermined positive integer, and τ which is the second calculation on the elliptic curve. A scalar multiplication calculation method comprising τ 2 P ± …… ± τ w−1 P.
(10)前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算するステップは、前記前計算テーブルから読み出した点をシフトするステップを含むことを特徴とするスカラー倍計算方法。 (10) The step of calculating the scalar multiple by executing in a fixed order independently of the scalar value includes a step of shifting the point read from the pre-calculation table. Method of calculation.
(11)前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算するステップは、前記楕円曲線上の点から中間データを導出するステップと、前記中間データをシフトするステップとを含むことを特徴とするスカラー倍計算方法。 (11) The step of calculating the scalar multiple by executing in a certain order independent of the scalar value, deriving intermediate data from a point on the elliptic curve, and shifting the intermediate data And a scalar multiplication calculation method.
(12)前記前計算テーブルを作成するステップは、前記前計算テーブルに格納するデータを生成するステップと、前記生成したデータをランダム化するステップと、前記ランダム化したデータを前記前計算テーブルに格納するステップとを含むことを特徴とするスカラー倍計算方法。 (12) The step of creating the pre-calculation table includes generating data to be stored in the pre-calculation table, randomizing the generated data, and storing the randomized data in the pre-calculation table And a step of calculating the scalar multiplication.
(13)前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算するステップは、前記前計算テーブルに格納されている点を読み出すステップと、前記読み出した点をランダム化するステップと、前記ランダム化した点を前記前計算テーブルに書き込むステップとを含むことを特徴とするスカラー倍計算方法。 (13) The step of calculating the scalar multiple by executing in a fixed order independent of the scalar value is a step of reading a point stored in the pre-calculation table; And a step of writing the randomized points to the pre-calculation table.
(14)データからディジタル署名データを生成する署名生成方法であって、前記スカラー倍計算方法を用いてスカラー倍を計算するステップを有することを特徴とする署名生成方法。 (14) A signature generation method for generating digital signature data from data, comprising a step of calculating a scalar multiple using the scalar multiplication method.
(15)データからディジタル署名データを生成する署名生成方法であって、乱数倍計算部による処理ステップを有し、前記乱数倍計算部による処理ステップは、楕円曲線上の点から前計算テーブルを作成するステップと、あらかじめ定められた個数だけビットをランダムに選択し、前記ランダムに選択したビットから整数を生成するステップと、前記生成した整数から、楕円曲線上の加算と第二の演算を、前記整数とは独立に一定の順序で実行するステップと、前記整数を生成するステップ、及び、前記実行するステップを繰り返し行うステップと、前記繰り返し行うステップにより、乱数と前記楕円曲線上の点との乱数倍点を出力するステップとを有することを特徴とする署名生成方法。 (15) A signature generation method for generating digital signature data from data, comprising a processing step by a random number multiplication unit, wherein the processing step by the random number multiplication unit creates a pre-calculation table from points on an elliptic curve A step of randomly selecting a predetermined number of bits, generating an integer from the randomly selected bits, and adding the second arithmetic on the elliptic curve and the second operation from the generated integer, A random number between a random number and a point on the elliptic curve by executing in a certain order independent of the integer, generating the integer, repeating the executing step, and repeating the step And a step of outputting a double point.
(16)暗号化されたデータから復号化されたデータを生成する復号化方法であって、前記スカラー倍計算方法を用いてスカラー倍を計算するステップを有することを特徴とする復号化方法。 (16) A decryption method for generating decrypted data from encrypted data, comprising the step of calculating a scalar multiple using the scalar multiplication method.
(17)データから共有データを生成するデータ生成方法であって、前記スカラー倍計算方法を用いてスカラー倍を計算するステップを有することを特徴とするデータ生成方法。 (17) A data generation method for generating shared data from data, comprising the step of calculating a scalar multiplication using the scalar multiplication method.
(18)楕円曲線上の加算と前記加算とは異なる第二の演算τとを有する楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算する、楕円曲線暗号におけるスカラー倍計算装置であって、前記スカラー値を数値列にエンコードするエンコード部と、前記楕円曲線上の点から前記スカラー値とは独立に前計算テーブルを作成する前計算部と、前記数値列及び前記前計算テーブルから、前記楕円曲線上の加算と第二の演算τを、前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算する実計算部とを具備することを特徴とするスカラー倍計算装置。 (18) A scalar multiplication calculator in elliptic curve cryptography that calculates a scalar multiple from a scalar value and a point on an elliptic curve in an elliptic curve having addition on the elliptic curve and a second operation τ different from the addition. An encoding unit that encodes the scalar value into a numerical sequence, a pre-calculation unit that creates a pre-calculation table independently of the scalar value from a point on the elliptic curve, the numerical sequence and the pre-calculation table And an actual calculation unit for calculating the scalar multiple by performing addition on the elliptic curve and the second operation τ in a certain order independent of the scalar value. A scalar multiplication calculator.
(19)楕円曲線上の加算と前記加算とは異なる第二の演算τとを有する楕円曲線において、スカラー値及び楕円曲線上の点からスカラー倍点を計算する、楕円曲線暗号におけるスカラー倍計算装置であって、前記楕円曲線上の点から前記スカラー値とは独立に前計算テーブルを作成する前計算部と、前記前計算テーブルから前記楕円曲線上の加算と第二の演算τを、前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算する実計算部とを具備することを特徴とするスカラー倍計算装置。 (19) A scalar multiplication apparatus in elliptic curve cryptography for calculating a scalar multiple from a scalar value and a point on an elliptic curve in an elliptic curve having addition on the elliptic curve and a second operation τ different from the addition. A pre-calculation unit that creates a pre-calculation table independently from the scalar value from a point on the elliptic curve, an addition on the elliptic curve and a second operation τ from the pre-calculation table, and the scalar A scalar multiplication calculation device comprising: an actual calculation unit that calculates the scalar multiple by executing in a fixed order independently of a value.
(20)楕円曲線上の加算と前記加算とは異なる第二の演算τとを有する楕円曲線において、あらかじめエンコードされたスカラー値、ウィンドウ幅、及び楕円曲線上の点からスカラー倍点を計算する、楕円曲線暗号におけるスカラー倍計算装置であって、前記楕円曲線上の点から前記スカラー値とは独立に前計算テーブルを作成する前計算部と、前記前計算テーブルから、前記楕円曲線上の加算と第二の演算τを、前記ウィンドウ幅に応じて前記スカラー値とは独立に一定の順序で実行することにより、前記スカラー倍点を計算する実計算部とを具備することを特徴とするスカラー倍計算装置。 (20) In an elliptic curve having an addition on the elliptic curve and a second operation τ different from the addition, a scalar multiple is calculated from a pre-encoded scalar value, a window width, and a point on the elliptic curve. A scalar multiplication calculation apparatus in elliptic curve cryptography, a pre-calculation unit that creates a pre-calculation table independently of the scalar value from a point on the elliptic curve, and addition on the elliptic curve from the pre-calculation table; A scalar multiplication unit, comprising: an actual calculation unit that calculates the scalar multiplication point by executing a second operation τ in a fixed order independent of the scalar value in accordance with the window width. Computing device.
(21)データからディジタル署名データを生成する署名生成処理部と、前記署名生成処理部より依頼されてスカラー倍を計算するスカラー倍計算部とを有する署名生成装置であって、前記スカラー倍計算部は、前記スカラー倍計算方法を用いてスカラー倍を計算するステップを有する処理を行うことを特徴とする署名生成装置。 (21) A signature generation apparatus including a signature generation processing unit that generates digital signature data from data, and a scalar multiplication calculation unit that is requested by the signature generation processing unit to calculate a scalar multiplication, the scalar multiplication calculation unit Performs a process including a step of calculating a scalar multiplication using the scalar multiplication calculation method.
(22)データからディジタル署名データを生成する署名生成装置であって、乱数倍計算部を有し、前記乱数倍計算部は、楕円曲線上の点から前計算テーブルを作成する前計算部と、あらかじめ定められた個数だけビットをランダムに選択し、前記ランダムに選択したビットから整数を生成するステップと、前記生成された整数から、楕円曲線上の加算と第二の演算を、前記整数とは独立に一定の順序で実行するステップと、前記整数を生成するステップ、及び、前記実行するステップを繰り返し行うステップと、前記繰り返し行うステップにより、乱数と前記楕円曲線上の点との乱数倍点を出力するステップを含む処理を行う実計算部とを有することを特徴とする署名生成装置。 (22) A signature generation device for generating digital signature data from data, comprising a random number multiplication calculation unit, wherein the random number multiplication calculation unit creates a pre-calculation table from points on an elliptic curve; Randomly selecting a predetermined number of bits, generating an integer from the randomly selected bits, adding from the generated integer to an elliptic curve, and performing a second operation, Independently executing in a fixed order, generating the integer, repeating the executing step, and repeating the step, a random multiple of a random number and a point on the elliptic curve is obtained. And a real calculation unit that performs processing including an output step.
(23)暗号化されたデータから復号化されたデータを生成する復号化処理部と、前記復号化処理部より依頼されてスカラー倍を計算するスカラー倍計算部とを有する復号化装置であって、前記スカラー倍計算部は、前記スカラー倍計算方法を用いてスカラー倍を計算するステップを有する処理を行うことを特徴とする復号化装置。 (23) A decryption device including a decryption processing unit that generates decrypted data from encrypted data, and a scalar multiplication calculation unit that is requested by the decryption processing unit and calculates a scalar multiplication. The decoding apparatus is characterized in that the scalar multiplication calculation unit performs a process including a step of calculating a scalar multiplication using the scalar multiplication calculation method.
(24)データから共有データを生成するデータ生成処理部と、前記データ生成処理部より依頼されてスカラー倍を計算するスカラー倍計算部とを有するデータ生成装置であって、前記データ生成処理部は、前記スカラー倍計算方法を用いてスカラー倍を計算するステップを有する処理を行うことを特徴とするデータ生成装置。 (24) A data generation device including a data generation processing unit that generates shared data from data, and a scalar multiplication calculation unit that is requested by the data generation processing unit to calculate a scalar multiplication, and the data generation processing unit includes: A data generation apparatus performing a process including a step of calculating a scalar multiplication using the scalar multiplication calculation method.
(25)前記スカラー倍計算方法による処理を計算機に実行させることを特徴とするプログラム。 (25) A program for causing a computer to execute processing according to the scalar multiplication calculation method.
(26)前記署名生成方法による処理を計算機に実行させることを特徴とするプログラム。 (26) A program for causing a computer to execute processing according to the signature generation method.
(27)前記復号化方法による処理を計算機に実行させることを特徴とするプログラム。 (27) A program that causes a computer to execute the process according to the decoding method.
(28)前記データ生成方法による処理を計算機に実行させることを特徴とするプログラム。 (28) A program that causes a computer to execute processing according to the data generation method.
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。本発明によれば、コブリッツ曲線に対して適用可能で、サイドチャネル攻撃を防ぐことができ安全で、かつメモリ使用量及び処理高速性に優れた、楕円曲線演算によるメッセージ処理が可能になる。 Among the inventions disclosed in the present application, effects obtained by typical ones will be briefly described as follows. According to the present invention, it is possible to perform message processing by elliptic curve calculation, which can be applied to a Kobritz curve, can prevent a side channel attack, is safe, and has excellent memory usage and processing speed.
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。図1〜図16は、本発明の各実施の形態を説明するための図である。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. Note that components having the same function are denoted by the same reference symbols throughout the drawings for describing the embodiment, and the repetitive description thereof will be omitted. 1-16 is a figure for demonstrating each embodiment of this invention.
<システム構成>
図1は、本発明の一実施の形態におけるスカラー倍計算装置であるコンピュータA101及びコンピュータB121と、これを含んで構成される情報処理システムの構成を示すものである。図1に示す構成は、各実施の形態で基本的に共通となる。本発明の実施の形態におけるスカラー倍計算装置は、本発明の実施の形態におけるスカラー倍計算方法に従ったスカラー倍計算処理を含んだ処理を実行するものであり、スカラー倍計算を用いた暗号化処理などを実行する。各コンピュータ(101,121)は、本発明の実施の形態におけるプログラムを実行することにより、スカラー倍計算処理を含む処理を行う。本情報処理システムは、スカラー倍計算方法を適用したコンピュータA101とコンピュータB121とがネットワーク142により接続されてなりネットワーク142を介してデータ・情報の授受を行う暗号通信システムを示している。
<System configuration>
FIG. 1 shows the configuration of a
本暗号通信システムにおけるコンピュータA101でメッセージの暗号化を行うには、Pm+k(dQ)及びkQを計算して出力する。そして、暗号文を入力したコンピュータB121で暗号文の復号化を行うには、秘密鍵dと前記kQより−d(kQ)を計算し、入力された暗号文に対して、下記(式10)を計算して出力すればよい。 In order to encrypt a message by the computer A101 in this cryptographic communication system, P m + k (dQ) and kQ are calculated and output. Then, in order to decrypt the ciphertext by the computer B121 that has input the ciphertext, -d (kQ) is calculated from the secret key d and the kQ, and the following (formula 10) is calculated for the input ciphertext. Can be calculated and output.
(Pm+k(dQ))−d(kQ) ・・・(式10)
ここで、Pmはメッセージ、kは乱数、dは秘密鍵を示す定数(スカラー値に対応する)、Qは定点、dQは公開鍵を示す点(スカラー倍点に対応する)である。コンピュータA101は、秘密鍵d、定点Q、公開鍵dQなどの情報を保持している。コンピュータB101は、秘密鍵dなどの情報を保持している。
(P m + k (dQ) ) - d (kQ) ··· ( Equation 10)
Here, P m is a message, k is a random number, d is a constant indicating a secret key (corresponding to a scalar value), Q is a fixed point, and dQ is a point indicating a public key (corresponding to a scalar multiple). The computer A101 holds information such as a secret key d, a fixed point Q, and a public key dQ. The computer B101 holds information such as a secret key d.
データ141は、コンピュータA101からコンピュータB121に送信される。データ143は、コンピュータB121からコンピュータA101に送信される。ネットワーク142には、データとして、前記Pm+k(dQ),kQのみが送信され、メッセージPmを復元(復号化)するためには、kdQ、すなわちkQのd倍を計算する必要がある。ところが、秘密鍵dはネットワーク142には送信されないため、秘密鍵dを保持しているものだけが、メッセージPmを復元できることになる。
コンピュータA101は、CPU113やコプロセッサ114などの演算装置、RAM103、ROM106や外部記憶装置107などの記憶装置、コンピュータ外部とのデータ入出力を行う入出力インタフェース110を装備しており、外部にはコンピュータA101をユーザが操作するための、出力装置であるディスプレイ108、入力装置であるキーボード109、その他図示しない着脱可能な可搬型記憶媒体の読み書き装置などが接続されている。
The computer A101 is equipped with an arithmetic device such as a
更に、コンピュータA101は、RAM103、ROM106や外部記憶装置107などの記憶装置によって、記憶部102を実現している。CPU113やコプロセッサ114などの演算装置が、記憶部102に格納された本実施の形態のプログラムを実行することにより、処理部111として、データ処理部112、スカラー倍計算部115とそれらに含まれる各処理部を実現する。本実施の形態のプログラムは、スカラー倍計算方法に従った処理を行わせるための命令などが記述されたものである。データ処理部112は、各実施の形態に応じたメッセージ処理を行うもので、例えば実施の形態1においては暗号化処理部112として機能し、入力されたメッセージの暗号化を行う。
Further, the computer A101 realizes the
CPU113は、コンピュータA101全体の制御を行う。コプロセッサ114は、CPU113と協調して、特に数値演算を行う。各実施の形態では、これら2つの演算装置を利用してスカラー倍計算処理を含む目的の処理すなわち暗号化処理などを行う。ハードウェア構成としてはこれに限らずに、例えば1つのプロセッサを有する構成で目的の処理を行うようにすることも勿論可能である。また、PCなどの汎用コンピュータ上で本発明の実施の形態のプログラムを実行させて他の処理と共に目的の処理を行わせる構成や、目的の処理を専用に実行するコンピュータ構成などのいずれも可能である。前記目的の処理とは、スカラー倍計算処理や、スカラー倍計算処理を用いてなされる暗号化処理、復号化処理、署名生成処理、署名検証処理、及び鍵交換などのデータ共有のためのデータ生成処理などを指し、これらについては後述する実施の形態で説明される。
The
スカラー倍計算部115は、データ処理部112からの依頼に従って、スカラー倍計算処理を含む処理を行う。スカラー倍計算部115は、実施の形態1などでは、暗号化処理部112で暗号化を行うのに必要なパラメータを計算する。
The scalar
記憶部102は、定数104、秘密情報105などを記憶している。定数104は、例えば楕円曲線の定義式や楕円曲線上の定点などである。秘密情報105は、秘匿しなければならない情報であり、例えば秘密鍵の情報である。
The
コンピュータB121は、コンピュータA101と同様のハードウェア構成を備える。コンピュータB121は、CPU133、コプロセッサ134、RAM123、ROM126、外部記憶装置127、入出力インタフェース130などを装備しており、外部にはディスプレイ128、キーボード129などが接続されている。なお、コンピュータB121をコンピュータA101と異なる構成として情報処理システムを構成することも可能である。
The computer B121 has the same hardware configuration as the computer A101. The computer B121 includes a
更に、コンピュータB121は、RAM123、ROM126や外部記憶装置127などの記憶装置によって、記憶部122を実現している。CPU133やコプロセッサ134などの演算装置が、記憶部122に格納された本実施の形態のプログラムを実行することにより、処理部131として、データ処理部132、スカラー倍計算部135とそれらに含まれる各処理部を実現する。データ処理部132は、各実施の形態に応じたメッセージ処理を行うもので、実施の形態1などにおいては復号化処理部132として機能し、暗号化されたメッセージである暗号文(データ141に対応する)の復号化を行う。
Further, the computer B121 realizes the
スカラー倍計算部135は、データ処理部132からの依頼に従って、スカラー倍計算処理を含む処理を行う。スカラー倍計算部135は、実施の形態1などでは、復号化処理部132で復号化を行うのに必要なパラメータを計算する。記憶部122は、定数124(例えば楕円曲線の定義式や楕円曲線上の定点である)、秘密情報125(例えば秘密鍵の情報である)などを記憶している。
The scalar
なお、上記各プログラムは、あらかじめ、上記コンピュータ(101,121)内の記憶部(102,122)に格納されていても良いし、必要なときに、入出力インタフェース(110,130)と上記コンピュータ(101,121)が利用可能な媒体を介して、他の装置から上記記憶部(102,122)に導入されてもよい。上記利用可能な媒体とは、例えば、入出力インタフェース(110,130)に対して着脱/入出力が可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波)を指す。 Each program may be stored in advance in the storage unit (102, 122) in the computer (101, 121), or when necessary, the input / output interface (110, 130) and the computer. (101, 121) may be introduced into the storage unit (102, 122) from another device via a usable medium. The usable medium refers to, for example, a storage medium that can be attached / detached to / from the input / output interface (110, 130), or a communication medium (that is, a network or a carrier wave that propagates through the network).
<暗号化シーケンス>
次に、図2は、コンピュータA101及びコンピュータB121の各処理部間での情報の受け渡しの様子を示したシーケンス図である。まず、図2を参照しながら、前記図1のコンピュータA101が、入力されたメッセージを暗号化する場合の動作について説明する。処理対象となるメッセージは、ディジタル化されたデータであればよく、テキスト、画像、映像、音などの種類は問わない。
<Encryption sequence>
FIG. 2 is a sequence diagram showing how information is transferred between the processing units of the
コンピュータA101において、まず、データ処理部(すなわち暗号化処理部)112は、入出力インタフェース110を介して、入力メッセージ(ステップS204)に対応する平文メッセージを受け取ると、入力された平文メッセージのビット長が、あらかじめ定めたビット長か否かを判断する。所定のビット長より長い場合には、所定のビット長となるように平文メッセージを区切る。
In the computer A101, first, when the data processing unit (that is, the encryption processing unit) 112 receives the plaintext message corresponding to the input message (step S204) via the input /
以下、所定のビット長に区切られている部分メッセージ(単にメッセージともいう)について説明する。暗号化処理部112は、メッセージのビット列によって表される数値をx座標(xm)に持つ楕円曲線上の点Pmのy座標の値(ym)を計算する。コブリッツ曲線は(式4)で表わされるので、これよりy座標の値を求めることができる。
Hereinafter, a partial message (also simply referred to as a message) divided into a predetermined bit length will be described. The
次に、暗号化処理部112は、乱数kを生成する。そして、記憶部102に格納されている定数104から読み出した公開鍵dQと点Qのx座標と(S205)、求めたy座標の値と生成した乱数kとを、スカラー倍計算部115へ送る(S206)。スカラー倍計算部115は、点Qのx座標、y座標の値、及び乱数kによるスカラー倍点(xd1,yd1)=kQと、公開鍵dQのx座標、y座標の値、及び乱数kによるスカラー倍点(xd2,yd2)=k(dQ)とを計算し、計算されたスカラー倍点を、暗号化処理部112へ送る(S207)。
Next, the
暗号化処理部112は、スカラー倍計算部115から送られたスカラー倍点を用いて、暗号化処理を行う。例えば、コブリッツ曲線では、kQとPm+k(dQ)を計算する。すなわち、下記(式11)〜(式13)を計算し、暗号化されたメッセージxe1,xe2を得る。
The
xe1=xd1 ・・・(式11)
xe2=λ2+λ+x1+xd2+a ・・・(式12)
λ=(y1+yd2)/(x1+xd2) ・・・(式13)
コンピュータA101は、暗号化処理部112で暗号化された1つ以上の部分メッセージから、暗号化された出力メッセージ(S208に対応する)を組み立てる。
x e1 = x d1 (Expression 11)
x e2 = λ 2 + λ + x 1 + x d2 + a (Formula 12)
λ = (y 1 + y d2 ) / (x 1 + x d2 ) (Expression 13)
The computer A101 assembles an encrypted output message (corresponding to S208) from one or more partial messages encrypted by the
コンピュータA101は、暗号化された出力メッセージを、前記図1のデータ141として入出力インタフェース110より出力し、ネットワーク142を介してコンピュータB121へ転送する。
The
なお、図2における記憶部102からデータ処理部112への情報読み出し(S205)のタイミングは、スカラー倍計算部115へ当該情報を送る前であれば、入力メッセージ(S204)を受け付ける前であっても良い。
Note that the timing of reading information (S205) from the
<復号化シーケンス>
次に、図2を参照しながら、コンピュータB121が、暗号化されたメッセージ(データ141)を復号化する場合の動作について説明する。
<Decoding sequence>
Next, the operation when the
コンピュータB121において、まず、復号化処理部132は、入出力インタフェース130を介して、暗号化されたデータ141が入力されると(S204)、入力された暗号化されたデータ141のビット長が、あらかじめ定めたビット長か否かを判断する。所定のビット長より長い場合には、所定のビット長となるように、暗号化されたデータ141を区切る。
In the computer B121, first, when the
以下、所定のビット長に区切られている部分データ(単にデータともいう)について説明する。データ141のビット列によって表される数値をx座標に持つ楕円曲線上のy座標の値を計算する。暗号化されたメッセージがxe1,xe2のビット列であり、コブリッツ曲線ではy座標の値ye1,ye2は、下記(式14),(式15)から得ることができる。
Hereinafter, partial data (also simply referred to as data) divided into a predetermined bit length will be described. The value of the y coordinate on the elliptic curve having the numerical value represented by the bit string of the
ye1 2+xe1ye1=xe1 3+axe1 2+1,a=0 or 1 ・・・(式14)
ye2 2+xe2ye2=xe2 3+axe2 2+1,a=0 or 1 ・・・(式15)
復号化処理部132は、記憶部122(図2の102)に格納されている秘密情報125から読み出した秘密鍵dと(S205)、x座標、y座標の値(xe1,ye1)を、スカラー倍計算部135(図2の115)へ送る(S206)。スカラー倍計算部135は、x座標、y座標の値、秘密鍵dからスカラー倍点(xd3,yd3)=d(xe1,ye1)を計算する。スカラー倍計算部135は、計算されたスカラー倍点(xd3,yd3)を復号化処理部132へ送る(S207)。
y e1 2 + x e1 y e1 = x e1 3 + ax e1 2 +1, a = 0 or 1 (Equation 14)
y e2 2 + x e2 y e2 = x e2 3 + ax e2 2 +1, a = 0 or 1 (Equation 15)
The
復号化処理部132は、スカラー倍計算部135から送られたスカラー倍点(xd3,yd3)を用いて、復号化処理を行う。例えば、暗号化されたメッセージが、xe1,xe2のビット列であり、コブリッツ曲線では、(Pm+k(dQ))−d(kQ)=(xe2,ye2)−(xd3,yd3)を計算することにより達成する。すなわち、下記(式16),(式17)を計算し、暗号化される前の部分メッセージxmに相当するxf1を得る。
The
xf1=λ2+λ+xe2+xd3+a ・・・(式16)
λ=(ye2+yd3)/(xe2+xd3) ・・・(式17)
コンピュータB121は、復号化処理部132で復号化された部分メッセージから平文メッセージを組み立て、出力メッセージ(S208)として、入出力インタフェース130を介して、ディスプレイ128などから出力する。
x f1 = λ 2 + λ + x e2 + x d3 + a (Expression 16)
λ = (y e2 + y d3 ) / (x e2 + x d3 ) (Expression 17)
The
次に、コンピュータB121が復号化処理を行う場合における、スカラー倍計算部135の処理を、以下に示す各実施の形態において詳細に説明する。各実施の形態で、本発明の実施の形態における復号化装置として機能するコンピュータB121は、本発明の実施の形態における復号化方法に従った復号化処理を行う。
Next, the process of the scalar
(実施の形態1)
本発明の実施の形態1におけるスカラー倍計算方法、スカラー倍計算装置及びプログラムについて、図1〜図6を参照しながら説明する。
(Embodiment 1)
A scalar multiplication calculation method, scalar multiplication calculation apparatus, and program according to
図3は、実施の形態1で用いるスカラー倍計算部115の機能ブロック構成を示す。図3に示すスカラー倍計算部115(図1のコンピュータB121のスカラー倍計算部135に対応する)は、エンコード部302、前計算部303、実計算部304からなる。エンコード部302は、剰余取得部321、剰余変換部322、繰り返し判定部323、δ剰余変換部324、Ψ関数計算部325、格納部326からなる。前計算部303は、加算部331、2倍算部332、繰り返し判定部333からなる。実計算部304は、ビット値判定部341、加算部342、τ倍算部343、繰り返し判定344からなる。
FIG. 3 shows a functional block configuration of the
実施の形態1で用いるスカラー倍計算方法として、スカラー倍計算部115がスカラー値d及び楕円曲線上の点Pから、楕円曲線におけるスカラー倍点dPを計算する第1の計算方法を説明する。スカラー倍計算部115が復号化処理部132からスカラー値dと楕円曲線上の点Pを受け取ると、エンコード部302は、入力されたスカラー値dを数値列dw[j]にエンコードする。
As a scalar multiplication calculation method used in the first embodiment, a first calculation method in which the scalar
これは、下記(式18)を満たす整数d’に対して、下記(式19),(式20)を満たすdw[j]に、スカラー値dを変換することに相当する。 This is equivalent to converting the scalar value d into d w [j] satisfying the following (Expression 19) and (Expression 20) with respect to the integer d ′ satisfying the following (Expression 18).
dP=d’P ・・・(式18)
d’=dw[2n]τ2n+dw[2n−1]τ2n−1+……+dw[j]τj+……+dw[0] ・・・(式19)
−2w<dw[j]<2w ・・・(式20)
ここで、nはスカラー値dを2進表記した場合のビット長であり、wはあらかじめ定めた正の整数で、ウィンドウ幅と呼ばれる。計算時間(処理速度)を優先する場合はwを大きな値にする。メモリ使用量を小さくする場合はwを小さな値にする。
dP = d′ P (Equation 18)
d ′ = d w [2n] τ 2n + d w [2n−1] τ 2n−1 +... + d w [j] τ j +. + d w [0] (Equation 19)
−2 w <d w [j] <2 w (Equation 20)
Here, n is a bit length when the scalar value d is expressed in binary, and w is a predetermined positive integer, which is called a window width. When giving priority to the calculation time (processing speed), w is set to a large value. To reduce the memory usage, w is set to a small value.
前計算部303は、入力された楕円曲線上の点Pから、前計算テーブルを作成する。前計算テーブルは、{P,3P,5P,……,(2w−1)P}により構成される。
The
実計算部304は、数値列dw[j]にエンコードされたスカラー値と楕円曲線上の点Pから、前計算テーブルを用いてスカラー倍点dPを計算する。
The
次に、エンコード部302、前計算部303、実計算部304の行う各処理について詳細に説明する。まず、図4を用いて、エンコード部302がスカラー値dをエンコードする方法を説明する。図4は、エンコード部302でのエンコード処理を示すフロー図である。
Next, each process performed by the
まず、δ剰余変換部324は、変数d’にd mod δを代入する(ステップS401)。ただし、δとスカラー値dに対してd mod δの計算方法については、非特許文献4に記載されている。d’=d mod δは、下記(式21)なる形で表される。ここで、d0,d1は共に整数である。
First, the δ
d’=d0+d1τ ・・・(式21)
次に、変数iを0で初期化する(S402)。繰り返し判定部323は、変数d’に対して、|Rpart(d’)|<2wかつTpart(d’)=0であるかどうかを判定する(S403)。ここで、スカラー値d’=d0+d1τに対して、d’の実部分Rpart(d’)、及びτ部分Tpart(d’)は、下記(式22),(式23)で与えられる整数である。
d ′ = d 0 + d 1 τ (Expression 21)
Next, the variable i is initialized with 0 (S402). Repetition determining unit 323 'to, | rpart (d' variable d) | <2 w and determines whether Tpart (d ') = 0 ( S403). Here, with respect to the scalar value d ′ = d 0 + d 1 τ, the real part Rpart (d ′) and the τ part Tpart (d ′) of d ′ are given by the following (Expression 22) and (Expression 23). Is an integer.
Rpart(d’)=d0 ・・・(式22)
Tpart(d’)=d1 ・・・(式23)
前記ステップS403で2つの条件が共に成立すれば(TRUE)、ステップS421へ移る。上記いずれかの条件が成立しない場合(FALSE)、ステップS411へ移る。
Rpart (d ′) = d 0 (Formula 22)
Tpart (d ′) = d 1 (Equation 23)
If the two conditions are both satisfied in step S403 (TRUE), the process proceeds to step S421. If any of the above conditions is not satisfied (FALSE), the process proceeds to step S411.
前記ステップS411では、Ψ関数計算部325は、スカラー値d’の実部分Rpart(d’)の、2w+1による剰余をxRに、スカラー値d’のτ部分Tpart(d’)の、2w+1による剰余をxTに、それぞれ代入する。
In the step S411, [psi
Ψ関数計算部325は、下記(式24)を計算し変数uに格納する(S412)。なお記号*は乗算を表わす。
The Ψ
Ψw(d’)=(xR+xT*tw+1 mod 2w+1)−2w ・・・(式24)
ここで、tw+1は、下記(式25)で与えられる整数であり、(式25)におけるUw+1は、下記(式26)で定まる整数である。
Ψ w (d ′) = (x R + x T * t w + 1 mod 2 w + 1 ) −2 w (Equation 24)
Here, tw + 1 is an integer given by (Expression 25) below, and U w + 1 in (Expression 25) is an integer determined by (Expression 26) below.
tw+1=2UwUw+1 −1 mod 2w+1 ・・・(式25)
U0=0,U1=1,Uw+1=μUw−2Uw−1 ・・・(式26)
次に、格納部326は、dw[i],dw[i+1],……,dw[i+w-1]に、それぞれ、u,0,0,……,0を格納する(S413)。次に、Ψ関数計算部325は、(d’−u)/τwを計算し、その結果をd’に格納する(S414)。次に、変数iをw増加させ、ステップS403へ戻る(S415)。
t w + 1 = 2U w U w + 1 −1 mod 2 w + 1 (Equation 25)
U 0 = 0, U 1 = 1, U w + 1 = μU w −2U w−1 (Equation 26)
Next, the
一方、ステップS421では、格納部326は、dw[i],dw[i+1],……,dw[n+w+a+2]に、それぞれ、Rpart(d’),0,0,……,0を格納する。次に、エンコード部302は、dw[n+w+a+2],……,dw[0]を、実計算部304へ出力する(S422)。
On the other hand, in step S421, the storage unit 326, d w [i], d w [i + 1], ......, a d w [n + w + a + 2], respectively, Rpart (d '), 0 , 0,..., 0 are stored. Next, the
なお、前記ステップS414で、τでの除算を行うには、次のようにすればよい。d’を入力とすると、τでの除算結果d’/τは、下記(式27)で与えられる。 In order to perform division by τ in step S414, the following may be performed. When d ′ is input, the division result d ′ / τ by τ is given by the following (formula 27).
d’/τ=Tpart(d’)+Rpart(d’)(μ−τ)/2 ・・・(式27)
また、変数iの上限がn+w+a+2となる理由は以下の通りである。スカラー値d’を(式19)のように変換した際、変数iがn+a+3以下になることが、非特許文献3に記載されている。このスカラー値d’の変換後の桁数はwの倍数になっていなければならない。そのため、w個の数値列dw[i],dw[i+1],……,dw[i+w-1]を組にしていくと、上位の桁数がw個より少ない可能性があり、その一番少ない場合はn+a+3桁目だけが残るという可能性である。従って、スカラー値d’を(式19)のように変換した際、変数iの値の上限はn+w+a+2となることがわかる。
d ′ / τ = Tpart (d ′) + Rpart (d ′) (μ−τ) / 2 (Equation 27)
The reason why the upper limit of the variable i is n + w + a + 2 is as follows.
次に、図5を用いて、前計算部303が楕円曲線上の点から前計算テーブルを作成する方法を説明する。図5は、前計算部303での前計算テーブルの作成処理を示すフロー図である。
Next, a method in which the
まず、2倍算部332は、点Pを2倍し、その結果を2Pに格納する(S501)。なお2倍算を関数ECDBLで表している。次に、変数jに初期値1を代入する(S502)。次に、繰り返し判定部333により、jが2wより小さいかどうかを判定する(S503)。j<2wの場合は(TRUE)、ステップS504へ移る。j≧2wの場合は(FALSE)、ステップS511へ移る。
First, the doubling
ステップS504では、加算部331は、点jPと点2Pを加算し、その結果を(j+2)Pに格納する。なお加算を関数ECADDで表わしている。次に、変数jを2増加させ、ステップS503へ戻る(S505)。
In step S504, the adding
一方、ステップS511では、{P,3P,……,(2w−1)P}を前計算テーブルとして出力する。 On the other hand, in step S511, {P, 3P,..., (2 w −1) P} is output as a pre-calculation table.
上記処理において、加算は(式1)〜(式3)を用いて、2倍算は(式1),(式2),(式5)を用いて、それぞれ計算される。なお、加算及び2倍算の計算には、これらの式を用いる以外にも、公知技術である射影座標やヤコビアン座標における計算公式を用いることもできる。 In the above processing, addition is calculated using (Expression 1) to (Expression 3), and doubling is calculated using (Expression 1), (Expression 2), and (Expression 5). In addition to the calculation of addition and doubling, a calculation formula in projective coordinates or Jacobian coordinates, which is a known technique, can be used.
また、楕円曲線上の点Q=(x,y)に対して、楕円曲線上の加算に関する逆元の点−Qは、コブリッツ曲線の場合、−Q=(x,x+y)と表されるため、点Qの座標が与えられていれば容易に計算できる。そのため、点{P,3P,……,(2w−1)P}のみを前計算テーブルとして格納する。その後の実計算部304が行う計算で必要となる点{−P,−3P,……,−(2w−1)P}については、それら格納された点から導出すればよいので、前計算テーブルには格納する必要はない。なお、上記点{−P,−3P,……,−(2w−1)P}の導出を省くために、それら点のy座標の値のみを前計算テーブルに格納しておいてもよい。
Further, in contrast to the point Q = (x, y) on the elliptic curve, the inverse point -Q relating to the addition on the elliptic curve is expressed as -Q = (x, x + y) in the case of the Kobritz curve. If the coordinates of the point Q are given, it can be easily calculated. Therefore, only the points {P, 3P,..., (2 w −1) P} are stored as the pre-calculation table. Since the points {−P, −3P,..., − (2 w −1) P} necessary for the subsequent calculation performed by the
なお、前計算部303の行う前計算テーブルの作成処理は、点{P,3P,……,(2w−1)P}が計算されればよい。そのため、非特許文献である、Cohen, H., A course in computational algebraic number theory, GTM138, Springer -Verlag, (1993)の481ページに記載されているモンゴメリトリックによる逆元演算共通化方法を用いて、楕円曲線演算で必要となる逆元演算の計算の共通化を行うことにより、高速化を図ってもよい。
Note that the pre-calculation table creation process performed by the
また、点Pが固定点である場合、前計算部303の行う前計算テーブルの作成処理は、ただ一度行えばよい。そのため、一旦、点{P,3P,……,(2w−1)P}を計算すれば、それ以降のスカラー倍計算では、点{P,3P,……,(2w−1)P}を再計算する必要はない。
When the point P is a fixed point, the pre-calculation table creation process performed by the
最後に、図6を用いて、実計算部304が、エンコードされたスカラー値、楕円曲線上の点及び前計算テーブルから、楕円曲線におけるスカラー倍点を計算する方法を説明する。図6は、実計算部304でのスカラー倍点の計算処理を示すフロー図である。
Finally, a method in which the
まず、実計算部304は、変数cに、初期値n+w+a+2を代入する(S601)。次に、繰り返し判定部344は、dw[c]が0か非0かを判定する(S602)。dw[c]が0の場合はステップS603へ移る。dw[c]が0でなければステップS611へ移る。
First, the
ステップS603では、変数cを1減少させ、ステップS602へ戻る。 In step S603, the variable c is decreased by 1, and the process returns to step S602.
一方、ステップS611では、点Qに、dw[c]Pを代入する。次に、変数jに、初期値c−1を代入する(S612)。次に、繰り返し判定部344は、jが0より小さいかどうかを判定する。jが0より小さい場合はステップS621へ移る。jが0以上の場合はステップS614へ移る(S613)。
On the other hand, in step S611, d w [c] P is substituted for the point Q. Next, the initial value c-1 is substituted into the variable j (S612). Next, the
ステップS614では、τ倍算部343は、点Qをτ倍し、点Qに再び格納する。次に、繰り返し判定部344は、dw[j]が0か非0かを判定する(S615)。dw[j]が0の場合はステップS617へ移る。dw[j]が0でなければステップS616へ移る。
In step S614, the
ステップS616では、加算部342は、点Qとdw[j]Pを加算する。ただし、dw[j]が負の場合は(−dw[j])Pのy座標を反転したものを用いて加算を行う。そして加算の結果を点Qに格納し、ステップS617へ移る。
In step S616, the adding
なお、dw[j]が0でない場合は、dw[j]は(式20)を満たす奇数である。そのため、dw[j]Pもしくは(−dw[j])Pのいずれかが、前計算テーブルに必ず存在する。 When d w [j] is not 0, d w [j] is an odd number that satisfies (Equation 20). Therefore, either d w [j] P or (−d w [j]) P always exists in the pre-calculation table.
ステップS617では、変数jを1減少させ、ステップS613へと戻る。一方、ステップS621では、点Qを出力する。処理は以上である。 In step S617, the variable j is decreased by 1, and the process returns to step S613. On the other hand, in step S621, the point Q is output. This is the end of the process.
以上の処理において、エンコード部302が行う処理により出力される数値列dw[j]は、(式18)〜(式20)を満たす。この理由は次の通りである。
In the above processing, the numerical sequence d w [j] output by the processing performed by the
前記図4のステップS401でd’にd mod δを代入している。そのため、適当な数kを用いてd’=d+kδと表わすことができる。他方、コブリッツ曲線上ではδPは無限遠点となることが知られており、そのため(式18)が成立する。 In step S401 of FIG. 4, d mod δ is substituted for d ′. Therefore, d ′ = d + kδ can be expressed using an appropriate number k. On the other hand, it is known that δP is a point at infinity on the Kobritz curve, so (Equation 18) holds.
ステップS403からステップS415のループにおいて、j回目のd’の値をd’[j]、uの値をu[j]とおく。すなわち、ステップS414で、下記(式28)が計算される。 In the loop from step S403 to step S415, the j'th d 'value is set to d' [j], and the u value is set to u [j]. That is, in step S414, the following (formula 28) is calculated.
d’[j+1]=(d’[j]−u[j])/τw ・・・(式28)
0回目のループでは、下記(式29)となる。1回目のループでは、下記(式30)となる。以下同様にして、j回目のループでは、下記(式31)となる。
d ′ [j + 1] = (d ′ [j] −u [j]) / τ w (Equation 28)
In the 0th loop, the following (formula 29) is obtained. In the first loop, the following (Equation 30) is obtained. Similarly, in the j-th loop, the following (formula 31) is obtained.
d’=d’[0] ・・・(式29)
d’=d’[1]τw+u[0] ・・・(式30)
d’=(……(d’[j]τw+u[j])τw+……+u[1])τw+u[0] ・・・(式31)
dw[jw]以外のdw[i]には0が割り当てられていることに注意すれば、d’が(式19)を満たすことがわかる。
d ′ = d ′ [0] (Equation 29)
d ′ = d ′ [1] τ w + u [0] (Equation 30)
d ′ = (…… (d ′ [j] τ w + u [j]) τ w + …… + u [1]) τ w + u [0] (Equation 31)
If it is noted that d w [i] other than d w [jw] is assigned 0, it can be seen that d ′ satisfies (Equation 19).
ステップS412で計算されるu[j]は、下記(式32)の範囲となることは容易にわかる。 It can be easily understood that u [j] calculated in step S412 falls within the following range (formula 32).
−2w <u[j]<2w ・・・(式32)
従って、0以外のdw[i]はu[j]が割り当てられる。従って、(式20)を満たす。
-2 w <u [j] <2 w (Expression 32)
Accordingly, u [j] is assigned to d w [i] other than 0. Therefore, (Equation 20) is satisfied.
また、エンコード部302が行う処理で計算されるu[j]はj=0を除きすべて奇数となる。この理由は次の通りである。
Further, u [j] calculated in the process performed by the
前記ステップS411で、Rpart(d’[j])が奇数であれば、tw+1は偶数であることから、u[j]は奇数となる。一方、ステップS414で、d’[j+1]=(d’[j]−u[j])/τwが計算される。下記(式33)が成り立つため、Rpart(d’[j+1])は奇数となる。 If Rpart (d ′ [j]) is an odd number in step S411, tw + 1 is an even number, and u [j] is an odd number. On the other hand, in step S414, d '[j + 1 ] = (d' [j] -u [j]) / τ w is calculated. Since the following (formula 33) holds, Rpart (d ′ [j + 1]) is an odd number.
d’[j]−((d’[j] mod τw)−τw) mod τw+1=τw ・・・(式33)
従って、j=0を除き、u[j]はすべて奇数である。
d ′ [j] − ((d ′ [j] mod τ w ) −τ w ) mod τ w + 1 = τ w (Expression 33)
Therefore, except for j = 0, u [j] are all odd numbers.
なお、u[0]も奇数とするためには、スカラー値dの実部分Rpart(d)が奇数であればよい。そのためには、入力されたスカラー値dの実部分Rpart(d)が偶数の時は、d+1をあらためてスカラー値nとしてエンコードする。すなわち、dを奇数に変換する。そして、スカラー倍点nPを計算する。下記(式34)が成り立つため、nPから点Pを引き、その値をスカラー倍点dPとして出力すればよい。 In order to make u [0] odd, the real part Rpart (d) of the scalar value d may be odd. For this purpose, when the real part Rpart (d) of the input scalar value d is an even number, d + 1 is re-encoded as the scalar value n. That is, d is converted to an odd number. Then, a scalar multiple nP is calculated. Since the following (formula 34) holds, the point P is subtracted from nP, and the value may be output as the scalar multiple dP.
nP=(d+1)P=dP+P ・・・(式34)
また、入力されたdの実部分Rpart(d)が奇数の時は、d+τをあらためてスカラー値nとしてエンコードし、下記(式35)を利用して、スカラー倍点dPを求めてもよい。この場合、dがいずれの場合も、行う処理が一致するという利点がある。
nP = (d + 1) P = dP + P (Formula 34)
When the real part Rpart (d) of the input d is an odd number, d + τ may be encoded again as a scalar value n, and the scalar multiple dP may be obtained using the following (Equation 35). In this case, there is an advantage that the processing to be performed is the same in any case of d.
nP=(d+τ)P=dP+τP ・・・(式35)
また、実計算部304が出力する点Qはスカラー倍点dPに等しい。この理由は次の通りである。
nP = (d + τ) P = dP + τP (Equation 35)
Further, the point Q output from the
前記図6のステップS613において、点Qが、下記(式35)と表されるとする。ここで、cはdw[i]≠0を満たす最大のiである。 In step S613 of FIG. 6, the point Q is represented by the following (formula 35). Here, c is the maximum i that satisfies d w [i] ≠ 0.
(dw[c]τc−j−1+dw[c−1]τc−j−2+……+dw[j+1])P ・・・(式36)
このとき、次にステップS613に来る時も点Qは(式36)を満たすことを以下で示す。点Qは、ステップS614でτ倍され、dw[j]が0でなければステップS616でdw[j]Pが加算される。そのためステップS616の直後では、点Qの値は、下記(式37)となる。
(D w [c] τ c−j−1 + d w [c−1] τ c−j−2 +... + D w [j + 1]) P (Expression 36)
At this time, it will be shown below that the point Q satisfies (Equation 36) also when it comes to step S613 next time. The point Q is multiplied by τ in step S614, and d w [j] P is added in step S616 if d w [j] is not zero. Therefore, immediately after step S616, the value of the point Q is as follows (Formula 37).
(dw[c]τc−j+dw[c−1]τc−j−1+……+dw[j+1]τ+dw[j])P ・・・(式37)
従って、dw[j]=0の時も含めて、ステップS617の直前で、点Qは(式37)を満たす。ステップS617でjが1減少するので、(式37)のjにj+1を代入すると(式36)になる。すなわち、次にステップS613に来る時も点Qは(式36)を満たす。
(D w [c] τ c−j + d w [c−1] τ c−j−1 +... + D w [j + 1] τ + d w [j]) P (Expression 37)
Therefore, the point Q satisfies (Expression 37) immediately before step S617, including when d w [j] = 0. Since j decreases by 1 in step S617, substituting j + 1 for j in (Expression 37) yields (Expression 36). That is, the point Q satisfies (Equation 36) when it comes to step S613 next time.
j>cに対するdw[j]の値は0であるので、ステップS621で出力される点Qの値は、下記(式38)に等しい。 Since the value of d w [j] for j> c is 0, the value of the point Q output in step S621 is equal to the following (formula 38).
(dw[c]τc+dw[c−1]τc−1+……+dw[1]τ+dw[0])P ・・・(式38)
実計算部304に入力されるスカラー値は、エンコード部302によりエンコードされたdw[j]であるので、そのdw[j]は(式20)を満たす。従って、Q=dPである。
(D w [c] τ c + d w [c−1] τ c−1 +... + D w [1] τ + d w [0]) P (Equation 38)
Since the scalar value input to the
また、上記スカラー倍計算方法は、サイドチャネル攻撃に対する防御法に関しても有効である。この理由は次の通りである。 The scalar multiplication method is also effective for a defense method against side channel attacks. The reason is as follows.
エンコード部302によりスカラー値dは数値列dw[i]にエンコードされる。i=n+w+a+2からi=0までdw[i]を左から右に並べた数値列dw[n+w+a+2]……dw[0]は、下記(式39)のようなパターンで表わされる。
The
|0……0x|0……0x|……|0……0x| ・・・(式39)
ここで、各xは各々非0の値であり、それぞれ上記u[j]に対応する。記号|はパターンにおけるブロックの区切りを示す。ブロック|0……0x|はw個の値であり、“0……0”は値がw−1個連続することを示す。
| 0 …… 0x | 0 …… 0x | …… | 0 …… 0x | (Formula 39)
Here, each x is a non-zero value and corresponds to the above u [j]. The symbol | indicates a block delimiter in the pattern. The block | 0... 0x | is w values and “0... 0” indicates that w−1 values are continuous.
実計算部304がスカラー倍点を計算する際に、ステップS613〜S617の繰り返し処理において、ブロック|0……0x|に対応する楕円曲線演算は、|T……TA|、すなわちw−1回のTの後にAとなる。ただし、Tはτ倍算を、AはECADD(楕円曲線上の加算)をそれぞれ表わす。従って、すべてのスカラー値に対して、実行する楕円曲線演算は、下記(式40)のように固定されている。
When the
|T……TA|T……TA|……|T……TA| ・・・(式40)
そのため、(式40)のみからは、スカラー値dに関する情報を引き出すことができない。すなわちサイドチャネル攻撃に対する防御性を有している。
| T …… TA | T …… TA | …… | T …… TA | (Formula 40)
Therefore, information relating to the scalar value d cannot be extracted from (Equation 40) alone. That is, it has protection against side channel attacks.
なお、実施の形態1に関して、非特許文献2に記載されているランダム化射影座標を併用してスカラー倍計算を行うこと(処理1とする)、スカラー倍計算を高速に行うために、前計算テーブルのサイズを大きくしてスカラー倍計算を行うこと(処理2とする)、及び、前計算テーブルに格納されている点が読み出されるたびに、再びランダム化して、前計算テーブルに書き込むこと(処理3とする)のいずれを行ってもよい。上記ランダム化を用いる処理によって、前計算テーブルに対する格納データがランダム化される。
In addition, with respect to the first embodiment, in order to perform scalar multiplication calculation using the randomized projection coordinates described in
以上の通り、上記第1の計算方法は、コブリッツ曲線に対して適用可能で、サイドチャネル攻撃に有用な情報を与えないのでサイドチャネル攻撃に対して耐性があり、メモリ使用量及び処理高速性にも優れるという特徴及び効果がある。 As described above, the first calculation method can be applied to the Kobritz curve and does not give useful information for the side channel attack, so it is resistant to the side channel attack, and the memory usage and processing speed are improved. There is a feature and an effect that it is excellent.
(実施の形態2)
本発明の実施の形態2におけるスカラー倍計算方法、スカラー倍計算装置及びプログラムについて、図1〜図3,図7,図8を参照しながら説明する。実施の形態2では、前記図3で示されるスカラー倍計算部115の機能ブロック構成を用いる。実施の形態2におけるスカラー倍計算部115(図1のスカラー倍計算部135に対応する)は、実施の形態1と同様の処理部を有する構成である。ただし、実施の形態2では、前計算部303において前記2倍算部332ではなくτ倍算部332を具備するものとする。
(Embodiment 2)
A scalar multiplication calculation method, scalar multiplication calculation apparatus, and program according to
実施の形態2で用いるスカラー倍計算方法として、スカラー倍計算部115がスカラー値d及び楕円曲線上の点Pから、楕円曲線におけるスカラー倍点dPを計算する第2の計算方法を説明する。第2の計算方法では、2倍算を用いずに加算とτ倍算を用いて前計算テーブルを作成できるという特徴がある。そのため、前計算部303は、2倍算部を具備する必要がない。
As a scalar multiplication calculation method used in the second embodiment, a second calculation method in which the scalar
スカラー倍計算部115が復号化処理部132からスカラー値dと楕円曲線上の点Pを受け取ると、エンコード部702は、入力されたスカラー値dを数値列dw[j]にエンコードする。ただし、実施の形態2では、dw[j]は(式19)ではなく、下記(式41)を満たす。ただし(式41)の各符号はすべての組み合わせを表わす(すなわち正負いずれをとってもよい)ものとする。
When the
dw[j]=±1±τ±τ2±……±τw−1 ・・・(式41)
前計算部303は、入力された楕円曲線上の点Pから、前計算テーブルを作成する。前計算テーブルは、P±τP±Pτ2±……±τw−1Pより構成される。
d w [j] = ± 1 ± τ ± τ 2 ± …… ± τ w−1 (Formula 41)
The
実計算部304は、エンコードされたスカラー値と楕円曲線上の点Pから、前計算テーブルを用いてスカラー倍点dPを計算する。
The
次に、エンコード部302、前計算部303、実計算部304の行う各処理について詳細に説明する。まず、図7を用いて、エンコード部302がスカラー値dをエンコードする方法を説明する。図7は、エンコード部302でのエンコード処理を示すフロー図である。
Next, each process performed by the
まず、変数iを0で初期化する(S701)。次に、δ剰余変換部324は、変数d’にd mod δを代入し、変数c0にRpart(d’)、変数c1にTpart(d’)をそれぞれ代入する(S702)。
First, the variable i is initialized with 0 (S701). Next, the δ
繰り返し判定部323は、条件{c0 2+μc0c1+2c1 2≧4/7*2w}であるかどうかを判定する(S703)。これは、数c0+c1τを数τwで割ったときに商が0かどうかを判定している。この判定で上記条件が成立するのであれば(TRUE)、ステップS704へ移る。上記条件が成立しないのであれば(FALSE)、ステップS711へ移る。
The
ステップS704では、Ψ関数計算部325は、Ψw(c0+c1τ)を計算し、その結果をuに格納する。更にuをdw[i]に、sign(u)をsに、|u|をuに、それぞれ代入し、変数iを1増加させる。ここで、sign(u)は、uの符号である。
In step S704, the Ψ
次に、c0にc0−s*b0[(u−1)/2]を、c1にc1−s*b1[(u−1)/2]を、それぞれ代入する(S705)。ここで、b0,b1は、それぞれ以下の条件を満たす整数である。各βj=1+(−1)j(1)τ+(−1)j(2)τ2+……+(−1)j(w−1)τw−1{j=(j(w−1)……j(0))2,j(i)=0 or 1}に対して、βjは、適当な数b0,j,b1,jを用いてβj=b0,j+b1,jτと表すことができる。uj=Ψw(βj)とおき、uj>0であれば、u=(uj−1)/2を満たすjが存在するので、このjに対してb0=b0,j,b1=b1,jとおく。uj<0であれば、u=(−uj−1)/2を満たすjが存在するので、このjに対してb0=−b0,j,b1=−b1,jとおく。 Then, c 0 to c 0 -s * b 0 [( u-1) / 2] a, c 1 -s * b 1 to c 1 a [(u-1) / 2 ], the values are (S705 ). Here, b 0 and b 1 are integers that satisfy the following conditions, respectively. Each β j = 1 + (− 1) j (1) τ + (− 1) j (2) τ 2 +... + (− 1) j (w−1) τ w−1 {j = (j (w− 1)... J (0)) 2 , j (i) = 0 or 1}, β j is determined by using the appropriate numbers b 0, j , b 1, j and β j = b 0, j + B 1, j τ. If u j = Ψ w (β j ), and u j > 0, there is j satisfying u = (u j −1) / 2, so that b 0 = b 0, j , B 1 = b 1, j . If u j <0, there exists j satisfying u = (− u j −1) / 2, so that b 0 = −b 0, j , b 1 = −b 1, j deep.
繰り返し判定部323は、j≦wかどうかを判定する(S706)。j≦wであれば(TRUE)、ステップS707へ移る。j>wであれば(FALSE)、ステップS703へ戻る。
The
ステップS707では、変数c0にc1+μc0/2を、変数c1に−c0/2を、それぞれ代入する。 At step S707, the a c 1 + μc 0/2 to a variable c 0, a -c 0/2 to the variable c 1, the values are.
ステップS711では、ステップS703〜S707のループを繰り返し行う度にステップS704で計算されるΨw(c0+c1τ)をdw[i]に格納する。 In step S711, Ψ w (c 0 + c 1 τ) calculated in step S704 is stored in d w [i] each time the loop of steps S703 to S707 is repeated.
ステップS712では、エンコード部302は、{dw[c],……,dw[0]}を出力する。ここで、cはdw[j]≠0を満たす最大のjである。
In step S712, the
変数iの値の上限がi+w−1となる理由は、実施の形態1と同様である。 The reason why the upper limit of the value of variable i is i + w−1 is the same as in the first embodiment.
次に、図8を用いて、前計算部303が楕円曲線上の点から前計算テーブルを作成する方法を説明する。図8は、前計算部303での前計算テーブル作成処理を示すフロー図である。
Next, a method in which the
前計算部303は、まず、変数Rに楕円曲線上の点Pを代入する(S801)。次に、変数iに初期値1を代入し、また集合Sに空集合{}を代入する(S802)。次に、繰り返し判定部333は、iがwより小さいかどうかを判定する(S803)。この条件が成立する場合は、ステップS804へ移る。条件が成立しない場合は、ステップS811へ移る。
The
ステップS804では、Rのすべての点Qに対して加算部331、τ倍算部332によりP±τQを計算し、集合Sと2点P±τQを集合Sに代入する。次に、SをRに格納する(S805)。次に、変数iを1増加させ(S806)、ステップS803へ戻る。
In step S804, P ± τQ is calculated by the
一方、ステップS811では、繰り返し判定部333により、ステップS803でiがw以上の場合、楕円曲線上の点の集合Rを前計算テーブルとして出力する。
On the other hand, in step S811, the
スカラー倍計算部115で行われる演算は、τ倍算と加算のみであり、比較的処理の重い2倍算を用いずに前計算テーブルを作成できる。
The operations performed by the scalar
また、点−P±τP±Pτ2±……±τw−1Pを前計算テーブルには格納する必要がない理由も実施の形態1と同様であり、点−P±τP±Pτ2±……±τw−1Pの導出を省くために、それら点のy座標の値のみを前計算テーブルに格納しておいてもよい。 Further, the reason why the point −P ± τP ± Pτ 2 ±... ± τ w−1 P need not be stored in the pre-calculation table is the same as in the first embodiment, and the point −P ± τP ± Pτ 2 ±. ...... In order to omit the derivation of ± τ w−1 P, only the y coordinate values of those points may be stored in the pre-calculation table.
なお、前計算部303の行う前計算テーブルの作成処理は、点P±τP±Pτ2±……±τw−1Pが計算されればよい。そのため、モンゴメリトリックによる逆元演算共通化方法を用いて、楕円曲線演算で必要となる逆元演算の計算の共通化を行うことにより、高速化を図ってもよい。
Note that the pre-calculation table creation process performed by the
また、点Pが固定点である場合、点P±τP±Pτ2±……±τw−1Pを再計算する必要がない理由も実施の形態1と同様である。前計算テーブル作成処理を、モンゴメリトリックを用いて、楕円曲線演算で必要となる逆元演算の計算の共通化を行うことにより、高速化を図ってもよいことも、第1の計算方法と同様である。 Further, when the point P is a fixed point, the reason why the point P ± τP ± Pτ 2 ±... ± τ w−1 P need not be recalculated is the same as in the first embodiment. Similar to the first calculation method, the pre-calculation table creation process may be speeded up by using Montgomery trick to share the calculation of the inverse element calculation required for the elliptic curve calculation. It is.
最後に、実計算部304が、エンコードされたスカラー値と楕円曲線上の点から、楕円曲線におけるスカラー倍点を計算する方法を説明する。実計算部304が行う処理は、実施の形態1と同様の処理である。
Finally, a method will be described in which the
エンコード部302が行う処理により出力されるdw[j]は、(式18),(式20),(式41)を満たす。(式18)が成立する理由は、実施の形態1と同様である。ステップS703〜S707のループにおいて、i回目に出力される値をc0,i+c1,iτとする。その出力された値c0,i+c1,iτに対して、下記(式42)とおき、ステップS706〜S707のループにおいて、b0,b1の値をそれぞれb0,i,b1,i、とおき、u[i]=Ψw(b0,i+b1,iτ),s[i]=sign(u[i])とおく。ここで、sign(u[i])は、u[i]の符号を表すものである。
D w [j] output by the process performed by the
Ψw(c0,i+c1,iτ)=dw[i+1] ・・・(式42)
ステップS706〜S707のループにおいて、下記(式43)が計算される。(式43)を変形すると、下記(式44)が成り立つ。
Ψ w (c 0, i + c 1, i τ) = d w [i + 1] (Formula 42)
In the loop of steps S706 to S707, the following (formula 43) is calculated. When (Equation 43) is modified, the following (Equation 44) is established.
c0,i+1+c1,i+1τ={(c0,i+c1,iτ)−s[i]((|u[i]|−1)/2)*(b0,i+b1,iτ)}/τw ・・・(式43)
(c0,i+c1,iτ)τw=(c0,i+1+c1,i+1τ)−s[i]((|u[i]|−1)/2)*(b0,i+b1,iτ) ・・・(式44)
(式42)と(式44)を用いると、d’が(式18)を満たすことがわかる。
c 0, i + 1 + c 1, i + 1 τ = {(c 0, i + c 1, i τ) −s [i] ((| u [i] | −1) / 2) * (b 0, i + b 1, i τ)} / τ w (Equation 43)
(C 0, i + c 1, i τ) τ w = (c 0, i + 1 + c 1, i + 1 τ) −s [i] ((| u [i] | −1) / 2) * (b 0, i + B 1, i τ) (Formula 44)
Using (Expression 42) and (Expression 44), it can be seen that d ′ satisfies (Expression 18).
ステップS711においてΨw(c0+c1τ)をdw[i]に代入しており、Ψw(c0+c1τ)=(c0+c1*tw+1mod 2w+1)−2wは、|c0+c1*tw+1mod 2w+1|<2w+1を満たすので、dw[i]は(式41)を満たす。 In step S711, Ψ w (c 0 + c 1 τ) is substituted for d w [i], and Ψ w (c 0 + c 1 τ) = (c 0 + c 1 * t w + 1 mod 2 w + 1 ) −2 w is , | C 0 + c 1 * t w + 1 mod 2 w + 1 | <2 w + 1 , d w [i] satisfies (Equation 41).
実計算部304が出力する点Qはスカラー倍点dPに等しい。この理由は次の通りである。実施の形態1の実計算部304の行う処理と同様の処理を行う。
The point Q output from the
前記ステップS613において点Qが、下記(式45)と表されるとする。 In step S613, it is assumed that the point Q is expressed as (Equation 45) below.
(dw[c]τc−j−1+dw[c−1]τc−j−2+……+dw[j+1])P ・・・(式45)
このとき、次にステップS613に来る時も点Qは(式45)を満たすことを以下で示す。点QはステップS614でτ倍され、dw[j]が0でなければステップS616でdw[j]Pが加えられる。そのためステップS616の直後では、点Qの値は、下記(式46)となる。
(D w [c] τ c−j−1 + d w [c−1] τ c−j−2 +... + D w [j + 1]) P (Equation 45)
At this time, it will be shown below that the point Q satisfies (Equation 45) also when it comes to step S613 next time. The point Q is multiplied by τ in step S614, and d w [j] P is added in step S616 unless d w [j] is 0. Therefore, immediately after step S616, the value of the point Q is as follows (formula 46).
(dw[c]τc−j+dw[c−1]τc−j−1+……+dw[j+1]τ+dw[j])P ・・・(式46)
従って、dw[j]=0の時も含めて、ステップS617の直前で、点Qは(式46)を満たす。ステップS617でjが1減少するので、(式46)のjにj+1を代入すると(式45)になる。すなわち、次にステップS613に来る時も点Qは(式45)を満たす。j>cに対するdw[j]の値は0であるので、ステップS621で出力される点Qの値は、下記(式47)に等しい。
(D w [c] τ c−j + d w [c−1] τ c−j−1 +... + D w [j + 1] τ + d w [j]) P (Expression 46)
Therefore, the point Q satisfies (Equation 46) immediately before step S617, including when d w [j] = 0. Since j decreases by 1 in step S617, substituting j + 1 for j in (Expression 46) yields (Expression 45). That is, the point Q satisfies (Equation 45) the next time it comes to step S613. Since the value of d w [j] for j> c is 0, the value of the point Q output in step S621 is equal to the following (formula 47).
(dw[c]τc+dw[c−1]τc−j+……+dw[1]τ+dw[0])P ・・・(式47)
実計算部304に入力されるスカラー値は、エンコード部302によりエンコードされたdw[j]であるので、そのdw[j]は(式41)を満たす。従って、Q=dPである。
(D w [c] τ c + d w [c−1] τ c−j +... + D w [1] τ + d w [0]) P (Equation 47)
Since the scalar value input to the
また、上記第2の計算方法は、サイドチャネル攻撃に対する防御法に関しても有効である。この理由は次の通りである。エンコード部302によりスカラー値dは数値列dw[i]にエンコードされる。この数値列dw[i]はdw[i]=±1±τ±τ2±……±τw−1を満たす。
The second calculation method is also effective for a defense method against side channel attacks. The reason is as follows. The
すると、実計算部304がスカラー倍点を計算する際に、前記ステップS613〜S617の繰り返し処理に対応する楕円曲線演算は、|T……TA|、すなわちw−1回のTの後にAとなる。ただし、Tはτ倍算を、AはECADDをそれぞれ表わす。これはdw[i]がdw[j]=±1±τ±τ2±……±τw−1を満たすことより従う。
Then, when the
従って、すべてのスカラー値に対して、実行する楕円曲線演算は実施の形態1と同様に、下記(式48)と固定されている。そのため、(式48)のみからは、スカラー値dに関する情報を引き出すことができない。 Therefore, the elliptic curve calculation to be executed is fixed to the following (formula 48) as in the first embodiment for all scalar values. Therefore, information relating to the scalar value d cannot be extracted from (Equation 48) alone.
|T……TA|T……TA|……|T……TA| ・・・(式48)
なお、実施の形態2において、前記処理1〜処理3を用いてよいことも、実施の形態1と同様である。
| T …… TA | T …… TA | …… | T …… TA | (Formula 48)
In the second embodiment, the
以上の通り、上記第2の計算方法は、コブリッツ曲線に対して適用可能で、サイドチャネル攻撃に有用な情報を与えないのでサイドチャネル攻撃に対して耐性があり、メモリ使用量及び処理高速性に優れるという特徴がある。 As described above, the second calculation method can be applied to the Kobritz curve and does not give useful information for the side channel attack, so it is resistant to the side channel attack, and the memory usage and processing speed are improved. It is characterized by being excellent.
(実施の形態3)
本発明の実施の形態3におけるスカラー倍計算方法、スカラー倍計算装置及びプログラムについて、図1,図2,図9,図10を参照しながら説明する。実施の形態3では、図9で示されるスカラー倍計算部115の機能ブロック構成を用いる。実施の形態3におけるスカラー倍計算部115(図1のスカラー倍計算部135に対応する)は、前計算部902、実計算部903からなる。前計算部902は、加算部921、τ倍算部922、繰り返し判定部923からなる。実計算部903は、剰余取得部931、剰余変換部932、繰り返し判定部933、δ剰余変換部934、Ψ関数計算部935、ビット値判定部936、加算部937、τ倍算部938からなる。
(Embodiment 3)
A scalar multiplication calculation method, scalar multiplication calculation apparatus, and program according to
実施の形態3で用いるスカラー倍計算方法として、スカラー倍計算部115がスカラー値d及び楕円曲線上の点Pから、楕円曲線におけるスカラー倍点dPを計算する第3の計算方法を説明する。第3の計算方法では、スカラー値をエンコードした値を格納することなく、直接、スカラー倍算を計算できるという特徴がある。楕円曲線上の点P=(x,y)は、x,yをあらかじめ正規基底を用いて表しておけば、τ倍した点τ(P)は点Pの線形表現を左に1ビット分だけシフトした値、τ−1倍した点τ−1(P)は点Pの線形表現を右に1ビット分だけシフトした値になる。
As a scalar multiplication calculation method used in the third embodiment, a third calculation method in which the scalar
これより、点τjw(dw[i]P)を計算するためには、まず、前計算テーブルから点dw[i]Pを呼び出し、点dw[i]Pのx座標、y座標の値をそれぞれ左にiwビット分だけシフトさせればよい。従って、点Qを無限遠点Oで初期化し、点Qに点τjw(dw[i]P)を足して、その値を点Qに代入するという操作を続けることによって、前記図3の格納部326のような格納部に値を格納することなく、直接、スカラー倍算を計算できる。これより、スカラー値d及び楕円曲線上の点Pから、楕円曲線におけるスカラー倍点dPを計算する際に、エンコード結果を格納するメモリを節約することができる。そのため、実計算部903は、格納部を具備する必要がない。
From this, in order to calculate the point τ jw (d w [i] P), first, the point d w [i] P is called from the previous calculation table, and the x and y coordinates of the point d w [i] P are calculated. Is shifted to the left by iw bits. Accordingly, by initializing the point Q at the infinity point O, adding the point τ jw (d w [i] P) to the point Q, and substituting the value into the point Q, the operation of FIG. Scalar multiplication can be directly calculated without storing values in a storage unit such as the
スカラー倍計算部115が復号化処理部132からスカラー値dと楕円曲線上の点Pを受け取ると、実計算部903は、数値列dw[i]を計算する。このdw[i]は実施の形態2で定義したdw[i]と等しい。
When the scalar
次に、前計算部902、実計算部903の行う各処理について詳細に説明する。前計算部902が楕円曲線上の点から、前計算テーブルを作成する方法は、実施の形態2と同様である。
Next, each process performed by the
次に、図10を用いて、実計算部903がスカラー値と楕円曲線上の点から前計算テーブルを用いて、楕円曲線におけるスカラー倍点を計算する方法を説明する。図10は、実計算部903でのスカラー倍点の計算処理を示すフロー図である。
Next, a method in which the
実計算部903は、まず、変数iを0で初期化し、Qに無限遠点Oを代入する(S1001)。次に、Ψ関数計算部935は、変数d’にd mod δを代入し、c0にd’の実部分Rpart(d’)を、c1にd’のτ部分Tpart(d’)をそれぞれ代入する(S1002)。
First, the
次に、繰り返し判定部933は、条件{c0 2+μc0c1+2c1 2≧4/7*2w}であるかどうかを判定する。条件が成立すれば(TRUE)、ステップS1004へ移る。条件が成立しない場合は(FALSE)、ステップS1011へ移る(S1003)。
Next, the
ステップS1004では、剰余変換部932は、Ψw(c0+c1τ)をdw[i]に格納する。更に加算部937、τ倍算部938は、Q+τiw(dw[i]P)を計算し、その値をQに、sign(dw[i])をsに、|dw[i]|をdw[i]に、それぞれ代入して、変数iを1増加させる。次に、(c0−s*b0[(dw[i]−1)/2],c1−s*b1[(dw[i]−1)/2])を、(c0,c1)に代入する(S1005)。
In step S1004, the
次に、繰り返し判定部933は、j≦wかどうかを判定する(S1006)。j≦wの場合(TRUE)、ステップS1007へ移る。j>wの場合(FALSE)、ステップS1003へ移る。
Next, the
ステップS1007では、c1+μc0/2,−c0/2をそれぞれc0,c1に代入し、S1006に戻る。
In
一方、ステップS1011では、実計算部903は、点Q=dPを出力する。
On the other hand, in step S1011, the
また、変数iの値の上限がi+w−1となる理由は、実施の形態1及び2と同様である。また、実計算部903が行う処理により計算されるdw[i]が、(式18),(式19),(式41)を満たす理由も実施の形態2と同様である。
The reason why the upper limit of the value of variable i is i + w−1 is the same as in the first and second embodiments. The reason why d w [i] calculated by the processing performed by the
また、実計算部903が出力する点Qはスカラー倍点dPに等しい。この理由は次の通りである。
Further, the point Q output from the
前記ステップS1004において点Qが、下記(式49)と表されるとする。 In step S1004, the point Q is represented by the following (formula 49).
(dw[0]τi+dw[1]τi+1+……+dw[i]τ2i)P ・・・(式49)
このとき、次にステップS1004に来る時も点Qは(式49)を満たすことを以下で示す。ステップS1003〜S1007のループにおいて、i回目の直後では、点Qは(式49)を満たす。また、ステップS1003でiにi+1が代入されている。
(D w [0] τ i + d w [1] τ i + 1 +... + D w [i] τ 2i ) P (Equation 49)
At this time, it will be shown below that the point Q satisfies (Equation 49) also when it comes to step S1004 next time. In the loop of steps S1003 to S1007, immediately after the i-th time, the point Q satisfies (Equation 49). In step S1003, i + 1 is substituted for i.
従って、ステップS1004の直後で出力される点Qの値は、下記(式50)であり、(式50)を整理すると、下記(式51)である。 Therefore, the value of the point Q output immediately after step S1004 is the following (formula 50).
(dw[0]+dw[1]τ+……+dw[i]τi)P+(dw[i+1]τi+1)P ・・・(式50)
(dw[0]+dw[1]τ+……+dw[i]τi+1)P ・・・(式51)
従って、i+1回目にステップS1004に来る時も点Qは(式49)を満たす。
(D w [0] + d w [1] τ +... + D w [i] τ i ) P + (d w [i + 1] τ i + 1 ) P (Equation 50)
(D w [0] + d w [1] τ +... + D w [i] τ i + 1 ) P (Equation 51)
Therefore, the point Q also satisfies (Equation 49) when it comes to step S1004 for the (i + 1) th time.
ステップS1003〜S1007のループを抜け出すときのiの値をc’とする。このとき、点Qの値は、下記(式52)を満たす。 Let c 'be the value of i when exiting the loop of steps S1003 to S1007. At this time, the value of the point Q satisfies the following (formula 52).
(dw[0]+dw[1]τ+……+dw[i]τc’)P ・・・(式52)
一方、前記実施の形態2におけるスカラー値のエンコードを示す図7でのステップS703〜S707のループは、エンコードにおいては実施の形態3のステップS1003〜S1007までの操作と同様の操作を行っている。従って、下記(式53)が成り立つ。
(D w [0] + d w [1] τ +... + D w [i] τ c ′ ) P (Formula 52)
On the other hand, the loop of steps S703 to S707 in FIG. 7 showing the encoding of the scalar value in the second embodiment performs the same operations as the operations from steps S1003 to S1007 in the third embodiment. Therefore, the following (Formula 53) holds.
c’=c ・・・(式53)
これより実施の形態3で出力される点Qは実施の形態2の実計算部304の出力する値と等しい。従って、Q=dPである。
c ′ = c (Formula 53)
Thus, the point Q output in the third embodiment is equal to the value output from the
また、上記第3の計算方法は、サイドチャネル攻撃に対する防御法に関しても有効である。この理由は以下の通りである。 The third calculation method is also effective for a defense against a side channel attack. The reason is as follows.
実計算部903により、スカラー値dから、数値列dw[i]を計算する。この数値列dw[i]はdw[i]=±1±τ±τ2±……±τw−1を満たす。また、実計算部903はスカラー倍点を計算する際に、ステップS1003〜S1007の繰り返し処理に対応する楕円曲線演算は、|T……TA|、すなわちiw−1回のTの後にAとなる。ただし、Tはτ倍算を、AはECADDをそれぞれ表わす。これはdw[i]がdw[i]=±1±τ±τ2±……±τw−1を満たすことより従う。
The
従って、すべてのスカラー値に対して、実行する楕円曲線演算は、実施の形態1及び2と同様に、下記(式54)と固定されている。そのため、(式54)のみからは、スカラー値dに関する情報を引き出すことができない。 Therefore, the elliptic curve calculation to be executed for all scalar values is fixed as the following (formula 54) as in the first and second embodiments. Therefore, information relating to the scalar value d cannot be extracted from (Equation 54) alone.
|T……TA|T……TA|……|T……TA| ・・・(式54)
なお、実施の形態3において、前記処理1〜処理3を用いてよいことも、実施の形態1及び2と同様である。
| T …… TA | T …… TA | …… | T …… TA | (Formula 54)
In the third embodiment, the
以上の通り、上記第3の計算方法は、コブリッツ曲線に対して適用可能で、サイドチャネル攻撃に有用な情報を与えないのでサイドチャネル攻撃に対して耐性があり、メモリ使用量及び処理高速性に優れるという特徴がある。 As described above, the third calculation method can be applied to the Kobritz curve and does not give useful information to the side channel attack, so it is resistant to the side channel attack, and the memory usage and processing speed are improved. It is characterized by being excellent.
(実施の形態4)
本発明の実施の形態4におけるスカラー倍計算方法、スカラー倍計算装置及びプログラムについて、図1,図2,図9,図11を参照しながら説明する。
(Embodiment 4)
A scalar multiplication calculation method, scalar multiplication calculation apparatus, and program according to
実施の形態4では、前記図9で示されるスカラー倍計算部115の機能ブロックを用いる。実施の形態4におけるスカラー倍計算部115(図1のスカラー倍計算部135に対応する)の構成は、実施の形態3と同様である。
In the fourth embodiment, the functional block of the
実施の形態4で用いるスカラー倍計算方法として、スカラー倍計算部115がスカラー値d及び楕円曲線上の点Pから、楕円曲線におけるスカラー倍点dPを計算する第4の計算方法を説明する。第4の計算方法では、第3の計算方法と同様に、スカラー値をエンコードした値を格納することなく、直接、スカラー倍算を計算できるという特徴がある。点τ−iw(Q)を計算するためには、点Qのx座標、y座標の値をあらかじめ正規基底を用いて表しておけば、点Qの各座標の値を右にwビット分だけシフトさせればよい。
As a scalar multiplication calculation method used in the fourth embodiment, a fourth calculation method in which the scalar
従って、点Qを無限遠点Oで初期化し、前計算テーブルから点dw[i]Pを呼び出し、点τ−iw(Q)に点dw[i]Pを足して、その値を点Qに代入するという操作を続けることによって、格納部に値を格納することなく、直接、スカラー倍算を計算できる。これより、スカラー値d及び楕円曲線上の点Pから、楕円曲線におけるスカラー倍点dPを計算する際に、エンコード結果を格納するメモリを節約することができる。そのため、実計算部902は、格納部を具備する必要がない。
Therefore, point Q is initialized at infinity point O, point d w [i] P is called from the previous calculation table, point d w [i] P is added to point τ −iw (Q), and the value is By continuing the operation of substituting for Q, scalar multiplication can be directly calculated without storing the value in the storage unit. Thus, when calculating the scalar multiple dP in the elliptic curve from the scalar value d and the point P on the elliptic curve, it is possible to save the memory for storing the encoding result. Therefore, the
実施の形態3と実施の形態4の違いは以下の通りである。実施の形態3では、前計算テーブルから読み出された点の各座標の値をiwビット分だけシフトするのに対し、実施の形態4では、ワークメモリにある点Q(中間データに相当する)の各座標の値をwビット分だけシフトさせればよい。これにより、シフトさせる回数を節約することができる。 The differences between the third embodiment and the fourth embodiment are as follows. In the third embodiment, the value of each coordinate of the point read from the previous calculation table is shifted by iw bits, whereas in the fourth embodiment, the point Q (corresponding to intermediate data) in the work memory. It is sufficient to shift the value of each coordinate by w bits. Thereby, the frequency | count of shifting can be saved.
次に前計算部902、実計算部903の行う各処理について詳細に説明する。前計算部902が楕円曲線上の点から、前計算テーブルを作成する方法は、実施の形態2及び3と同様である。
Next, each process performed by the
次に、図11を用いて、実計算部903がスカラー値と楕円曲線上の点から前計算テーブルを用いて、楕円曲線におけるスカラー倍点を計算する方法を説明する。図11は、実計算部903でのスカラー倍点の計算処理を示すフロー図である。
Next, a method in which the
実計算部903は、まず、変数iを0で初期化し、Qに無限遠点Oを代入する(S1101)。次に、Ψ関数計算部935は、変数d’にd mod δを代入し、c0にd’の実部分Rpart(d’)を、c1にd’のτ部分Tpart(d’)をそれぞれ代入する(S1102)。
First, the
次に、繰り返し判定部933により条件{c0 2+μc0c1+2c1 2≧ 4/7*2w}であるかどうかを判定する(S1103)。条件が成立すれば(TRUE)、ステップS1104へ移る。条件が成立しない場合は(FALSE)、ステップS1111へ移る。 Next, it is determined whether or not the condition {c 0 2 + μc 0 c 1 + 2c 1 2 ≧ 4/7 * 2 w } is satisfied by the repetition determination unit 933 (S1103). If the condition is satisfied (TRUE), the process proceeds to step S1104. If the condition is not satisfied (FALSE), the process proceeds to step S1111.
ステップS1104では、Ψ関数計算部935は、Ψw(c0+c1τ)をdw[i]に格納する。更に加算部937、τ倍算部938は、τ−w(Q)+dw[i]Pを計算し、その値をQに、sign(dw[i])をsに、|dw[i]|をdw[i]に、それぞれ代入して、変数iを1増加させる。次に、(c0,c1)に、(c0−s*b0[(dw[i]−1)/2],c1−s*b1[(dw[i]−1)/2])を代入する(S1105)。
In step S1104, the Ψ
次に、繰り返し判定部933は、j≦wかどうかを判定する(S1106)。j≦wの場合は(TRUE)、ステップS1107へ移る。j>wの場合は(FALSE)、ステップS1103へ移る。
Next, the
ステップS1107では、(c1+μc0/2,−c0/2)を(c0,c1)に代入し、S1106に戻る。
In step S1107, substituted in (c 1 + μc 0/2 , -
一方、ステップS1111では、実計算部903は、点Q=dPを出力する。
On the other hand, in step S <b> 1111, the
また、変数iの値の上限がi+w−1となる理由は実施の形態3と同様である。また、実計算部903が行う処理により出力されるdw[i]が、(式18),(式19),(式41)を満たす理由も、実施の形態2及び3と同様である。
The reason why the upper limit of the value of the variable i is i + w−1 is the same as in the third embodiment. The reason why d w [i] output by the process performed by the
また、実計算部903が出力する点Qはスカラー倍点dPに等しい。この理由は次の通りである。
Further, the point Q output from the
前記ステップS1104において点Qが、下記(式55)と表されるとする。 In step S1104, the point Q is represented by the following (formula 55).
(τ−iw(dw[0])+τ−(i−1)w(dw[1])+……+τ−w(dw[i−1])+dw[i])P ・・・(式55)
このとき、次にステップS1104に来る時も点Qは(式55)を満たすことを以下で示す。ステップS1103〜S1107のループにおいて、i回目の直後では、点Qは(式55)を満たす。また、ステップS1103でiにi+1が代入されている。
(Τ −iw (d w [0]) + τ − (i−1) w (d w [1]) + …… + τ −w (d w [i−1]) + d w [i]) P (Formula 55)
At this time, it will be shown below that the point Q satisfies (Equation 55) also when it comes to step S1104 next time. In the loop of steps S1103 to S1107, the point Q satisfies (Expression 55) immediately after the i-th time. In step S1103, i + 1 is substituted for i.
また、ステップS1104でiにi+1が代入されている。従って、ステップS1104の直後で出力される点Qの値は、下記(式56)であり、(式56)を整理すると、下記(式57)となる。従って、i+1回目にステップS1104に来る時も点Qは(式55)を満たす。 In step S1104, i + 1 is substituted for i. Therefore, the value of the point Q output immediately after step S1104 is the following (formula 56), and (formula 57) is obtained by arranging (formula 56). Therefore, the point Q satisfies (Expression 55) even when it comes to step S1104 for the (i + 1) th time.
τ−w(τ−iw(dw[0])+τ−(i−1)w(dw[1])+……+τ−w(dw[i−1])+dw[i])P+(dw[i+1])P ・・・(式56)
(τ−(i+1)w(dw[0])+τ−iw(dw[1])+……+τ−w(dw[i])+dw[i+1])P ・・・(式57)
ステップS1103〜S1107のループを抜け出すときのiの値をc’とする。このとき、点Qの値は、下記(式58)を満たす。
τ −w (τ −iw (d w [0]) + τ − (i−1) w (d w [1]) + …… + τ −w (d w [i−1]) + d w [i]) P + (d w [i + 1]) P (Formula 56)
(Τ - (i + 1) w (d w [0]) + τ -iw (d w [1]) + ...... + τ -w (d w [i]) + d w [i + 1]) P ··· ( Equation 57 )
Let c ′ be the value of i when exiting the loop of steps S1103 to S1107. At this time, the value of the point Q satisfies the following (formula 58).
(τ−cw(dw[0])+τ−(c−1)w(dw[1])+……+τ−w(dw[c−1])+dw[c])P ・・・(式58)
一方、前記実施の形態2におけるスカラー値のエンコードを示す図7でのステップS703〜S707のループは、エンコードにおいては実施の形態4と同様の操作を行っている。従って、下記(式59)が成り立つ。
(Τ −cw (d w [0]) + τ − (c−1) w (d w [1]) +... + Τ −w (d w [c−1]) + d w [c]) P (Formula 58)
On the other hand, the loop of steps S703 to S707 in FIG. 7 showing the encoding of the scalar value in the second embodiment performs the same operation as in the fourth embodiment. Therefore, the following (formula 59) holds.
c’=c ・・・(式59)
これより実施の形態4で出力される点Qは実施の形態2の実計算部304の出力する値と等しい。従って、Q=dPである。
c ′ = c (Formula 59)
Thus, the point Q output in the fourth embodiment is equal to the value output from the
また、上記第4の計算方法は、サイドチャネル攻撃に対する防御法に関しても有効である。この理由は以下の通りである。 The fourth calculation method is also effective for a defense against a side channel attack. The reason is as follows.
実計算部903により、スカラー値dから、数値列dw[i]を計算する。この数値列dw[i]はdw[i]=±1±τ±τ2±……±τw−1を満たす。また、実計算部903はスカラー倍点を計算する際に、ステップS1103〜S1107の繰り返し処理に対応する楕円曲線演算は、|T……TA|、すなわちw−1回のTの後にAとなる。ただし、Tはτ倍算を、AはECADDをそれぞれ表わす。これはdw[i]がdw[i]=±1±τ±τ2±……±τw−1を満たすことより従う。
The
従って、すべてのスカラー値に対して、実行する楕円曲線演算は、実施の形態1及び2と同様に、下記(式60)と固定されている。そのため、(式60)のみからは、スカラー値dに関する情報を引き出すことができない。 Therefore, the elliptic curve calculation to be executed for all scalar values is fixed as (Equation 60) below, as in the first and second embodiments. Therefore, information relating to the scalar value d cannot be extracted from (Equation 60) alone.
|T……TA|T……TA|……|T……TA| ・・・(式60)
なお、実施の形態4において、前記処理1〜処理3を用いてよいことも、実施の形態1、2及び3と同様である。
| T …… TA | T …… TA | …… | T …… TA | (Formula 60)
In the fourth embodiment, the
以上の通り、上記第4の計算方法は、コブリッツ曲線に対して適用可能で、サイドチャネル攻撃に有用な情報を与えないのでサイドチャネル攻撃に対して耐性があり、メモリ使用量及び処理高速性に優れるという特徴がある。 As described above, the fourth calculation method can be applied to the Kobritz curve and does not give useful information for the side channel attack, so it is resistant to the side channel attack, and the memory usage and the processing speed are improved. It is characterized by being excellent.
(実施の形態5)
本発明の実施の形態5におけるスカラー倍計算方法、スカラー倍計算装置及びプログラムについて、図1〜図4を参照しながら説明する。
(Embodiment 5)
A scalar multiplication calculation method, scalar multiplication calculation apparatus, and program according to
実施の形態5では、前記図3で示されるスカラー倍計算部115の機能ブロックを用いる。実施の形態5におけるスカラー倍計算部115(図1のスカラー倍計算部135に対応する)の構成は、実施の形態1及び2と同様である。
In the fifth embodiment, the functional block of the
実施の形態5で用いるスカラー倍計算方法として、スカラー倍計算部115がスカラー値d及び楕円曲線上の点Pから、楕円曲線におけるスカラー倍点dPを計算する第5の計算方法を説明する。第5の計算方法では、サイドチャネル攻撃に対する防御法として有効なコブリッツ曲線以外の楕円曲線のスカラー倍計算方法を説明する。
As a scalar multiplication calculation method used in the fifth embodiment, a fifth calculation method in which the scalar
上記のような楕円曲線の例として、下記(式61)という定義式を持つ楕円曲線を考える。 As an example of the elliptic curve as described above, an elliptic curve having the following definition formula (Formula 61) is considered.
y2=x3−b(b≠0) ・・・(式61)
この楕円曲線上の点に対して、フロベニウス写像τと呼ばれる演算を行うことが可能である。点(x1,y1)に対するフロベニウス写像τとは、下記(式62)を計算することである。τを、下記(式63)を満たす虚部が正である複素数と考えることができる。
y 2 = x 3 −b (b ≠ 0) (Formula 61)
An operation called Frobenius map τ can be performed on the points on the elliptic curve. The Frobenius map τ for the point (x 1 , y 1 ) is to calculate the following (formula 62). τ can be considered as a complex number having a positive imaginary part that satisfies the following (Equation 63).
(x3,y3)=τ(x1,y1)=(x1 7,y1 7) ・・・(式62)
τ2−tτ+7=0 ・・・(式63)
ここで、複素数a+bi(ここでiは虚数単位)の虚部とは実数bのことであり、tは楕円曲線におけるトレースと呼ばれる整数である。ただし、tw+1は、下記(式64)で与えられる整数であり、Uw+1は、下記(式65)で定まる整数である。
(X 3 , y 3 ) = τ (x 1 , y 1 ) = (x 1 7 , y 1 7 ) (Expression 62)
τ 2 −tτ + 7 = 0 (Expression 63)
Here, the imaginary part of the complex number a + bi (where i is an imaginary unit) is a real number b, and t is an integer called a trace in an elliptic curve. However, tw + 1 is an integer given by (Expression 64) below, and U w + 1 is an integer determined by (Expression 65) below.
tw+1=7UwUw+1 −1 mod 7w+1 ・・・(式64)
U0=0,U1=1,Uw+1=tUw−7Uw−1 ・・・(式65)
実施の形態1において、スカラー値dを数値列dw[i]にエンコードする操作は、スカラー値dを、余りが出るまでτwで割り続けることに相当する。従って、スカラー値dがτwで割り算を行うことができれば、コブリッツ曲線以外の楕円曲線のスカラー倍計算においてサイドチャネル攻撃に対する防御法を構成することができるということになる。
t w + 1 = 7 U w U w + 1 −1 mod 7 w + 1 (Formula 64)
U 0 = 0, U 1 = 1, U w + 1 = tU w −7U w−1 (Expression 65)
In the first embodiment, the operation of encoding the scalar value d into the numerical sequence d w [i] corresponds to continuing to divide the scalar value d by τ w until a remainder is obtained. Therefore, if it is possible to scalar value d performs division by tau w, thus being able to constitute a protection method against side channel attacks in the scalar multiplication of an elliptic curve other than Koblitz curve.
スカラー倍計算部115が、復号化処理部132からスカラー値dと楕円曲線上の点Pを受け取ると、エンコード部302は、入力されたスカラー値dを数値列dw[i]にエンコードする。これは、下記(式66)を満たす整数d’に対して、下記(式67),(式68)を満たすdw[i]に、スカラー値dを変換することに相当する。
When the
dP=d’P ・・・(式66)
d’=dw[2n]τ2n+dw[2n−1]τ2n−1+……+dw[i]τi+……+dw[0] ・・・(式67)
−7w<dw[i]<7w ・・・(式68)
前計算部303は、入力された楕円曲線上の点Pから、前計算テーブルを作成する。前計算テーブルは{P,2P,……,(7w−1)P}により構成される。ただし、点kP(k=7,72,……,7w−1)は前計算テーブルには含まれていない。
dP = d′ P (Formula 66)
d ′ = d w [2n] τ 2n + d w [2n−1] τ 2n−1 +... + d w [i] τ i +... + d w [0] (Expression 67)
−7 w <d w [i] <7 w (Formula 68)
The
実計算部304は、エンコードされたスカラー値と楕円曲線上の点Pから、前計算テーブルを用いてスカラー倍点dPを計算する。
The
次に、エンコード部302、前計算部303、実計算部304の行う各処理について詳細に説明する。
Next, each process performed by the
エンコード部302がスカラー値dをエンコードする方法は、実施の形態1と同様である。ただし、前記ステップS401において、δは、下記(式69)を満たす数であり、ここでmは、拡大次数と呼ばれる整数である。
The
δ=(τm−1)/(τ−1) ・・・(式69)
d mod δの計算方法は以下の通りである。δは(式69)を用いることによって、下記(式70)と変形することができる。ここで、δ0,δ1は整数である。
δ = (τ m −1) / (τ−1) (Equation 69)
The calculation method of d mod δ is as follows. δ can be transformed to the following (Equation 70) by using (Equation 69). Here, δ 0 and δ 1 are integers.
δ=δ0+δ1τ ・・・(式70)
スカラー値dは、下記(式71)と書くことができる。ここで、d0,d1は整数である。
δ = δ 0 + δ 1 τ (Expression 70)
The scalar value d can be written as (Equation 71) below. Here, d 0 and d 1 are integers.
d=d0+d1τ ・・・(式71)
このとき、dmod δは、下記(式72)を満たす数である。
d = d 0 + d 1 τ (Expression 71)
At this time, dmod δ is a number satisfying the following (formula 72).
d mod δ=r0+r1τ ・・・(式72)
ただし、r0,r1はそれぞれ下記(式73),(式74)を満たす整数であり、q0,q1は下記(式75),(式76)を満たす数である。
d mod δ = r 0 + r 1 τ (Expression 72)
However, r 0 and r 1 are integers satisfying the following (Expression 73) and (Expression 74), respectively, and q 0 and q 1 are numbers satisfying the following (Expression 75) and (Expression 76).
r0=d0−δ0q0+7δ1q1 ・・・(式73)
r1=d1−δ1q0−δ0q1−tδ1q1 ・・・(式74)
q0= Round(λ0) ・・・(式75)
q1= Round(λ1) ・・・(式76)
ここで、λ0,λ1は、λ0=g0/N,λ1=g1/Nを満たす数(有理数)であり、数λに対してRound(λ)は、λ+1/2を超えない最大の整数である。また、g0,g1,Nは、それぞれ下記(式77),(式78),(式79)で与えられる整数である。
r 0 = d 0 −δ 0 q 0 + 7δ 1 q 1 (Expression 73)
r 1 = d 1 −δ 1 q 0 −δ 0 q 1 −tδ 1 q 1 (Expression 74)
q 0 = Round (λ 0 ) (Expression 75)
q 1 = Round (λ 1 ) (Formula 76)
Here, λ 0 and λ 1 are numbers (rational numbers) satisfying λ 0 = g 0 / N and λ 1 = g 1 / N, and Round (λ) exceeds λ + 1/2 with respect to the number λ. There is no maximum integer. G 0 , g 1 , and N are integers given by the following (formula 77), (formula 78), and (formula 79), respectively.
g0=d0δ0+td0δ1+7d1δ1 ・・・(式77)
g1=d1δ0−d0δ1 ・・・(式78)
N=δ0 2+tδ0δ1+7δ1 2 ・・・(式79)
また、前記ステップS403の分岐条件は、|Rpart(d’)|<2w及びTpart(d’)=0ではなく、|Rpart(d’)|<7w及びTpart(d’)=0である。ステップS411は、Rpart(d’) mod 2w+1をxRに代入、及びTpart(d’) mod 2w+1をxTに代入ではなく、Rpart(d’) mod 7w+1をxRに代入、Tpart(d’) mod 7w+1をxTに代入する。ステップS412では、(xR+xT*tw+1mod 2w+1)−2wをuに代入ではなく、(xR+xT*tw+1mod 7w+1)−7wをuに代入する。
g 0 = d 0 δ 0 + td 0 δ 1 + 7d 1 δ 1 (Expression 77)
g 1 = d 1 δ 0 -d 0 δ 1 (Formula 78)
N = δ 0 2 + tδ 0 δ 1 + 7δ 1 2 (Equation 79)
The branch condition of the step S403 is, | Rpart (d ') | <2 w and Tpart (d') = instead 0, | Rpart (d ') | <7 w and Tpart (d') = 0 is there. Step S411 is, Rpart (d ') substituting
ここで、tw+1は、下記(式80)で与えられる整数であり、Uw+1は、下記(式81)で定まる整数である。 Here, tw + 1 is an integer given by (Expression 80) below, and U w + 1 is an integer determined by (Expression 81) below.
tw+1=7UwUw+1 −1 mod 7w+1 ・・・(式80)
U0=0,U1=1,Uw+1=tUw−7Uw−1 ・・・(式81)
前計算部303が楕円曲線上の点から前計算テーブルを作成する方法は、実施の形態1と同様である。ただし、前記ステップS503の分岐条件は、j<2wではなく、j<7wである。
t w + 1 = 7 U w U w + 1 −1 mod 7 w + 1 (Equation 80)
U 0 = 0, U 1 = 1, U w + 1 = tU w −7U w−1 (Equation 81)
The method by which the
また、実計算部S304が、エンコードされたスカラー値、楕円曲線上の点及び前計算テーブルから、楕円曲線におけるスカラー倍点を計算する方法も、実施の形態1と同様である。ただし、実施の形態5におけるτ倍算部343のτは、(式9)ではなく、(式63)を満たす。エンコード部302が行う処理により出力されるdw[i]は、(式66),(式67),(式68)を満たす。(式66),(式67)が成立する理由は、実施の形態1と同様である。
The method in which the actual calculation unit S304 calculates the scalar multiple in the elliptic curve from the encoded scalar value, the point on the elliptic curve, and the previous calculation table is the same as in the first embodiment. However, τ of the
前記ステップS412で計算されるu[j]は、下記(式82)の範囲となることは容易にわかる。従って、0以外のdw[i]はu[j]が割り当てられる。従って、(式68)を満たす。 It can be easily understood that u [j] calculated in step S412 falls within the following range (formula 82). Accordingly, u [j] is assigned to d w [i] other than 0. Therefore, (Equation 68) is satisfied.
−7w<u[j]< 7w ・・・(式82)
エンコード部302が行う処理で計算されるu[j]は、j=0を除きすべて7の倍数となり、実計算部304が出力する点Qはスカラー倍点dPに等しい。この理由も実施の形態1と同様である。また、上記第5の計算方法は、サイドチャネル攻撃に対する防御法に関しても有効である。この理由も実施の形態1と同様である。
−7 w <u [j] <7 w (Expression 82)
U [j] calculated by the processing performed by the
実施の形態5において、前記処理1〜処理3を用いてよいことも、実施の形態1〜4と同様である。
In the fifth embodiment, the
前記(式61)以外の楕円曲線の例を挙げる。楕円曲線Eを、非特許文献である、R. P. Gallant, J. L. Lambert, and S. A. Vanstone “Faster Point Multiplication on Elliptic Curves with Efficient Endomorphisms”, In J. Kilian, editor, Advances in Cryptology - Proceedings of CRYPTO 2001, volume 2139 of Lecture Notes in Computer Science, 190-200. Springer, 2001.に記載の楕円曲線とすると、点P、スカラー値dに対するスカラー倍算dPは、下記(式83)を計算すればよいことが知られている。 Examples of elliptic curves other than the above (formula 61) are given. Elliptic curve E is a non-patent document, RP Gallant, JL Lambert, and SA Vanstone “Faster Point Multiplication on Elliptic Curves with Efficient Endomorphisms”, In J. Kilian, editor, Advances in Cryptology-Proceedings of CRYPTO 2001, volume 2139 Assuming that the elliptic curve is described in of Lecture Notes in Computer Science, 190-200. Springer, 2001., it is known that the scalar multiplication dP for the point P and the scalar value d may be calculated by the following (formula 83). ing.
dP=k1P+k2ΨP ・・・(式83)
ここで、k1,k2は、0から√nまでの範囲にある正の整数、ΨはEの自己準同型写像、nは点Pの位数である。整数k1,k2に対して(式83)の操作を繰り返し行うことによって、スカラー値dを実施の形態1〜4のいずれか一つに記載の形に変換できる。このとき、すべてのスカラー値に対して、実行する楕円曲線演算は、下記(式84)と固定されている。ただし、Ψは自己準同型演算を表わす。そのため、(式84)のみからは、スカラー値dに関する情報を引き出すことができない。
dP = k 1 P + k 2 ΨP (Expression 83)
Here, k 1 and k 2 are positive integers in the range from 0 to √n, Ψ is a self-homogeneous map of E, and n is the order of the point P. By repeatedly performing the operation of (Expression 83) on the integers k 1 and k 2 , the scalar value d can be converted into the form described in any one of the first to fourth embodiments. At this time, the elliptic curve calculation to be executed for all scalar values is fixed as (Equation 84) below. Where Ψ represents a self-homogeneous operation. Therefore, information relating to the scalar value d cannot be extracted from (Equation 84) alone.
|Ψ……ΨA|Ψ……ΨA|……|Ψ……ΨA| ・・・(式84)
以上の通り、上記第5の計算方法は、サイドチャネル攻撃に有用な情報を与えないのでサイドチャネル攻撃に対して耐性があり、コブリッツ曲線以外の楕円曲線に対しても適用可能であり、メモリ使用量及び処理高速性に優れるという特徴がある。
| Ψ …… ΨA | Ψ …… ΨA | …… | Ψ …… ΨA | (formula 84)
As described above, the fifth calculation method is not resistant to side channel attacks because it does not give useful information for side channel attacks, and can be applied to elliptic curves other than Kobritz curves. It is characterized by excellent amount and high processing speed.
(実施の形態6)
本発明の実施の形態6におけるスカラー倍計算方法、スカラー倍計算装置及びプログラムについて、図1,図2,図9,図12を参照しながら説明する。
(Embodiment 6)
A scalar multiplication calculation method, scalar multiplication calculation apparatus, and program according to Embodiment 6 of the present invention will be described with reference to FIGS. 1, 2, 9, and 12. FIG.
実施の形態6では、前記図9で示されるスカラー倍計算部115の機能ブロックを用いる。実施の形態6におけるスカラー倍計算部115(図1のスカラー倍計算部135に対応する)の構成は、実施の形態3及び4と同様である。ただし、実施の形態6では、前記図9における前計算部902のτ倍算部922ではなく2倍算部922を具備するものとする。
In the sixth embodiment, the functional block of the
実施の形態6で用いるスカラー倍計算方法として、スカラー倍計算部115がスカラー値d、楕円曲線上の点P、及び、ウィンドウ幅wから、楕円曲線におけるスカラー倍点dPを計算する第6の計算方法を説明する。第6の計算方法では、スカラー値dはバイナリτ進表現で格納されているとする。ここで、スカラー値dのバイナリτ進表現とは、下記(式85),(式86)なる表現のことである。
As a scalar multiplication calculation method used in the sixth embodiment, the scalar
d=dw[n+a−1]τn+a−1+dw[n+a−2]τn+a−2+……+dw[i]τi+……+dw[0] ・・・(式85)
dw[i]=0またはdw[i]=1 ・・・(式86)
このとき、スカラー値dのバイナリ表現は、通常のバイナリ表現と同様に、メモリに格納しやすく、スカラー値dを他の表現に変換しやすいという特徴を持つ。また、スカラー倍点dPの計算毎にウィンドウ幅wを変更することが可能である。
d = d w [n + a−1] τ n + a−1 + d w [n + a−2] τ n + a−2 + …… + d w [i] τ i + …… + d w [0] (Expression 85)
d w [i] = 0 or d w [i] = 1 (Expression 86)
At this time, the binary representation of the scalar value d is characterized in that it can be easily stored in a memory and the scalar value d can be easily converted into another representation, like the normal binary representation. Further, it is possible to change the window width w every time the scalar multiple dP is calculated.
処理速度とメモリ使用量の間にはトレードオフの関係があるから、状況に合わせたウィンドウ幅の選択を可能にする。 Since there is a trade-off relationship between processing speed and memory usage, it is possible to select a window width according to the situation.
また、実施の形態6における楕円曲線上のスカラー倍計算において、スカラー値dはバイナリτ進表現で格納されているから、最上位ビットから最下位ビットに向けて(left-to-right)処理を行うことを可能にする。 Further, in the scalar multiplication on the elliptic curve in the sixth embodiment, the scalar value d is stored in binary τ-adic representation, so the processing from the most significant bit to the least significant bit (left-to-right) is performed. Make it possible to do.
次に、前計算部902、実計算部903の行う各処理について詳細に説明する。前計算部902が楕円曲線上の点Pから前計算テーブルを作成する方法は、実施の形態1及び5と同様である。
Next, each process performed by the
図12を用いて、実計算部903がバイナリτ進表現で格納されているスカラー値、楕円曲線上の点、前計算テーブル、及び、ウィンドウ幅wから、楕円曲線におけるスカラー倍点を計算する方法を説明する。図12は、実計算部903のスカラー倍点の計算処理を示すフロー図である。
Using FIG. 12, the
まず、実計算部903は、点Qを楕円曲線Eの無限遠点O、変数iをm+a―1で初期化する(S1201)。次に、繰り返し判定部933は、i>wであるかどうかを判定する(S1202)。i>wの場合は(TRUE)、ステップS1203へ移る。i≦wの場合は(FALSE)、ステップS1221へ移る。
First, the
ステップS1203では、変数jに初期値1を代入する。次に、繰り返し判定部933は、j≦wであるかどうかを判定する(S1204)。j≦wである場合は(TRUE)、ステップS1205へ移る。j>wの場合は(FALSE)、ステップS1211へ移る。ステップS1205では、τ倍算部938は、点Qをτ倍し、点Qに格納する。
In step S1203, the
ステップS1211では、uiに、(1+Σdi-w+j(tw+1Uj−2Uj−1))mod 2w+1 −2wを代入する。
In step S1211, (1 + Σd i−w + j (t w + 1 U j −2U j−1 ))
次に、繰り返し判定部933は、ui>0であるかどうかを判定する(S1212)。ui>0の場合は(TRUE)、ステップS1213へ移る。ui≦0の場合は(FALSE)、ステップS1214へ移る。
Next, the
ステップS1213では、加算部937は、点Qと前計算テーブル上の点uiPを加算し、点Qに格納する。一方、ステップS1213では、加算部937は、点Qから前計算テーブル上の点−uiPを減算し、点Qに格納する。次に、ステップS1215dで、iにi−wを代入する。
In step S1213, the adding
一方、ステップS1211では、繰り返し判定部933は、j≦iであるかどうかを判定する。j≦iの場合は(TRUE)、ステップS1222へ移る。j>iの場合は(FALSE)、ステップS1231へ移る。ステップS1222で、τ倍算部938は、点Qをτ倍し、点Qに格納する。
On the other hand, in step S1211, the
ステップS1231では、u0に、(1+Σdi(ti+1Uj−2Uj−1))mod 2i+1 −2iを代入する。次に、繰り返し判定部933は、u0>0であるかどうかを判定する(S1232)。u0>0の場合は(TRUE)、ステップS1233へ移る。u0≦0の場合は(FALSE)、ステップS1234へ移る。
In step S1231, (1 + Σd i (t i + 1 U j −2U j−1 ))
ステップS1233では、加算部937は、点Qと前計算テーブル上の点u0Pを加算し、点Qに格納する。一方、ステップS1234では、加算部937は、点Qから前計算テーブル上の点−u0Pを減算し、点Qに格納する。
In step S1233, the
次に、繰り返し判定部933は、d0=0であるかどうかを判定する(S1235)。d0=0の場合は(TRUE)、ステップS1236へ移る。d0≠0の場合は(FALSE)、ステップS1237へ移る。
Next, the
ステップS1236では、加算部937は、点Qと点−Pを加算し、点Qに格納する。一方、ステップS1237では、加算部937は、点Qと点−τPを加算し、点Qに格納する。そして、ステップS1241で、実計算部903は、点Qを出力する。
In step S1236, the adding
上記第6の計算方法は、サイドチャネル攻撃に対する防御法に関しても有効である。この理由は以下の通りである。 The sixth calculation method is also effective for a defense against a side channel attack. The reason is as follows.
ステップS1211で、uiに(1+Σdi−w+j(tw+1Uj−2Uj−1))mod 2w+1−2wを代入し、ステップS1231で、u0に(1+Σdj(ti+1Uj−2Uj−1))mod 2i+1−2iを代入している。
In step S1211, the u i (1 + Σd i- w + j (t w + 1 U j -2U j-1)) by substituting
i=m+a−1からi=0までuiを左から右に並べた数値列um+a−1……u0は、下記(式87)のようなパターンで表わされる。 A numerical sequence u m + a−1 ... u 0 in which u i is arranged from left to right from i = m + a−1 to i = 0 is represented by the following pattern (formula 87).
|0……0x|0……0x|……|0……0x| ・・・(式87)
ここで各xは各々非0の値であり、それぞれ上記u[j]に対応する。ここで“0……0”は、j≠0のとき、w−1個連続し、j=0のとき、高々w−1個連続する。
| 0 …… 0x | 0 …… 0x | …… | 0 …… 0x | (Expression 87)
Here, each x is a non-zero value and corresponds to the above u [j]. Here, “0... 0” continues for w−1 when j ≠ 0, and continues for w−1 at most when j = 0.
実計算部903がスカラー倍点を計算する際に、ステップS1204〜S1215の繰り返し処理において、ブロック|0……0x|に対応する楕円曲線演算は、|T……TA|、すなわちw−1回のTの後にAとなる。ただし、Tはτ倍算を、AはECADDをそれぞれ表わす。
When the
従って、すべてのスカラー値に対して、実行する楕円曲線演算は、実施の形態1及び2と同様に、下記(式88)と固定されている。そのため、(式88)のみからは、スカラー値dに関する情報を引き出すことができない。 Therefore, the elliptic curve calculation to be executed for all scalar values is fixed as in the following (Equation 88) as in the first and second embodiments. Therefore, information relating to the scalar value d cannot be extracted from (Equation 88) alone.
|T……TA|T……TA|……|T……TA| ・・・(式88)
なお、実施の形態6において、前記処理1〜処理3を用いてよいことも、実施の形態1〜3と同様である。
| T …… TA | T …… TA | …… | T …… TA | (Formula 88)
In the sixth embodiment, the
以上の通り、上記第6の計算方法は、コブリッツ曲線に対して適用可能で、サイドチャネル攻撃に有用な情報を与えないのでサイドチャネル攻撃に対して耐性があり、メモリ使用量及び処理高速性に優れるという特徴がある。 As described above, the sixth calculation method can be applied to the Kobritz curve and does not give useful information for the side channel attack. It is characterized by being excellent.
(実施の形態7)
本発明の実施の形態7におけるスカラー倍計算方法、スカラー倍計算装置及びプログラムについて、図3,図13〜図15,図21,図22を参照しながら説明する。
(Embodiment 7)
A scalar multiplication calculation method, scalar multiplication calculation apparatus, and program according to Embodiment 7 of the present invention will be described with reference to FIGS. 3, 13 to 15, 21, and 22.
実施の形態7では、前記図3で示されるスカラー倍計算部115の機能ブロックを用いる。実施の形態7におけるスカラー倍計算部115(図1のスカラー倍計算部135に対応する)の構成は、実施の形態1,2及び5と同様である。
In the seventh embodiment, the functional block of the
実施の形態7で用いるスカラー倍計算方法として、スカラー倍計算部115がスカラー値d、楕円曲線上の点P、ウィンドウ幅wから楕円曲線におけるスカラー倍点dPを計算する第7の計算方法を説明する。第7の計算方法では、スカラー値dを、下記(式89)を満たすdw[i]に対して、(式85)を満たすようにエンコードする。
As a scalar multiplication calculation method used in the seventh embodiment, a seventh calculation method in which the
dw[i]=1 または dw[i]=−1 ・・・(式89)
その際、前計算部303は、定点Pから下記(式90)で示す点を計算する。
d w [i] = 1 or d w [i] = − 1 (formula 89)
At that time, the
τw−1P±τw−2P±……±τP±P ・・・(式90)
実計算部304は、(式85),(式89)を満たすスカラー値d、及び、(式90)を満たす前計算テーブル{τw−1P±τw−2P±……±τP±P}から、スカラー倍点dPを計算する。
τ w-1 P ± τ w-2 P ± …… ± τP ± P (Equation 90)
The
実施の形態6と実施の形態7との違いは以下の通りである。実施の形態6では、スカラー値をエンコードした際、(式85)において、各dw[i]は、(式86)を満たすのに対し、実施の形態7では、スカラー値をエンコードした際、(式85)において、各dw[i]は、(式89)を満たす。 Differences between the sixth embodiment and the seventh embodiment are as follows. In the sixth embodiment, when a scalar value is encoded, each d w [i] in (Expression 85) satisfies (Expression 86), whereas in the seventh embodiment, when a scalar value is encoded, In (Expression 85), each d w [i] satisfies (Expression 89).
実施の形態6と実施の形態7では、前計算テーブルに格納されている点が異なり、実施の形態6と比較して実施の形態7における前計算テーブルはより高速に作成することが可能であり、スカラー倍計算の更なる高速化を図ることができる。 The sixth embodiment and the seventh embodiment are different in that they are stored in the pre-calculation table, and the pre-calculation table in the seventh embodiment can be created faster than the sixth embodiment. Further, it is possible to further speed up the scalar multiplication.
次に、エンコード部302、前計算部303、実計算部304の行う各処理について詳細に説明する。
Next, each process performed by the
まず、図13を用いて、エンコード部302がスカラー値dを、(式85),(式89)を満たすようにエンコードする方法を説明する。
First, a method in which the
エンコード部302は、dを入力する(S1301)。次に、δ剰余変換部324は、d mod δを計算し、d mod δの実部分をc0に、d mod δのτ部分をc1に、それぞれ代入する(S1302)。次に、iに0を代入する(S1303)。
The
次に、ステップS1304で、繰り返し判定部323は、|c0|≠1またはc1≠0であるかどうかを判定する。条件が成立する場合(TRUE)、ステップS1311へ移る。条件が成立しない場合(FALSE)、ステップS1321へ移る。
Next, in step S1304, the
ステップS1311では、剰余取得部321は、(c0+2μc1 mod 4)−2を計算し、uに代入する。次に、uをd1[i]に代入し、iにi+1を代入する(S1312)。次に、c0にc0−uを代入する(S1313)。次に、tにc0を、c0にc1+μc0/2を、c1に−t/2を、それぞれ代入し、ステップS1304へ戻る(S1314)。
In step S1311, the
一方、ステップS1321では、c0をd1[i]に代入する(S1321)。次に、エンコード部302は、d1[i],……,d1[0]を出力する(S1322)。
On the other hand, in step S1321, substitutes c 0 to d 1 [i] (S1321) . Next, the
次に、図14を用いて、前計算部303が楕円曲線上の点から前計算テーブルを作成する概要を説明する。ただし、本実施の形態において、前記332で、2倍算部ではなく、τ倍算部を具備するものとする。
Next, an outline in which the
ステップS1401において、R1[0]にPを代入する。w=1のときは、ここで終了する。 In step S1401, P is substituted for R 1 [0]. When w = 1, the process ends here.
ステップS1402において、R2[1]にτR1[0]+R1[0]を、R2[0]にτR1[0]−R1[0]を、それぞれ代入する。w=2のときは、ここで終了する。このとき、R2[1]=τP+P,R2[0]=τP−Pである。 In step S1402, the τR 1 [0] + R 1 [0] to R 2 [1], the τR 1 [0] -R 1 [ 0] to R 2 [0], the values are. When w = 2, the process ends here. At this time, R 2 [1] = τP + P and R 2 [0] = τP−P.
ステップS1403において、R3[1||u0]にτ2R1[0]+R2[u0]を、R3[0||~u0]にτ2R1[0]−R2[u0]を、それぞれ代入する。なお、図14中の上付きバー付きの記号Xを、本文中では記号“~X”で表す。w=3のときは、ここで終了する。wの値が一般の場合は、上記の計算方法をwまで続ける。ステップS1404,S1405は、w=4,5の場合を示すもので、同様に計算される。なお、記号“||”は、ビット列の結合を表す。また、上付きバー付きの記号、例えば上付きバー付きのu0は、u0のビット反転を表す。また、ここでu0,l0,l1等は、各々1ビットの値で、0,1の値をとる。例えば、S1403におけるR3[0||~u0]の場合、u0=0,1に対して、各々R3[01],R3[00]を表し、その値は、右辺にu0=0,1を各々代入した値がR3[01],R3[00]に格納される。 In step S1403, R 3 [1 || u 0] to τ 2 R 1 [0] + R 2 a [u 0], R 3 [ 0 || ~ u 0] to τ 2 R 1 [0] -R 2 [u 0 ] is substituted for each. Note that the symbol X with a superscript bar in FIG. 14 is represented by the symbol “˜X” in the text. When w = 3, the process ends here. When the value of w is general, the above calculation method is continued until w. Steps S1404 and S1405 indicate cases where w = 4 and 5, and are calculated in the same manner. The symbol “||” represents a combination of bit strings. Also, a symbol with a superscript bar, for example, u 0 with a superscript bar represents bit inversion of u 0 . Here, u 0 , l 0 , l 1, etc. are each 1-bit values and take values of 0 and 1. For example, in the case of R3 [0 || ˜u 0 ] in S1403, for u 0 = 0 and 1, R 3 [01] and R 3 [00] are represented, respectively, and the values of u 0 = Values obtained by substituting 0 and 1 are stored in R 3 [01] and R 3 [00].
次に、図21,図22を用いて、前計算部303が楕円曲線上の点から前計算テーブルを作成する方法を説明する。
Next, a method in which the
前計算部303は、楕円曲線上の点P及びウィンドウ幅wを入力する(S2101)。次に、ステップS2103で、PをR1[0]に代入する(S2102)。次に、繰り返し判定部323は、w=1であるかどうかを判定する。条件が成立する場合(TRUE)、ステップS2104へ移る。条件が成立しない場合(FALSE)、ステップS2111へ移る。
The
ステップS2104では、前計算部303は、点R1[0]を出力する(S2104)。
In step S2104, the
ステップS2111では、加算部331とτ倍算部332は、τR1[0]+R1[0]を計算し、その結果をR2[1]に代入する。また、加算部331とτ倍算部332は、τR1[0]−R1[0]を計算し、その結果をR2[0]に代入する。以下のステップS2122,S2113,S2202〜S2206,S2212〜S2219等では、加算部331とτ倍算部332により計算する。
In step S2111, the
次に、繰り返し判定部323は、w=2であるかどうかを判定する(S2112)。条件が成立する場合(TRUE)、ステップS2113へ移る。条件が成立しない場合(FALSE)、ステップS2121へ移る。
Next, the
ステップS2113では、前計算部303は、点R2[0],R2[1]を出力する。
In step S2113, the
一方、ステップS2121では、繰り返し判定部323は、w=3または5であるかどうかを判定する。条件が成立する場合(TRUE)、ステップS2122へ移る。条件が成立しない場合(FALSE−A)、図22のステップS2201へ移る。
On the other hand, in step S <b> 2121, the
ステップS2122では、加算部331とτ倍算部332は、τ2R1[0]+R2[0]を計算し、その結果をR3[10]に代入する。また、τ2R1[0]−R2[0]を計算し、その結果をR3[01]に代入する。次に、同様に、τ2R1[0]+R2[1]を計算し、その結果をR3[11]に代入する。また、τ2R1[0]−R2[1]を計算し、その結果をR3[00]に代入する(S2123)。
In step S2122, the adding
次に、繰り返し判定部323は、w=3であるかどうかを判定する(S2124)。条件が成立する場合(TRUE)、ステップS2125へ移る。条件が成立しない場合(FALSE−A)、図22のステップ2201へ移る。
Next, the
ステップS2125では、前計算部303は、点R3[11],R3[00],R3[10],R3[01]を出力し、終了する。
In step S2125, the
図22のS2201において、繰り返し判定部323は、w=4であるかどうかを判定する。条件が成立する場合(TRUE)、ステップS2202へ移る。条件が成立しない場合(FALSE)、ステップS2211へ移る。
In S2201 of FIG. 22, the
S2202では、加算部331とτ倍算部332は、τ2R2[1]+R2[0]を計算し、その結果をR4[110]に代入する。また、τ2R2[1]−R2[0]を計算し、その結果をR4[101]に代入する。次に、τ2R2[1]+R2[1]を計算してその結果をR4[111]に代入し、また、τ2R2[1]−R2[1]を計算してその結果をR4[100]に代入する(S2203)。次に、τ2R2[0]+R2[0]を計算してその結果をR4[010]に代入し、また、τ2R2[0]−R2[0]を計算してその結果をR4[001]に代入する(S2204)。次に、τ2R2[0]+R2[1]を計算してその結果をR4[011]に代入し、また、τ2R2[0]−R2[1]を計算してその結果をR4[000]に代入する(S2205)。
In S2202, the
次に、前計算部303は、点R4[000],R4[001],R4[010],R4[011],R4[100],R4[101],R4[110],R4[111]を出力し、終了する(S2206)。
Next, the
一方、ステップS2211で、繰り返し判定部323は、w=5であるかどうかを判定する。条件が成立する場合(TRUE)、ステップS2212へ移る。条件が成立しない場合(FALSE)、終了する。
On the other hand, in step S2211, the
ステップS2212では、加算部331とτ倍算部332は、τ3R2[1]+R3[11]を計算し、その結果をR5[1111]に代入する。また、τ3R2[1]−R3[11]を計算し、その結果をR5[1000]に代入する。次に、τ3R2[1]+R3[10]を計算してその結果をR5[1110]に代入し、また、τ3R2[1]−R3[10]を計算してその結果をR5[1001]に代入する(S2213)。次に、τ3R2[1]+R3[01]を計算してその結果をR5[1101]に代入し、また、τ3R2[1]−R3[01]を計算してその結果をR5[1010]に代入する(S2214)。次に、τ3R2[1]+R3[01]を計算してその結果をR5[1101]に代入し、また、τ3R2[1]−R3[01]を計算してその結果をR5[1010]に代入する(S2215)。次に、τ3R2[0]+R3[11]を計算してその結果をR5[0111]に代入し、また、τ3R2[0]−R3[11]を計算してその結果をR5[0000]に代入する(S2216)。次に、τ3R2[0]+R3[10]を計算してその結果をR5[0110]に代入し、また、τ3R2[0]−R3[10]を計算してその結果をR5[0001]に代入する(S2217)。次に、τ3R2[0]+R3[01]を計算してその結果をR5[0101]に代入し、また、τ3R2[0]−R3[01]を計算してその結果をR5[0010]に代入する(S2218)。次に、τ3R2[0]+R3[00]を計算してその結果をR5[0100]に代入し、また、τ3R2[0]−R3[00]を計算してその結果をR5[0011]に代入する(S2219)。
In step S2212, the adding
次に、前計算部303は、点{R5[0000],R5[0001],R5[0010],R5[0011],R5[0100],R5[0101],R5[0110],R5[0111],R5[1000],R5[1001],R5[1010],R5[1011],R5[1100],R5[1101],R5[1110],R5[1111]}を出力し、終了する(S2120)。
Next, the
最後に、図15を用いて、実計算部304が、エンコードされたスカラー値と楕円曲線上の点から、楕円曲線におけるスカラー倍点を計算する方法を説明する。
Finally, a method in which the
まず、実計算部304は、d1[i],……,d1[0],w,P,Rw[0],……,Rw[2w−1−1]を入力する(S1501)。次に、Qに無限遠点Oを、jにiを、それぞれ代入する(S1502)。次に、繰り返し判定部344は、j>w−1であるかどうかを判定する(S1503)。条件が成立する場合(TRUE)、ステップS1511へ移る。条件が成立しない場合(FALSE)、ステップS1515へ移る。
First, the
ステップS1511では、uに、(1/2)*(1−(−1)s*d1[j−1])2w−2+(1/2)*(1−(−1)s*d1[j−2])2w−3+……+(1/2)*(1−(−1)s*d1[j−w+1])20を代入する。 In step S1511, u is changed to (1/2) * (1-(-1) s * d1 [j-1] ) 2 w-2 + (1/2) * (1-(-1) s * d1. [j-2] ) 2 w-3 +... + (1/2) * (1-(-1) s * d1 [j-w + 1] ) 2 0 is substituted.
次に、加算部342とτ倍算部343は、τwQ+d1[j]*Rw[u]を計算し、その結果をQに代入する(S1512)。次に、jにj−wを代入し、ステップS1503へ戻る(S1513)。
Next, the adding
一方、ステップS1515では、繰り返し判定部344は、j≧0であるかどうかを判定する。条件が成立する場合(TRUE)、ステップS1521へ移る。条件が成立しない場合(FALSE)、ステップS1531へ移る。
On the other hand, in step S1515, the
ステップS1521では、加算部342とτ倍算部343は、τQ+d1[j]*Pを計算し、その結果をQに代入する。次に、jにj−1を代入し、ステップS1515へ戻る(S1522)。ステップS1531では、実計算部304は、Qを出力し、終了する。
In step S1521, the adding
上記エンコード方法において、各桁d1[i]は、(式89)を満たす。この理由は、以下の通りである。楕円曲線暗号において、秘密鍵dは奇数を用いる。ステップS1304〜S1314のループにおいて、整数c0は常に奇数であることを説明する。 In the encoding method, each digit d 1 [i] satisfies (Equation 89). The reason for this is as follows. In elliptic curve cryptography, an odd number is used as the secret key d. In the loop of steps S1304~S1314, explaining that integer c 0 is always odd.
整数a,bに対して、「a+bτがτで割り切れる」⇔「aは偶数」であり、「a+bτがτ2で割り切れる」⇔「a≡2b mod 4」であることが、非特許文献4に記載されている。ここで、“⇔”は、同値関係を表わす記号である。
Integer a, with respect to b, "a + Bitau is divisible by tau" ⇔ is "a is an even number", it is "a + Bitau is divisible by tau 2" ⇔ "A≡
ステップS1311で、u=(c0+2μc1mod 4)−2を計算し、ステップS1313で、c0にc0−uを代入している。ここで、a=(c0+2μc1mod 4)−2,b=c1とおくと、a mod 4 ≡ −2μc1+2 mod 4である。ところが、−2μc1+2 mod 4 ≡ 2c1 mod 4は成立しない。これより、a mod 4 ≡ 2b mod 4は成立しないことがわかる。従って、ステップS1313終了後のc0,c1に関して、c0+c1τはτで割り切れるが、τ2では割り切れないことがわかる。さらに、(c0+2μc1mod 4)=1または3であることもわかる。u=(c0+2μc1 mod 4)−2であるから、(式85)の各桁d1[i]は、1または−1である。以上から(式85)の各桁d1[i]は、(式89)を満たす。
In step S1311, u = (c 0 +2 μc 1 mod 4) −2 is calculated, and c 0 −u is substituted for c 0 in step S1313. Here, if a = (c 0 +2 μc 1 mod 4) −2 and b = c 1 , a
上記前計算テーブル作成方法は、実施の形態6と比較して高速に実行可能である。この理由は以下の通りである。 The pre-calculation table creation method can be executed faster than the sixth embodiment. The reason is as follows.
実施の形態6では、前記図9における前計算部902はτ倍算部922ではなく2倍算部922を具備しているのに対し、実施の形態7では、前記図3における前計算部303はτ倍算部332を具備しており、楕円曲線上の2倍算と比較して、楕円曲線上のτ倍算は高速に計算できる。また、楕円曲線上の2点に対する楕円加算,楕円減算を同時に計算している。従って、上記前計算テーブル作成方法は、実施の形態6と比較して高速に実行可能である。
In the sixth embodiment, the
上記スカラー倍計算方法は、サイドチャネル攻撃に対する防御法に関して有効である。この理由は以下の通りである。 The above scalar multiplication calculation method is effective as a defense method against a side channel attack. The reason is as follows.
ステップS1503〜S1513の繰り返し処理において、実行される楕円曲線演算は、下記(式91)と固定されている。ここで、Tは、w−1個連続している。 In the repetitive processing of steps S1503 to S1513, the elliptic curve calculation to be executed is fixed as (Equation 91) below. Here, T is continuous by w−1.
|T……TA|T……TA|……|T……TA| ・・・(式91)
ステップS1515〜S1522の繰り返し処理において、実行される楕円曲線演算は、下記(式92)と固定されている。ただし、(式92)で、Tは、高々w−1個連続している。
| T …… TA | T …… TA | …… | T …… TA | (Formula 91)
In the repetition processing of steps S1515 to S1522, the elliptic curve calculation to be executed is fixed as the following (formula 92). However, in (Equation 92), T is continuous at most w−1.
|T……TA| ・・・(式92)
従って、実計算部304で、すべてのスカラー値に対して、実行する楕円曲線演算は、下記(式93)と固定されているため、(式93)のみからは、スカラー値に関する情報を引き出すことができない。すなわちサイドチャネル攻撃に対する防御法を有している。ただし、(式93)において、最下位ブロック以外でTはw個連続し、最下位ブロックでTは高々w−2個連続する。
| T …… TA | (Formula 92)
Accordingly, since the elliptic curve calculation to be executed for all scalar values in the
|T……TA|T……T|……|T……TA|T……TA| ・・・(式93)
以上の通り、上記第7の計算方法は、コブリッツ曲線に対して適用可能で、サイドチャネル攻撃に有用な情報を与えないのでサイドチャネル攻撃に対して耐性があり、メモリ使用量及び処理高速性に優れるという特徴がある。
| T …… TA | T …… T | …… | T …… TA | T …… TA |
As described above, the seventh calculation method can be applied to the Kobritz curve and does not give useful information for the side channel attack, so it is resistant to the side channel attack, and the memory usage and processing speed are improved. It is characterized by being excellent.
<署名検証システム(1)>
次に、本発明を署名検証システムに適用した実施の形態について説明する。まず、図2,図16を参照して、本発明の実施の形態8における署名生成方法、署名生成装置及びプログラムについて説明する。図16は、実施の形態8の署名検証システム(1)の構成を示し、この署名検証システムは、本発明の実施の形態における署名生成方法に従った署名生成処理を行う署名生成装置と、署名検証処理を行う署名検証装置とを含んで構成される。各々の装置は、前述した実施の形態1〜7のいずれか1つにおけるスカラー倍計算装置に従った処理を行うスカラー倍計算部を具備している。特に図16に示す署名検証システムは、本発明の実施の形態における署名生成装置であるスマートカード1601と、署名検証装置であるコンピュータ1621とからなる。コンピュータ1621は、署名検証処理をプログラムの実行によって行う。スマートカード1601は、コンピュータ1621での署名検証処理に対応した署名生成処理を、プログラムの実行によって行う。コンピュータ1621とスマートカード1601の間で、データ・情報の授受が行われる。
<Signature verification system (1)>
Next, an embodiment in which the present invention is applied to a signature verification system will be described. First, a signature generation method, signature generation apparatus, and program according to Embodiment 8 of the present invention will be described with reference to FIGS. FIG. 16 shows the configuration of the signature verification system (1) according to the eighth embodiment. This signature verification system includes a signature generation apparatus that performs a signature generation process according to the signature generation method according to the embodiment of the present invention, and a signature. And a signature verification device that performs verification processing. Each apparatus includes a scalar multiplication calculator that performs processing according to the scalar multiplication apparatus according to any one of the first to seventh embodiments. In particular, the signature verification system shown in FIG. 16 includes a
スマートカード1601は、CPU1613、コプロセッサ1614、RAM1603、ROM1606、入出力インタフェース1610を備える。実施の形態1などと同様に、RAM1603は、定数1604、秘密情報1605を記憶している。
The
コンピュータ1621は、CPU1633、コプロセッサ1634、RAM1623、ROM1626、外部記憶装置1627、入出力インタフェース1630を備える。実施の形態1などと同様に、RAM1623は、定数1624、秘密情報1625を記憶している。
The
ここでスマートカードとは、プロセッサを含むIC(集積回路)を搭載した、可搬型のカード形状の装置を指している。本例では、スマートカード1601は、プロセッサとしてCPU1613及びコプロセッサ1614と、メモリとしてRAM1603及びROM1606とを搭載した装置である。
Here, the smart card refers to a portable card-shaped device on which an IC (integrated circuit) including a processor is mounted. In this example, the
スマートカード1601は、前記図1に示すコンピュータA101と類似の構成を備え、CPU1613やコプロセッサ1614などの演算装置が、記憶部1602に格納されているプログラムを実行することにより、処理部1611として、データ処理部112ではなく署名生成処理部1612を実現する。ただし、図13に示すように、スマートカード1601では、前記図1に示す外部記憶装置107、ディスプレイ108、キーボード109などを備えなくてもよい。
The
コンピュータ1621は、コンピュータA101と同様の構成を備え、CPU1613が記憶部1622に格納されているプログラムを実行することにより、処理部1631として、データ処理部112ではなく署名検証処理部1632を実現する。各スカラー倍計算部1615,1635は、図1に示す各スカラー倍計算部115,135と同様の機能を備える。署名生成処理部1612と署名検証処理部1632とで対応した処理が行われる。
The
なお、本実施の形態において、コンピュータ1621内の各プログラムは、あらかじめ、コンピュータ1621内の記憶部1622に格納されていてもよいし、必要なときに、コンピュータ1621が利用可能な媒体を介して他の装置から記憶部1622に導入されてもよい。更に、スマートカード1601内の各プログラムは、あらかじめ、スマートカード1601内の記憶部1602に格納されていてもよいし、必要なときに、入出力インタフェース1610を介して接続するコンピュータ、または当該コンピュータが利用可能な媒体を介して記憶部1602に導入されてもよい。前記利用可能な媒体とは、例えば当該コンピュータに着脱可能な記憶媒体、または通信媒体(すなわちネットワークまたはネットワークを伝搬する搬送波)を指す。
Note that in this embodiment, each program in the
前記図2を参照しながら、図16に示す署名検証システムにおける署名生成と署名検証の動作を説明する。図2のデータ処理部112は、署名生成処理部1612、署名検証処理部1632に対応する。同様に、スカラー倍計算部115は、各スカラー倍計算部1615,1635に対応し、記憶部102は、各記憶部1602,1622に対応する。
Operations of signature generation and signature verification in the signature verification system shown in FIG. 16 will be described with reference to FIG. The
図16において、コンピュータ1621とスマートカード1601の間で、所定のディジタル署名アルゴリズムに基づく処理を行う。離散対数問題に基づくディジタル署名方法を楕円曲線上の離散対数問題に基づく方法に対応させて構成する楕円曲線ディジタル署名アルゴリズム(ECDSA)という署名方法がある。この方法を用いるECDSA署名については、例えば、非特許文献1に記載されている。
In FIG. 16, processing based on a predetermined digital signature algorithm is performed between a
まず、コンピュータ1621は、ランダムに選んだ数値をチャレンジコード1642として入出力インタフェース1630より出力し、インタフェースを介してスマートカード1601に転送する。
First, the
スマートカード1601は、入出力インタフェース1610を介してチャレンジコード1642を受け取る。署名生成処理部1612(図2の112)は、チャレンジコード1642を受け付け、受け取ったチャレンジコード1642のハッシュ値をとり、所定のビット長の数値fに変換する。
そして、署名生成処理部1612は、乱数uを生成し、記憶部1602(図2の102)に格納されている定数1604から読み出した楕円曲線上の定点Q(S205)と共に、スカラー倍計算部1615(図2の115)へ送る(S206)。
The signature
そして、スカラー倍計算部1615は、定点Q、乱数uによるスカラー倍点uQ=(xu,yu)を計算し、計算されたスカラー倍点uQを署名生成処理部1612へ送る(S207)。
The
そして、署名生成処理部1612は、送られたスカラー倍点uQを用いて署名(ディジタル署名データ)の生成を行う。例えば、前記ECDSA署名に従った処理を行う場合であれば、下記(式94),(式95)を計算することにより、チャレンジコード1642に対応する署名(s,t)を得る(S208)。
Then, the signature
s=xu mod q ・・・(式94)
t=u−1(f+ds) mod q ・・・(式95)
ここで、qは定点Qの位数、すなわち、定点Qのq倍点qQが無限遠点になり、qより小さな数値mに対する定点Qのm倍点mQは無限遠点にはならない、というような数値のことである。
s = x u mod q (Equation 94)
t = u −1 (f + ds) mod q (Equation 95)
Here, q is the order of the fixed point Q, that is, the q point qQ of the fixed point Q is an infinite point, and the m times point mQ of the fixed point Q for a numerical value m smaller than q is not an infinite point. It is a serious number.
スマートカード1601は、署名生成処理部1612で生成した署名1641を、入出力インタフェース1610より出力し、インタフェースを介してコンピュータ1621へ転送する。
The
コンピュータ1621の署名検証処理部1632(図2の112)は、署名1641が入力されると(S204)、署名1641の数値s,tが適切な範囲内すなわち1≦s<q,1≦t<qであるかを調べる。
When the
数値s,tが上記範囲内になければ、チャレンジコード1642に対する署名1641についての検証結果として「無効」を出力し、スマートカード1601を拒絶する。数値s,tが上記範囲内にあれば、署名検証処理部1632は、下記(式96),(式97),(式98)を計算する。
If the numerical values s and t are not within the above range, “invalid” is output as the verification result for the
h=t−1 mod q ・・・(式96)
h1=fh mod q ・・・(式97)
h2=sh mod q ・・・(式98)
そして、署名検証処理部1632は、記憶部1622(図2の102)に格納されている定数1624から読み出した公開鍵dQ及び定点Qと(S205)、計算したh1,h2とを、スカラー倍計算部1635(図2の115)へ送る(S206)。
h = t −1 mod q (Equation 96)
h 1 = fh mod q (formula 97)
h 2 = sh mod q (formula 98)
Then, the signature
スカラー倍計算部1635は、定点Qとh1によるスカラー倍点h1Qと、公開鍵dQとh2によるスカラー倍点h2dQとを計算し、計算されたスカラー倍点を署名検証処理部1632へ送る(S207)。
The
署名検証処理部1632は、送られたスカラー倍点を用いて、署名検証処理を行う。例えば、ECDSA署名における署名検証であれば、下記(式99)で表わす点Rを計算し、そのx座標をxRとしたとき、下記(式100)で表わすs’を計算する。
The signature
R=h1Q+h2dQ ・・・(式99)
s'=xRmod q ・・・(式100)
そして、s’=sであれば、チャレンジコード1643に対する署名1641についての検証結果として「有効」を出力し、スマートカード1601を認証し受け入れる(S208)。また、s’=sでなければ、検証結果として「無効」を出力し、スマートカード1601を拒絶する(S208)。
R = h 1 Q + h 2 dQ (Formula 99)
s ′ = x R mod q (Equation 100)
If s ′ = s, “valid” is output as the verification result of the
署名生成や署名検証では、楕円曲線上の点のスカラー倍算を計算する。従って、本実施の形態において、署名生成を行う際に、前記第1〜第7の計算方法または実施の形態1〜7のスカラー倍計算装置のいずれかを用いることが可能である。 In signature generation and signature verification, scalar multiplication of points on an elliptic curve is calculated. Therefore, in the present embodiment, when generating a signature, it is possible to use any of the first to seventh calculation methods or the scalar multiplication apparatus of the first to seventh embodiments.
次に、署名生成処理部1612が署名生成を行うときのスカラー倍計算について詳細に説明する。
Next, scalar multiplication calculation when the signature
署名生成の場合、スカラー倍計算部1615は、定点Q、乱数uによるスカラー倍点uQ=(xu,yu)を計算し、計算されたスカラー倍点を署名生成処理部1612へ送る。このとき、定点Q、乱数uによるスカラー倍点uQの計算では、まず、乱数uを生成し、uをエンコードした後、定点Qのスカラー倍点を計算する。
In the case of signature generation, the scalar
次に示す実施の形態9,10(署名検証システム(2),(3))では、署名生成処理部1612が行う署名生成処理を示すものであり、乱数生成と乱数倍点uQの計算を同時に行う。従って、乱数uのエンコード処理を行う必要がない。
The following ninth and tenth embodiments (signature verification systems (2) and (3)) show the signature generation processing performed by the signature
<署名検証システム(2)>
次に、本発明の他の実施の形態9における署名生成方法、署名生成装置及びプログラムについて、図16〜図18及び図20を参照しながら説明する。実施の形態9の署名検証システム(2)では、前記図16で示す署名検証システムの構成における署名生成装置であるスマートカード1601の構成と、図17で示される署名生成処理部1612の機能ブロックを用いる。本署名検証システム(2)において、本実施の形態の署名生成装置であるスマートカード1601は、署名生成処理をプログラムの実行により行う。スマートカード1601は、乱数生成部とスカラー倍計算部とをあわせた構成であり、乱数生成と乱数倍点の計算を同時に行うので、図16に示すスカラー倍計算部1615を具備する必要はない。図18は、署名生成処理部1612での計算処理を示すフロー図である。本署名検証システム(2)における署名生成と署名検証の動作のシーケンス図として、前記図2ではなく図20を用いる。
<Signature verification system (2)>
Next, a signature generation method, a signature generation apparatus, and a program according to another embodiment 9 of the present invention will be described with reference to FIGS. 16 to 18 and FIG. In the signature verification system (2) of the ninth embodiment, the configuration of the
図17において、署名生成処理部1612は、乱数倍計算部1701からなる。乱数倍計算部1701は、前計算部1702、実計算部1703からなる。前計算部1702は、加算部1721、2倍算部1722、繰り返し判定部1723からなる。実計算部1703は、剰余取得部1731、剰余変換部1732、繰り返し判定部1733、格納部1734、ランダムビット生成部1735、Ψ関数計算部1736、ビット値判定部1737、加算部1738、τ倍算部1739からなる。
In FIG. 17, the signature
図20において、スマートカード1601の署名生成処理部1612は、コンピュータ1621からのチャレンジコード1642を受け付ける(S2004)。署名生成処理部1612は、記憶部1602から楕円曲線上の定点を読み出し(S2005)、楕円曲線上の点を乱数倍計算部1701に渡す(S2006)。乱数倍計算部1701は、乱数、及び、乱数倍点を計算して署名生成処理部1612に渡す(S2007)。署名生成処理部1612は、乱数及び乱数倍点をもとに署名1641を生成してコンピュータ1621へ送る。
In FIG. 20, the signature
本実施の形態では、ベースポイントと呼ばれる楕円曲線上の点Qから、署名(s,t)を計算する計算方法を説明する。 In the present embodiment, a calculation method for calculating a signature (s, t) from a point Q on an elliptic curve called a base point will be described.
前計算部1702は、入力された楕円曲線上の点Qから、前計算テーブルを作成する。前計算部1702が楕円曲線上の点から前計算テーブルを作成する方法は、実施の形態1、5及び6と同様である。
The
実計算部1703と署名生成処理部1612は、ベースポイントと呼ばれる楕円曲線上の点Qから乱数k、及び、スカラー倍点kQを計算する。署名生成処理部1612は、乱数k、及び、スカラー倍点kGから署名(s,t)を生成する。ただし、本実施の形態では、乱数kを直接生成せず、乱数生成後、その乱数kをエンコードしたり、メモリに格納したりすることなく、直接、ベースポイントQのスカラー倍kQを計算することができる。
The
次に、署名生成処理部1612の行う各処理について詳細に説明する。図18を用いて、楕円曲線上のベースポイントQから乱数k及び楕円曲線上の点kQを計算する方法を説明する。
Next, each process performed by the signature
署名生成処理部1612は、まず、Qに楕円曲線上の無限遠点O、c0,c1に0、iにm+a−1を、それぞれ代入する(S1801)。次に、繰り返し判定部1733によりi>wであるかどうかを判定する(S1802)。i>wの場合(TRUE)、ステップS1803へ移る。i≦wの場合(FALSE)、ステップS1821へ移る。
The signature
ステップS1803では、ランダムビット生成部1735は、集合{±1,±3,……±(2w−1)}に属するw個のランダムな整数di,di−1,……,di−w+1を選ぶ。次に、uiに、(1+Σdi−w+j(tw+1Uj−2Uj−1))mod 2w+1−2wを代入する(S1804)。次に、jに1を代入する(S1805)。
In step S1803, the random
次に、繰り返し判定部1733によりj≦wであるかどうかを判定する(S1806)。j≦wの場合(TRUE)、ステップS1811へ移る。j>wの場合(FALSE)、ステップS1812へ移る。
Next, it is determined by the
ステップS1811では、QにτQ、(c0,c1)に(−2c1,c0+μc1)をそれぞれ代入する。 In step S1811, τQ is substituted for Q, and (−2c 1 , c 0 + μc 1 ) is substituted for (c 0 , c 1 ).
ステップS1812では、繰り返し判定部1733によりui>0であるかどうかを判定する。ui>0の場合(TRUE)、ステップS1813へ移る。ui≦0の場合、ステップS1814へ移る。
In step S1812, the
ステップS1813では、加算部1738は、QにQ+uiPを代入する。ステップS1814では、加算部1738は、QにQ−(−uiP)を代入する。次に、ステップS1815で、c0にc0+u0、iにi−wをそれぞれ代入し、ステップS1802へ戻る。 In step S1813, the addition unit 1738 substitutes Q + u i P for Q. In step S1814, the addition unit 1738 substitutes Q − (− u i P) for Q. Next, in step S1815, i-w were respectively substituted into c 0 + u 0, i to c 0, the process returns to step S1802.
一方、ステップS1821では、ランダムビット生成部1735は、集合{±1,±3,……±(2w−1)}に属するi+1個のランダムな整数di,di−1,……,d1,d0を選ぶ。次に、u0に、(1+Σdj(ti+1Uj−2Uj−1))mod 2i+1−2iを代入する(S1822)。次に、jに1を代入する(S1823)。
On the other hand, in step S1821, the random
次に、繰り返し判定部1733によりj≦iであるかどうかを判定する(S1824)。j≦iの場合(TRUE)、ステップS1825へ移る。j>iの場合、ステップS1831へ移る。 Next, it is determined whether or not j ≦ i by the repetition determination unit 1733 (S1824). If j ≦ i (TRUE), the process proceeds to step S1825. If j> i, the process moves to step S1831.
ステップS1825では、QにτQ、(c0,c1)に(−2c1,c0+μc1)をそれぞれ代入する。 In step S1825, τQ is substituted for Q, and (−2c 1 , c 0 + μc 1 ) is substituted for (c 0 , c 1 ).
ステップS1831では、繰り返し判定部1733によりu0>0であるかどうかを判定する。u0>0の場合(TRUE)、ステップS1832へ移る。u0≦0の場合(FALSE)、ステップS1833へ移る。
In step S1831, the
ステップS1832では、加算部1438は、QにQ+u0Pを代入する。ステップS1833では、加算部1438は、QにQ−(−u0P)を代入する。次に、ステップS1534で、c0にc0+u0を代入する。 In step S1832, the adding unit 1438 substitutes Q + u 0 P for Q. In step S1833, the adding unit 1438 substitutes Q − (− u 0 P) for Q. Next, c 0 + u 0 is substituted for c 0 in step S1534.
次に、繰り返し判定部1733によりd0=0であるかどうかを判定する(S1834)。d0=0の場合(TRUE)、ステップS1836へ移る。d0≠0の場合(FALSE)、ステップS1837へ移る。 Next, it is determined whether or not d 0 = 0 by the repetition determination unit 1733 (S1834). If d 0 = 0 (TRUE), the process moves to step S1836. If d 0 ≠ 0 (FALSE), the process moves to step S1837.
ステップS1836では、QにQ−P、c0にc0−1をそれぞれ代入する。ステップS1837では、QにQ−τP、c1にc1−1をそれぞれ代入する。次に、ステップS1838で、kに(c0+c1τ) mod #Eを代入する。ここで、#Eは、楕円曲線E上の点全体の個数である。 In step S1836, if the values are the c 0 -1 to Q-P, c 0 to Q. In step S1837, if the values are the c 1 -1 Q-τP, the c 1 to Q. Next, in step S1838, (c 0 + c 1 τ) mod #E is substituted for k. Here, #E is the total number of points on the elliptic curve E.
そして、ステップS1841で、実計算部1703は、乱数kと点Qを出力する。
In step S1841, the
本実施の形態における乱数倍計算部1701は、前記図1のスカラー倍計算部115または135と同様の機能を備えるので、サイドチャネル攻撃を防ぐことができる、かつ処理速度やメモリ使用量をカスタマイズすることができるスカラー倍計算を実行できる。そのためスマートカード1601が署名生成処理を行う際に、またコンピュータ1621が署名検証処理を行う際に、サイドチャネル攻撃を防ぐことができる。
Since the random
<署名検証システム(3)>
次に、本発明の他の実施の形態10における署名生成方法、署名生成装置及びプログラムについて、図4,図16,図17,図19〜図22を参照しながら説明する。本実施の形態10の署名検証システム(3)でも、前記図16で示す署名検証システムの構成における署名生成装置であるスマートカード1601の構成と、図17で示される署名生成処理部1612の機能ブロックを用いる。本署名検証システム(3)においても、署名生成装置であるスマートカード1601は、署名生成処理をプログラムの実行により行う。スマートカード1601は、乱数生成部とスカラー倍計算部とをあわせた構成であり、乱数生成と乱数倍点の計算を同時に行うので、図16に示すスカラー倍計算部1615を具備する必要はない。図19は、署名生成処理部1612での計算処理を示すフロー図である。本署名検証システム(3)における署名生成と署名検証の動作のシーケンス図として、前記図2ではなく図20を用いる。
<Signature verification system (3)>
Next, a signature generation method, a signature generation apparatus, and a program according to another
前記署名検証システム(2)と本署名検証システム(3)の違いは以下の通りである。署名検証システム(2)と署名検証システム(3)では、前計算テーブルに格納されている点が異なり、署名検証システム(2)と比較して署名検証システム(3)における前計算テーブルはより高速に作成することが可能であり、乱数によるスカラー倍計算の更なる高速化を図ることができる。 Differences between the signature verification system (2) and the signature verification system (3) are as follows. The signature verification system (2) and the signature verification system (3) differ in that they are stored in the pre-calculation table, and the pre-calculation table in the signature verification system (3) is faster than the signature verification system (2). It is possible to further increase the speed of scalar multiplication by random numbers.
本署名検証システム(3)においても、ベースポイントQから、署名(s,t)を計算する計算方法を説明する。 A calculation method for calculating the signature (s, t) from the base point Q also in the signature verification system (3) will be described.
前計算部1702は、入力された楕円曲線上の点Qから、前計算テーブルを作成する。前計算部1702が楕円曲線上の点から前計算テーブルを作成する方法は、実施の形態7と同様である。
The
実計算部1703と署名生成処理部1612は、ベースポイントと呼ばれる楕円曲線上の点Qから乱数d、及び、スカラー倍点dQを計算する。署名生成処理部1612は、乱数d、及び、スカラー倍点dQから署名(s,t)を生成する。ただし、本署名検証システム(3)でも、乱数dを直接生成せず、乱数生成後、その乱数dをエンコードしたり、メモリに格納したりすることなく、直接、ベースポイントQのスカラー倍点dQを計算することができる。次に、署名生成処理部1612の行う各処理について詳細に説明する。図19を用いて、楕円曲線上のベースポイントQから乱数d及び楕円曲線上の点dQを計算する方法を説明する。
The
まず、実計算部1703は、P,Rw[0],……,Rw[2w−1−1]を入力する(S1901)。次に、Qに無限遠点Oを、jにm+a−1を、それぞれ代入する(S1902)。次に、繰り返し判定部1733は、j>w−1であるかどうかを判定する(S1903)。条件が成立する場合(TRUE)、ステップS1911へ移る。条件が成立しない場合(FALSE)、ステップS1941へ移る。
First, the
ステップS1911では、ランダムビット生成部1735は、各ランダムビットd1[w−1],d1[w−2],……,d1[0]を生成し、w−1をkに代入する。次に、繰り返し判定部1733は、k≧0であるかどうかを判定する(S1912)。条件が成立する場合(TRUE)、ステップS1921へ移る。条件が成立しない場合(FALSE)、ステップS1931へ移る。
In step S1911, the random
ステップS1921では、tにc0を、c0に−2c1−(−1)d1[k]を、c1に2μ(t+c1)を、kにk−1を、それぞれ代入し、ステップS1912へ戻る。 In step S1921, the c 0 to t, -2c to c 0 1 - (- 1) d1 to [k], the 2μ (t + c 1) to c 1, a k-1 to k, assigns each step S1912 Return to.
ステップS1931では、uにd1[w−2]2w−2+……+d1[0]20を代入する。次に、加算部1738とτ倍算部1739は、τwQ+d1[w−1]*Rw[u]を計算し、その結果をQに代入する(S1932)。次に、jにj−wを代入し、ステップS1903へ戻る(S1933)。
In step S1931, d 1 [w−2] 2 w−2 +... + D 1 [0] 2 0 is substituted for u. Next, the adding unit 1738 and the
一方、ステップS1941では、繰り返し判定部1733は、j≧0であるかどうかを判定する。条件が成立する場合(TRUE)、ステップS1942へ移る。条件が成立しない場合(FALSE)、ステップS1951へ移る。
On the other hand, in step S1941, the
ステップS1943では、ランダムビット生成部1735は、ランダムビットd1を生成する。次に、tにc0を、c0に−2c1+(−1)d1を、c1にt+μc1を、それぞれ代入する(S1943)。次に、加算部1738とτ倍算部1739は、τQ+d1*Pを計算し、その結果をQに代入する(S1944)。次に、jにj−1を代入し、ステップS1941へ戻る(S1945)。
In step S1943, the
ステップS1951では、実計算部1703は、乱数d=c0+c1τ mod q,乱数倍点Qを出力する。
In step S1951, the
上記前計算テーブル作成方法は、署名検証システム(2)と比較して高速に実行可能である。この理由は、実施の形態7と同様である。 The pre-calculation table creation method can be executed faster than the signature verification system (2). The reason is the same as in the seventh embodiment.
本実施の形態における乱数倍計算部1701は、前記図1のスカラー倍計算部115または135と同様の機能を備えるので、上記計算方法と同様にサイドチャネル攻撃を防ぐことができる、かつ処理速度やメモリ使用量をカスタマイズすることができるスカラー倍計算を実行できる。そのためスマートカード1601が署名生成処理を行う際に、またコンピュータ1621が署名検証処理を行う際に、サイドチャネル攻撃を防ぐことができる。
Since the random
<鍵交換システム>
次に、本発明を鍵交換システムに適用した実施の形態11について説明する。図1,図2を参照して、本発明の実施の形態11におけるデータ生成方法、データ生成装置及びプログラムについて説明する。本実施の形態11においては、前記図1の情報処理システム構成が鍵交換システムの構成として応用できる。本鍵交換システムは、本発明の実施の形態におけるデータ生成装置であるコンピュータA101とコンピュータB121を含んで構成される。コンピュータA101及びコンピュータB121は、本発明の実施の形態におけるデータ生成方法に従ったデータ生成処理を、プログラムに従って実行する。
<Key exchange system>
Next, an eleventh embodiment in which the present invention is applied to a key exchange system will be described. With reference to FIGS. 1 and 2, a data generation method, a data generation apparatus, and a program according to
図1のデータ処理部112,132は、本実施の形態においては、それぞれ鍵交換処理部112,132として機能する。また、鍵交換処理部112,132としての機能以外に、前述した暗号化や復号化などの機能を備えてもよい。鍵交換システムのコンピュータA101が、コンピュータB121側から入力されたデータ143からコンピュータB121との共有情報の導出を行う場合のデータ生成処理を含む動作について説明する。
The
コンピュータB121のデータ処理部132(図2の112に対応する)は、記憶部122(図2の102に対応する)の秘密情報125から秘密鍵bを読み出して、コンピュータB121の公開鍵bQを計算する。そして、ネットワーク142を介して、公開鍵bQをデータ143としてコンピュータA101に転送する。
The data processing unit 132 (corresponding to 112 in FIG. 2) of the computer B121 reads the secret key b from the
コンピュータA101の鍵交換処理部112(図2の112に対応する)は、コンピュータB121の公開鍵bQの入力を受け付ける(S204)。鍵交換処理部112は、コンピュータB121の公開鍵bQを入力すると、記憶部102から読み出した秘密情報105であるコンピュータA101の秘密鍵dと(S205)、コンピュータB121の公開鍵bQとを、スカラー倍計算部115へ送る(S206)。
The key exchange processing unit 112 (corresponding to 112 in FIG. 2) of the computer A101 receives the input of the public key bQ of the computer B121 (S204). When the key
スカラー倍計算部115は、秘密鍵dと公開鍵bQによるスカラー倍点dbQを計算し、計算されたスカラー倍点dbQを鍵交換処理部112へ送る(S207)。
The scalar
鍵交換処理部112は、送られたスカラー倍点dbQを用いて共有情報の導出を行い、記憶部102に秘密情報105として格納する。例えば、スカラー倍点dbQのx座標を、共有情報とする。
The key
次に、コンピュータB121が、コンピュータA101側から入力されたデータ141からコンピュータA101との共有情報の導出を行う場合のデータ生成処理を含む動作について説明する。
Next, an operation including data generation processing when the computer B121 performs derivation of shared information with the computer A101 from the
コンピュータA101のデータ処理部112は、記憶部102の秘密情報105から秘密鍵dを読み出しコンピュータA101の公開鍵dQを計算する。そして、ネットワーク142を介して、公開鍵dQをデータ141としてコンピュータB121に転送する。
The
コンピュータB121の鍵交換処理部132(図2の112)は、コンピュータA101の公開鍵dQの入力を受け付ける(S204)。コンピュータA101の公開鍵dQを入力すると、鍵交換処理部132は、記憶部122(図2の102)の秘密情報125から読み出したコンピュータB121の秘密鍵bと(S205)、コンピュータA101の公開鍵dQとを、スカラー倍計算部135(図2の115)へ送る(S206)。
The key exchange processing unit 132 (112 in FIG. 2) of the computer B121 receives the input of the public key dQ of the computer A101 (S204). When the public key dQ of the computer A101 is input, the key
スカラー倍計算部135は、秘密鍵bと、公開鍵dQによるスカラー倍点bdQを計算し、計算されたスカラー倍点bdQを鍵交換処理部132へ送る(S207)。
The
鍵交換処理部132は、送られたスカラー倍点bdQを用いて共有情報の導出を行い、記憶部122に秘密情報125として格納する。例えば、スカラー倍点bdQのx座標を、共有情報とする。ここで、数dbと数bdは数値として同じなので、点dbQと点bdQは同じ点となり、同じ情報がコンピュータA101とB121で導出されたことになる。
The key
ネットワーク142には、点dQと点bQが送信されるが、点dbQ(もしくは点bdQ)を計算するには秘密鍵dもしくは秘密鍵bを用いなければならない。すなわち、秘密鍵dもしくは秘密鍵bを知らなければ、共有情報を得ることができない。
A point dQ and a point bQ are transmitted to the
このようにして得られた共有情報は、共通鍵暗号の秘密鍵として利用できる。本実施の形態においても、スカラー倍計算部115,135は、前述した実施の形態1〜7のいずれか1つのスカラー倍算を適用して同じ特徴を備えるので、サイドチャネル攻撃を防ぐことができる。
The shared information obtained in this way can be used as a secret key for common key cryptography. Also in the present embodiment, the
また、前述した各実施の形態におけるデータ処理部、すなわち、暗号化処理部、復号化処理部、署名生成処理部、署名検証処理部、及び鍵交換処理部などについては、専用のハードウェアを用いて構成して各処理を行う形態としてもよい。また、スカラー倍計算部をコプロセッサまたはそれ以外の専用ハードウェアで実現した形態としてもよい。また、データ処理部は、前記暗号化、復号化、署名生成、署名検証、鍵交換のためのデータ生成などの処理のうち、任意の一つ以上の処理を行えるように構成した形態としてもよい。 In addition, dedicated data is used for the data processing units in the above-described embodiments, that is, the encryption processing unit, the decryption processing unit, the signature generation processing unit, the signature verification processing unit, and the key exchange processing unit. It is good also as a form which configures and performs each process. 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 processes such as encryption, decryption, signature generation, signature verification, and data generation for key exchange. .
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。 As mentioned above, the invention made by the present inventor has been specifically described based on the embodiment. However, the present invention is not limited to the embodiment, and various modifications can be made without departing from the scope of the invention. Needless to say.
本発明は、暗号化などの各種セキュリティ技術に利用可能である。 The present invention can be used for various security technologies such as encryption.
101,121,1621…コンピュータ、1601…スマートカード、102,122,1602,1622…記憶部、111,131,1611,1631…処理部、115,135,1615,1635…スカラー倍計算部、112,132…データ処理部、1612…署名生成処理部、1632…署名検証処理部、104,124,1604,1624…定数、105,125,1605,1625…秘密情報、110,130,1610,1630…入出力インタフェース、108,128,1628…ディスプレイ、109,129,1629…キーボード、142…ネットワーク、1642…チャレンジコード、141,143…データ、302…エンコード部、303…前計算部、304…実計算部、321…剰余取得部、322…剰余変換部、323…繰り返し判定部、324…δ剰余変換部、325…Ψ関数計算部、326…格納部、331…加算部、332…2倍算部、333…繰り返し判定部、341…ビット値判定部、342…加算部、343…τ倍算部、344…繰り返し判定部、902…前計算部、903…実計算部、921…加算部、922…τ倍算部、923…繰り返し判定部、931…剰余取得部、932…剰余変換部、933…繰り返し判定部、934…δ剰余変換部、935…Ψ関数計算部、936…ビット値判定部、937…加算部、938…τ倍算部、1701…乱数倍計算部、1702…前計算部、1703…実計算部、1721…加算部、1722…2倍算部、1723…繰り返し判定部、1731…剰余取得部、1732…剰余変換部、1733…繰り返し判定部、1734…格納部、1735…ランダムビット生成部、1736…Ψ関数計算部、1737…ビット値判定部、1738…加算部、1739…τ倍算部。 101, 121, 1621 ... computer, 1601 ... smart card, 102, 122, 1602, 1622 ... storage unit, 111, 131, 1611, 1631 ... processing unit, 115, 135, 1615, 1635 ... scalar multiplication unit, 112, 132 ... Data processing unit, 1612 ... Signature generation processing unit, 1632 ... Signature verification processing unit, 104, 124, 1604, 1624 ... Constant, 105, 125, 1605, 1625 ... Secret information, 110, 130, 1610, 1630 ... Input Output interface, 108, 128, 1628 ... display, 109, 129, 1629 ... keyboard, 142 ... network, 1642 ... challenge code, 141, 143 ... data, 302 ... encoding unit, 303 ... pre-calculation unit, 304 ... actual calculation unit , 321 ... residue acquisition unit, 22: residue conversion unit, 323 ... repetition determination unit, 324 ... delta residue conversion unit, 325 ... Ψ function calculation unit, 326 ... storage unit, 331 ... addition unit, 332 ... doubling unit, 333 ... repetition determination unit, 341 ... Bit value determination unit, 342 ... Addition unit, 343 ... τ multiplication unit, 344 ... Repetition determination unit, 902 ... Pre-calculation unit, 903 ... Real calculation unit, 921 ... Addition unit, 922 ... τ multiplication unit, 923 ... Iterative determination unit, 931 ... residue acquisition unit, 932 ... residue conversion unit, 933 ... repetition determination unit, 934 ... delta residue conversion unit, 935 ... Ψ function calculation unit, 936 ... bit value determination unit, 937 ... addition unit, 938 ... τ multiplication unit, 1701 ... random number multiplication calculation unit, 1702 ... previous calculation unit, 1703 ... real calculation unit, 1721 ... addition unit, 1722 ... doubling calculation unit, 1723 ... repetition determination unit, 1731 ... remainder acquisition unit, 1732 ... Remainder conversion , 1733... Repeat determination unit, 1734... Storage unit, 1735... Random bit generation unit, 1736... Ψ function calculation unit, 1737... Bit value determination unit, 1738.
Claims (1)
メモリ部と、加算部と、引算部と、τ倍算部と、前記スカラー値を数値列にエンコードするエンコード部と、前記入力点から前計算テーブルを作成する前計算部と、前記エンコードした数値列と前記前計算テーブルとから前記スカラー倍点を計算する実計算部と、を具備し、
前記加算部は、前記楕円曲線上の二つの点を加算することを特徴とし、
前記引算部は、前記楕円曲線上の二つの点を引算することを特徴とし、
前記τ倍算部は、前記楕円曲線上の点(x,y)から(x2,y2)を出力する第一の計算を実行することを特徴とし、
前記τ倍算部を用いて、前記第一の計算を実行して、前記メモリ部に前記第一の計算の出力を格納する第一の処理部と、
前記加算部を用いて、前記メモリ部に格納されている点と前記入力点を加算する第二の処理部と、
前記引算部を用いて、前記メモリ部に格納されている点と前記入力点を引算する第三の処理部と、を有し、
前記前計算部は、前記第一の処理部と前記第二の処理部と前記第三の処理部の処理を予め定められた回数繰り返すことを特徴とし、
前記τ倍算部を用いて、前記第一の計算を予め定められた回数繰り返して、前記メモリ部に前記第一の計算の出力を格納する第四の処理部と、
前記エンコードした数値列の数値を読んで、前記読んだ数値から、前記前計算テーブルの点を選択して、前記加算部を用いて、前記メモリ部に格納されている点と前記選択した点を加算する第五の処理部と、を有し、
前記実計算部は、前記第四の処理部と前記第五の処理部の処理分の処理を繰り返し、
前記エンコード部は、
前記スカラー値を第一数値と第二数値に分割する分割部と、
前記第一数値と第二数値から、第三数値を計算するΨ関数の計算部と、
前記スカラー値を更新する更新部と、
前記分割部と前記Ψ関数の計算部と前記更新部の処理を繰り返すエンコード計算部と、を具備し、
前記メモリ部に格納された前記スカラー値をd、前記第一数値をd 0 、前記第二数値をd 1 、としたとき、前記分割部は、前記メモリ部に格納された前記スカラー値(d)から、d’=(d mod δ)=d 0 +d 1 τを満たすように前記第一数値(d 0 )と第二数値(d 1 )に分割し、
wを正の整数、x R を整数、x T を整数、t w+1 を前記楕円曲線上の演算τを複素数とみなした場合にwによって定まる整数、としたとき、前記Ψ関数は、前記第一数値(d 0 )と前記第二数値(d 1 )を入力(ただしd=x R +x T τ)し、出力される前記第三数値をΨ(d)=(d R +d T t w+1 mod 2 w+1 )−2 w とする関数であり、
前記Ψ関数の計算部は、前記第二数値と予め定められた第四数値との乗算結果と、前記第一数値とを加算し、前記加算された数値から、予め定められた第五数値を引算し、
前記更新部は、前記スカラー値から前記第三数値を減算した結果を予め定められた第六数値で除算するため、
前記更新部は、前記減算として、前記引算部を用いて、前記メモリ部に格納されている前記スカラー値から、前記第三数値を減算し、その計算結果を前記メモリ部に格納し、前記除算として、前記分割部を用いて、前記引算部が前記メモリ部に格納した前記スカラー値を前記第一数値と前記第二数値に分割し、前記第二数値と予め定められた所定の値との乗算結果を1ビット右シフトした値を前記メモリ部に格納する第六の処理部を有し、前記第六の処理部の処理分の処理をw回繰り返すこと、を特徴とするスカラー倍計算装置。 In an elliptic curve, a scalar multiple and a scalar multiple calculation device in elliptic curve cryptography that calculates a scalar multiple from an input point on the elliptic curve,
A memory unit, an addition unit, a subtraction unit, a τ multiplication unit, an encoding unit that encodes the scalar value into a numerical sequence, a pre-calculation unit that creates a pre-calculation table from the input points, and the encoded A real calculation unit for calculating the scalar multiple from the numerical sequence and the previous calculation table,
The addition unit adds two points on the elliptic curve,
The subtraction unit subtracts two points on the elliptic curve,
The τ multiplication unit performs a first calculation that outputs (x 2 , y 2 ) from a point (x, y) on the elliptic curve,
A first processing unit that performs the first calculation using the τ multiplication unit and stores the output of the first calculation in the memory unit;
A second processing unit that adds the points stored in the memory unit and the input points using the adding unit;
Using the subtraction unit, a point stored in the memory unit and a third processing unit for subtracting the input point;
The pre-calculation unit repeats the processes of the first processing unit, the second processing unit, and the third processing unit a predetermined number of times,
Using the τ multiplication unit, repeating the first calculation a predetermined number of times, and storing the output of the first calculation in the memory unit;
Read the numerical value of the encoded numerical sequence, select a point of the pre-calculation table from the read numerical value, and use the adding unit to store the point stored in the memory unit and the selected point A fifth processing unit to add,
The real calculation unit to repeat the fourth processing unit and the processing content of the processing of the fifth processing unit,
The encoding unit is
A dividing unit for dividing the scalar value into a first numerical value and a second numerical value;
From the first numerical value and the second numerical value, a Ψ function calculation unit for calculating a third numerical value,
An updating unit for updating the scalar value;
An encoding calculation unit that repeats the processing of the dividing unit, the Ψ function calculating unit, and the updating unit;
When the scalar value stored in the memory unit is d, the first numerical value is d 0 , and the second numerical value is d 1 , the dividing unit is configured to store the scalar value (d ) To be divided into the first numerical value (d 0 ) and the second numerical value (d 1 ) so as to satisfy d ′ = (d mod δ) = d 0 + d 1 τ ,
When w is a positive integer, x R is an integer, x T is an integer, and t w + 1 is an integer determined by w when the operation τ on the elliptic curve is regarded as a complex number, the Ψ function is numerical (d 0) and the second numerical value input to (d 1) and (where d = x R + x T τ ), the third number output Ψ (d) = (d R + d T t w + 1 mod 2 w + 1 ) −2 w .
The calculation unit of the Ψ function adds a multiplication result of the second numerical value and a predetermined fourth numerical value and the first numerical value, and determines a predetermined fifth numerical value from the added numerical value. Subtract,
The updating unit divides the result of subtracting the third numerical value from the scalar value by a predetermined sixth numerical value,
The update unit subtracts the third numerical value from the scalar value stored in the memory unit using the subtraction unit as the subtraction, stores the calculation result in the memory unit, and As the division, the division unit is used to divide the scalar value stored in the memory unit by the subtraction unit into the first numerical value and the second numerical value, and the second numerical value and a predetermined predetermined value. And a sixth processing unit for storing a value obtained by shifting the multiplication result by 1 bit to the right in the memory unit , and repeating the processing for the processing of the sixth processing unit w times Computing device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005145449A JP4783061B2 (en) | 2005-02-04 | 2005-05-18 | Scalar multiplication unit for elliptic curve cryptography |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005028414 | 2005-02-04 | ||
JP2005028414 | 2005-02-04 | ||
JP2005145449A JP4783061B2 (en) | 2005-02-04 | 2005-05-18 | Scalar multiplication unit for elliptic curve cryptography |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006243690A JP2006243690A (en) | 2006-09-14 |
JP4783061B2 true JP4783061B2 (en) | 2011-09-28 |
Family
ID=37050120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005145449A Expired - Fee Related JP4783061B2 (en) | 2005-02-04 | 2005-05-18 | Scalar multiplication unit for elliptic curve cryptography |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4783061B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2011148558A1 (en) | 2010-05-28 | 2013-07-25 | 日本電気株式会社 | Signature generation apparatus, signature method, and signature generation program |
JP5975682B2 (en) * | 2012-03-06 | 2016-08-23 | キヤノン株式会社 | Arithmetic apparatus, arithmetic method, and program |
-
2005
- 2005-05-18 JP JP2005145449A patent/JP4783061B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006243690A (en) | 2006-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
KR101233682B1 (en) | Calculating apparatus and method for elliptic curve cryptography | |
Dawahdeh et al. | A new modification for menezes-vanstone elliptic curve cryptosystem | |
Oliveira et al. | Fast point multiplication algorithms for binary elliptic curves with and without precomputation | |
Harb et al. | FPGA implementation of the ECC over GF (2m) for small embedded applications | |
JP4690819B2 (en) | Scalar multiplication calculation method and scalar multiplication calculation apparatus in elliptic curve cryptography | |
Shohdy et al. | Hardware Implementation of Efficient Modified Karatsuba Multiplier Used in Elliptic Curves. | |
CN109756335A (en) | A kind of rank is the public key encryption decryption method of the finite field multiplier group of Mersenne Prime | |
KR100457177B1 (en) | Serial-Parallel Multiplier to Multiply Two Elements in the Finite Field | |
JP4626148B2 (en) | Calculation method of power-residue calculation in decryption or signature creation | |
JP2007187908A (en) | Modular exponentiation calculation device and method having tolerance to side-channel attack | |
JP4783061B2 (en) | Scalar multiplication unit for elliptic curve cryptography | |
Gutub | Preference of efficient architectures for GF (p) elliptic curve crypto operations using multiple parallel multipliers | |
JP4423900B2 (en) | Scalar multiplication calculation method, apparatus and program for elliptic curve cryptography | |
Al-Haija et al. | Cost-effective design for binary Edwards elliptic curves crypto-processor over GF (2N) using parallel multipliers and architectures | |
Gokul et al. | Performance comparison of multipliers based on Square and Multiply and montgomery algorithms | |
Bansal et al. | Implementation of modular exponentiation using montgomery algorithms | |
Gutub | Fast 160-bits GF (p) elliptic curve crypto hardware of high-radix scalable multipliers | |
JP4692022B2 (en) | Scalar multiplication apparatus and program for elliptic curve cryptography | |
Muchtadi-Alamsyah et al. | Implementation of elliptic curve25519 in cryptography | |
Agarwal et al. | Elliptic Curves: An Efficient and Secure Encryption Scheme in Modern Cryptography | |
Muhaya et al. | Applying hessian curves in parallel to improve elliptic curve scalar multiplication hardware | |
Han et al. | Some analysis of radix-r representations | |
JP2005316038A (en) | Scalar multiple computing method, device, and program in elliptic curve cryptosystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070802 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091110 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100119 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100323 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100528 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100921 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101119 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110301 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110524 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110530 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110614 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110708 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140715 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |