JP2015135363A - Information processing device, information processing method, and program - Google Patents

Information processing device, information processing method, and program Download PDF

Info

Publication number
JP2015135363A
JP2015135363A JP2014005716A JP2014005716A JP2015135363A JP 2015135363 A JP2015135363 A JP 2015135363A JP 2014005716 A JP2014005716 A JP 2014005716A JP 2014005716 A JP2014005716 A JP 2014005716A JP 2015135363 A JP2015135363 A JP 2015135363A
Authority
JP
Japan
Prior art keywords
elliptic curve
point
scalar multiplication
coordinates
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014005716A
Other languages
Japanese (ja)
Inventor
伊豆 哲也
Tetsuya Izu
哲也 伊豆
由美 酒見
yumi Sakami
由美 酒見
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014005716A priority Critical patent/JP2015135363A/en
Publication of JP2015135363A publication Critical patent/JP2015135363A/en
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To further speed up scalar multiplication.SOLUTION: Provided is an information processing device 10 having an arithmetic unit 11 for executing, for each combination of bit values that a bit string of a set length can assume, with respect to each set point P on an elliptic curve, scalar multiplication on the point P on the elliptic curve corresponding to the combination of bit values, and a storage unit 12 for storing the result of scalar multiplication. The arithmetic unit 11 executes scalar multiplication on the basis of addition arithmetic in which a first point Pand a second point Pon the elliptic curve, to which one of Jacobian coordinates is common, are added together.

Description

本発明は、情報処理装置、情報処理方法、及びプログラムに関する。   The present invention relates to an information processing apparatus, an information processing method, and a program.

近年、様々な場面で暗号処理が利用されている。例えば、ネットワーク上を流れるデータ、スマートカードに格納された電子マネー情報、記録メディアに記録されたコンテンツデータなどに対する暗号化、復号、或いは、デジタル署名の処理を行う際に暗号処理が利用されている。暗号には、大きく分けて共通鍵暗号と公開鍵暗号とがある。共通鍵暗号は、暗号化と復号とで同じ鍵を利用する。一方、公開鍵暗号は、暗号化と復号とで異なる鍵を利用する。公開鍵暗号方式としては、例えば、RSA暗号や楕円曲線暗号などがある。   In recent years, cryptographic processing has been used in various situations. For example, encryption processing is used when encryption, decryption, or digital signature processing is performed on data flowing over a network, electronic money information stored in a smart card, content data recorded on a recording medium, or the like. . Ciphers are broadly divided into common key ciphers and public key ciphers. The common key encryption uses the same key for encryption and decryption. On the other hand, public key cryptography uses different keys for encryption and decryption. Examples of public key cryptosystems include RSA cryptography and elliptic curve cryptography.

RSA暗号は、素因数分解の困難性を安全性の根拠とする暗号である。一方、楕円曲線暗号は、楕円曲線上で定義された加法群の離散対数問題(楕円曲線離散対数問題)の困難性を安全性の根拠とする暗号である。楕円曲線暗号に係る暗号化及び復号の処理には、楕円曲線スカラー倍算(以下、スカラー倍算)と呼ばれる演算が含まれる。スカラー倍算は、楕円曲線上の点P及びスカラー値d(dは自然数)を入力として「d×P=P+P+…+P」を出力する演算である。   The RSA cipher is a cipher whose safety is based on the difficulty of prime factorization. On the other hand, the elliptic curve cryptography is a cipher whose safety is based on the difficulty of the discrete logarithm problem of the additive group defined on the elliptic curve (elliptic curve discrete logarithm problem). The encryption and decryption processing related to elliptic curve cryptography includes an operation called elliptic curve scalar multiplication (hereinafter referred to as scalar multiplication). Scalar multiplication is an operation for outputting “d × P = P + P +... + P” by inputting a point P on an elliptic curve and a scalar value d (d is a natural number).

楕円曲線暗号は、RSA暗号に比べて短い鍵長で同等の安全性を確保できる。そのため、楕円曲線暗号に係る処理は、RSA暗号に比べて低い処理能力で実行可能であり、小型の組み込みデバイスなどへの実装が広く検討されている。また、楕円曲線暗号に係る処理の更なる効率化について、いくつかの研究成果が報告されている。例えば、楕円曲線上の点をヤコビアン座標に変換してからスカラー倍算を行う方法が提案されている。また、ヤコビアン座標のZ座標が同じ楕円曲線上の点同士を加算する方法が提案されている。   Elliptic curve cryptography can ensure the same security with a shorter key length than RSA cryptography. Therefore, processing related to elliptic curve cryptography can be executed with lower processing capability than RSA cryptography, and implementation in small embedded devices and the like has been widely studied. In addition, some research results have been reported regarding further efficiency improvement of processing related to elliptic curve cryptography. For example, a method of performing scalar multiplication after converting a point on an elliptic curve into Jacobian coordinates has been proposed. A method of adding points on the elliptic curve having the same Z-coordinate of Jacobian coordinates has been proposed.

H.Cohen, A.Miyaji, and T.Ono, “Efficient Elliptic Curve Exponentiation Using Mixed Coordinates”, Asiacrypt 1998, Lecture Notes in Computer Science vol.1514, pp.51-65, Springer-Verlag, 1998.H. Cohen, A. Miyaji, and T. Ono, “Efficient Elliptic Curve Exponentiation Using Mixed Coordinates”, Asiacrypt 1998, Lecture Notes in Computer Science vol.1514, pp.51-65, Springer-Verlag, 1998. N.Meloni, “New Point Addition Formulae for ECC Applications”, WAIFI 2007, LNCS 4547, pp.189-201, 2007.N. Meloni, “New Point Addition Formulae for ECC Applications”, WAIFI 2007, LNCS 4547, pp.189-201, 2007.

上記の方法を適用することで適用前に比べてスカラー倍算が高速化される。しかし、スカラー倍算の更なる高速化が達成されれば、楕円曲線暗号の仕組みを実装可能なデバイスが増え、楕円曲線暗号の普及がさらに拡大すると期待される。   By applying the above method, scalar multiplication is accelerated compared to before application. However, if further acceleration of scalar multiplication is achieved, it is expected that the number of devices that can implement the mechanism of elliptic curve cryptography will increase and the spread of elliptic curve cryptography will further expand.

そこで、1つの側面によれば、本発明の目的は、スカラー倍算をさらに高速化することが可能な情報処理装置、情報処理方法、及びプログラムを提供することにある。   Therefore, according to one aspect, an object of the present invention is to provide an information processing apparatus, an information processing method, and a program capable of further speeding up scalar multiplication.

本開示の1つの側面によれば、設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、ビット値の組み合わせに応じた楕円曲線上の点に対するスカラー倍算を実行する演算部と、スカラー倍算の結果を記憶する記憶部と、を有し、演算部は、ヤコビアン座標の1つが共通する楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいてスカラー倍算を実行する情報処理装置が提供される。   According to one aspect of the present disclosure, with respect to a point on a set elliptic curve, for each bit value combination that a bit string of a set length can take, a point on the elliptic curve corresponding to the combination of bit values An arithmetic unit that performs scalar multiplication; and a storage unit that stores a result of the scalar multiplication. The arithmetic unit includes a first point and a second point on an elliptic curve in which one of the Jacobian coordinates is common. There is provided an information processing apparatus that performs scalar multiplication based on an addition operation for adding.

また、本開示の他の1つの側面によれば、記憶部を有するコンピュータが、設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、ビット値の組み合わせに応じた楕円曲線上の点に対するスカラー倍算を実行する処理、及びスカラー倍算の結果を記憶部に格納する処理を実行する情報処理方法であり、スカラー倍算を実行する処理において、コンピュータが、ヤコビアン座標の1つが共通する楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいてスカラー倍算を実行する情報処理方法が提供される。   In addition, according to another aspect of the present disclosure, for each combination of bit values that can be taken by a bit string having a set length, the computer having the storage unit can set a bit value for a point on the set elliptic curve. In the information processing method for executing the scalar multiplication for the points on the elliptic curve according to the combination of, and the processing for storing the result of the scalar multiplication in the storage unit, in the process of executing the scalar multiplication, There is provided an information processing method in which a computer performs scalar multiplication based on an addition operation for adding a first point and a second point on an elliptic curve having one common Jacobian coordinate.

また、本開示の他の1つの側面によれば、記憶部を有するコンピュータに、設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、ビット値の組み合わせに応じた楕円曲線上の点に対するスカラー倍算を実行する処理、及びスカラー倍算の結果を記憶部に格納する処理を実行させるプログラムであり、スカラー倍算を実行する処理において、コンピュータに、ヤコビアン座標の1つが共通する楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいてスカラー倍算を実行させるプログラムが提供される。   In addition, according to another aspect of the present disclosure, a bit value for each combination of bit values that can be taken by a bit string having a set length with respect to a point on a set elliptic curve in a computer having a storage unit. Is a program for executing scalar multiplication on points on an elliptic curve according to the combination of the above, and processing for storing the result of scalar multiplication in the storage unit. There is provided a program for performing scalar multiplication based on an addition operation for adding a first point and a second point on an elliptic curve having one common Jacobian coordinate.

本発明によれば、スカラー倍算をさらに高速化することが可能になる。   According to the present invention, it is possible to further increase the speed of scalar multiplication.

第1実施形態に係る情報処理装置の一例を示した図である。It is the figure which showed an example of the information processing apparatus which concerns on 1st Embodiment. 第2実施形態に係るシステムの一例を示した図である。It is the figure which showed an example of the system which concerns on 2nd Embodiment. 楕円曲線暗号の適用例(楕円曲線エルガマル暗号方式)について説明するための図である。It is a figure for demonstrating the application example (elliptic curve ElGamal encryption system) of elliptic curve encryption. 第2実施形態に係る送信装置の機能を実現することが可能なハードウェアの例を示した図である。It is the figure which showed the example of the hardware which can implement | achieve the function of the transmitter which concerns on 2nd Embodiment. 楕円曲線加算ECADDの定義について説明するための図である。It is a figure for demonstrating the definition of elliptic curve addition ECADD. 楕円曲線2倍算ECDBLの定義について説明するための図である。It is a figure for demonstrating the definition of elliptic curve doubling ECDBL. ヤコビアン座標における楕円曲線加算ECADDの計算方法について説明するためのフロー図である。It is a flowchart for demonstrating the calculation method of elliptic curve addition ECADD in a Jacobian coordinate. ヤコビアン座標における楕円曲線2倍算ECDBLの計算方法について説明するためのフロー図である。It is a flowchart for demonstrating the calculation method of elliptic curve doubling ECDBL in a Jacobian coordinate. バイナリ法によるスカラー倍算の計算について説明するためのフロー図である。It is a flowchart for demonstrating the calculation of the scalar multiplication by a binary method. スカラー倍算の計算(ウィンドウ法)について説明するための第1のフロー図である。It is a 1st flowchart for demonstrating the calculation (window method) of scalar multiplication. スカラー倍算の計算(ウィンドウ法)について説明するための第2のフロー図である。It is a 2nd flowchart for demonstrating the calculation (window method) of scalar multiplication. 第2実施形態に係る送信装置が有する機能の例を示したブロック図である。It is the block diagram which showed the example of the function which the transmitter which concerns on 2nd Embodiment has. 第2実施形態に係るスカラー倍算の計算について説明するための第1のフロー図である。It is a 1st flowchart for demonstrating the calculation of the scalar multiplication which concerns on 2nd Embodiment. 第2実施形態に係るスカラー倍算の計算について説明するための第2のフロー図である。It is a 2nd flowchart for demonstrating the calculation of the scalar multiplication which concerns on 2nd Embodiment. 第2実施形態に係るスカラー倍算の計算について説明するための第3のフロー図である。It is a 3rd flowchart for demonstrating the calculation of the scalar multiplication which concerns on 2nd Embodiment. 第2実施形態に係る受信装置が有する機能の例を示したブロック図である。It is the block diagram which showed the example of the function which the receiver which concerns on 2nd Embodiment has.

以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。   Embodiments of the present invention will be described below with reference to the accompanying drawings. In addition, about the element which has the substantially same function in this specification and drawing, duplication description may be abbreviate | omitted by attaching | subjecting the same code | symbol.

<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。なお、図1は、第1実施形態に係る情報処理装置の一例を示した図である。
<1. First Embodiment>
The first embodiment will be described with reference to FIG. FIG. 1 is a diagram illustrating an example of an information processing apparatus according to the first embodiment.

図1に示すように、情報処理装置10は、演算部11及び記憶部12を有する。情報処理装置10は、第1実施形態に係る情報処理装置の一例である。
演算部11は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。但し、演算部11は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路であってもよい。また、記憶部12は、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置である。演算部11は、例えば、記憶部12又は他のメモリに記憶されたプログラムを実行する。
As illustrated in FIG. 1, the information processing apparatus 10 includes a calculation unit 11 and a storage unit 12. The information processing apparatus 10 is an example of an information processing apparatus according to the first embodiment.
The arithmetic unit 11 is a processor such as a CPU (Central Processing Unit) or a DSP (Digital Signal Processor). However, the calculation unit 11 may be an electronic circuit such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA). The storage unit 12 is a volatile storage device such as a RAM (Random Access Memory) or a nonvolatile storage device such as an HDD (Hard Disk Drive) or a flash memory. For example, the calculation unit 11 executes a program stored in the storage unit 12 or another memory.

演算部11は、設定された楕円曲線上の点Pについて、設定された長さのビット列が取り得るビット値の組み合わせ毎に、ビット値の組み合わせに応じた楕円曲線上の点Pに対するスカラー倍算を実行する。また、記憶部12は、スカラー倍算の結果を記憶する。但し、演算部11は、ヤコビアン座標の1つが共通する楕円曲線上の第1の点P1と第2の点P2とを加算する加算演算に基づいてスカラー倍算を実行する。ヤコビアン座標の1つが共通する場合には加算演算の演算量が削減されるため、スカラー倍算が高速化される。 The arithmetic unit 11 performs scalar multiplication on the point P on the elliptic curve corresponding to the bit value combination for each bit value combination that can be taken by the bit string having the set length for the point P on the set elliptic curve. Execute. The storage unit 12 stores the result of scalar multiplication. However, the calculation unit 11 performs scalar multiplication based on an addition calculation that adds the first point P 1 and the second point P 2 on the elliptic curve having one common Jacobian coordinate. When one of the Jacobian coordinates is common, the amount of addition is reduced, so that the scalar multiplication is accelerated.

図1の例では、ビット列の長さが2ビットに設定されている。この場合、演算部11は、先頭1ビット目から順にビット列のビット値を参照する。なお、演算部11は、ビット列の末尾1ビット目から順にビット列のビット値を参照してもよい。まず、演算部11は、一時変数Tに無限遠点∞を設定する。次いで、演算部11は、1ビット目のビット値を参照し、ビット値が0である場合には一時変数Tを変更せず、ビット値が1である場合には一時変数Tに点Pを加算(楕円曲線加算「+」)する。   In the example of FIG. 1, the length of the bit string is set to 2 bits. In this case, the calculation unit 11 refers to the bit value of the bit string in order from the first bit. Note that the arithmetic unit 11 may refer to the bit values of the bit string in order from the last bit of the bit string. First, the calculation unit 11 sets the infinity point ∞ as the temporary variable T. Next, the calculation unit 11 refers to the bit value of the first bit, and does not change the temporary variable T when the bit value is 0, and sets the point P to the temporary variable T when the bit value is 1. Add (ellipse curve addition “+”).

次いで、演算部11は、2ビット目のビット値を参照し、一時変数Tを2倍(楕円曲線2倍算「×2」)する。次いで、演算部11は、2ビット目のビット値を参照し、ビット値が0である場合には一時変数Tを変更せず、ビット値が1である場合には一時変数Tに点Pを加算する。そして、演算部11は、最終的に得られた一時変数Tを記憶部12に格納する。   Next, the computing unit 11 refers to the bit value of the second bit and doubles the temporary variable T (elliptic curve doubling “× 2”). Next, the calculation unit 11 refers to the bit value of the second bit, and when the bit value is 0, does not change the temporary variable T, and when the bit value is 1, sets the point P to the temporary variable T. to add. Then, the calculation unit 11 stores the finally obtained temporary variable T in the storage unit 12.

例えば、ビット列が「00」の場合、一時変数Tは∞となるため、演算部11は、ビット列「00」に対応するスカラー倍算の結果W[0]として∞を記憶部12に格納する。また、ビット列が「01」の場合、一時変数TはPとなるため、演算部11は、ビット列「01」に対応するスカラー倍算の結果W[1]としてPを記憶部12に格納する。   For example, when the bit string is “00”, the temporary variable T is ∞, and thus the calculation unit 11 stores ∞ in the storage unit 12 as the result of scalar multiplication W [0] corresponding to the bit string “00”. When the bit string is “01”, since the temporary variable T is P, the calculation unit 11 stores P in the storage unit 12 as a result of scalar multiplication W [1] corresponding to the bit string “01”.

