JP2005221830A - Inverse element arithmetic unit, arithmetic processing unit, and arithmetic processing method - Google Patents
Inverse element arithmetic unit, arithmetic processing unit, and arithmetic processing method Download PDFInfo
- Publication number
- JP2005221830A JP2005221830A JP2004030514A JP2004030514A JP2005221830A JP 2005221830 A JP2005221830 A JP 2005221830A JP 2004030514 A JP2004030514 A JP 2004030514A JP 2004030514 A JP2004030514 A JP 2004030514A JP 2005221830 A JP2005221830 A JP 2005221830A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- counting
- counted
- arithmetic processing
- arithmetic
- 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 arithmetic device, and is particularly suitable for use when encrypting predetermined data with an encryption key.
近年のコンピュータネットワークの発達により、電子メール、電子ニュース等の電子化された情報をネットワーク経由で送受信する機会が急速に増加してきている。さらに、かかるネットワークを利用して、オンラインショッピング等のサービスも提供されつつある。しかし、その一方で、ネットワーク上の電子化されたデータを盗聴・改竄し、あるいは、他人になりすまして不正にサービスの提供を受ける等の違法行為の問題が浮上してきている。 With the recent development of computer networks, the opportunity to send and receive computerized information such as e-mail and electronic news via the network has been rapidly increasing. Furthermore, services such as online shopping are being provided using such networks. However, on the other hand, problems of illegal acts such as eavesdropping / falsification of digitized data on the network, or impersonation of others and illegal provision of services have emerged.
これらの問題に対し、暗号化技術を応用した暗号化電子メールや利用者認証システムが提案され、種々のネットワークに導入されつつある。コンピュータネットワークにおいて、暗号化技術は必須の技術になりつつある。 In response to these problems, encrypted electronic mail and user authentication systems that apply encryption technology have been proposed and are being introduced into various networks. In computer networks, encryption technology is becoming an essential technology.
かかる暗号化技術は、大別すると、秘密鍵暗号系と公開鍵暗号系の2つに分類できる。「秘密鍵暗号系」は、送信者と受信者が同じ鍵を持つことにより、暗号通信を行う暗号化方式である。すなわち、あるデータを秘密鍵に基づいて暗号化して送信し、受け手側は、この秘密鍵を用いて暗号化データを復号し、暗号化のない元のデータを取得する。 Such encryption techniques can be broadly classified into two types: private key cryptosystems and public key cryptosystems. The “secret key cryptosystem” is an encryption method for performing cryptographic communication when the sender and the receiver have the same key. That is, certain data is encrypted and transmitted based on the secret key, and the receiver side decrypts the encrypted data using this secret key, and obtains original data without encryption.
また、「公開鍵暗号系」は、受信者側から公開されている公開鍵でデータを暗号化して送信し、受け手側は、この公開鍵とペアになっている秘密鍵で暗号化データを復号し、暗号化のない元のデータを取得するものである。すなわち、公開鍵で暗号化された暗号化データは、これとペアになっている秘密鍵でのみ復号でき、これにより、データの秘匿性を保持するものである。 In addition, the “public key cryptosystem” encrypts and transmits data using the public key disclosed by the receiver, and the receiver decrypts the encrypted data using the private key paired with this public key. The original data without encryption is acquired. That is, the encrypted data encrypted with the public key can be decrypted only with the secret key paired therewith, thereby maintaining the confidentiality of the data.
公開鍵暗号系の中では、現在、RSA(Rivest Shamir Adlman)暗号が広く知られている。この暗号化方式は、1997年に、Rivest Shamir Adlmanによって提案されたものである。暗号鍵(e,N)とこれに対応する復号鍵(d,N)を用い、eとNを公開鍵、dを秘密鍵とし、平文をM、暗号文をCとすると、RSA暗号による暗号化Eと復号化Dのアルゴリズムは、以下のようになる。 Among public key cryptosystems, RSA (Rivest Shamir Adlman) cryptography is widely known. This encryption scheme was proposed in 1997 by Rivest Shamir Adlman. Using an encryption key (e, N) and a corresponding decryption key (d, N), e and N as public keys, d as a secret key, plain text as M, and cipher text as C, encryption by RSA encryption The algorithm of the conversion E and the decoding D is as follows.
C=E(M)=MemodN …(1)
E=D(C)=CdmodN …(2)
ただし、d・e=1modLCM(p−1,q−1)を満たす。なお、LCMは、最小公倍数(Lowest Common Multiple)、P、Qは大きな素数である。
C = E (M) = M e modN (1)
E = D (C) = C d modN (2)
However, d · e = 1 mod LCM (p−1, q−1) is satisfied. Note that LCM is the lowest common multiple, and P and Q are large prime numbers.
通常、e、d、N、Mは512ビット以上の大きな整数が用いられるので、暗号化および復号化に必要となる剰余演算の高速化には様々な手法が提案されており、その中の一つに、Montgomeryにより提案されたMontgomery乗算(非特許文献1参照)を利用するものがある。 Usually, since e, d, N, and M are large integers of 512 bits or more, various methods have been proposed for speeding up the remainder calculation required for encryption and decryption. One example uses Montgomery multiplication (see Non-Patent Document 1) proposed by Montgomery.
剰余の法をp、剰余の法と互いに素である基数をR(R>p)としたとき、[0、p−1]を満たす2つの整数a、bのMontgomery乗算MonPro(a、b)は、
MonPro(a、b)=abR−1mod p …(3)
と定義される。
Montgomery multiplication MonPro (a, b) of two integers a and b satisfying [0, p−1] where p is the modulus of the remainder and R (R> p) is a radix that is relatively prime to the modulus of the remainder. Is
MonPro (a, b) = abR −1 mod p (3)
Is defined.
ここで、基数Rとして2のべき乗数を使用すると、Montgomery乗算を実行する際に必要となる基数Rの除算をシフト操作に置き換えることができるため、Montgomery乗算を高速化することができ、通常、
MonPro(a、b)=ab2−nmod p …(4)
として定義されることが多い。
Here, when a power of 2 is used as the radix R, the division of the radix R necessary for executing the Montgomery multiplication can be replaced with a shift operation, so that the Montgomery multiplication can be speeded up.
MonPro (a, b) = ab2- n mod p (4)
Is often defined as
ところで、「公開鍵暗号系」の中で、現在標準化が進んでいるものに、楕円曲線暗号(Elliptic Curve Cryptography)がある。これは、楕円曲線の離散対数問題に基づくもので、N.Koblitz(非特許文献2参照)と、V.Miller(非特許文献3参照)により提案された。 Incidentally, among the “public key cryptosystems”, one that is currently standardized is Elliptic Curve Cryptography. This is based on the discrete logarithm problem of elliptic curves, and was proposed by N. Koblitz (see Non-Patent Document 2) and V. Miller (see Non-Patent Document 3).
この楕円曲線暗号では、除算剰余演算が必要となるため、除算剰余演算の高速化が必要となる。除算剰余演算の高速化を図る手法として、Kaliskiにより提案されたMontgomery逆元(非特許文献4参照)を利用するものがあり、このMontgomery逆元は、
MonInv(a)=a―12nmod p …(5)
と定義される。
Since this elliptic curve cryptography requires a division remainder operation, it is necessary to speed up the division residue operation. As a method for speeding up the division remainder calculation, there is a method using the Montgomery inverse element proposed by Kaliski (see Non-Patent Document 4). This Montgomery inverse element is
MonInv (a) = a− 1 2 n mod p (5)
Is defined.
上記(4)式に示すMontgomery乗算における被乗数bをb=1とし、上記(5)式に示すMontgomery逆元と、かかるMontgomery乗算を連続して作用させると、
MonPro(MonInv(a)、1)=MonPro(a−12nmodp、1)
=a−12n2−nmodp
=a―1modp …(6)
となり、pを法とする整数aの逆元を求めることができる。ここで、Montgomery逆元は、後述の如く除算を必要としないため、pを法とする整数aの逆元を除算なしに求めることができ、除算剰余演算を必要とする公開鍵暗号系、たとえば、上述の楕円曲線暗号の演算処理コストを削減することが可能となる。
When the multiplicand b in the Montgomery multiplication shown in the above equation (4) is b = 1, and the Montgomery inverse element shown in the above equation (5) and the Montgomery multiplication are continuously acted,
MonPro (MonInv (a), 1) = MonPro (a - 12 n modp, 1)
= A -1 2 n 2 -n modp
= A-1 modp (6)
Thus, the inverse element of the integer a modulo p can be obtained. Here, since the Montgomery inverse element does not require division as described later, the inverse element of the integer a modulo p can be obtained without division, and a public key cryptosystem that requires a division remainder operation, for example, It is possible to reduce the calculation processing cost of the above elliptic curve cryptography.
かかるMontgomery逆元の導出アルゴリズムを図4および図5に示す。 Such a Montgomery inverse element derivation algorithm is shown in FIGS.
Montgomery逆元の導出アルゴリズムは、図4に示すPhase1と、図5に示すPhase2からなる。pを法とする整数aの逆元rを求める場合、中間変数u、vにそれぞれ初期値としてp、aを設定し、Phase1、2の演算を実行する。これにより、変数rの値として逆元が求められる。
The Montgomery inverse element derivation algorithm includes
Phase1では、中間演算を行うための変数u、v、r、sと、ループカウントを行うための変数kを用いた演算が行われる。すなわち、これらの変数に初期値を設定した後(S101)、変数vがv=0になるまで(S102:YES)、uが偶数であれば(S103:YES)、u=u/2、s=2sを実行し(S104)、uが奇数で(S103:NO)かつvが偶数であれば(S106:YES)、v=v/2、r=2rを実行し(S107)、uとvがともに奇数であり(S103:NO、S106:NO)かつu>vであれば(S108:YES)、u=(u−v)/2、r=r+s、s=2sを実行し(S109)、それ以外の場合(S108:NO)は、v=(v−u)/2、s=r+s、r=2rを実行しながら(S110)、ループカウント値kを加算していく(S105)。そして、変数vがv=0になると、変数rの補正を行い(S111〜S113)、rとkをPhase2に出力してPhase1の演算を終了する。
In
なお、Phase1の演算が終了したとき、変数rは、r=a―12kmod pとなっている。ここで、r=[0、p−1]、n≦k≦2n(n:pを2進で表現したときの桁数)である。 When the calculation of Phase1 is completed, the variable r is r = a− 1 2 k mod p. Here, r = [0, p−1], n ≦ k ≦ 2n (n: number of digits when p is expressed in binary).
Phase2では、Phase1の出力であるr、kと、ループカウントを行うための変数iを用いる。すなわち、変数iを1に初期化した後(S114)、i=k−nになるまで(S115:YES)、rが偶数であれば(S116:YES)、r=r/2を実行し(S117)、また、rが奇数であれば(S116:NO)、r=(r+p)/2を実行しながら(S118)、ループカウント値iを加算していく(S119)。そして、ループカウント値iがi=k−n(S115:YES)になると、変数rを出力してPhase2の演算を終了する。
上述のMontgomery逆元の算出アルゴリズムにおいて、Phase1の演算処理(S104、S107)と、Phase2の演算処理(S117)は、変数u、vまたは変数rが奇数になるまで繰り返し実行されるものであるため、これら変数u、v、rのLSBから0が多数連続しているような場合には、0の個数分だけ、これらのステップの演算処理が繰り返し実行される。ここで、これらの変数をメモリから読み出す時間をTr、1/2演算を行う処理時間をTc、1/2演算処理した変数をメモリに書き戻す時間をTwとすると、LSBから0がN個連続する場合、これらのステップを繰り返すことに要される処理時間Tは、T=N*(Tr+Tc+Tw)となる。
In the Montgomery inverse element calculation algorithm described above, the
そこで、本発明はLSBから0が多数連続しているような変数を奇数になるまで1/2する際の処理を高速化することを主たる課題とし、特に、Montgomery逆元の算出の高速化を図ることを企図するものである。 Therefore, the main object of the present invention is to speed up the processing for halving a variable in which a large number of zeros are consecutive from the LSB until it becomes an odd number, and in particular, speeding up the computation of the Montgomery inverse element It is intended to plan.
請求項1の発明は、pを法とする整数aの逆元を算出するMontgomery逆元演算装置であって、中間変数u、vが偶数か否かを判別する判別手段と、前記中間変数u、vが偶数であるとき、当該中間変数u、vの最下位ビットから連続する0の個数k0を計数する計数手段と、前記計数手段によって計数された中間変数u、vの下位側ビットの0を削除することによって新たな中間変数u、vを設定するとともに、前記計数手段によって計数された個数分だけ中間変数sの下位側に0を加えることによって新たな中間変数sを設定する中間変数設定手段と、前記計数手段によって計数されたk0をPhase1のループカウント値kに加算する加算手段とを有することを特徴とする。
The invention of
請求項2の発明は、pを法とする整数aの逆元を算出するMontgomery逆元演算装置であって、中間変数rが偶数か否かを判別する判別手段と、前記中間変数rが偶数であるとき、当該中間変数rの最下位ビットから連続する0の個数k0を計数する計数手段と、前記計数手段によって計数された中間変数rの下位側ビットの0を削除することによって新たな中間変数rを設定する中間変数設定手段と、前記計数手段によって計数されたk0をPhase2のループカウント値iに加算する加算手段とを有することを特徴とする。
The invention of
請求項3の発明は、変数データの値が奇数になるまで当該変数データに1/2演算処理を施すとともに、この際に繰り返される前記1/2演算処理の回数を出力する演算処理装置であって、前記変数が偶数か否かを判別する判別手段と、前記変数が偶数であるとき、当該変数の最下位ビットから連続する0の個数k0を計数する計数手段と、前記計数ステップによって計数された当該変数の下位側ビットの0を削除することによって新たな変数を設定する変数設定手段と、前記計数ステップによって計数されたk0を前記1/2演算処理の繰り返し回数として出力するループカウント出力手段とを有することを特徴とする。 The invention according to claim 3 is an arithmetic processing unit that performs a 1/2 arithmetic process on the variable data until the value of the variable data becomes an odd number, and outputs the number of the 1/2 arithmetic processes repeated at this time. And counting means for determining whether or not the variable is an even number, a counting means for counting the number k0 of consecutive 0s from the least significant bit of the variable when the variable is an even number, and the counting step. Variable setting means for setting a new variable by deleting 0 of the lower-order bit of the variable, and loop count output means for outputting k0 counted by the counting step as the number of repetitions of the 1/2 arithmetic processing It is characterized by having.
請求項4の発明は、変数データの値が奇数になるまで演算回路によって当該変数データに1/2演算処理を施すとともに、この際に繰り返される前記1/2演算処理の回数を出力する演算処理方法であって、前記変数が偶数か否かを判別する判別ステップと、前記変数が偶数であるとき、当該変数の最下位ビットから連続する0の個数k0を計数する計数ステップと、前記計数ステップによって計数された当該変数の下位側ビットの0を削除することによって新たな変数を設定する変数設定ステップと、前記計数ステップによって計数されたk0を前記1/2演算処理の繰り返し回数として出力するループカウント出力ステップとを有することを特徴とする。 According to a fourth aspect of the present invention, the arithmetic processing is performed on the variable data by the arithmetic circuit until the value of the variable data becomes an odd number, and the number of the 1/2 arithmetic processing repeated at this time is output. A determination step for determining whether or not the variable is an even number, a counting step for counting the number k0 of consecutive 0s from the least significant bit of the variable when the variable is an even number, and the counting step A variable setting step for setting a new variable by deleting 0 of the lower-order bits of the variable counted in step (i), and a loop for outputting k0 counted in the counting step as the number of repetitions of the 1/2 arithmetic processing And a count output step.
本発明の特徴は、以下に示す実施の形態の説明により更に明らかとなろう。但し、以下の実施の形態は、あくまでも、本発明の一つの実施形態であって、本発明ないし各構成要件の用語の意義は、以下の実施の形態に記載されたものに制限されるものではない。 The features of the present invention will become more apparent from the following description of embodiments. However, the following embodiment is merely one embodiment of the present invention, and the meaning of the term of the present invention or each constituent element is not limited to that described in the following embodiment. Absent.
本発明によれば、最下位ビットから連続する0の個数をカウントすることによって、当該変数が奇数化するまでに繰り返されるべき1/2演算処理の回数(ループカウント値)を検出し、且つ、最下位ビットから連続する0を取り除いた上位側ビットによって奇数化後のデータを取得するものであるから、実際に1/2演算処理を繰り返さなくとも、奇数化後のデータと、1/2演算処理の繰り返し回数を一度に算出することができ、もって、これらのデータを取得するに要する時間を著しく短縮化することができ、特に、請求項1または2の発明によれば、Montgomery逆元の算出処理を著しく高速化することができる。
According to the present invention, by counting the number of consecutive 0s from the least significant bit, the number of 1/2 arithmetic processes (loop count value) to be repeated before the variable becomes odd is detected, and Since the data after oddization is acquired by the higher-order bits obtained by removing consecutive 0s from the least significant bit, the data after oddization and the ½ operation can be obtained without actually repeating the ½ operation processing. The number of processing iterations can be calculated at a time, so that the time required to acquire these data can be significantly reduced. In particular, according to the invention of
なお、請求項1および2の発明は、それぞれ、Montgomery逆元演算処理アルゴリズムのPhase1およびPhase2に係るものである。実施化においては、これらの発明を、Montgomery逆元演算のPhase1およびPhase2の演算処理に同時に適用する形態の他、何れか一方のみを対応するPhase処理に適用する形態とすることもできる。演算処理の高速化においては、前者の形態とするのが望ましいが、後者の形態によっても、1/2演算処理を実際に繰り返して奇数化する場合に比べ、数段の高速化を図ることができる。
The inventions of
以下、本発明の実施の形態につき図面を参照して説明する。 Embodiments of the present invention will be described below with reference to the drawings.
まず、図1に実施の形態に係るMontgomery逆元演算装置の構成を示す。 First, FIG. 1 shows a configuration of a Montgomery inverse element computing device according to the embodiment.
図示の如く、本実施の形態に係るMontgomery逆元演算装置は、制御部101と、メモリ102と、メモリ制御部103と、演算処理部104と、ゼロ検出部105と、ゼロカウンタ106と、ループカウンタ107から構成されている。
As illustrated, the Montgomery inverse element computing device according to the present embodiment includes a
制御部101は、予め設定された処理フローに従って各部を制御する。メモリ102は、中間変数u、v、r、sを逐次更新記憶する。メモリ制御部103は、制御部101からの指令に応じてメモリ102を制御する。演算処理部104は、制御部101からの指令に応じて、メモリ102に記憶されている中間変数データ(u、v、r、s)に演算処理を施し、処理結果をメモリ102に書き戻す。
The
ゼロ検出部105は、メモリ102に記憶されている中間変数データ(u、v、r、s)を参照し、これら中間変数データ(u、v、r、s)のLSBから連続するゼロを検出する。ゼロカウンタ106は、ゼロ検出部105によって検出されたゼロの個数k0を計数する。ループカウンタ107は、Phase1のループカウント値kおよびPhase2のループカウント値iを計数する。
The zero
図2に、Montgomery逆元演算におけるPhase1の処理アルゴリズムを示す。
FIG. 2 shows a processing algorithm of
本処理アルゴリズムは、上記図4のアルゴリズム中のS104→S105とS106→S107が、それぞれ、S210〜S213とS214〜S213に変更されている。 In this processing algorithm, S104 → S105 and S106 → S107 in the algorithm of FIG. 4 are changed to S210 to S213 and S214 to S213, respectively.
すなわち、pを法とする整数aの逆元rを求めるために、制御部101にpとaが入力されると、制御部101は、変数u、v、r、sに初期値(u=p、v=a、r=0、s=1)を設定し、メモリ102に格納する(S101)。このとき同時に、ループカウンタ107のカウント値kをリセットする。
That is, when p and a are input to the
ここで、変数uが偶数であれば(S103:YES)、メモリ制御部103は、ゼロ検出部105による検出値をもとに、変数uのLSBから連続する0を除いて新たに変数uをメモリ102上に設定する(S210)。また、メモリ制御部103は、ゼロカウンタ106によるカウント値k0(変数uのゼロカウント値)を(S211)、変数sのLSBに追加すべきゼロの数、すなわち、変数uの奇数化にともなって実行されるべき変数sの2倍算の繰り返し処理の回数として保持する(S212)。さらに、ループカウンタ107は、ゼロカウンタ106のカウント値k0(変数uのゼロカウント値)をもとに、k=k+k0を実行し、ループカウント値kを更新する(S213)。以上の処理により、変数uの奇数化と、これに伴う変数sの2倍算の繰り返し処理およびループカウント値kの更新が終了する。
Here, if the variable u is an even number (S103: YES), the
なお、変数sの2倍算は、実際には、後段のS109とS110において、変数sによる演算を行う際に、メモリ102に格納した変数sのLSBに、S212で保持したカウント値k0個のゼロを追加することにより行われる。すなわち、制御部101は、K0ビットだけ上位にシフトしたデータとして出力されるようにメモリにアクセスすることで変数sに対する2倍算の繰り返し処理を実行し、その後、演算処理部104にS109とS110における変数sの演算を行わしめる。
Note that the doubling of the variable s is actually performed by calculating the LSB of the variable s stored in the
次に、変数uが偶数であれば(S106:YES)、メモリ制御部103は、ゼロ検出部105による検出値をもとに、変数vのLSBから連続する0を除いて新たに変数vをメモリ102上に設定する(S214)。また、メモリ制御部103は、ゼロカウンタ106によるカウント値k0(変数vのゼロカウント値)を(S215)、変数rのLSBに追加すべきゼロの数、すなわち、変数vの奇数化にともなって実行されるべき変数rの2倍算の繰り返し処理の回数として保持する(S216)。さらに、ループカウンタ107は、ゼロカウンタ106のカウント値k0(変数vのゼロカウント値)をもとに、k=k+k0を実行し、ループカウント値kを更新する(S213)。以上の処理により、変数vの奇数化と、これに伴う変数rの2倍算およびループカウント値kの更新が終了する。
Next, if the variable u is an even number (S106: YES), the
なお、変数rの2倍算は、実際には、後段のS109とS110において、変数rによる演算を行う際に、メモリ102に格納した変数rのLSBに、S216で保持したカウント値k0個のゼロを追加することにより行われる。すなわち、制御部101は、K0ビットだけ上位にシフトしたデータとして出力されるようにメモリにアクセスすることで変数rに対する2倍算の繰り返し処理を実行し、その後、演算処理部104にS109とS110における変数sの演算が行わしめる。
Note that the doubling of the variable r is actually performed by the count value k0 held in S216 in the LSB of the variable r stored in the
以上にようにして新たに設定された変数u、vが、u>vの関係にあれば(S108:YES)、演算処理部104は、u=(u−v)/2、r=r+s、s=2sを実行(S109)し、メモリ102に書き戻す。このとき、ループカウンタ107は、k=k+1を実行し、ループカウント値kを更新する(S105)。また、u≦vの関係にあれば(S108:NO)、演算処理部104は、u=(v−u)/2、s=r+s、r=2rを実行(S109)し、メモリ102に書き戻す。このとき、ループカウンタ107は、k=k+1を実行し、ループカウント値kを更新する(S105)。
If the variables u and v newly set as described above have a relationship of u> v (S108: YES), the
かかる処理により、変数uまたはvの何れかが偶数となると、上記S211〜213またはS215〜S213の奇数化処理がメモリ処理部103により実行され、さらに、S108以降の演算処理が演算処理部104により実行される。かかる処理は、変数vがv=0になるまで(S102:YES)、繰り返される。そして、v=0になると、演算処理部104は、変数rの補正演算(S111〜S113)を行い、これにより求められた変数rをメモリ102に書き戻す。そして、この変数rと、このときのループカウンタ107のカウント値kをもとに、Phase2の演算処理が開始される。
When either of the variables u or v is an even number by this processing, the odd processing of S211 to 213 or S215 to S213 is executed by the
すなわち、Phase2の演算処理が開始されると、制御部101は、ループカウンタ107のカウント値iをリセットする。ここで、変数rが偶数であれば(S116:YES)、メモリ制御部103は、ゼロ検出部105による検出値をもとに、変数rのLSBから連続する0を除いて新たに変数rをメモリ102上に設定する(S220)。また、ループカウンタ107は、ゼロカウンタ106のカウント値k0(変数rのゼロカウント値)をもとに、i=i+k0を実行し、ループカウント値iを更新する(S221)。以上の処理により、変数rの奇数化と、これに伴うループカウント値iの更新が終了する。
That is, when the
また、変数rが偶数でなければ(S116:NO)、演算処理部104は、r=(r+p)/2を実行し(S118)、これをメモリ102に書き戻す。このとき、ループカウンタ107は、i=i+1を実行し、ループカウント値iを更新する(S119)。
If the variable r is not an even number (S116: NO), the
以上の処理は、ループカウンタ107のカウント値iがi=k−nになるまで繰り返される。そして、i=k−nになると、制御部101は、そのときメモリ102に格納されている変数rを、pを法とする整数aの逆元値として出力する。
The above processing is repeated until the count value i of the
以上の如く、本実施の形態によれば、変数u、v、rの奇数化処理において、実際に1/2演算処理を繰り返さなくとも、奇数化後のデータと、1/2演算処理の繰り返し回数(ループカウント値)を一度に算出することができ、もって、Montgomery逆元の演算処理を著しく高速化することができる。 As described above, according to the present embodiment, in the odd-number processing of the variables u, v, and r, the data after the odd-numbering and the repetition of the half-calculation processing are performed without actually repeating the half-calculation processing. The number of times (loop count value) can be calculated at a time, so that the Montgomery inverse element processing can be significantly speeded up.
なお、本発明は、上記実施の形態に限定されるものではなく、他に種々の変更が可能であることは言うまでもない。 Needless to say, the present invention is not limited to the above-described embodiment, and various other modifications are possible.
本発明は、変数データの値が奇数になるまで当該変数データに1/2演算処理を施すとともに、この際に繰り返される前記1/2演算処理の回数を出力する演算処理装置や演算処理方法であれば、Montgomery逆元の算出処理に限らず、他の算出処理に対しても適宜、適用可能なものである。 The present invention provides an arithmetic processing device and an arithmetic processing method for performing 1/2 arithmetic processing on variable data until the value of the variable data becomes an odd number, and outputting the number of times of the 1/2 arithmetic processing repeated at this time. If there is, it is applicable not only to the Montgomery inverse element calculation process but also to other calculation processes as appropriate.
本発明の実施の形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。
The embodiments of the present invention can be appropriately modified in various ways within the scope of the technical idea shown in the claims.
101 制御部
102 メモリ
103 メモリ制御部
104 演算処理部
105 ゼロ検出部
106 ゼロカウンタ
107 ループカウンタ
Claims (4)
中間変数u、vが偶数か否かを判別する判別手段と、
前記中間変数u、vが偶数であるとき、当該中間変数u、vの最下位ビットから連続する0の個数k0を計数する計数手段と、
前記計数手段によって計数された中間変数u、vの下位側ビットの0を削除することによって新たな中間変数u、vを設定するとともに、前記計数手段によって計数された個数分だけ中間変数sの下位側に0を加えることによって新たな中間変数sを設定する中間変数設定手段と、
前記計数手段によって計数されたk0をPhase1のループカウント値kに加算する加算手段と、
を有することを特徴とする逆元演算装置。 a Montgomery inverse element arithmetic unit for calculating an inverse element of an integer a modulo p,
Discriminating means for discriminating whether or not the intermediate variables u and v are even numbers;
Counting means for counting the number k0 of consecutive 0s from the least significant bit of the intermediate variables u and v when the intermediate variables u and v are even;
New intermediate variables u and v are set by deleting low-order bits 0 of the intermediate variables u and v counted by the counting means, and the lower order of the intermediate variable s by the number counted by the counting means. Intermediate variable setting means for setting a new intermediate variable s by adding 0 to the side,
Adding means for adding k0 counted by the counting means to the loop count value k of Phase 1;
An inverse element computing device comprising:
中間変数rが偶数か否かを判別する判別手段と、
前記中間変数rが偶数であるとき、当該中間変数rの最下位ビットから連続する0の個数k0を計数する計数手段と、
前記計数手段によって計数された中間変数rの下位側ビットの0を削除することによって新たな中間変数rを設定する中間変数設定手段と、
前記計数手段によって計数されたk0をPhase2のループカウント値iに加算する加算手段と、
を有することを特徴とする逆元演算装置。 a Montgomery inverse element arithmetic unit for calculating an inverse element of an integer a modulo p,
Determining means for determining whether or not the intermediate variable r is an even number;
Counting means for counting the number k0 of consecutive 0s from the least significant bit of the intermediate variable r when the intermediate variable r is an even number;
Intermediate variable setting means for setting a new intermediate variable r by deleting the lower-order bits 0 of the intermediate variable r counted by the counting means;
Adding means for adding k0 counted by the counting means to the loop count value i of Phase 2;
An inverse element computing device comprising:
前記変数が偶数か否かを判別する判別手段と、
前記変数が偶数であるとき、当該変数の最下位ビットから連続する0の個数k0を計数する計数手段と、
前記計数ステップによって計数された当該変数の下位側ビットの0を削除することによって新たな変数を設定する変数設定手段と、
前記計数ステップによって計数されたk0を前記1/2演算処理の繰り返し回数として出力するループカウント出力手段と、
を有することを特徴とする演算処理装置。 An arithmetic processing device that performs 1/2 arithmetic processing on the variable data until the value of the variable data becomes an odd number, and outputs the number of the 1/2 arithmetic processing repeated at this time,
Discriminating means for discriminating whether or not the variable is an even number;
Counting means for counting the number k0 of consecutive 0s from the least significant bit of the variable when the variable is even;
Variable setting means for setting a new variable by deleting 0 of the lower-order bits of the variable counted in the counting step;
Loop count output means for outputting k0 counted in the counting step as the number of repetitions of the 1/2 arithmetic processing;
An arithmetic processing apparatus comprising:
前記変数が偶数か否かを判別する判別ステップと、
前記変数が偶数であるとき、当該変数の最下位ビットから連続する0の個数k0を計数する計数ステップと、
前記計数ステップによって計数された当該変数の下位側ビットの0を削除することによって新たな変数を設定する変数設定ステップと、
前記計数ステップによって計数されたk0を前記1/2演算処理の繰り返し回数として出力するループカウント出力ステップと、
を有することを特徴とする演算処理方法。 An arithmetic processing method for performing a 1/2 arithmetic process on the variable data by an arithmetic circuit until the value of the variable data becomes an odd number, and outputting the number of the 1/2 arithmetic processes repeated at this time,
A determining step of determining whether or not the variable is an even number;
A counting step of counting the number k0 of consecutive 0s from the least significant bit of the variable when the variable is even;
A variable setting step of setting a new variable by deleting 0 of the lower-order bits of the variable counted in the counting step;
A loop count output step for outputting k0 counted in the counting step as the number of repetitions of the 1/2 arithmetic processing;
An arithmetic processing method characterized by comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004030514A JP2005221830A (en) | 2004-02-06 | 2004-02-06 | Inverse element arithmetic unit, arithmetic processing unit, and arithmetic processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004030514A JP2005221830A (en) | 2004-02-06 | 2004-02-06 | Inverse element arithmetic unit, arithmetic processing unit, and arithmetic processing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005221830A true JP2005221830A (en) | 2005-08-18 |
Family
ID=34997502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004030514A Pending JP2005221830A (en) | 2004-02-06 | 2004-02-06 | Inverse element arithmetic unit, arithmetic processing unit, and arithmetic processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005221830A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011036746A1 (en) * | 2009-09-24 | 2011-03-31 | 株式会社東芝 | Calculation device |
US8407270B2 (en) | 2008-12-02 | 2013-03-26 | Samsung Electronics Co., Ltd. | Methods of calculating negative inverse of modulus |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10269060A (en) * | 1997-01-27 | 1998-10-09 | Toshiba Corp | Montgomery division device, montgomery inverse element calculation device, montgomery division method and montgomery inverse element calculation method |
-
2004
- 2004-02-06 JP JP2004030514A patent/JP2005221830A/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10269060A (en) * | 1997-01-27 | 1998-10-09 | Toshiba Corp | Montgomery division device, montgomery inverse element calculation device, montgomery division method and montgomery inverse element calculation method |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407270B2 (en) | 2008-12-02 | 2013-03-26 | Samsung Electronics Co., Ltd. | Methods of calculating negative inverse of modulus |
KR101548174B1 (en) | 2008-12-02 | 2015-09-07 | 삼성전자주식회사 | Method for calculating negative inverse of modulus |
WO2011036746A1 (en) * | 2009-09-24 | 2011-03-31 | 株式会社東芝 | Calculation device |
JP5175983B2 (en) * | 2009-09-24 | 2013-04-03 | 株式会社東芝 | Arithmetic unit |
US8909689B2 (en) | 2009-09-24 | 2014-12-09 | Kabushiki Kaisha Toshiba | Arithmetic device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20100020964A1 (en) | Key generation method using quadratic-hyperbolic curve group | |
US20130236012A1 (en) | Public Key Cryptographic Methods and Systems | |
EP1708081B1 (en) | Method and device for calculating a Montgomery conversion parameter | |
EP2334006B1 (en) | Side-channel resistant modular exponentiation | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
Boruah et al. | Implementation of ElGamal Elliptic Curve Cryptography over prime field using C | |
Vidhya et al. | Hybrid key generation for RSA and ECC | |
US7050579B1 (en) | Cryptographic methods and apparatus using word-wise montgomery multiplication | |
JP4690819B2 (en) | Scalar multiplication calculation method and scalar multiplication calculation apparatus in elliptic curve cryptography | |
US9419789B2 (en) | Method and apparatus for scalar multiplication secure against differential power attacks | |
JP4177526B2 (en) | Multiplication residue calculation method and multiplication residue circuit | |
KR100340102B1 (en) | High speed rsa public key cryptographic apparatus and method | |
JP4423900B2 (en) | Scalar multiplication calculation method, apparatus and program for elliptic curve cryptography | |
JP3615405B2 (en) | Method and apparatus for calculating points on elliptic curve on element body | |
JP2005221830A (en) | Inverse element arithmetic unit, arithmetic processing unit, and arithmetic processing method | |
Musa et al. | Hybrid Cloud Storage Techniques Using Rsa And Ecc | |
JP5297918B2 (en) | Encrypted numeric binary conversion system, method and program | |
JP3591857B2 (en) | Pseudo random number generation method and device, communication method and device | |
Reddy et al. | Analysis and performance characteristics of cryptosystem using image files | |
JP3278790B2 (en) | Public key encryption method and public key encryption system | |
Mooney et al. | A New Rabin-type Cryptosystem with Modulus p 2 q | |
US7480380B2 (en) | Method for efficient generation of modulo inverse for public key cryptosystems | |
Zitouni et al. | Identity-Based Encryption from the Tate pairing on genus two curves | |
WO2004070681A2 (en) | Elliptic curve scalar multiple calculation method and device | |
JP4243874B2 (en) | Cryptographic management device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061012 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100309 |
|
A02 | Decision of refusal |
Effective date: 20100706 Free format text: JAPANESE INTERMEDIATE CODE: A02 |