JP2015135363A - Information processing device, information processing method, and program - Google Patents
Information processing device, information processing method, and program Download PDFInfo
- 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
Links
Images
Abstract
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.
上記の方法を適用することで適用前に比べてスカラー倍算が高速化される。しかし、スカラー倍算の更なる高速化が達成されれば、楕円曲線暗号の仕組みを実装可能なデバイスが増え、楕円曲線暗号の普及がさらに拡大すると期待される。 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.
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。 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
The
演算部11は、設定された楕円曲線上の点Pについて、設定された長さのビット列が取り得るビット値の組み合わせ毎に、ビット値の組み合わせに応じた楕円曲線上の点Pに対するスカラー倍算を実行する。また、記憶部12は、スカラー倍算の結果を記憶する。但し、演算部11は、ヤコビアン座標の1つが共通する楕円曲線上の第1の点P1と第2の点P2とを加算する加算演算に基づいてスカラー倍算を実行する。ヤコビアン座標の1つが共通する場合には加算演算の演算量が削減されるため、スカラー倍算が高速化される。
The
図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
次いで、演算部11は、2ビット目のビット値を参照し、一時変数Tを2倍(楕円曲線2倍算「×2」)する。次いで、演算部11は、2ビット目のビット値を参照し、ビット値が0である場合には一時変数Tを変更せず、ビット値が1である場合には一時変数Tに点Pを加算する。そして、演算部11は、最終的に得られた一時変数Tを記憶部12に格納する。
Next, the
例えば、ビット列が「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
また、ビット列が「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
但し、演算部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
上記のように、楕円曲線加算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
演算部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
図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
上記のように、予め短いビット列についてスカラー倍算を計算しておき、その計算結果を利用して長いビット列についてスカラー倍算を計算することで、計算結果の使い回しができ、長いビット列に対するスカラー倍算を効率的に実行することができる。また、短いビット列に対するスカラー倍算の計算時に、上述した楕円曲線加算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
(楕円曲線暗号の適用例:楕円曲線エルガマル暗号方式)
ここで、図3を参照しながら、楕円曲線エルガマル暗号方式の場合を例に挙げて送信装置100及び受信装置200の動作について説明する。なお、図3は、楕円曲線暗号の適用例(楕円曲線エルガマル暗号方式)について説明するための図である。
(Application example of elliptic curve cryptography: Elliptic curve Elgamal cryptosystem)
Here, the operations of the
図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
送信装置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
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
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
図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
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
The
これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
These elements are connected to each other via, for example, a
出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。
As the
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSD(Solid State Drive)やRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
The
ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
The
接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930としては、例えば、プリンタなどが用いられる。
The
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN(Local Area Network)用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。
The
以上、送信装置100の機能を実現可能なハードウェアについて説明した。なお、図4に示したハードウェアを用いることで、受信装置200の機能も実現可能である。従って、受信装置200の機能を実現可能なハードウェアについては説明を省略する。
The hardware capable of realizing the function of the
[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. .
P1=∞ ならば P3=P2
…(5)
P2=∞ ならば P3=P1
…(6)
P1=−P2 ならば P3=∞
…(7)
P1≠−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
楕円曲線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
図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
次いで、送信装置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
次に、図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
図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 ×
次いで、送信装置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
上記のようにしてヤコビアン座標を用いた場合、楕円曲線加算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
いま、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
処理が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
処理が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
処理がS48へと進んだ場合、送信装置100は、一時変数Tをスカラー倍算d×Pの結果として出力する(S48)。S48の処理が完了すると、図9に示した一連の処理は終了する。
When the process proceeds to S48, the
(例: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
次に、送信装置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
上記の式(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
次に、送信装置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
次に、送信装置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
上記の式(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
このようにバイナリ法では、楕円曲線加算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
図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
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
次いで、送信装置100は、ベースポイントPをW[1]に設定する(S52)。S52の処理は、下位1ビット目のビット値が1であり、他の全てのビット値が0である4ビットのビット列(ウィンドウ)が示すスカラー値とベースポイントPとのスカラー倍算を実行し、その結果をW[1]に設定する処理に相当する。但し、このスカラー倍算の結果がPになることが予め分かっているため、送信装置100は、S52の処理でW[1]に直接Pを設定している。
Next, the transmitting
次いで、送信装置100は、iを2に設定する(S53)。次いで、送信装置100は、iが14より大きいか否かを判定する(S54)。iが14より大きい場合(i>14)、処理は図11のS58へと進む。一方、iが14より大きくない場合(i≦14)、処理はS55へと進む。
Next, the transmitting
処理が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
処理が図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
次いで、送信装置100は、iをn−5に設定する(S59)。次いで、送信装置100は、iが3より小さいか否かを判定する(S60)。iが3より小さい場合(i<3)、処理はS67へと進む。一方、iが3より小さくない場合(i≧3)、処理はS61へと進む。
Next, the transmitting
処理が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
Next, the transmitting
処理がS67へと進んだ場合、送信装置100は、スカラー値dとベースポイントPとのスカラー倍算の結果として一時変数Tを出力する(S67)。S67の処理が完了すると、図10及び図11に示した一連の処理は終了する。
When the process proceeds to S67, the
上記のように、予めウィンドウ毎に計算したスカラー倍算の結果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
(機能ブロック)
まず、図12を参照しながら、送信装置100の機能について説明する。なお、図12は、第2実施形態に係る送信装置が有する機能の例を示したブロック図である。
(Function block)
First, the function of the
図12に示すように、送信装置100は、通信部101、記憶部102、及び演算部103を有する。なお、通信部101の機能は、上述した接続ポート924や通信部926などを用いて実現できる。記憶部102の機能は、上述したRAM906や記憶部920などを用いて実現できる。演算部103の機能は、上述したCPU902などを用いて実現できる。
As illustrated in FIG. 12, the
通信部101は、ネットワークNWを介して受信装置200と通信する要素である。例えば、通信部101は、ランダムに生成されたスカラー値rとベースポイントPとのスカラー倍算の結果R及び暗号文Cを受信装置200へと送信する。記憶部102は、ベースポイントP、公開鍵S、平文M(メッセージ)を記憶する。また、記憶部102には、後述するウィンドウ毎に計算されたスカラー倍算の結果W[i](i=0,1,…)が格納される。
The
演算部103は、ベースポイントP及び公開鍵Sに基づいて楕円曲線暗号方式により平文Mを暗号化して暗号文Cを生成する。演算部103は、前処理部131、及び後処理部132を有する。
The
前処理部131は、予め設定された長さのビット列(ウィンドウ)が取り得る全てのスカラー値について、スカラー値毎にベースポイントPに対するスカラー倍算を実行する。このとき、前処理部131は、ヤコビアン座標のZ座標が共通する楕円曲線E上の点を加算する楕円曲線加算ECADDcoZ、及び、楕円曲線加算ECADDcoZを効率良く適用できるようにする楕円曲線2倍算ECDBLcoZを利用する。そして、前処理部131は、ウィンドウ毎に計算したスカラー倍算の結果W[i](i=0,1,…)を記憶部102に格納する。
The
後処理部132は、記憶部102に格納されたスカラー倍算の結果W[i](i=0,1,…)を用いて、暗号文Cの生成時に現れるベースポイントPに対するスカラー倍算を実行する。例えば、後処理部132は、スカラー値dをウィンドウ幅と同じ長さの複数のビット列に分け、ビット列毎のスカラー倍算の結果を組み合わせてスカラー値dとベースポイントPとのスカラー倍算を実行する。このとき、後処理部132は、ビット毎のスカラー倍算の結果としてW[i](i=0,1,…)を利用する。
The
(楕円曲線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
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
上記のように、楕円曲線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−X1)2を計算し、その結果を一時変数Qに設定する(S141)。次いで、前処理部131は、X1×Qを計算し、一時変数Uに設定する(S142)。次いで、前処理部131は、X2×Qを計算し、その結果を一時変数Vに設定する(S143)。次いで、前処理部131は、(Y2−Y1)2を計算し、その結果を一時変数Jに設定する(S144)。なお、S142、S143の処理は、順序を入れ替えることが可能である。また、S144の処理と、S141〜S143の処理とは順序を入れ替えることが可能である。
As shown in FIG. 14, the
次いで、前処理部131は、J−U−Vを計算し、その結果をX3に設定する(S145)。次いで、前処理部131は、(Y2−Y1)×(U−X3)−Y1×(V−U)を計算し、Y3に設定する(S146)。次いで、前処理部131は、Z1×(X2−X1)を計算し、その結果をZ3に設定する(S147)。
Then, the
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
上記のように、楕円曲線加算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
図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
次いで、前処理部131は、S152〜S158の処理を含む第1の処理群と、S159〜S164の処理を含む第2の処理群とを実行する。第1の処理群は、3以上の奇数×Pを計算する処理の集合である。一方、第2の処理群は、4以上の偶数×Pを計算する処理の集合である。第1の処理群と第2の処理群とは実行順序を入れ替えることが可能である。また、第2の処理群と第2の処理群とを並列に実行することが可能である。ここでは、第1の処理群、第2の処理群の順番で処理が実行される場合について考える。
Next, the
(第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
次いで、前処理部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
次いで、前処理部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
次いで、前処理部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
次いで、前処理部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
次いで、前処理部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
次いで、前処理部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
(第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
次いで、前処理部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
次いで、前処理部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
次いで、前処理部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
次いで、前処理部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
次いで、前処理部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
(演算量の評価)
上述した楕円曲線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
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
[2-5. Function of receiving apparatus 200]
Next, the function of the receiving
図16に示すように、受信装置200は、通信部201、記憶部202、及び演算部203を有する。なお、通信部201の機能は、上述した接続ポート924や通信部926などを用いて実現できる。記憶部202の機能は、上述したRAM906や記憶部920などを用いて実現できる。演算部203の機能は、上述したCPU902などを用いて実現できる。
As illustrated in FIG. 16, the
通信部201は、ネットワークNWを介して送信装置100と通信する要素である。例えば、通信部201は、ランダムに生成されたスカラー値rとベースポイントPとのスカラー倍算の結果R及び暗号文Cを送信装置100から受信する。記憶部202は、秘密鍵sを記憶する。また、記憶部202には、ウィンドウ毎に計算されたスカラー倍算の結果WR[i](i=0,1,…)が格納される。
The
演算部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
The
後処理部232は、記憶部202に格納されたスカラー倍算の結果WR[i](i=0,1,…)を用いて、楕円曲線E上の点Rに対するスカラー倍算を実行する。例えば、後処理部232は、スカラー値dをウィンドウ幅と同じ長さの複数のビット列に分け、ビット列毎のスカラー倍算の結果を組み合わせてスカラー値dと点Rとのスカラー倍算を実行する。このとき、後処理部232は、ビット毎のスカラー倍算の結果としてWR[i](i=0,1,…)を利用する。
The
なお、前処理部231及び後処理部232は、送信装置100の演算部103が有する前処理部131及び後処理部132と同様に、楕円曲線2倍算ECDBLcoZ及び楕円曲線加算ECADDcoZなどを用いて前処理のスカラー倍算を実行する。つまり、前処理部231は、図15に例示した前処理と同様の処理を実行する。また、後処理部232は、図11に例示した後処理と同様の処理を実行する。
The
以上、第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
(付記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
(付記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 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
(付記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
10 情報処理装置
11 演算部
12 記憶部
ECDBLcoZ 楕円曲線2倍算
ECADDcoZ 楕円曲線加算
P 設定された楕円曲線上の点
P1 第1の点
P2 第2の点
P3 第3の点
P4 第4の点
d スカラー値
DESCRIPTION OF SYMBOLS 10
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.
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)
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 |
-
2014
- 2014-01-16 JP JP2014005716A patent/JP2015135363A/en active Pending
Cited By (1)
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 |