また、ビット列が「10」の場合、一時変数Tは2×Pとなるため((∞+P)×2=2×P)、演算部11は、ビット列「10」に対応するスカラー倍算の結果W[2]として2×Pを記憶部12に格納する。また、ビット列が「11」の場合、一時変数Tは3×Pとなるため((∞+P)×2+P=3×P)、演算部11は、ビット列「11」に対応するスカラー倍算の結果W[3]として3×Pを記憶部12に格納する。   Further, when the bit string is “10”, the temporary variable T is 2 × P ((∞ + P) × 2 = 2 × P), so that the arithmetic unit 11 performs the result of the scalar multiplication corresponding to the bit string “10”. 2 × P is stored in the storage unit 12 as W [2]. Further, when the bit string is “11”, the temporary variable T is 3 × P ((∞ + P) × 2 + P = 3 × P), so that the calculation unit 11 performs the result of the scalar multiplication corresponding to the bit string “11”. 3 × P is stored in the storage unit 12 as W [3].

但し、演算部11は、第1の点P1と第2の点P2とを加算する楕円曲線加算「+」を実行する際に、ヤコビアン座標の1つ(Z座標)が共通する第1の点P1と第2の点P2との楕円曲線加算ECADDcoZにより第3の点P3を計算する。さらに、演算部11は、楕円曲線加算ECADDcoZの実行時に、第3の点P3とヤコビアン座標の1つ(Z3)が共通する第1の点P1の座標を計算する。 However, when the arithmetic unit 11 executes the elliptic curve addition “+” for adding the first point P 1 and the second point P 2 , one of the first Jacobian coordinates (Z coordinate) is common. The third point P 3 is calculated by the elliptic curve addition ECADD coZ between the point P 1 and the second point P 2 . Further, the calculation unit 11 calculates the coordinates of the first point P 1 that is common to the third point P 3 and one of the Jacobian coordinates (Z 3 ) when executing the elliptic curve addition ECADD coZ .

上記のように、楕円曲線加算ECADDcoZの実行により、ヤコビアン座標の1つ(Z3)が共通する第1の点P1と第3の点P3とが得られる。そのため、第1の点P1と第3の点P3とを楕円曲線加算「+」する場合に、楕円曲線加算ECADDcoZを適用することができる。その結果、楕円曲線加算「+」が高速化される。 As described above, the first point P 1 and the third point P 3 having one common Jacobian coordinate (Z 3 ) are obtained by executing the elliptic curve addition ECADD coZ . Therefore, when the elliptic curve addition “+” is performed between the first point P 1 and the third point P 3 , the elliptic curve addition ECADD coZ can be applied. As a result, the elliptic curve addition “+” is speeded up.

また、演算部11は、第1の点P1を2倍する楕円曲線2倍算「×2」(ECDBLcoZ)を実行して第4の点P4を計算する際、第4の点P4とヤコビアン座標の1つ(Z4)が共通する第1の点P1の座標を計算する。楕円曲線2倍算ECDBLcoZの実行時にヤコビアン座標の1つ(Z4)が共通する第1の点P1と第4の点P4とが得られると、第1の点P1と第4の点P4とを楕円曲線加算「+」する場合に、楕円曲線加算ECADDcoZを適用することができる。その結果、楕円曲線加算「+」が高速化される。 In addition, when the calculation unit 11 calculates the fourth point P 4 by executing elliptic curve doubling “× 2” (ECDBL coZ ) that doubles the first point P 1 , the fourth point P 4 is calculated. The coordinates of the first point P 1 where 4 and one of the Jacobian coordinates (Z 4 ) are common are calculated. One of Jacobian coordinates during execution of the elliptic curve doubling ECDBL coZ (Z 4) first point P 1 and the fourth point P 4 is obtained in common is the first point P 1 and the fourth Elliptic curve addition ECADD coZ can be applied when the elliptic curve addition “+” of the point P 4 is performed. As a result, the elliptic curve addition “+” is speeded up.

演算部11は、設定されたスカラー値dと設定された楕円曲線上の点Pとのスカラー倍算を計算する場合に、スカラー値dを示すビット列を、設定された長さの複数のビット列に分ける。そして、演算部11は、記憶部12が記憶するスカラー倍算の結果を用いて、設定されたスカラー値dと、設定された楕円曲線上の点Pとのスカラー倍算を計算する。   When calculating the scalar multiplication of the set scalar value d and the set point P on the elliptic curve, the calculation unit 11 converts the bit string indicating the scalar value d into a plurality of bit strings having the set length. Divide. Then, the calculation unit 11 calculates the scalar multiplication of the set scalar value d and the set point P on the elliptic curve using the result of the scalar multiplication stored in the storage unit 12.

図1の例では、スカラー値dが23に設定されている。この場合、スカラー値dは、ビット列010111と表現される。演算部11は、このビット列を2ビットの長さを有する3つのビット列「01」、「01」、「11」に分けてスカラー倍算を計算する。ビット列「01」に対するスカラー倍算の結果W[1](P)は、記憶部12に格納されている。また、ビット列「11」に対するスカラー倍算の結果W[3](3×P)は、記憶部12に格納されている。そのため、演算部11は、W[1]、W[3]を利用してスカラー倍点d×Pを求めるスカラー倍算を実行する。   In the example of FIG. 1, the scalar value d is set to 23. In this case, the scalar value d is expressed as a bit string 010111. The calculation unit 11 divides this bit string into three bit strings “01”, “01”, and “11” having a length of 2 bits, and calculates scalar multiplication. The result of scalar multiplication W [1] (P) for the bit string “01” is stored in the storage unit 12. Further, the result W [3] (3 × P) of the scalar multiplication for the bit string “11” is stored in the storage unit 12. Therefore, the calculation unit 11 performs scalar multiplication to obtain a scalar multiple d × P using W [1] and W [3].

上記のように、予め短いビット列についてスカラー倍算を計算しておき、その計算結果を利用して長いビット列についてスカラー倍算を計算することで、計算結果の使い回しができ、長いビット列に対するスカラー倍算を効率的に実行することができる。また、短いビット列に対するスカラー倍算の計算時に、上述した楕円曲線加算ECADDcoZを有効に利用できることで演算量を削減することができる。上述したスカラー倍算の計算方法を楕円曲線暗号の暗号化処理や復号処理に適用することで、楕円曲線暗号に係る処理の高速化が実現される。 As described above, scalar multiplication is calculated for a short bit string in advance, and scalar multiplication is calculated for a long bit string using the calculation result, so that the calculation result can be reused. Arithmetic can be performed efficiently. Further, when the scalar multiplication is calculated for a short bit string, the above-described elliptic curve addition ECADD coZ can be used effectively, thereby reducing the amount of calculation. By applying the above-described scalar multiplication calculation method to the encryption processing and decryption processing of elliptic curve cryptography, the processing related to elliptic curve cryptography can be speeded up.

以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。第2実施形態は、楕円曲線暗号に係る暗号化処理及び復号処理の中で実行されるスカラー倍算の処理を効率化する手法に関する。
The first embodiment has been described above.
<2. Second Embodiment>
Next, a second embodiment will be described. The second embodiment relates to a technique for improving the efficiency of scalar multiplication executed in the encryption processing and decryption processing related to elliptic curve cryptography.

[2−1.楕円曲線暗号方式について]
楕円曲線暗号方式について説明する。楕円曲線暗号方式は、楕円曲線上のベースポイントP及びスカラー倍点d×Pからスカラー値dを求める問題(楕円曲線離散対数問題)の解答困難性に安全性の根拠をおく暗号方式の総称である。
[2-1. About Elliptic Curve Cryptography]
The elliptic curve cryptosystem will be described. Elliptic curve cryptosystem is a general term for cryptosystems whose safety is based on the difficulty of solving the problem of obtaining a scalar value d from a base point P on an elliptic curve and a scalar multiple d × P (elliptic curve discrete logarithm problem). is there.

(システムの例)
以下の説明において、簡単のために図2に例示したシステムを想定する。なお、図2は、第2実施形態に係るシステムの一例を示した図である。但し、第2実施形態に係る技術の適用範囲はこれに限定されず、楕円曲線暗号方式を採用する任意のシステムに対して適用可能である。例えば、記録媒体へ記録されるデータを秘匿するために楕円曲線暗号を利用するシステムなどへの適用も可能である。
(System example)
In the following description, the system illustrated in FIG. 2 is assumed for the sake of simplicity. FIG. 2 is a diagram illustrating an example of a system according to the second embodiment. However, the scope of application of the technology according to the second embodiment is not limited to this, and can be applied to any system that employs an elliptic curve cryptosystem. For example, the present invention can be applied to a system that uses elliptic curve cryptography to conceal data recorded on a recording medium.

図2に示すように、第2実施形態に係るシステムは、送信装置100及び受信装置200を含む。送信装置100は、ネットワークNWを介して受信装置200に接続されている。送信装置100は、平文で記述されたメッセージを暗号化して暗号文を生成し、その暗号文を受信装置200へと送信する。一方、受信装置200は、送信装置100から受信した暗号文を復号して平文で記述されたメッセージを復元する。なお、送信装置100は、暗号化装置の一例である。また、受信装置200は、復号装置の一例である。   As illustrated in FIG. 2, the system according to the second embodiment includes a transmission device 100 and a reception device 200. The transmission device 100 is connected to the reception device 200 via the network NW. The transmission device 100 encrypts a message described in plain text to generate a ciphertext, and transmits the ciphertext to the reception device 200. On the other hand, the receiving device 200 decrypts the ciphertext received from the transmitting device 100 and restores a message described in plaintext. The transmission device 100 is an example of an encryption device. The receiving device 200 is an example of a decoding device.

(楕円曲線暗号の適用例:楕円曲線エルガマル暗号方式)
ここで、図3を参照しながら、楕円曲線エルガマル暗号方式の場合を例に挙げて送信装置100及び受信装置200の動作について説明する。なお、図3は、楕円曲線暗号の適用例(楕円曲線エルガマル暗号方式)について説明するための図である。
(Application example of elliptic curve cryptography: Elliptic curve Elgamal cryptosystem)
Here, the operations of the transmission device 100 and the reception device 200 will be described with reference to FIG. 3 by taking the case of the elliptic curve ElGamal encryption method as an example. FIG. 3 is a diagram for explaining an application example of elliptic curve cryptography (elliptic curve Elgamal cryptosystem).

図3の例では、楕円曲線をE、楕円曲線E上のベースポイントをP、公開鍵をS、秘密鍵をs、ランダムに生成されたスカラー(乱数)をr、メッセージである平文をMと表記している。但し、公開鍵Sは、秘密鍵sとベースポイントPとのスカラー倍算(S=s×P)により定義されている。また、平文Mは、楕円曲線E上の点で表現されている。送信装置100は、ベースポイントP及び公開鍵Sの情報を保持している。受信装置200は、秘密鍵sの情報を保持している。この状況で、送信装置100から受信装置200へと平文Mを送信する場合について考える。   In the example of FIG. 3, the elliptic curve is E, the base point on the elliptic curve E is P, the public key is S, the secret key is s, the randomly generated scalar (random number) is r, and the plaintext that is the message is M. It is written. However, the public key S is defined by scalar multiplication (S = s × P) of the secret key s and the base point P. The plain text M is expressed by points on the elliptic curve E. The transmission device 100 holds information on the base point P and the public key S. The receiving device 200 holds information on the secret key s. Consider a case in which plaintext M is transmitted from the transmission apparatus 100 to the reception apparatus 200 in this situation.

送信装置100は、ランダムにスカラーrを生成する(S11)。次いで、送信装置100は、スカラーrとベースポイントPとのスカラー倍算を実行し、そのスカラー倍算の結果R(R=r×P)を計算する(S12)。次いで、送信装置100は、スカラーrと公開鍵Sとのスカラー倍算を実行し、そのスカラー倍算の結果に平文Mを加算して暗号文C(C=r×S+M)を計算する(S13)。そして、送信装置100は、R、Cを受信装置200へと送信する(S14)。   The transmission device 100 randomly generates a scalar r (S11). Next, the transmitting apparatus 100 executes scalar multiplication of the scalar r and the base point P, and calculates the result R (R = r × P) of the scalar multiplication (S12). Next, the transmitting apparatus 100 performs scalar multiplication of the scalar r and the public key S, and adds the plaintext M to the result of the scalar multiplication to calculate a ciphertext C (C = r × S + M) (S13). ). Then, the transmission device 100 transmits R and C to the reception device 200 (S14).

R、Cを受信した受信装置200は、秘密鍵sとRとのスカラー倍算を実行してs×Rを計算する(S15)。次いで、受信装置200は、Cからs×Rを減算して(C−s×R)を計算する(S16)。下記の式(1)により、(C−s×R)は、平文Mに等しい。つまり、受信装置200は、暗号文Cから平文Mを得る。楕円曲線エルガマル暗号方式では、図3に例示したアルゴリズムにより平文Mの送受信が行われる。なお、ここで示した暗号化及び復号のロジックを変形してデジタル署名方式などへ応用することもできる。   Receiving device 200 that has received R and C performs scalar multiplication of secret keys s and R to calculate s × R (S15). Next, the receiving apparatus 200 calculates (C−s × R) by subtracting s × R from C (S16). According to the following equation (1), (C−s × R) is equal to plaintext M. That is, the receiving apparatus 200 obtains the plaintext M from the ciphertext C. In the elliptic curve Elgamal cryptosystem, plaintext M is transmitted and received by the algorithm illustrated in FIG. It should be noted that the encryption and decryption logic shown here can be modified and applied to a digital signature system or the like.

C−s×R=(r×S+M)−s×R
=(r×s×P+M)−s×r×P
=M
…(1)
以上、楕円曲線暗号方式について説明した。
C−s × R = (r × S + M) −s × R
= (R * s * P + M) -s * r * P
= M
... (1)
The elliptic curve cryptosystem has been described above.

[2−2.ハードウェア]
上記のような送信装置100の機能は、例えば、図4に例示したハードウェアを利用して実現可能である。つまり、送信装置100が有する機能は、コンピュータプログラムを用いて図4に示すハードウェアを制御することにより実現される。図4は、第2実施形態に係る送信装置の機能を実現することが可能なハードウェアの例を示した図である。
[2-2. hardware]
The function of the transmission apparatus 100 as described above can be realized using, for example, the hardware illustrated in FIG. That is, the functions of the transmission apparatus 100 are realized by controlling the hardware shown in FIG. 4 using a computer program. FIG. 4 is a diagram illustrating an example of hardware capable of realizing the function of the transmission apparatus according to the second embodiment.

図4に示すように、このハードウェアは、主に、CPU902と、ROM(Read Only Memory)904と、RAM906と、ホストバス908と、ブリッジ910とを有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。   As shown in FIG. 4, this hardware mainly includes a CPU 902, a ROM (Read Only Memory) 904, a RAM 906, a host bus 908, and a bridge 910. Further, this hardware includes an external bus 912, an interface 914, an input unit 916, an output unit 918, a storage unit 920, a drive 922, a connection port 924, and a communication unit 926.

CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。   The CPU 902 functions as, for example, an arithmetic processing unit or a control unit, and controls the overall operation of each component or a part thereof based on various programs recorded in the ROM 904, the RAM 906, the storage unit 920, or the removable recording medium 928. . The ROM 904 is an example of a storage device that stores a program read by the CPU 902, data used for calculation, and the like. The RAM 906 temporarily or permanently stores, for example, a program read by the CPU 902 and various parameters that change when the program is executed.

これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。   These elements are connected to each other via, for example, a host bus 908 capable of high-speed data transmission. On the other hand, the host bus 908 is connected to an external bus 912 having a relatively low data transmission speed via a bridge 910, for example. As the input unit 916, for example, a mouse, a keyboard, a touch panel, a touch pad, a button, a switch, a lever, or the like is used. Furthermore, as the input unit 916, a remote controller capable of transmitting a control signal using infrared rays or other radio waves may be used.

出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。   As the output unit 918, for example, a display device such as a CRT (Cathode Ray Tube), an LCD (Liquid Crystal Display), a PDP (Plasma Display Panel), or an ELD (Electro-Luminescence Display) is used. As the output unit 918, an audio output device such as a speaker or headphones, or a printer may be used. In other words, the output unit 918 is a device that can output information visually or audibly.

記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSD(Solid State Drive)やRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。   The storage unit 920 is a device for storing various data. As the storage unit 920, for example, a magnetic storage device such as an HDD is used. Further, as the storage unit 920, a semiconductor storage device such as an SSD (Solid State Drive) or a RAM disk, an optical storage device, a magneto-optical storage device, or the like may be used.

ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。   The drive 922 is a device that reads information recorded on a removable recording medium 928 that is a removable recording medium or writes information on the removable recording medium 928. As the removable recording medium 928, for example, a magnetic disk, an optical disk, a magneto-optical disk, or a semiconductor memory is used.

接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930としては、例えば、プリンタなどが用いられる。   The connection port 924 is a port for connecting an external connection device 930 such as a USB (Universal Serial Bus) port, an IEEE 1394 port, a SCSI (Small Computer System Interface), an RS-232C port, or an optical audio terminal. For example, a printer or the like is used as the external connection device 930.

通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN(Local Area Network)用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。   The communication unit 926 is a communication device for connecting to the network 932. As the communication unit 926, for example, a communication circuit for wired or wireless LAN (Local Area Network), a communication circuit for WUSB (Wireless USB), a communication circuit or router for optical communication, an ADSL (Asymmetric Digital Subscriber Line) Communication circuits, routers, communication circuits for mobile phone networks, and the like are used. A network 932 connected to the communication unit 926 is a wired or wireless network, and includes, for example, the Internet, a LAN, a broadcast network, a satellite communication line, and the like.

以上、送信装置100の機能を実現可能なハードウェアについて説明した。なお、図4に示したハードウェアを用いることで、受信装置200の機能も実現可能である。従って、受信装置200の機能を実現可能なハードウェアについては説明を省略する。   The hardware capable of realizing the function of the transmission device 100 has been described above. Note that the function of the receiving apparatus 200 can be realized by using the hardware shown in FIG. Therefore, description of hardware capable of realizing the function of the receiving device 200 is omitted.

[2−3.スカラー倍算の計算方法について]
次に、スカラー倍算の計算方法について説明する。既に説明したように、楕円曲線暗号方式に係る暗号化処理及び復号処理にはスカラー倍算が利用される。以下、楕円曲線加算ECADD及び楕円曲線2倍算ECDBLについて説明し、さらに、バイナリ法及びウィンドウ法と呼ばれるスカラー倍算の計算方法について説明する。
[2-3. About the calculation method of scalar multiplication]
Next, a calculation method for scalar multiplication will be described. As already described, scalar multiplication is used for encryption processing and decryption processing according to the elliptic curve cryptosystem. Hereinafter, the elliptic curve addition ECADD and the elliptic curve doubling ECDBL will be described, and further, a scalar multiplication calculation method called a binary method and a window method will be described.

(楕円曲線Eと逆元−P)
楕円曲線加算ECADD及び楕円曲線2倍算ECDBLに用いる楕円曲線Eは、pを5以上の素数、mを1以上の整数とした場合に、要素数pmの有限体GF(pm)上で下記の式(2)を満たす点(x,y)の集合に無限遠点∞を加えた集合として定義される。なお、下記の式(2)に含まれる係数a、bは、有限体GF(pm)の要素である。
(Elliptic curve E and inverse element -P)
Elliptic curve E used in the elliptic curve addition ECADD and an elliptic curve doubling ECDBL is 5 or more prime p, when integer of 1 or more m, on the finite field GF number of elements p m (p m) It is defined as a set obtained by adding an infinite point ∞ to a set of points (x, y) satisfying the following expression (2). Note that coefficients a and b included in the following equation (2) are elements of a finite field GF (p m ).

E:y2=x3+a×x+b
…(2)
また、楕円曲線E上の点Pに対し、下記の式(3)及び式(4)により点Pの逆元−Pが定義される。
E: y 2 = x 3 + a × x + b
... (2)
For the point P on the elliptic curve E, the inverse element -P of the point P is defined by the following equations (3) and (4).

P=∞ ならば −P=∞
…(3)
P=(x,y)≠∞ ならば −P=(x,−y)
…(4)
(加算法則)
楕円曲線E上の点P1、P2を加算する演算について考える。点P1、P2の和P3(P3=P1+P2)は、下記の式(5)〜式(8)により定義される。但し、P1=(x1,y1)、P2=(x2,y2)、P3=(x3,y3)である。但し、下記の式(8)に含まれるλ、νは、P1≠P2のとき下記の式(9)で定義され、P1=P2のとき下記の式(10)で定義される。
If P = ∞ -P = ∞
... (3)
If P = (x, y) ≠ ∞ -P = (x, -y)
... (4)
(Addition law)
Consider an operation of adding points P 1 and P 2 on an elliptic curve E. The sum P 3 (P 3 = P 1 + P 2 ) of the points P 1 and P 2 is defined by the following equations (5) to (8). However, P 1 = (x 1 , y 1 ), P 2 = (x 2 , y 2 ), and P 3 = (x 3 , y 3 ). However, λ and ν included in the following formula (8) are defined by the following formula (9) when P 1 ≠ P 2 , and are defined by the following formula (10) when P 1 = P 2. .

1=∞ ならば P3=P2
…(5)
2=∞ ならば P3=P1
…(6)
1=−P2 ならば P3=∞
…(7)
1≠−P2 ならば x3=λ2−x1−x2、y3=−λ×x3−ν
…(8)
・P1≠P2のとき
λ=(y2−y1)/(x2−x1
ν=(y1×x2−y2×x1)/(x2−x1
…(9)
・P1=P2のとき
λ=(3×x1 2+a)/(2×y1
ν=(−x1 3+a×x1+2×b)/(2×y1
…(10)
楕円曲線加算ECADDは、P1≠P2のときにP1+P2を計算する演算処理を言う。楕円曲線2倍算ECDBLは、P1=P2のときにP1+P2(=2×P1)を計算する演算処理を言う。楕円曲線加算ECADD及び楕円曲線2倍算ECDBLは、有限体GF(pm)上の加算、減算、乗算、除算、平方算、逆元計算の組み合わせである。
If P 1 = ∞ then P 3 = P 2
... (5)
If P 2 = ∞, P 3 = P 1
(6)
If P 1 = -P 2 then P 3 = ∞
... (7)
If P 1 ≠ −P 2 , x 3 = λ 2 −x 1 −x 2 , y 3 = −λ × x 3 −ν
... (8)
When P 1 ≠ P 2 λ = (y 2 −y 1 ) / (x 2 −x 1 )
ν = (y 1 × x 2 −y 2 × x 1 ) / (x 2 −x 1 )
... (9)
When P 1 = P 2 λ = (3 × x 1 2 + a) / (2 × y 1 )
ν = (− x 1 3 + a × x 1 + 2 × b) / (2 × y 1 )
(10)
Elliptic curve addition ECADD refers to an arithmetic process for calculating P 1 + P 2 when P 1 ≠ P 2 . Elliptic curve doubling ECDBL is an arithmetic process for calculating P 1 + P 2 (= 2 × P 1 ) when P 1 = P 2 . Elliptic curve addition ECADD and elliptic curve doubling ECDBL are combinations of addition, subtraction, multiplication, division, squaring, and inverse element calculation on a finite field GF (p m ).

なお、楕円曲線加算ECADDは、図5に示すように、楕円曲線E上の点P1と点P2とを結ぶ直線L1が楕円曲線Eと交わる点をx軸で折り返した位置にある点P3を求める処理である。一方、楕円曲線2倍算ECDBLは、図6に示すように、楕円曲線E上の点P1の接線L3と楕円曲線Eとが交わる点をx軸で折り返した位置にある点P3を求める処理である。 As shown in FIG. 5, the elliptic curve addition ECADD is a point at which the point where the straight line L 1 connecting the point P 1 and the point P 2 on the elliptic curve E intersects the elliptic curve E is folded around the x axis. it is a process for obtaining the P 3. On the other hand, as shown in FIG. 6, the elliptic curve doubling ECDBL has a point P 3 at a position where the point at which the tangent L 3 of the point P 1 on the elliptic curve E intersects the elliptic curve E is turned back along the x axis. This is the processing that is required.

なお、図5は、楕円曲線加算ECADDの定義について説明するための図である。図5の例は、a=−1、b=0の場合である。直線L2は、y軸に平行な直線である。また、図6は、楕円曲線2倍算ECDBLの定義について説明するための図である。図6の例は、a=−1、b=0の場合である。直線L4は、y軸に平行な直線である。 FIG. 5 is a diagram for explaining the definition of elliptic curve addition ECADD. The example of FIG. 5 is a case where a = −1 and b = 0. Linear L 2 is a straight line parallel to the y-axis. FIG. 6 is a diagram for explaining the definition of elliptic curve doubling ECDBL. The example of FIG. 6 is a case where a = −1 and b = 0. The straight line L 4 is a straight line parallel to the y axis.

ところで、楕円曲線加算ECADD、楕円曲線2倍算ECDBL、スカラー倍算の計算時間は、多くの場合、有限体GF(pm)における乗算、平方算、逆元計算の計算時間の和によって見積もられる。これは有限体GF(pm)上の加算、減算の計算時間が、他の演算の計算時間に比べて無視できる程度に短いからである。有限体GF(pm)上の逆元計算は、乗算、平方算に比べて計算時間が長くかかる。そのため、第2実施形態では、楕円曲線E上の点をヤコビアン座標で表現し、逆元計算の回数を減らして計算時間を短縮する方法を採用する。 By the way, the calculation time of elliptic curve addition ECADD, elliptic curve doubling ECDBL, and scalar multiplication is often estimated by the sum of the calculation times of multiplication, squaring, and inverse element calculation in a finite field GF (p m ). . This is because the calculation time for addition and subtraction on the finite field GF (p m ) is so short as to be negligible compared to the calculation time for other operations. The inverse element calculation on the finite field GF (p m ) takes longer time than multiplication and squaring. Therefore, in the second embodiment, a method is adopted in which points on the elliptic curve E are expressed by Jacobian coordinates, and the calculation time is reduced by reducing the number of inverse element calculations.

(ヤコビアン座標)
ヤコビアン座標において、有限体GF(pm)における楕円曲線Eの点(x,y)は、3つの要素を組み合わせた座標(X:Y:Z)で表現される。但し、r≠0である有限体GF(pm)の要素rに対し、(X:Y:Z)と(r2×X:r3×Y:r×Z)とは同じ点を表す。また、x=X/Z2、y=Y/Z3である。この関係を上記の式(2)に代入すると、ヤコビアン座標で表現した楕円曲線Eは、下記の式(11)のように表現される。なお、無限遠点∞は、∞=(0:1:0)となる。
(Jacvian coordinates)
In the Jacobian coordinates, the point (x, y) of the elliptic curve E in the finite field GF (p m ) is expressed by coordinates (X: Y: Z) combining three elements. However, for the element r of the finite field GF (p m ) where r ≠ 0, (X: Y: Z) and (r 2 × X: r 3 × Y: r × Z) represent the same point. Further, x = X / Z 2 and y = Y / Z 3 . When this relationship is substituted into the above equation (2), an elliptic curve E expressed in Jacobian coordinates is expressed as the following equation (11). The infinite point ∞ is ∞ = (0: 1: 0).

E:Y2×Z=X3+a×X×Z4+b×Z6
…(11)
ここで、図7を参照しながら、ヤコビアン座標における楕円曲線加算ECADDの計算方法について説明する。図7は、ヤコビアン座標における楕円曲線加算ECADDの計算方法について説明するためのフロー図である。なお、説明の都合上、送信装置100が楕円曲線加算ECADDを実行する場合について説明するが、受信装置200が楕円曲線加算ECADDを実行する場合も同様である。
E: Y 2 × Z = X 3 + a × X × Z 4 + b × Z 6
... (11)
Here, a method of calculating the elliptic curve addition ECADD in the Jacobian coordinates will be described with reference to FIG. FIG. 7 is a flowchart for explaining a calculation method of elliptic curve addition ECADD in Jacobian coordinates. For convenience of explanation, the case where the transmission apparatus 100 executes the elliptic curve addition ECADD will be described, but the same applies to the case where the reception apparatus 200 executes the elliptic curve addition ECADD.

楕円曲線E上の点P1、P2(P1≠P2)を加算して点P3を求める楕円曲線加算ECADDについて考える。但し、P1=(X1:Y1:Z1)、P2=(X2:Y2:Z2)、P3=(X3:Y3:Z3)である。 Consider an elliptic curve addition ECADD that adds points P 1 and P 2 (P 1 ≠ P 2 ) on the elliptic curve E to obtain a point P 3. However, P 1 = (X 1 : Y 1 : Z 1 ), P 2 = (X 2 : Y 2 : Z 2 ), P 3 = (X 3 : Y 3 : Z 3 ).

図7に示すように、送信装置100は、X1×Z2 2を計算して一時変数U1に設定し、X2×Z1 2を計算して一時変数U2に設定する(S21)。次いで、送信装置100は、Y1×Z2 3を計算して一時変数V1に設定し、Y2×Z1 3を計算して一時変数V2に設定する(S22)。S21、S22の処理は入れ替え可能である。次いで、送信装置100は、U2からU1を減算して一時変数Hに設定し、V2からV1を減算して一時変数Qに設定する(S23)。 As shown in FIG. 7, the transmitting apparatus 100 calculates X 1 × Z 2 2 and sets it as a temporary variable U 1 , and calculates X 2 × Z 1 2 and sets it as a temporary variable U 2 (S21). . Next, the transmitting apparatus 100 calculates Y 1 × Z 2 3 and sets it as a temporary variable V 1 , and calculates Y 2 × Z 1 3 and sets it as a temporary variable V 2 (S22). The processes of S21 and S22 can be interchanged. Next, the transmitting apparatus 100 subtracts U 1 from U 2 and sets it as a temporary variable H, and subtracts V 1 from V 2 and sets it as a temporary variable Q (S23).

次いで、送信装置100は、Q2−H3−2U1×Hを計算してX3に設定する(S24)。次いで、送信装置100は、Q×(U1×H2−X3)−V1×H3を計算してY3に設定する(S25)。次いで、送信装置100は、Z1×Z2×Hを計算してZ3に設定する(S26)。S26の処理は、S24、S25の処理と入れ替え可能である。S21〜S26の処理により、点P3の座標X3、Y3、Z3が得られる。 Next, the transmitting apparatus 100 calculates Q 2 −H 3 −2U 1 × H and sets it to X 3 (S24). Next, the transmitting apparatus 100 calculates Q × (U 1 × H 2 −X 3 ) −V 1 × H 3 and sets it to Y 3 (S25). Next, the transmitting apparatus 100 calculates Z 1 × Z 2 × H and sets it to Z 3 (S26). The process of S26 can be replaced with the processes of S24 and S25. The process of S21 to S26, the coordinates X 3 of the point P 3, Y 3, Z 3 is obtained.

次に、図8を参照しながら、ヤコビアン座標における楕円曲線2倍算ECDBLの計算方法について説明する。図8は、ヤコビアン座標における楕円曲線2倍算ECDBLの計算方法について説明するためのフロー図である。なお、説明の都合上、送信装置100が楕円曲線2倍算ECDBLを実行する場合について説明するが、受信装置200が楕円曲線2倍算ECDBLを実行する場合も同様である。   Next, a method for calculating the elliptic curve doubling ECDBL in Jacobian coordinates will be described with reference to FIG. FIG. 8 is a flowchart for explaining a method of calculating elliptic curve doubling ECDBL in Jacobian coordinates. For convenience of explanation, a case where the transmitting apparatus 100 executes the elliptic curve doubling ECDBL will be described, but the same applies to the case where the receiving apparatus 200 executes the elliptic curve doubling ECDBL.

図8に示すように、送信装置100は、3×X1 2+a×Z1 4を計算して一時変数Qに設定する(S31)。次いで、送信装置100は、4×X1×Y1 2を計算して一時変数Vに設定する(S32)。S31、S32の処理は入れ替え可能である。次いで、送信装置100は、−2×V+Q2を計算して一時変数Tに設定する(S33)。 As shown in FIG. 8, the transmission device 100, 3 × X 1 2 + a × Z 1 4 Setting a temporary calculated variable Q (S31). Next, the transmitting apparatus 100 calculates 4 × X 1 × Y 1 2 and sets it to the temporary variable V (S32). The processes of S31 and S32 can be interchanged. Next, the transmitting apparatus 100 calculates −2 × V + Q 2 and sets the temporary variable T (S33).

次いで、送信装置100は、一時変数TをX3に設定する(S34)。次いで、送信装置100は、−8×Y1 4+Q×(V−T)を計算してY3に設定する(S35)。次いで、送信装置100は、2×Y1×Z1を計算してZ3に設定する(S36)。S34、S35、S36の処理は相互に入れ替え可能である。S31〜S36の処理により、点P3の座標X3、Y3、Z3が得られる。 Next, the transmitting apparatus 100 sets the temporary variable T to X 3 (S34). Then, the transmission device 100 sets the -8 × Y 1 4 + Q × (V-T) the calculated Y 3 (S35). Next, the transmitting apparatus 100 calculates 2 × Y 1 × Z 1 and sets it to Z 3 (S36). The processes of S34, S35, and S36 can be interchanged. The process of S31 to S36, the coordinates X 3 of the point P 3, Y 3, Z 3 is obtained.

上記のようにしてヤコビアン座標を用いた場合、楕円曲線加算ECADDの計算時間は12M+2Sとなる。また、楕円曲線2倍算ECDBLの計算時間は7M+5Sになる。但し、1Mは、要素数pmの有限体GF(pm)上で乗算を1回計算するのにかかる計算時間である。また、1Sは、要素数pmの有限体GF(pm)上で平方算を1回計算するのにかかる計算時間である。なお、Z座標が1の場合、楕円曲線加算ECADDの計算時間は8M+3Sとなる。 When Jacobian coordinates are used as described above, the calculation time of elliptic curve addition ECADD is 12M + 2S. The calculation time of elliptic curve doubling ECDBL is 7M + 5S. However, 1M is the calculation time required to calculate one multiplication on the finite field GF (p m ) having the number of elements p m . Further, 1S is a calculation time required to calculate a square operation once on a finite field GF (p m ) having the number of elements p m . When the Z coordinate is 1, the calculation time of the elliptic curve addition ECADD is 8M + 3S.

(バイナリ法によるスカラー倍算の計算)
次に、図9を参照しながら、バイナリ法によるスカラー倍算の計算について説明する。バイナリ法は、スカラー倍算に含まれる楕円曲線加算ECADDと楕円曲線2倍算ECDBLとの組み合わせを定める方法の1つである。
(Calculation of scalar multiplication by binary method)
Next, calculation of scalar multiplication by the binary method will be described with reference to FIG. The binary method is one of methods for determining a combination of elliptic curve addition ECADD and elliptic curve doubling ECDBL included in scalar multiplication.

なお、図9は、バイナリ法によるスカラー倍算の計算について説明するためのフロー図である。また、図9において、アルファベットの小文字はスカラー値を表し、大文字は楕円曲線E上の点を表す。また、説明の都合上、送信装置100がスカラー倍算を実行する場合について説明するが、受信装置200がスカラー倍算を実行する場合も同様である。   FIG. 9 is a flowchart for explaining the calculation of scalar multiplication by the binary method. In FIG. 9, lowercase letters in the alphabet represent scalar values, and uppercase letters represent points on the elliptic curve E. For convenience of explanation, the case where the transmission apparatus 100 executes scalar multiplication will be described, but the same applies to the case where the reception apparatus 200 executes scalar multiplication.

いま、nビットのスカラー値dが与えられた場合に、楕円曲線E上の点Pに対するスカラー倍算d×Pを計算するアルゴリズムについて考える。スカラー値dは、下記の式(12)に示すように、n個のビット値d[i](下位iビット目の値)を用いて表現できる。ビット値d[i]は0又は1である。また、d[n−1]=1であるとする。   Consider an algorithm that calculates a scalar multiplication d × P for a point P on an elliptic curve E when an n-bit scalar value d is given. The scalar value d can be expressed using n bit values d [i] (lower i-th bit value) as shown in the following equation (12). The bit value d [i] is 0 or 1. Further, it is assumed that d [n−1] = 1.

d=d[n−1]×2n-1+d[n−2]×2n-2+…+d[0]×20
…(12)
図9に示すように、送信装置100は、楕円曲線E上の点Pを一時変数Tに設定する(S41)。次いで、送信装置100は、iをn−2に設定する(S42)。S41、S42の処理は入れ替え可能である。次いで、送信装置100は、iが0より小さいか否かを判定する(S43)。iが0より小さい場合、処理はS48へと進む。一方、iが0より小さくない場合、処理はS44へと進む。
d = d [n−1] × 2 n−1 + d [n−2] × 2 n−2 +... + d [0] × 2 0
(12)
As shown in FIG. 9, the transmitting apparatus 100 sets a point P on the elliptic curve E as a temporary variable T (S41). Next, the transmitting apparatus 100 sets i to n-2 (S42). The processes of S41 and S42 can be interchanged. Next, the transmitting apparatus 100 determines whether i is smaller than 0 (S43). If i is smaller than 0, the process proceeds to S48. On the other hand, if i is not smaller than 0, the process proceeds to S44.

処理がS44へと進んだ場合、送信装置100は、一時変数Tに対して楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S44)。次いで、送信装置100は、下位iビット目のビット値d[i]が1であるか否かを判定する(S45)。ビット値d[i]が1である場合、処理はS46へと進む。一方、ビット値d[i]が1でない場合(0である場合)、処理はS47へと進む。   When the process proceeds to S44, the transmitting apparatus 100 executes elliptic curve doubling ECDBL on the temporary variable T and sets the result to the temporary variable T (S44). Next, the transmitting apparatus 100 determines whether or not the bit value d [i] of the lower i-th bit is 1 (S45). If the bit value d [i] is 1, the process proceeds to S46. On the other hand, when the bit value d [i] is not 1 (when 0), the process proceeds to S47.

処理がS46へと進んだ場合、送信装置100は、一時変数Tと楕円曲線E上の点Pとを加算する楕円曲線加算ECADDを実行し、その結果を一時変数Tに設定する(S46)。S46の処理が完了すると、処理はS47へと進む。処理がS47へと進んだ場合、送信装置100は、iを1減らす(S47)。S47の処理が完了すると、処理はS43へと進む。   When the process proceeds to S46, the transmitting apparatus 100 executes elliptic curve addition ECADD that adds the temporary variable T and the point P on the elliptic curve E, and sets the result to the temporary variable T (S46). When the process of S46 is completed, the process proceeds to S47. When the process proceeds to S47, the transmission device 100 decreases i by 1 (S47). When the process of S47 is completed, the process proceeds to S43.

処理がS48へと進んだ場合、送信装置100は、一時変数Tをスカラー倍算d×Pの結果として出力する(S48)。S48の処理が完了すると、図9に示した一連の処理は終了する。   When the process proceeds to S48, the transmission device 100 outputs the temporary variable T as a result of scalar multiplication d × P (S48). When the process of S48 is completed, the series of processes shown in FIG.

(例:n=5、d=21の場合)
n=5、d=21の場合、スカラー値dは、下記の式(13)のように表現できる。
d=21
=16+4+1
=1×24+0×23+1×22+0×21+1×20
=(10101)ヒ゛ット列
…(13)
S41の処理では、一時変数Tに楕円曲線E上の点Pが設定される。次いで、i=3,2,1,0についてS44、S45、S46の処理が実行される。iが3の場合について、送信装置100は、一時変数Tの楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S44)。S44の処理後、一時変数Tは2×Pとなる。次いで、送信装置100は、ビット値d[3]が1であるか否かを判定する(S45)。上記の式(13)に示したようにd[3]=0であるため、送信装置100は、S46の処理をスキップし、iを2に更新する。
(Example: When n = 5 and d = 21)
When n = 5 and d = 21, the scalar value d can be expressed as the following equation (13).
d = 21
= 16 + 4 + 1
= 1 × 2 4 + 0 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0
= (10101) Bit string (13)
In the process of S41, the point P on the elliptic curve E is set as the temporary variable T. Next, the processes of S44, S45, and S46 are executed for i = 3, 2, 1, 0. When i is 3, the transmitting apparatus 100 executes the elliptic curve doubling ECDBL of the temporary variable T, and sets the result to the temporary variable T (S44). After the process of S44, the temporary variable T becomes 2 × P. Next, the transmitting apparatus 100 determines whether or not the bit value d [3] is 1 (S45). Since d [3] = 0 as shown in the above equation (13), the transmitting apparatus 100 skips the processing of S46 and updates i to 2.

次に、送信装置100は、iが2の場合について、送信装置100は、一時変数Tの楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S44)。S44の処理後、一時変数Tは4×Pとなる。次いで、送信装置100は、ビット値d[2]が1であるか否かを判定する(S45)。   Next, when i is 2, the transmitting apparatus 100 executes elliptic curve doubling ECDBL of the temporary variable T, and sets the result to the temporary variable T (S44). After the process of S44, the temporary variable T becomes 4 × P. Next, the transmitting device 100 determines whether or not the bit value d [2] is 1 (S45).

上記の式(13)に示したようにd[2]=1であるため、送信装置100は、一時変数Tと楕円曲線E上の点Pとを加算する楕円曲線加算ECADDを実行し、その結果を一時変数Tに設定する(S46)。S46の処理後、一時変数Tは5×Pとなる。そして、送信装置100は、iを1に更新する。   Since d [2] = 1 as shown in the above equation (13), the transmitting apparatus 100 executes elliptic curve addition ECADD that adds the temporary variable T and the point P on the elliptic curve E, and The result is set in a temporary variable T (S46). After the process of S46, the temporary variable T becomes 5 × P. Then, the transmission device 100 updates i to 1.

次に、送信装置100は、iが1の場合について、送信装置100は、一時変数Tの楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S44)。S44の処理後、一時変数Tは10×Pとなる。次いで、送信装置100は、ビット値d[1]が1であるか否かを判定する(S45)。上記の式(13)に示したようにd[1]=0であるため、送信装置100は、S46の処理をスキップし、iを0に更新する。   Next, when i is 1, the transmitting apparatus 100 executes elliptic curve doubling ECDBL of the temporary variable T, and sets the result to the temporary variable T (S44). After the process of S44, the temporary variable T becomes 10 × P. Next, the transmitting apparatus 100 determines whether or not the bit value d [1] is 1 (S45). Since d [1] = 0 as shown in the above equation (13), the transmitting apparatus 100 skips the processing of S46 and updates i to 0.

次に、送信装置100は、iが0の場合について、送信装置100は、一時変数Tの楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S44)。S44の処理後、一時変数Tは20×Pとなる。次いで、送信装置100は、ビット値d[0]が1であるか否かを判定する(S45)。   Next, when i is 0, the transmitting apparatus 100 executes elliptic curve doubling ECDBL of the temporary variable T, and sets the result as the temporary variable T (S44). After the process of S44, the temporary variable T becomes 20 × P. Next, the transmitting apparatus 100 determines whether or not the bit value d [0] is 1 (S45).

上記の式(13)に示したようにd[0]=1であるため、送信装置100は、一時変数Tと楕円曲線E上の点Pとを加算する楕円曲線加算ECADDを実行し、その結果を一時変数Tに設定する(S46)。S46の処理後、一時変数Tは21×Pとなる。この一時変数Tがスカラー倍算の結果として出力される。   Since d [0] = 1 as shown in the above equation (13), the transmitting apparatus 100 executes elliptic curve addition ECADD that adds the temporary variable T and the point P on the elliptic curve E, and The result is set in a temporary variable T (S46). After the process of S46, the temporary variable T becomes 21 × P. This temporary variable T is output as the result of scalar multiplication.

このようにバイナリ法では、楕円曲線加算ECADDと楕円曲線2倍算ECDBLの組み合わせによりスカラー倍算が計算される。ビット毎に楕円曲線2倍算ECDBLが実行され、ビット値d[i]が1のときに楕円曲線加算ECADDがさらに実行される。   Thus, in the binary method, scalar multiplication is calculated by a combination of elliptic curve addition ECADD and elliptic curve doubling ECDBL. Elliptic curve doubling ECDBL is executed for each bit, and when the bit value d [i] is 1, elliptic curve addition ECADD is further executed.

スカラー値dがランダムに与えられた場合、d[i]=1となる確率は0.5である。従って、スカラー倍算を計算するのにかかるビット当たりの計算時間TimePerBitは、下記の式(14)で与えられる。但し、Time(ECDBL)は、楕円曲線2倍算ECDBLを1回計算するのにかかる計算時間である。また、Time(ECADD)は、楕円曲線加算ECADDを1回計算するのにかかる計算時間である。   If the scalar value d is given randomly, the probability that d [i] = 1 is 0.5. Therefore, the calculation time TimePerBit per bit required for calculating the scalar multiplication is given by the following equation (14). However, Time (ECDBL) is a calculation time required to calculate the elliptic curve doubling ECDBL once. Time (ECADD) is a calculation time required to calculate the elliptic curve addition ECADD once.

TimePerBit=Time(ECDBL)+0.5×Time(ECADD)
…(14)
ヤコビアン座標を用いた場合、Time(ECADD)=12M+2S、Time(ECDBL)=5M+2Sとなる。そのため、TimePerBitは、11M+3Sとなる。1S=0.8Mの場合、TimePerBitは13.4Mとなる。例えば、スカラー値dが160ビットの場合、S44以降の処理は159回実行される。そのため、スカラー倍算の平均的な計算時間Time(Ave)は、159×13.4M=2130.6Mとなる。
TimePerBit = Time (ECDBL) + 0.5 × Time (ECADD)
... (14)
When Jacobian coordinates are used, Time (ECADD) = 12M + 2S and Time (ECDBL) = 5M + 2S. Therefore, TimePerBit is 11M + 3S. In the case of 1S = 0.8M, TimePerBit is 13.4M. For example, when the scalar value d is 160 bits, the processing after S44 is executed 159 times. Therefore, the average calculation time Time (Ave) of scalar multiplication is 159 × 13.4M = 2130.6M.

(ウィンドウ法によるスカラー倍算の計算)
次に、図10及び図11を参照しながら、ウィンドウ法によるスカラー倍算の計算について説明する。
(Calculation of scalar multiplication by window method)
Next, calculation of scalar multiplication by the window method will be described with reference to FIGS.

なお、図10は、スカラー倍算の計算(ウィンドウ法)について説明するための第1のフロー図である。図11は、スカラー倍算の計算(ウィンドウ法)について説明するための第2のフロー図である。また、図10及び図11において、アルファベットの小文字はスカラー値を表し、大文字は楕円曲線E上の点を表す。また、説明の都合上、送信装置100がスカラー倍算を実行する場合について説明するが、受信装置200がスカラー倍算を実行する場合も同様である。   FIG. 10 is a first flowchart for explaining the scalar multiplication calculation (window method). FIG. 11 is a second flowchart for explaining the scalar multiplication calculation (window method). In FIGS. 10 and 11, lowercase letters in the alphabet represent scalar values, and uppercase letters represent points on the elliptic curve E. For convenience of explanation, the case where the transmission apparatus 100 executes scalar multiplication will be described, but the same applies to the case where the reception apparatus 200 executes scalar multiplication.

図10及び図11には、スカラー値dが21、ウィンドウ幅が4ビットの場合に、スカラー値dとベースポイントPとのスカラー倍算を計算する処理が例示されている。また、スカラー値dを表すビット列の長さは、下記の式(15)に示すように、送信装置100によりウィンドウ幅の整数倍(この例では8ビット)に調整されているものとする。以下、調整後のビット列の長さをn(この例ではn=8)と表記する。   FIG. 10 and FIG. 11 illustrate processing for calculating scalar multiplication of the scalar value d and the base point P when the scalar value d is 21 and the window width is 4 bits. Further, it is assumed that the length of the bit string representing the scalar value d is adjusted to an integral multiple of the window width (8 bits in this example) by the transmission device 100 as shown in the following equation (15). Hereinafter, the length of the adjusted bit string is expressed as n (n = 8 in this example).

d=21
=0×27+0×26+0×25+1×24
+0×23+1×22+0×21+1×20
=(00010101)ヒ゛ット列
…(15)
図10に示すように、送信装置100は、無限遠点∞をW[0]に設定する(S51)。S51の処理は、全てのビット値が0である4ビットのビット列(ウィンドウ)が示すスカラー値とベースポイントPとのスカラー倍算を実行し、その結果をW[0]に設定する処理に相当する。但し、このスカラー倍算の結果が∞になることが予め分かっているため、送信装置100は、S51の処理でW[0]に直接∞を設定している。
d = 21
= 0x2 7 + 0x2 6 + 0x2 5 + 1x2 4
+ 0x2 3 + 1x2 2 + 0x2 1 + 1x2 0
= (00010101) bit string (15)
As shown in FIG. 10, the transmitting apparatus 100 sets the infinity point ∞ to W [0] (S51). The process of S51 corresponds to a process of executing scalar multiplication of the scalar value indicated by the 4-bit bit string (window) whose base bit values are 0 and the base point P, and setting the result to W [0]. To do. However, since it is known in advance that the result of this scalar multiplication is ∞, the transmitting apparatus 100 directly sets ∞ to W [0] in the process of S51.

次いで、送信装置100は、ベースポイントPをW[1]に設定する(S52)。S52の処理は、下位1ビット目のビット値が1であり、他の全てのビット値が0である4ビットのビット列(ウィンドウ)が示すスカラー値とベースポイントPとのスカラー倍算を実行し、その結果をW[1]に設定する処理に相当する。但し、このスカラー倍算の結果がPになることが予め分かっているため、送信装置100は、S52の処理でW[1]に直接Pを設定している。   Next, the transmitting apparatus 100 sets the base point P to W [1] (S52). The processing of S52 executes scalar multiplication of the scalar value indicated by the 4-bit bit string (window) in which the bit value of the lower first bit is 1 and all other bit values are 0 and the base point P. This corresponds to the process of setting the result to W [1]. However, since it is known in advance that the result of this scalar multiplication is P, the transmitting apparatus 100 directly sets P to W [1] in the process of S52.

次いで、送信装置100は、iを2に設定する(S53)。次いで、送信装置100は、iが14より大きいか否かを判定する(S54)。iが14より大きい場合(i>14)、処理は図11のS58へと進む。一方、iが14より大きくない場合(i≦14)、処理はS55へと進む。   Next, the transmitting apparatus 100 sets i to 2 (S53). Next, the transmitting apparatus 100 determines whether i is greater than 14 (S54). If i is greater than 14 (i> 14), the process proceeds to S58 of FIG. On the other hand, if i is not greater than 14 (i ≦ 14), the process proceeds to S55.

処理がS55へと進んだ場合、送信装置100は、W[i/2]に対する楕円曲線2倍算ECDBLを実行し、その結果をW[i]に設定する(S55)。次いで、送信装置100は、W[i]とベースポイントPとを加算する楕円曲線加算ECADDを実行し、その結果をW[i+1]に設定する(S56)。次いで、送信装置100は、iに2を加算する(S57)。S57の処理が完了すると、処理はS54へと進む。   When the process proceeds to S55, the transmission device 100 executes elliptic curve doubling ECDBL for W [i / 2] and sets the result to W [i] (S55). Next, the transmitting apparatus 100 executes elliptic curve addition ECADD that adds W [i] and the base point P, and sets the result to W [i + 1] (S56). Next, the transmitting apparatus 100 adds 2 to i (S57). When the process of S57 is completed, the process proceeds to S54.

処理が図11のS58へと進んだ場合、送信装置100は、W[d[n−1,n−4]]を一時変数Tに設定する(S58)。但し、d[n−1,n−4]は、4つのビット値d[n−1]、d[n−2]、d[n−3]、d[n−4]を並べたビット列を表す。図10及び図11の例では、W[d[7,4]]=W[0001]=Pが一時変数Tに設定される。   When the process proceeds to S58 of FIG. 11, the transmitting apparatus 100 sets W [d [n−1, n−4]] to the temporary variable T (S58). However, d [n−1, n−4] is a bit string in which four bit values d [n−1], d [n−2], d [n−3], and d [n−4] are arranged. Represent. 10 and 11, W [d [7,4]] = W [0001] = P is set as the temporary variable T.

次いで、送信装置100は、iをn−5に設定する(S59)。次いで、送信装置100は、iが3より小さいか否かを判定する(S60)。iが3より小さい場合(i<3)、処理はS67へと進む。一方、iが3より小さくない場合(i≧3)、処理はS61へと進む。   Next, the transmitting apparatus 100 sets i to n-5 (S59). Next, the transmitting apparatus 100 determines whether i is smaller than 3 (S60). If i is smaller than 3 (i <3), the process proceeds to S67. On the other hand, if i is not smaller than 3 (i ≧ 3), the process proceeds to S61.

処理がS61へと進んだ場合、送信装置100は、一時変数Tに対する楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S61)。また、送信装置100は、一時変数Tに対する楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S62)。さらに、送信装置100は、一時変数Tに対する楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S63)。そして、送信装置100は、一時変数Tに対する楕円曲線2倍算ECDBLを実行し、その結果を一時変数Tに設定する(S64)。

次いで、送信装置100は、一時変数TとW[d[i,i−3]]とを加算する楕円曲線加算ECADDを実行し、その結果を一時変数Tに設定する(S65)。但し、d[i,i−3]は、4つのビット値d[i]、d[i−1]、d[i−2]、d[i−3]を並べたビット列を表す。i=3の場合、W[d[3,0]]=W[0101]=5Pとなる。次いで、送信装置100は、iから4を減算する(S66)。S66の処理が完了すると、処理はS60へと進む。
When the process proceeds to S61, the transmission device 100 executes the elliptic curve doubling ECDBL for the temporary variable T, and sets the result to the temporary variable T (S61). The transmitting apparatus 100 executes elliptic curve doubling ECDBL for the temporary variable T, and sets the result to the temporary variable T (S62). Furthermore, the transmitting apparatus 100 executes elliptic curve doubling ECDBL for the temporary variable T, and sets the result to the temporary variable T (S63). Then, the transmitting apparatus 100 executes the elliptic curve doubling ECDBL for the temporary variable T, and sets the result to the temporary variable T (S64).

Next, the transmitting apparatus 100 executes elliptic curve addition ECADD that adds the temporary variable T and W [d [i, i-3]], and sets the result to the temporary variable T (S65). However, d [i, i-3] represents a bit string in which four bit values d [i], d [i-1], d [i-2], and d [i-3] are arranged. When i = 3, W [d [3,0]] = W [0101] = 5P. Next, the transmitting apparatus 100 subtracts 4 from i (S66). When the process of S66 is completed, the process proceeds to S60.

処理がS67へと進んだ場合、送信装置100は、スカラー値dとベースポイントPとのスカラー倍算の結果として一時変数Tを出力する(S67)。S67の処理が完了すると、図10及び図11に示した一連の処理は終了する。   When the process proceeds to S67, the transmission device 100 outputs a temporary variable T as a result of the scalar multiplication of the scalar value d and the base point P (S67). When the process of S67 is completed, the series of processes shown in FIGS. 10 and 11 ends.

上記のように、予めウィンドウ毎に計算したスカラー倍算の結果W[i]を利用することで、スカラー値dとベースポイントPとのスカラー倍算を効率的に実行することができる。図10に示した処理(以下、前処理)には、楕円曲線加算ECADDが7回、楕円曲線2倍算ECDBLが7回含まれる。そのため、前処理にかかる計算時間TimePreは、下記の式(16)のようになる。   As described above, the scalar multiplication of the scalar value d and the base point P can be efficiently executed by using the result W [i] of the scalar multiplication previously calculated for each window. The processing shown in FIG. 10 (hereinafter referred to as preprocessing) includes elliptic curve addition ECADD seven times and elliptic curve doubling ECDBL seven times. Therefore, the calculation time TimePre for the preprocessing is expressed by the following equation (16).

TimePre=7×Time(ECDBL)+7×Time(ECADD)
=7×(4M+6S)+7×(8M+3S)
=84M+63S
=134.4M
…(16)
但し、上記の式(16)に示したTimePreは、ヤコビアン座標を利用すると共に、1M=0.8Sとおいた場合の計算時間である。同様に、ウィンドウ幅をNビットとした場合、前処理には(2N−2)/2回の楕円曲線2倍算ECDBLと(2N−2)/2回の楕円曲線加算ECADDが含まれる。そのため、前処理にかかる計算時間TimePreは、下記の式(17)のようになる。
TimePre = 7 × Time (ECDBL) + 7 × Time (ECADD)
= 7 × (4M + 6S) + 7 × (8M + 3S)
= 84M + 63S
= 134.4M
... (16)
However, TimePre shown in the above equation (16) is a calculation time when using Jacobian coordinates and setting 1M = 0.8S. Similarly, when the window width is N bits, the preprocessing includes (2 N −2) / 2 elliptic curve doubling ECDBL and (2 N −2) / 2 elliptic curve addition ECADD. . Therefore, the calculation time TimePre required for the preprocessing is expressed by the following equation (17).

TimePre=(2N−2)/2×(4M+6S)
+(2N−2)/2×(8M+3S)
=(2N−2)/2×(12M+9S)
=9.6×(2N−2)M
…(17)
また、図11に示した処理(以下、後処理)の計算には、S61〜S66の計算1回当たり4回の楕円曲線2倍算ECDBLと1回の楕円曲線加算ECADDとが含まれる。また、S61〜S66の計算は、(n−4)/4回実行されるので、後処理の計算時間TimeMainは、1M=0.8Sとおくと、下記の式(18)のようになる。従って、スカラー値dが160ビットの場合、スカラー倍算全体の平均的な計算時間Timeは下記の式(19)で与えられる。
TimePre = (2 N −2) / 2 × (4M + 6S)
+ (2 N −2) / 2 × (8M + 3S)
= (2 N -2) / 2 × (12M + 9S)
= 9.6 × (2 N −2) M
... (17)
Further, the calculation of the process shown in FIG. 11 (hereinafter, post-process) includes four elliptic curve doubling ECDBL and one elliptic curve addition ECADD per calculation of S61 to S66. In addition, since the calculations of S61 to S66 are executed (n-4) / 4 times, the post-processing calculation time TimeMain is set to 1M = 0.8S, and the following equation (18) is obtained. Therefore, when the scalar value d is 160 bits, the average calculation time Time of the entire scalar multiplication is given by the following equation (19).

TimeMain=((4M+6S)×4+(12M+4S))×(n−4)/4
=12.6M×(n−4)
…(18)
Time=TimePre+TimeMain
=134.4M+12.6M×156
=2100M
…(19)
以上、スカラー倍算の計算方法について説明した。ここではバイナリ法及びウィンドウ法を適用したアルゴリズムを紹介したが、第2実施形態に係る送信装置100(及び受信装置200)は、上記の計算時間をさらに短縮可能な新たなアルゴリズムを用いてスカラー倍算を計算する。
TimeMain = ((4M + 6S) × 4 + (12M + 4S)) × (n−4) / 4
= 12.6M x (n-4)
... (18)
Time = TimePre + TimeMain
= 134.4M + 12.6M × 156
= 2100M
... (19)
The calculation method for scalar multiplication has been described above. Although the algorithm using the binary method and the window method has been introduced here, the transmitting apparatus 100 (and the receiving apparatus 200) according to the second embodiment uses a new algorithm that can further reduce the calculation time described above, and performs scalar multiplication. Calculate the arithmetic.

[2−4.送信装置100の機能]
以下、スカラー倍算の計算時間を短縮可能な新たなアルゴリズムに係る送信装置100の機能について説明する。
[2-4. Function of transmitting apparatus 100]
Hereinafter, functions of the transmission apparatus 100 according to a new algorithm capable of reducing the calculation time of scalar multiplication will be described.

(機能ブロック)
まず、図12を参照しながら、送信装置100の機能について説明する。なお、図12は、第2実施形態に係る送信装置が有する機能の例を示したブロック図である。
(Function block)
First, the function of the transmission apparatus 100 will be described with reference to FIG. FIG. 12 is a block diagram illustrating an example of functions of the transmission apparatus according to the second embodiment.

図12に示すように、送信装置100は、通信部101、記憶部102、及び演算部103を有する。なお、通信部101の機能は、上述した接続ポート924や通信部926などを用いて実現できる。記憶部102の機能は、上述したRAM906や記憶部920などを用いて実現できる。演算部103の機能は、上述したCPU902などを用いて実現できる。   As illustrated in FIG. 12, the transmission device 100 includes a communication unit 101, a storage unit 102, and a calculation unit 103. The function of the communication unit 101 can be realized by using the connection port 924, the communication unit 926, or the like described above. The function of the storage unit 102 can be realized using the above-described RAM 906, the storage unit 920, or the like. The function of the calculation unit 103 can be realized using the above-described CPU 902 or the like.

通信部101は、ネットワークNWを介して受信装置200と通信する要素である。例えば、通信部101は、ランダムに生成されたスカラー値rとベースポイントPとのスカラー倍算の結果R及び暗号文Cを受信装置200へと送信する。記憶部102は、ベースポイントP、公開鍵S、平文M(メッセージ)を記憶する。また、記憶部102には、後述するウィンドウ毎に計算されたスカラー倍算の結果W[i](i=0,1,…)が格納される。   The communication unit 101 is an element that communicates with the receiving device 200 via the network NW. For example, the communication unit 101 transmits the result R and the ciphertext C of the scalar multiplication between the randomly generated scalar value r and the base point P to the receiving device 200. The storage unit 102 stores a base point P, a public key S, and plaintext M (message). Further, the storage unit 102 stores a result of scalar multiplication W [i] (i = 0, 1,...) Calculated for each window, which will be described later.

演算部103は、ベースポイントP及び公開鍵Sに基づいて楕円曲線暗号方式により平文Mを暗号化して暗号文Cを生成する。演算部103は、前処理部131、及び後処理部132を有する。   The calculation unit 103 encrypts the plaintext M by the elliptic curve cryptosystem based on the base point P and the public key S to generate a ciphertext C. The calculation unit 103 includes a preprocessing unit 131 and a postprocessing unit 132.

前処理部131は、予め設定された長さのビット列(ウィンドウ)が取り得る全てのスカラー値について、スカラー値毎にベースポイントPに対するスカラー倍算を実行する。このとき、前処理部131は、ヤコビアン座標のZ座標が共通する楕円曲線E上の点を加算する楕円曲線加算ECADDcoZ、及び、楕円曲線加算ECADDcoZを効率良く適用できるようにする楕円曲線2倍算ECDBLcoZを利用する。そして、前処理部131は、ウィンドウ毎に計算したスカラー倍算の結果W[i](i=0,1,…)を記憶部102に格納する。 The preprocessing unit 131 performs scalar multiplication on the base point P for each scalar value for all scalar values that can be taken by a bit string (window) having a preset length. At this time, the pre-processing unit 131 can efficiently apply the elliptic curve addition ECADD coZ that adds points on the elliptic curve E having the same Z-coordinate of the Jacobian coordinates and the elliptic curve addition ECADD coZ. Use multiplication ECDBL coZ . Then, the preprocessing unit 131 stores the scalar multiplication result W [i] (i = 0, 1,...) Calculated for each window in the storage unit 102.

後処理部132は、記憶部102に格納されたスカラー倍算の結果W[i](i=0,1,…)を用いて、暗号文Cの生成時に現れるベースポイントPに対するスカラー倍算を実行する。例えば、後処理部132は、スカラー値dをウィンドウ幅と同じ長さの複数のビット列に分け、ビット列毎のスカラー倍算の結果を組み合わせてスカラー値dとベースポイントPとのスカラー倍算を実行する。このとき、後処理部132は、ビット毎のスカラー倍算の結果としてW[i](i=0,1,…)を利用する。   The post-processing unit 132 uses the scalar multiplication result W [i] (i = 0, 1,...) Stored in the storage unit 102 to perform scalar multiplication on the base point P that appears when the ciphertext C is generated. Run. For example, the post-processing unit 132 divides the scalar value d into a plurality of bit strings having the same length as the window width, and executes the scalar multiplication of the scalar value d and the base point P by combining the results of the scalar multiplication for each bit string. To do. At this time, the post-processing unit 132 uses W [i] (i = 0, 1,...) As a result of scalar multiplication for each bit.

(楕円曲線2倍算ECDBLcoZについて)
ここで、図13を参照しながら、楕円曲線2倍算ECDBLcoZについて説明する。なお、図13は、第2実施形態に係るスカラー倍算の計算について説明するための第1のフロー図である。図13の例は、楕円曲線E上の点P1に対する楕円曲線2倍算ECDBLcoZのアルゴリズムを示す。
(About elliptic curve doubling ECDBL coZ )
Here, the elliptic curve doubling ECDBL coZ will be described with reference to FIG. FIG. 13 is a first flowchart for explaining the calculation of scalar multiplication according to the second embodiment. The example of FIG. 13 shows the algorithm of elliptic curve doubling ECDBL coZ for the point P1 on the elliptic curve E.

図13に示すように、前処理部131は、4×X1×Y1 2を計算し、その結果を一時変数Qに設定する(S131)。次いで、前処理部131は、3×X1 2+Q×Z1 4を計算し、その結果を一時変数Uに設定する(S132)。次いで、前処理部131は、−2×Q+U2を計算し、その結果をX3に設定する(S133)。次いで、前処理部131は、−8×Y1 4+U×(Q−X3)を計算し、その結果をY3に設定する(S134)。次いで、前処理部131は、2×Y1×Z1を計算し、その結果をZ3に設定する(S135)。 As shown in FIG. 13, the preprocessing unit 131 calculates 4 × X 1 × Y 1 2 and sets the result to the temporary variable Q (S131). Then, the preprocessing unit 131, 3 × X 1 2 + Q × calculates the Z 1 4, sets the result in temporary variable U (S132). Next, the preprocessing unit 131 calculates −2 × Q + U 2 and sets the result to X 3 (S133). Then, the pre-processing unit 131, a -8 × Y 1 4 + U × (Q-X 3) is calculated and set the result to Y 3 (S134). Next, the preprocessing unit 131 calculates 2 × Y 1 × Z 1 and sets the result to Z 3 (S135).

S131〜S135の処理により、楕円曲線E上の点P1を2倍した2×P1に対応する点P3の座標(X3:Y3:Z3)が得られる。楕円曲線2倍算ECDBLcoZのアルゴリズムでは、さらにS136、S137の処理が実行される。S136の処理において、前処理部131は、一時変数QをX1pに設定する(S136)。次いで、前処理部131は、8×Y1 4を計算し、その結果をY1pに設定する(S137)。座標(X1p:Y1p:Z3)を有する点P1pは、点P1と同じ楕円曲線E上の点である。 By the processing of S131 to S135, the coordinates (X 3 : Y 3 : Z 3 ) of the point P 3 corresponding to 2 × P 1 obtained by doubling the point P 1 on the elliptic curve E are obtained. In the elliptic curve doubling ECDBL coZ algorithm, the processes of S136 and S137 are further executed. In the process of S136, the preprocessing unit 131 sets the temporary variable Q to X 1p (S136). Then, the pre-processing unit 131 calculates the 8 × Y 1 4, sets the result to Y 1p (S137). A point P 1p having coordinates (X 1p : Y 1p : Z 3 ) is the same point on the elliptic curve E as the point P 1 .

上記のように、楕円曲線2倍算ECDBLcoZは、2×P1に対応する点P3を出力すると共に、点P3と同じZ座標を有する点P1の座標を出力する。そのため、点P3を計算した後、さらに点P3と点P1とを加算する場合に、Z座標が共通する2点P1、P3の座標を用いて演算を行うことが可能になる。 As described above, the elliptic curve doubling ECDBL coZ outputs the point P 3 corresponding to 2 × P 1 and the coordinates of the point P 1 having the same Z coordinate as the point P 3 . Therefore, after calculating the point P 3 , when the point P 3 and the point P 1 are further added, it is possible to perform an operation using the coordinates of the two points P 1 and P 3 having the same Z coordinate. .

(楕円曲線加算ECADDcoZについて)
次に、図14を参照しながら、楕円曲線加算ECADDcoZについて説明する。なお、図14は、第2実施形態に係るスカラー倍算の計算について説明するための第2のフロー図である。図14の例は、楕円曲線E上の異なる2点P1、P2を加算する楕円曲線加算ECADDcoZのアルゴリズムを示す。
(About elliptic curve addition ECADD coZ )
Next, the elliptic curve addition ECADD coZ will be described with reference to FIG. FIG. 14 is a second flowchart for explaining the scalar multiplication calculation according to the second embodiment. The example of FIG. 14 shows an algorithm of elliptic curve addition ECADD coZ that adds two different points P 1 and P 2 on the elliptic curve E.

図14に示すように、前処理部131は、(X2−X12を計算し、その結果を一時変数Qに設定する(S141)。次いで、前処理部131は、X1×Qを計算し、一時変数Uに設定する(S142)。次いで、前処理部131は、X2×Qを計算し、その結果を一時変数Vに設定する(S143)。次いで、前処理部131は、(Y2−Y12を計算し、その結果を一時変数Jに設定する(S144)。なお、S142、S143の処理は、順序を入れ替えることが可能である。また、S144の処理と、S141〜S143の処理とは順序を入れ替えることが可能である。 As shown in FIG. 14, the preprocessing unit 131 calculates (X 2 −X 1 ) 2 and sets the result to the temporary variable Q (S141). Next, the preprocessing unit 131 calculates X 1 × Q and sets the temporary variable U (S142). Next, the preprocessing unit 131 calculates X 2 × Q and sets the result to the temporary variable V (S143). Next, the preprocessing unit 131 calculates (Y 2 −Y 1 ) 2 and sets the result as a temporary variable J (S144). Note that the order of the processes of S142 and S143 can be changed. In addition, the order of the process of S144 and the processes of S141 to S143 can be switched.

次いで、前処理部131は、J−U−Vを計算し、その結果をX3に設定する(S145)。次いで、前処理部131は、(Y2−Y1)×(U−X3)−Y1×(V−U)を計算し、Y3に設定する(S146)。次いで、前処理部131は、Z1×(X2−X1)を計算し、その結果をZ3に設定する(S147)。 Then, the pre-processing unit 131 calculates the J-U-V, to set the result in X 3 (S145). Next, the preprocessing unit 131 calculates (Y 2 −Y 1 ) × (U−X 3 ) −Y 1 × (V−U) and sets it to Y 3 (S 146). Next, the preprocessing unit 131 calculates Z 1 × (X 2 −X 1 ), and sets the result to Z 3 (S147).

S141〜S147の処理により、楕円曲線E上の異なる2点P1、P2を加算した点P3の座標(X3:Y3:Z3)が得られる。楕円曲線加算ECADDcoZのアルゴリズムでは、さらにS148、S149の処理が実行される。S136の処理において、前処理部131は、一時変数UをX1pに設定する(S148)。次いで、前処理部131は、Y1×(V−U)を計算し、その結果をY1pに設定する(S149)。座標(X1p:Y1p:Z3)を有する点P1pは、点P1と同じ楕円曲線E上の点である。 By the processing of S141 to S147, the coordinates (X 3 : Y 3 : Z 3 ) of the point P 3 obtained by adding two different points P 1 and P 2 on the elliptic curve E are obtained. In the elliptic curve addition ECADD coZ algorithm, the processes of S148 and S149 are further executed. In the process of S136, the preprocessing unit 131 sets the temporary variable U to X 1p (S148). Next, the preprocessing unit 131 calculates Y 1 × (V−U) and sets the result to Y 1p (S149). A point P 1p having coordinates (X 1p : Y 1p : Z 3 ) is the same point on the elliptic curve E as the point P 1 .

上記のように、楕円曲線加算ECADDcoZは、P1+P2に対応する点P3を出力すると共に、点P3と同じZ座標を有する点P1の座標を出力する。そのため、点P3を計算した後、さらに点P3と点P1とを加算する場合に、Z座標が共通する2点P1、P3の座標を用いて演算を行うことが可能になる。また、Z座標が共通する上記の加算演算は、既に説明した楕円曲線加算ECADDに比べて高速に実行可能である。 As described above, the elliptic curve addition ECADD coZ outputs the point P 3 corresponding to P 1 + P 2 and the coordinates of the point P 1 having the same Z coordinate as the point P 3 . Therefore, after calculating the point P 3 , when the point P 3 and the point P 1 are further added, it is possible to perform an operation using the coordinates of the two points P 1 and P 3 having the same Z coordinate. . Further, the above addition operation having the same Z coordinate can be executed at a higher speed than the elliptic curve addition ECADD already described.

従って、楕円曲線加算ECADDcoZを利用することで、スカラー倍算が高速化される。以下で述べるように、楕円曲線2倍算ECDBLcoZを利用して楕円曲線加算ECADDcoZを有効に活用することにより、スカラー倍算を高速化することができる。 Therefore, scalar multiplication is accelerated by using the elliptic curve addition ECADD coZ . As described below, by effectively using the elliptic curve addition ECADD Coz utilizing elliptic curve doubling ECDBL Coz, it is possible to speed up scalar multiplication.

(ECDBLcoZ、ECADDcoZに基づくスカラー倍算)
ここで、図15を参照しながら、楕円曲線2倍算ECDBLcoZ、及び楕円曲線加算ECADDcoZに基づくスカラー倍算の計算について説明する。なお、図15は、第2実施形態に係るスカラー倍算の計算について説明するための第3のフロー図である。図15の例は、ウィンドウ幅が4ビットの場合を想定し、スカラー倍算により、楕円曲線E上の点Pについて0×P、1×P、2×P、…、15×Pをそれぞれ計算する前処理の方法である。
(Scalar multiplication based on ECDBL coZ and ECADD coZ )
Here, the calculation of scalar multiplication based on elliptic curve doubling ECDBL coZ and elliptic curve addition ECADD coZ will be described with reference to FIG. FIG. 15 is a third flowchart for explaining the scalar multiplication calculation according to the second embodiment. In the example of FIG. 15, assuming that the window width is 4 bits, 0 × P, 1 × P, 2 × P,..., 15 × P are calculated for the point P on the elliptic curve E by scalar multiplication. This is a preprocessing method.

前処理を開始した前処理部131は、0×Pに対応する無限遠点∞をW[0]に設定し、W[0]を記憶部102に格納する。また、前処理部131は、1×Pに対応するPをW[1]に設定し、W[1]を記憶部102に格納する。その後、前処理部131は、図15に示す処理を順次実行する。   The preprocessing unit 131 that has started the preprocessing sets the infinity point ∞ corresponding to 0 × P to W [0], and stores W [0] in the storage unit 102. Further, the preprocessing unit 131 sets P corresponding to 1 × P to W [1] and stores W [1] in the storage unit 102. Thereafter, the preprocessing unit 131 sequentially executes the processes shown in FIG.

図15に示すように、前処理部131は、点Pに対する楕円曲線2倍算ECDBLcoZ(P1=P、P3=2×Pに対応)を実行する(S151)。S151の演算により、2×Pの座標が得られる。さらに、2×PとZ座標が共通するPの座標が得られる。前処理部131は、楕円曲線2倍算ECDBLcoZにより得られた2×Pの座標をW[2]に設定し、W[2]を記憶部102に格納する。さらに、前処理部131は、2×PとZ座標が共通するPの座標を記憶部102に格納する。 As illustrated in FIG. 15, the preprocessing unit 131 executes elliptic curve doubling ECDBL coZ (corresponding to P 1 = P, P 3 = 2 × P) for the point P (S151). By the operation of S151, 2 × P coordinates are obtained. Further, P coordinates having the same 2 × P and Z coordinates are obtained. The preprocessing unit 131 sets 2 × P coordinates obtained by elliptic curve doubling ECDBL coZ to W [2], and stores W [2] in the storage unit 102. Further, the preprocessing unit 131 stores the coordinates of P having the same 2 × P and Z coordinates in the storage unit 102.

次いで、前処理部131は、S152〜S158の処理を含む第1の処理群と、S159〜S164の処理を含む第2の処理群とを実行する。第1の処理群は、3以上の奇数×Pを計算する処理の集合である。一方、第2の処理群は、4以上の偶数×Pを計算する処理の集合である。第1の処理群と第2の処理群とは実行順序を入れ替えることが可能である。また、第2の処理群と第2の処理群とを並列に実行することが可能である。ここでは、第1の処理群、第2の処理群の順番で処理が実行される場合について考える。   Next, the preprocessing unit 131 executes a first processing group including the processes of S152 to S158 and a second processing group including the processes of S159 to S164. The first processing group is a set of processes for calculating an odd number × P of 3 or more. On the other hand, the second process group is a set of processes for calculating an even number × P of 4 or more. The execution order of the first processing group and the second processing group can be switched. Further, the second processing group and the second processing group can be executed in parallel. Here, a case where processing is executed in the order of the first processing group and the second processing group will be considered.

(第1の処理群)
前処理部131は、2×PにPを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=P、P3=3×Pに対応)を実行する(S152)。このとき、前処理部131は、2×PとZ座標が共通するPの座標及びW[2]を用いて楕円曲線加算ECADDcoZを実行する。S152の演算により、3×Pの座標が得られる。さらに、3×PとZ座標が共通するPの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた3×Pの座標をW[3]に設定し、W[3]を記憶部102に格納する。さらに、前処理部131は、3×PとZ座標が共通する2×Pの座標を記憶部102に格納する。
(First processing group)
The preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = P, P 3 = 3 × P) for adding P to 2 × P (S152). At this time, the pre-processing unit 131 executes elliptic curve addition ECADD coZ using P coordinates and W [2] having the same 2 × P and Z coordinates. By the calculation of S152, 3 × P coordinates are obtained. Further, P coordinates having the same 3 × P and Z coordinates are obtained. The preprocessing unit 131 sets 3 × P coordinates obtained by elliptic curve addition ECADD coZ to W [3], and stores W [3] in the storage unit 102. Further, the pre-processing unit 131 stores 2 × P coordinates having the same 3 × P and Z coordinates in the storage unit 102.

次いで、前処理部131は、3×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=3×P、P3=5×Pに対応)を実行する(S153)。このとき、前処理部131は、3×PとZ座標が共通する2×Pの座標及びW[3]を用いて楕円曲線加算ECADDcoZを実行する。S153の演算により、5×Pの座標が得られる。さらに、5×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた5×Pの座標をW[5]に設定し、W[5]を記憶部102に格納する。さらに、前処理部131は、5×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 3 × P, P 3 = 5 × P) that adds 2 × P to 3 × P. (S153). At this time, the pre-processing unit 131 executes the elliptic curve addition ECADD coZ using the 2 × P coordinates and W [3] that have the same 3 × P and Z coordinates. By the calculation of S153, 5 × P coordinates are obtained. Further, 2 × P coordinates having the same 5 × P and Z coordinates are obtained. The preprocessing unit 131 sets 5 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [5], and stores W [5] in the storage unit 102. Further, the pre-processing unit 131 stores 2 × P coordinates having the same Z coordinate as 5 × P in the storage unit 102.

次いで、前処理部131は、5×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=5×P、P3=7×Pに対応)を実行する(S154)。このとき、前処理部131は、5×PとZ座標が共通する2×Pの座標及びW[5]を用いて楕円曲線加算ECADDcoZを実行する。S154の演算により、7×Pの座標が得られる。さらに、7×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた7×Pの座標をW[7]に設定し、W[7]を記憶部102に格納する。さらに、前処理部131は、7×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 5 × P, P 3 = 7 × P) that adds 2 × P to 5 × P. (S154). At this time, the pre-processing unit 131 executes the elliptic curve addition ECADD coZ using 2 × P coordinates and W [5] that have the same 5 × P and Z coordinates. The coordinates of 7 × P are obtained by the calculation of S154. Further, 2 × P coordinates having the same Z coordinate as 7 × P are obtained. The preprocessing unit 131 sets 7 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [7], and stores W [7] in the storage unit 102. Further, the pre-processing unit 131 stores 2 × P coordinates having the same Z coordinate as 7 × P in the storage unit 102.

次いで、前処理部131は、7×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=7×P、P3=9×Pに対応)を実行する(S155)。このとき、前処理部131は、7×PとZ座標が共通する2×Pの座標及びW[7]を用いて楕円曲線加算ECADDcoZを実行する。S155の演算により、9×Pの座標が得られる。さらに、9×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた9×Pの座標をW[9]に設定し、W[9]を記憶部102に格納する。さらに、前処理部131は、9×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 7 × P, P 3 = 9 × P) that adds 2 × P to 7 × P. (S155). At this time, the pre-processing unit 131 executes the elliptic curve addition ECADD coZ using the 2 × P coordinates and W [7], which have the same 7 × P and Z coordinates. 9 × P coordinates are obtained by the calculation of S155. Furthermore, 2 × P coordinates having the same 9 × P and Z coordinates are obtained. The preprocessing unit 131 sets 9 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [9], and stores W [9] in the storage unit 102. Further, the preprocessing unit 131 stores 2 × P coordinates in common with 9 × P and Z coordinates in the storage unit 102.

次いで、前処理部131は、9×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=9×P、P3=11×Pに対応)を実行する(S156)。このとき、前処理部131は、9×PとZ座標が共通する2×Pの座標及びW[9]を用いて楕円曲線加算ECADDcoZを実行する。S156の演算により、11×Pの座標が得られる。さらに、11×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた11×Pの座標をW[11]に設定し、W[11]を記憶部102に格納する。さらに、前処理部131は、11×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 9 × P, P 3 = 11 × P) for adding 2 × P to 9 × P. (S156). At this time, the preprocessing unit 131 executes the elliptic curve addition ECADD coZ using the 2 × P coordinates and W [9], which have the same 9 × P and Z coordinates. The coordinates of 11 × P are obtained by the calculation of S156. Further, 2 × P coordinates having the same 11 × P and Z coordinates are obtained. The preprocessing unit 131 sets 11 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [11], and stores W [11] in the storage unit 102. Further, the pre-processing unit 131 stores 2 × P coordinates having the same Z coordinate as 11 × P in the storage unit 102.

次いで、前処理部131は、11×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=11×P、P3=13×Pに対応)を実行する(S157)。このとき、前処理部131は、11×PとZ座標が共通する2×Pの座標及びW[11]を用いて楕円曲線加算ECADDcoZを実行する。S157の演算により、13×Pの座標が得られる。さらに、13×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた13×Pの座標をW[13]に設定し、W[13]を記憶部102に格納する。さらに、前処理部131は、13×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 11 × P, P 3 = 13 × P) that adds 2 × P to 11 × P. (S157). At this time, the preprocessing unit 131 executes the elliptic curve addition ECADD coZ using the 2 × P coordinates and W [11], which have the same 11 × P and Z coordinates. By the calculation of S157, 13 × P coordinates are obtained. Furthermore, 2 × P coordinates having the same 13 × P and Z coordinates are obtained. The preprocessing unit 131 sets the 13 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [13], and stores W [13] in the storage unit 102. Further, the pre-processing unit 131 stores 2 × P coordinates having the same Z coordinate as 13 × P in the storage unit 102.

次いで、前処理部131は、13×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=13×P、P3=15×Pに対応)を実行する(S158)。このとき、前処理部131は、13×PとZ座標が共通する2×Pの座標及びW[13]を用いて楕円曲線加算ECADDcoZを実行する。S158の演算により、15×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた15×Pの座標をW[15]に設定し、W[15]を記憶部102に格納する。S158の処理では、15×PとZ座標が共通する2×Pの座標を計算しなくてもよい。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 13 × P, P 3 = 15 × P) that adds 2 × P to 13 × P. (S158). At this time, the preprocessing unit 131 executes the elliptic curve addition ECADD coZ using the 2 × P coordinates and W [13], which have the same 13 × P and Z coordinates. The coordinates of 15 × P are obtained by the calculation of S158. The preprocessing unit 131 sets the 15 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [15], and stores W [15] in the storage unit 102. In the process of S158, it is not necessary to calculate 2 × P coordinates that have the same Z coordinate as 15 × P.

(第2の処理群)
前処理部131は、2×Pを2倍する楕円曲線2倍算ECDBLcoZ(P1=2×P、P3=4×Pに対応)を実行する(S159)。このとき、前処理部131は、W[2]を用いて楕円曲線2倍算ECDBLcoZを実行する。S159の演算により、4×Pの座標が得られる。さらに、4×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線2倍算ECDBLcoZにより得られた4×Pの座標をW[4]に設定し、W[4]を記憶部102に格納する。さらに、前処理部131は、4×PとZ座標が共通する2×Pの座標を記憶部102に格納する。
(Second treatment group)
The preprocessing unit 131 executes elliptic curve doubling ECDBL coZ (corresponding to P 1 = 2 × P, P 3 = 4 × P) that doubles 2 × P (S159). At this time, the preprocessing unit 131 performs elliptic curve doubling ECDBL coZ using W [2]. By the operation of S159, 4 × P coordinates are obtained. Further, 2 × P coordinates having the same 4 × P and Z coordinates are obtained. The preprocessing unit 131 sets 4 × P coordinates obtained by elliptic curve doubling ECDBL coZ to W [4], and stores W [4] in the storage unit 102. Further, the pre-processing unit 131 stores 2 × P coordinates having the same Z coordinate as 4 × P in the storage unit 102.

次いで、前処理部131は、4×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=4×P、P3=6×Pに対応)を実行する(S160)。このとき、前処理部131は、4×PとZ座標が共通する2×Pの座標及びW[4]を用いて楕円曲線加算ECADDcoZを実行する。S160の演算により、6×Pの座標が得られる。さらに、6×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた6×Pの座標をW[6]に設定し、W[6]を記憶部102に格納する。さらに、前処理部131は、6×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 4 × P, P 3 = 6 × P) that adds 2 × P to 4 × P. (S160). At this time, the pre-processing unit 131 executes the elliptic curve addition ECADD coZ using 2 × P coordinates and W [4], which have the same 4 × P and Z coordinates. The coordinates of 6 × P are obtained by the calculation of S160. Further, 2 × P coordinates having the same 6 × P and Z coordinates are obtained. The preprocessing unit 131 sets the 6 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [6], and stores W [6] in the storage unit 102. Further, the preprocessing unit 131 stores 2 × P coordinates having the same Z coordinate as 6 × P in the storage unit 102.

次いで、前処理部131は、6×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=6×P、P3=8×Pに対応)を実行する(S161)。このとき、前処理部131は、6×PとZ座標が共通する2×Pの座標及びW[6]を用いて楕円曲線加算ECADDcoZを実行する。S161の演算により、8×Pの座標が得られる。さらに、8×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた8×Pの座標をW[8]に設定し、W[8]を記憶部102に格納する。さらに、前処理部131は、8×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 6 × P, P 3 = 8 × P) for adding 2 × P to 6 × P. (S161). At this time, the preprocessing unit 131 executes elliptic curve addition ECADD coZ using 2 × P coordinates and W [6], which have the same 6 × P and Z coordinates. By the operation of S161, 8 × P coordinates are obtained. Further, 2 × P coordinates having the same 8 × P and Z coordinates are obtained. The preprocessing unit 131 sets the 8 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [8] and stores W [8] in the storage unit 102. Further, the preprocessing unit 131 stores in the storage unit 102 the 2 × P coordinates that have the same 8 × P and Z coordinates.

次いで、前処理部131は、8×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=8×P、P3=10×Pに対応)を実行する(S162)。このとき、前処理部131は、8×PとZ座標が共通する2×Pの座標及びW[8]を用いて楕円曲線加算ECADDcoZを実行する。S162の演算により、10×Pの座標が得られる。さらに、10×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた10×Pの座標をW[10]に設定し、W[10]を記憶部102に格納する。さらに、前処理部131は、10×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 8 × P, P 3 = 10 × P) that adds 2 × P to 8 × P. (S162). At this time, the preprocessing unit 131 executes the elliptic curve addition ECADD coZ using the 2 × P coordinates and W [8], which have the same 8 × P and Z coordinates. The coordinates of 10 × P are obtained by the calculation of S162. Further, 2 × P coordinates having the same 10 × P and Z coordinates are obtained. The preprocessing unit 131 sets the 10 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [10], and stores W [10] in the storage unit 102. Further, the preprocessing unit 131 stores 2 × P coordinates having the same Z coordinate as 10 × P in the storage unit 102.

次いで、前処理部131は、10×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=10×P、P3=12×Pに対応)を実行する(S163)。このとき、前処理部131は、10×PとZ座標が共通する2×Pの座標及びW[10]を用いて楕円曲線加算ECADDcoZを実行する。S163の演算により、12×Pの座標が得られる。さらに、12×PとZ座標が共通する2×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた12×Pの座標をW[12]に設定し、W[12]を記憶部102に格納する。さらに、前処理部131は、12×PとZ座標が共通する2×Pの座標を記憶部102に格納する。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 10 × P, P 3 = 12 × P) that adds 2 × P to 10 × P. (S163). At this time, the pre-processing unit 131 executes the elliptic curve addition ECADD coZ using 2 × P coordinates and W [10], which share the 10 × P and Z coordinates. The coordinates of 12 × P are obtained by the calculation of S163. Further, 2 × P coordinates having a common Z coordinate with 12 × P are obtained. The preprocessing unit 131 sets the 12 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [12] and stores W [12] in the storage unit 102. Further, the pre-processing unit 131 stores 2 × P coordinates having the same Z coordinate as 12 × P in the storage unit 102.

次いで、前処理部131は、12×Pに2×Pを加算する楕円曲線加算ECADDcoZ(P1=2×P、P2=12×P、P3=14×Pに対応)を実行する(S164)。このとき、前処理部131は、12×PとZ座標が共通する2×Pの座標及びW[12]を用いて楕円曲線加算ECADDcoZを実行する。S164の演算により、14×Pの座標が得られる。前処理部131は、楕円曲線加算ECADDcoZにより得られた14×Pの座標をW[14]に設定し、W[14]を記憶部102に格納する。なお、S164の処理では、14×PとZ座標が共通する2×Pの座標を計算しなくてもよい。 Next, the preprocessing unit 131 executes elliptic curve addition ECADD coZ (corresponding to P 1 = 2 × P, P 2 = 12 × P, P 3 = 14 × P) that adds 2 × P to 12 × P. (S164). At this time, the preprocessing unit 131 executes the elliptic curve addition ECADD coZ using the 2 × P coordinates and W [12], which have the same 12 × P and Z coordinates. The coordinates of 14 × P are obtained by the calculation of S164. The preprocessing unit 131 sets the 14 × P coordinates obtained by the elliptic curve addition ECADD coZ to W [14], and stores W [14] in the storage unit 102. Note that in the process of S164, it is not necessary to calculate 2 × P coordinates having the same 14 × P and Z coordinates.

(演算量の評価)
上述した楕円曲線2倍算ECDBLcoZの計算時間は4M+6Sである。また、上述した楕円曲線加算ECADDcoZの計算時間は5M+2Sである。また、図15に例示した前処理は、楕円曲線2倍算ECDBLcoZを2回、楕円曲線加算ECADDcoZを12回含む。そのため、前処理にかかる計算時間TimePreは、下記の式(20)のようになる。従って、図10に例示した前処理の計算時間に比べると、図15に例示した方法を適用することで約28%の高速化が実現できていることがわかる。
(Evaluation of computational complexity)
The calculation time of the elliptic curve doubling ECDBL coZ described above is 4M + 6S. Further , the calculation time of the above-described elliptic curve addition ECADD coZ is 5M + 2S. The preprocessing illustrated in FIG. 15 includes elliptic curve doubling ECDBL coZ twice and elliptic curve addition ECADD coZ 12 times. Therefore, the calculation time TimePre required for the preprocessing is expressed by the following equation (20). Therefore, it can be seen that a speed increase of about 28% can be realized by applying the method illustrated in FIG. 15 compared with the calculation time of the preprocessing illustrated in FIG.

TimePre=2×(4M+6S)+12×(5M+2S)
=96.8M
…(20)
また、ウィンドウ幅がNビットの場合、上記の前処理には、2回の楕円曲線2倍算ECDBLcoZと、(2N−4)回の楕円曲線加算ECADDcoZとが含まれる。従って、計算時間TimePreは、下記の式(21)のようになる。
TimePre = 2 × (4M + 6S) + 12 × (5M + 2S)
= 96.8M
... (20)
When the window width is N bits, the preprocessing includes two elliptic curve doublings ECDBL coZ and (2 N -4) elliptic curve addition ECADD coZ . Accordingly, the calculation time TimePre is expressed by the following equation (21).

TimePre=2×(4M+6S)+(2N−4)×(5M+2S)
=(5×2N−12)M+(2×2N+4)S
=(6.6×2N−8.8)M
…(21)
N=2の場合、上記の式(21)により計算される計算時間TimePreは、TimePre=17.6Mとなる。同様に、N=3の場合、TimePre=44.0Mとなる。N=4の場合、TimePre=96.8Mとなる。また、N=5の場合、TimePre=202.4Mとなる。
TimePre = 2 × (4M + 6S) + (2 N −4) × (5M + 2S)
= (5 × 2 N −12) M + (2 × 2 N +4) S
= (6.6 × 2 N −8.8) M
... (21)
When N = 2, the calculation time TimePre calculated by the above equation (21) is TimePre = 17.6M. Similarly, when N = 3, TimePre = 44.0M. When N = 4, TimePre = 96.8M. In addition, when N = 5, TimePre = 202.4M.

上記の式(17)(図10に示した前処理に対応)で計算される計算時間TimePreと比較すると、N=2の場合で8.3%、N=3の場合で23.6%、N=4の場合で28.0%、N=5の場合で29.7%の高速化が実現できていることが確かめられる。つまり、第2実施形態に係る前処理の方法を適用することで、スカラー倍算の高速化、ひいては楕円曲線暗号に係る処理の高速化が実現される。   Compared with the calculation time TimePre calculated by the above equation (17) (corresponding to the preprocessing shown in FIG. 10), it is 8.3% when N = 2, 23.6% when N = 3, It can be confirmed that 28.0% can be achieved when N = 4, and 29.7% when N = 5. That is, by applying the preprocessing method according to the second embodiment, it is possible to increase the speed of scalar multiplication, and thus to increase the speed of processing related to elliptic curve cryptography.

以上、送信装置100の機能について説明した。
[2−5.受信装置200の機能]
次に、図16を参照しながら、スカラー倍算の計算時間を短縮可能な新たなアルゴリズムに係る受信装置200の機能について説明する。なお、図16は、第2実施形態に係る受信装置が有する機能の例を示したブロック図である。
The function of the transmission device 100 has been described above.
[2-5. Function of receiving apparatus 200]
Next, the function of the receiving apparatus 200 related to a new algorithm capable of shortening the calculation time of scalar multiplication will be described with reference to FIG. FIG. 16 is a block diagram illustrating an example of functions that the receiving apparatus according to the second embodiment has.

図16に示すように、受信装置200は、通信部201、記憶部202、及び演算部203を有する。なお、通信部201の機能は、上述した接続ポート924や通信部926などを用いて実現できる。記憶部202の機能は、上述したRAM906や記憶部920などを用いて実現できる。演算部203の機能は、上述したCPU902などを用いて実現できる。   As illustrated in FIG. 16, the reception device 200 includes a communication unit 201, a storage unit 202, and a calculation unit 203. The function of the communication unit 201 can be realized by using the connection port 924, the communication unit 926, or the like described above. The function of the storage unit 202 can be realized using the above-described RAM 906, storage unit 920, and the like. The function of the calculation unit 203 can be realized using the above-described CPU 902 or the like.

通信部201は、ネットワークNWを介して送信装置100と通信する要素である。例えば、通信部201は、ランダムに生成されたスカラー値rとベースポイントPとのスカラー倍算の結果R及び暗号文Cを送信装置100から受信する。記憶部202は、秘密鍵sを記憶する。また、記憶部202には、ウィンドウ毎に計算されたスカラー倍算の結果WR[i](i=0,1,…)が格納される。 The communication unit 201 is an element that communicates with the transmission device 100 via the network NW. For example, the communication unit 201 receives the result R and the ciphertext C of the scalar multiplication of the randomly generated scalar value r and the base point P from the transmission device 100. The storage unit 202 stores the secret key s. Further, the storage unit 202 stores the result of scalar multiplication W R [i] (i = 0, 1,...) Calculated for each window.

演算部203は、送信装置100から受信したR及び秘密鍵sを利用して暗号文Cから平文Mを復元する。演算部203は、前処理部231、及び後処理部232を有する。
前処理部231は、予め設定された長さのビット列(ウィンドウ)が取り得る全てのスカラー値について、スカラー値毎に楕円曲線E上の点Rに対するスカラー倍算を実行する。このとき、前処理部231は、ヤコビアン座標のZ座標が共通する楕円曲線E上の点を加算する楕円曲線加算ECADDcoZ、及び、楕円曲線加算ECADDcoZを効率良く適用できるようにする楕円曲線2倍算ECDBLcoZを利用する。そして、前処理部231は、ウィンドウ毎に計算したスカラー倍算の結果WR[i](i=0,1,…)を記憶部202に格納する。
The calculation unit 203 restores the plaintext M from the ciphertext C using the R and the secret key s received from the transmission device 100. The calculation unit 203 includes a pre-processing unit 231 and a post-processing unit 232.
The pre-processing unit 231 performs scalar multiplication on the point R on the elliptic curve E for each scalar value for all scalar values that can be taken by a bit string (window) having a preset length. At this time, the preprocessing unit 231 can efficiently apply the elliptic curve addition ECADD coZ that adds points on the elliptic curve E having the same Z coordinate of the Jacobian coordinates and the elliptic curve addition ECADD coZ. Use multiplication ECDBL coZ . The preprocessing unit 231 stores the result of scalar multiplication W R [i] (i = 0, 1,...) Calculated for each window in the storage unit 202.

後処理部232は、記憶部202に格納されたスカラー倍算の結果WR[i](i=0,1,…)を用いて、楕円曲線E上の点Rに対するスカラー倍算を実行する。例えば、後処理部232は、スカラー値dをウィンドウ幅と同じ長さの複数のビット列に分け、ビット列毎のスカラー倍算の結果を組み合わせてスカラー値dと点Rとのスカラー倍算を実行する。このとき、後処理部232は、ビット毎のスカラー倍算の結果としてWR[i](i=0,1,…)を利用する。 The post-processing unit 232 performs scalar multiplication on the point R on the elliptic curve E using the result of scalar multiplication W R [i] (i = 0, 1,...) Stored in the storage unit 202. . For example, the post-processing unit 232 divides the scalar value d into a plurality of bit strings having the same length as the window width, and executes the scalar multiplication of the scalar value d and the point R by combining the results of the scalar multiplication for each bit string. . At this time, the post-processing unit 232 uses W R [i] (i = 0, 1,...) As a result of bitwise scalar multiplication.

なお、前処理部231及び後処理部232は、送信装置100の演算部103が有する前処理部131及び後処理部132と同様に、楕円曲線2倍算ECDBLcoZ及び楕円曲線加算ECADDcoZなどを用いて前処理のスカラー倍算を実行する。つまり、前処理部231は、図15に例示した前処理と同様の処理を実行する。また、後処理部232は、図11に例示した後処理と同様の処理を実行する。 The pre-processing unit 231 and the post-processing unit 232 perform elliptic curve doubling ECDBL coZ, elliptic curve addition ECADD coZ , and the like, similar to the pre-processing unit 131 and the post-processing unit 132 included in the calculation unit 103 of the transmission apparatus 100. To perform preprocessing scalar multiplication. That is, the preprocessing unit 231 performs the same process as the preprocess illustrated in FIG. Further, the post-processing unit 232 executes the same processing as the post-processing exemplified in FIG.

以上、第2実施形態について説明した。
<3.付記>
以上説明した実施形態に関し、さらに以下の付記を開示する。
The second embodiment has been described above.
<3. Addendum>
The following additional notes are disclosed with respect to the embodiment described above.

(付記1)設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、前記ビット値の組み合わせに応じた前記楕円曲線上の点に対するスカラー倍算を実行する演算部と、
前記スカラー倍算の結果を記憶する記憶部と、
を有し、
前記演算部は、ヤコビアン座標の1つが共通する前記楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいて前記スカラー倍算を実行する
情報処理装置。
(Supplementary note 1) For each point on the set elliptic curve, for each bit value combination that can be taken by the bit string of the set length, scalar multiplication is performed on the point on the elliptic curve according to the bit value combination. An arithmetic unit to be executed;
A storage unit for storing the result of the scalar multiplication;
Have
The information processing apparatus performs the scalar multiplication based on an addition operation for adding a first point and a second point on the elliptic curve having one common Jacobian coordinate.

(付記2)前記演算部は、
前記第1の点と前記第2の点とが異なる点である場合、前記加算演算の中で、前記第1の点と前記第2の点との楕円曲線加算により第3の点を計算すると共に、前記第3の点とヤコビアン座標の1つが共通する前記第1の点の座標を計算し、
前記第1の点と前記第2の点とが同じ点である場合、前記加算演算の中で、前記第1の点の楕円曲線2倍算により第4の点を計算すると共に、前記第4の点とヤコビアン座標の1つが共通する前記第1の点の座標を計算する
付記1に記載の情報処理装置。
(Appendix 2) The calculation unit
When the first point and the second point are different points, a third point is calculated by adding an elliptic curve between the first point and the second point in the addition operation. And calculating the coordinates of the first point in common with the third point and one of the Jacobian coordinates,
When the first point and the second point are the same point, a fourth point is calculated by doubling the elliptic curve of the first point in the addition operation, and the fourth point The information processing apparatus according to appendix 1, wherein the coordinates of the first point where one of the points and the Jacobian coordinates are common are calculated.

(付記3)前記演算部は、設定されたスカラー値と前記設定された楕円曲線上の点とのスカラー倍算を計算する場合に、前記スカラー値を示すビット列を前記設定された長さの複数のビット列に分け、前記記憶部が記憶する前記スカラー倍算の結果を用いて前記設定されたスカラー値と前記設定された楕円曲線上の点とのスカラー倍算を計算する
付記1又は2に記載の情報処理装置。
(Supplementary note 3) When the arithmetic unit calculates a scalar multiplication of a set scalar value and a point on the set elliptic curve, a plurality of bit lengths indicating the scalar value are set to the set length. The scalar multiplication of the set scalar value and the set point on the elliptic curve is calculated using the result of the scalar multiplication stored in the storage unit. Information processing device.

(付記4)記憶部を有するコンピュータが、
設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、前記ビット値の組み合わせに応じた前記楕円曲線上の点に対するスカラー倍算を実行する処理、及び前記スカラー倍算の結果を前記記憶部に格納する処理を実行する情報処理方法であり、
前記スカラー倍算を実行する処理において、前記コンピュータが、ヤコビアン座標の1つが共通する前記楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいて前記スカラー倍算を実行する
情報処理方法。
(Appendix 4) A computer having a storage unit is
A process of performing scalar multiplication on the points on the elliptic curve according to the combination of the bit values for each combination of bit values that can be taken by the bit string of the set length for the points on the set elliptic curve, And an information processing method for executing a process of storing the result of the scalar multiplication in the storage unit,
In the process of executing the scalar multiplication, the computer executes the scalar multiplication based on an addition operation for adding the first point and the second point on the elliptic curve having one common Jacobian coordinate. Information processing method.

(付記5)記憶部を有するコンピュータに、
設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、前記ビット値の組み合わせに応じた前記楕円曲線上の点に対するスカラー倍算を実行する処理、及び前記スカラー倍算の結果を前記記憶部に格納する処理を実行させるプログラムであり、
前記スカラー倍算を実行する処理において、前記コンピュータに、ヤコビアン座標の1つが共通する前記楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいて前記スカラー倍算を実行させる
プログラム。
(Supplementary Note 5) In a computer having a storage unit,
A process of performing scalar multiplication on the points on the elliptic curve according to the combination of the bit values for each combination of bit values that can be taken by the bit string of the set length for the points on the set elliptic curve, And a program for executing processing for storing the result of the scalar multiplication in the storage unit,
In the process of executing the scalar multiplication, the computer executes the scalar multiplication based on an addition operation for adding the first point and the second point on the elliptic curve having one common Jacobian coordinate. Program.

(付記6)暗号化装置又は暗号処理装置として機能する情報処理装置であって、前記演算部が、楕円曲線暗号方式に基づいてメッセージを暗号化する処理の中で前記スカラー倍算を実行する
付記3に記載の情報処理装置。
(Supplementary note 6) An information processing device functioning as an encryption device or a cryptographic processing device, wherein the arithmetic unit executes the scalar multiplication in a process of encrypting a message based on an elliptic curve cryptosystem. 3. The information processing apparatus according to 3.

(付記7)復号装置又は暗号処理装置として機能する情報処理装置であって、前記演算部が、楕円曲線暗号方式に基づいて暗号化された暗号文を復号する処理の中で前記スカラー倍算を実行する
付記3に記載の情報処理装置。
(Supplementary note 7) An information processing device functioning as a decryption device or a cryptographic processing device, wherein the arithmetic unit performs the scalar multiplication in a process of decrypting a ciphertext encrypted based on an elliptic curve cryptosystem. The information processing apparatus according to appendix 3.

(付記8)付記5に記載のプログラムが格納された、前記コンピュータにより読み取り可能な記録媒体。
(付記9)前記スカラー倍算を実行する処理において、前記コンピュータが、
前記第1の点と前記第2の点とが異なる点である場合、前記加算演算の中で、前記第1の点と前記第2の点との楕円曲線加算により第3の点を計算すると共に、前記第3の点とヤコビアン座標の1つが共通する前記第1の点の座標を計算し、
前記第1の点と前記第2の点とが同じ点である場合、前記加算演算の中で、前記第1の点の楕円曲線2倍算により第4の点を計算すると共に、前記第4の点とヤコビアン座標の1つが共通する前記第1の点の座標を計算する
付記4に記載の情報処理方法。
(Supplementary Note 8) A computer-readable recording medium in which the program according to Supplementary Note 5 is stored.
(Supplementary Note 9) In the process of executing the scalar multiplication, the computer
When the first point and the second point are different points, a third point is calculated by adding an elliptic curve between the first point and the second point in the addition operation. And calculating the coordinates of the first point in common with the third point and one of the Jacobian coordinates,
When the first point and the second point are the same point, a fourth point is calculated by doubling the elliptic curve of the first point in the addition operation, and the fourth point The information processing method according to claim 4, wherein the coordinates of the first point in which one of the points and the Jacobian coordinates are common are calculated.

(付記10)前記コンピュータが、
設定されたスカラー値と前記設定された楕円曲線上の点とのスカラー倍算を計算する場合に、前記スカラー値を示すビット列を前記設定された長さの複数のビット列に分け、前記記憶部が記憶する前記スカラー倍算の結果を用いて前記設定されたスカラー値と前記設定された楕円曲線上の点とのスカラー倍算を計算する
付記4又は9に記載の情報処理方法。
(Appendix 10) The computer
When calculating a scalar multiplication of a set scalar value and a point on the set elliptic curve, the bit string indicating the scalar value is divided into a plurality of bit strings of the set length, and the storage unit The information processing method according to claim 4 or 9, wherein a scalar multiplication between the set scalar value and the set point on the elliptic curve is calculated using the stored scalar multiplication result.

10 情報処理装置
11 演算部
12 記憶部
ECDBLcoZ 楕円曲線2倍算
ECADDcoZ 楕円曲線加算
P 設定された楕円曲線上の点
1 第1の点
2 第2の点
3 第3の点
4 第4の点
d スカラー値
DESCRIPTION OF SYMBOLS 10 Information processing apparatus 11 Calculation part 12 Storage part ECDBL coZ elliptic curve doubling ECADD coZ elliptic curve addition P Point on set elliptic curve P 1 1st point P 2 2nd point P 3 3rd point P 4 Fourth point d Scalar value

Claims (5)

設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、前記ビット値の組み合わせに応じた前記楕円曲線上の点に対するスカラー倍算を実行する演算部と、
前記スカラー倍算の結果を記憶する記憶部と、
を有し、
前記演算部は、ヤコビアン座標の1つが共通する前記楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいて前記スカラー倍算を実行する
情報処理装置。
For a point on the set elliptic curve, for each combination of bit values that can be taken by the bit string of the set length, an arithmetic unit that performs scalar multiplication on the points on the elliptic curve according to the combination of the bit values When,
A storage unit for storing the result of the scalar multiplication;
Have
The information processing apparatus performs the scalar multiplication based on an addition operation for adding a first point and a second point on the elliptic curve having one common Jacobian coordinate.
前記演算部は、
前記第1の点と前記第2の点とが異なる点である場合、前記加算演算の中で、前記第1の点と前記第2の点との楕円曲線加算により第3の点を計算すると共に、前記第3の点とヤコビアン座標の1つが共通する前記第1の点の座標を計算し、
前記第1の点と前記第2の点とが同じ点である場合、前記加算演算の中で、前記第1の点の楕円曲線2倍算により第4の点を計算すると共に、前記第4の点とヤコビアン座標の1つが共通する前記第1の点の座標を計算する
請求項1に記載の情報処理装置。
The computing unit is
When the first point and the second point are different points, a third point is calculated by adding an elliptic curve between the first point and the second point in the addition operation. And calculating the coordinates of the first point in common with the third point and one of the Jacobian coordinates,
When the first point and the second point are the same point, a fourth point is calculated by doubling the elliptic curve of the first point in the addition operation, and the fourth point The information processing apparatus according to claim 1, wherein the coordinates of the first point in which one of the point and the Jacobian coordinate is common are calculated.
前記演算部は、設定されたスカラー値と、前記設定された楕円曲線上の点とのスカラー倍算を計算する場合に、前記スカラー値を示すビット列を前記設定された長さの複数のビット列に分け、前記記憶部が記憶する前記スカラー倍算の結果を用いて前記設定されたスカラー値と前記設定された楕円曲線上の点とのスカラー倍算を計算する
請求項1又は2に記載の情報処理装置。
The arithmetic unit, when calculating a scalar multiplication of the set scalar value and the point on the set elliptic curve, converts the bit string indicating the scalar value into a plurality of bit strings of the set length. The information according to claim 1, further comprising: calculating a scalar multiplication of the set scalar value and the point on the set elliptic curve using the result of the scalar multiplication stored in the storage unit. Processing equipment.
記憶部を有するコンピュータが、
設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、前記ビット値の組み合わせに応じた前記楕円曲線上の点に対するスカラー倍算を実行する処理、及び前記スカラー倍算の結果を前記記憶部に格納する処理を実行する情報処理方法であり、
前記スカラー倍算を実行する処理において、前記コンピュータが、ヤコビアン座標の1つが共通する前記楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいて前記スカラー倍算を実行する
情報処理方法。
A computer having a storage unit
A process of performing scalar multiplication on the points on the elliptic curve according to the combination of the bit values for each combination of bit values that can be taken by the bit string of the set length for the points on the set elliptic curve, And an information processing method for executing a process of storing the result of the scalar multiplication in the storage unit,
In the process of executing the scalar multiplication, the computer executes the scalar multiplication based on an addition operation for adding the first point and the second point on the elliptic curve having one common Jacobian coordinate. Information processing method.
記憶部を有するコンピュータに、
設定された楕円曲線上の点について、設定された長さのビット列が取り得るビット値の組み合わせ毎に、前記ビット値の組み合わせに応じた前記楕円曲線上の点に対するスカラー倍算を実行する処理、及び前記スカラー倍算の結果を前記記憶部に格納する処理を実行させるプログラムであり、
前記スカラー倍算を実行する処理において、前記コンピュータに、ヤコビアン座標の1つが共通する前記楕円曲線上の第1の点と第2の点とを加算する加算演算に基づいて前記スカラー倍算を実行させる
プログラム。
In a computer having a storage unit,
A process of performing scalar multiplication on the points on the elliptic curve according to the combination of the bit values for each combination of bit values that can be taken by the bit string of the set length for the points on the set elliptic curve, And a program for executing processing for storing the result of the scalar multiplication in the storage unit,
In the process of executing the scalar multiplication, the computer executes the scalar multiplication based on an addition operation for adding the first point and the second point on the elliptic curve having one common Jacobian coordinate. Program.
JP2014005716A 2014-01-16 2014-01-16 Information processing device, information processing method, and program Pending JP2015135363A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014005716A JP2015135363A (en) 2014-01-16 2014-01-16 Information processing device, information processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014005716A JP2015135363A (en) 2014-01-16 2014-01-16 Information processing device, information processing method, and program

Publications (1)

Publication Number Publication Date
JP2015135363A true JP2015135363A (en) 2015-07-27

Family

ID=53767249

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014005716A Pending JP2015135363A (en) 2014-01-16 2014-01-16 Information processing device, information processing method, and program

Country Status (1)

Country Link
JP (1) JP2015135363A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022153363A1 (en) * 2021-01-12 2022-07-21 日本電信電話株式会社 Scalar multiplication system, scalar multiplication device, scalar multiplication method, and program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022153363A1 (en) * 2021-01-12 2022-07-21 日本電信電話株式会社 Scalar multiplication system, scalar multiplication device, scalar multiplication method, and program

Similar Documents

Publication Publication Date Title
EP3913850A1 (en) Key management method and related device
US7961874B2 (en) XZ-elliptic curve cryptography with secret key embedding
JP5001176B2 (en) Signature generation apparatus, signature generation method, and signature generation program
CN106487503B (en) Multi-element public key cryptosystem and method based on tailored Hopfield neural network
US20100020964A1 (en) Key generation method using quadratic-hyperbolic curve group
US8189771B2 (en) Hash functions with elliptic polynomial hopping
US10374790B2 (en) Countermeasure method for an electronic component implementing an elliptic curve cryptography algorithm
US6480606B1 (en) Elliptic curve encryption method and system
Koppermann et al. 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices
JP3794266B2 (en) Elliptic curve scalar multiplication method and apparatus, and storage medium
US9590805B1 (en) Ladder-based cryptographic techniques using pre-computed points
US9419789B2 (en) Method and apparatus for scalar multiplication secure against differential power attacks
CN111740821B (en) Method and device for establishing shared secret key
Wu et al. On the improvement of wiener attack on rsa with small private exponent
JP4423900B2 (en) Scalar multiplication calculation method, apparatus and program for elliptic curve cryptography
JP2015135363A (en) Information processing device, information processing method, and program
US11616994B2 (en) Embedding information in elliptic curve base point
KR20020086005A (en) Inverse operator for elliptic curve cryptosystems
KR102019369B1 (en) Elliptic curve cryptography apparatus and method for blocking single trace attack
JP4102090B2 (en) Information security device, prime number generation device, and prime number generation method
JP2008299335A (en) Method for calculating compressed rsa moduli
JP4225764B2 (en) Elliptic curve conversion device, elliptic curve conversion method, elliptic curve utilization device, and elliptic curve generation device
Gnanamalar et al. Elliptic Public Key Cryptosystem Using DHK and Partial Reduction Modulo Techniques
JP2004053814A (en) Elliptic curve cryptosystem device and elliptic curve cryptosystem operation method
Sadiq et al. Proposal for Scrambled Method based on NTRU