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 PDF

Info

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
Application number
JP2004030514A
Other languages
Japanese (ja)
Inventor
Seiya Ota
晴也 太田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP2004030514A priority Critical patent/JP2005221830A/en
Publication of JP2005221830A publication Critical patent/JP2005221830A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To accelerate the speed of processing in halving a variable where a lot of 0s are in succession from the LSB until an odd number is obtained, especially to accelerate the speed of calculating a Montgomery inverse element. <P>SOLUTION: In the case of calculating the inverse element (r) of an integer (a) with the modulus (p), whether intermediate variables (u, v) are even numbers or not is discriminated (S103, S106). When the intermediate variables (u, v) are even numbers, the number of 0s (k0) in succession from the least significant bit of the intermediate variables (u, v) is counted (S211) and new intermediate variables (u, v) are set (S210) by deleting 0s in lower-order bits of the intermediate variables (u, v) counted by this counting. Also, a new intermediate variable (s) is set (S212) by adding 0s in the number counted by the counting to the low-order side of the intermediate variable (s). Then, the k0 counted by the counting is added to a loop count value (k) of Phase 1 to end the odd number processing to the intermediate variables (u, v). <P>COPYRIGHT: (C)2005,JPO&NCIPI

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)=MmodN …(1)
E=D(C)=CmodN …(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―1mod 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−1modp、1)
=a−1−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 Phase 1 shown in FIG. 4 and Phase 2 shown in FIG. When obtaining the inverse element r of the integer a modulo p, p and a are set as initial values for the intermediate variables u and v, respectively, and the operations of Phases 1 and 2 are executed. Thereby, the inverse element is obtained as the value of the variable r.

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 Phase 1, an operation is performed using variables u, v, r, and s for performing an intermediate operation and a variable k for performing a loop count. That is, after initial values are set for these variables (S101), until u becomes v = 0 (S102: YES), if u is an even number (S103: YES), u = u / 2, s = 2s (S104), if u is an odd number (S103: NO) and v is an even number (S106: YES), v = v / 2 and r = 2r are executed (S107), and u and v Are odd numbers (S103: NO, S106: NO) and u> v (S108: YES), u = (u−v) / 2, r = r + s, s = 2s are executed (S109). In other cases (S108: NO), while executing v = (v−u) / 2, s = r + s, r = 2r (S110), the loop count value k is added (S105). When the variable v becomes v = 0, the variable r is corrected (S111 to S113), r and k are output to Phase2, and the calculation of Phase1 is terminated.

なお、Phase1の演算が終了したとき、変数rは、r=a―1mod 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の演算を終了する。
“Modular multiplication without trial division”, Mathematics of Computation, 44(170): 519-521, April 1985 “A course in number theory and cryptography”,Spring-Verlag,1997 “Use of elliptic curves in cryptography”,Advances in Cryptology-Proceedings of Crypto '85, Lecture Notes in Computer Science, 218 (1986), Spring-Verlag, pp417-426 “The Montgomery inverse and its application”,IEEE Transactions on Computers, 44(8): 1064-1065, August 1995
In Phase 2, r and k, which are outputs of Phase 1, and a variable i for performing loop count are used. That is, after initializing the variable i to 1 (S114) and until i = k−n (S115: YES), if r is an even number (S116: YES), r = r / 2 is executed ( If r is an odd number (S116: NO), r = (r + p) / 2 is executed (S118), and the loop count value i is added (S119). When the loop count value i becomes i = k−n (S115: YES), the variable r is output and the calculation of Phase 2 is terminated.
“Modular multiplication without trial division”, Mathematics of Computation, 44 (170): 519-521, April 1985 “A course in number theory and cryptography”, Spring-Verlag, 1997 “Use of elliptic curves in cryptography”, Advances in Cryptology-Proceedings of Crypto '85, Lecture Notes in Computer Science, 218 (1986), Spring-Verlag, pp417-426 “The Montgomery inverse and its application”, IEEE Transactions on Computers, 44 (8): 1064-1065, August 1995

上述の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 Phase 1 calculation process (S104, S107) and the Phase 2 calculation process (S117) are repeatedly executed until the variables u, v, or the variable r become odd. When a large number of zeros are consecutive from the LSBs of these variables u, v, and r, the arithmetic processing of these steps is repeatedly executed for the number of zeros. Here, assuming that the time for reading these variables from the memory is Tr, the processing time for performing 1/2 calculation is Tc, and the time for writing back the variables subjected to 1/2 calculation processing to Tw is Tw, N consecutive 0s from LSB In this case, the processing time T required to repeat these steps is T = N * (Tr + Tc + Tw).

そこで、本発明は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 claim 1 is a Montgomery inverse element arithmetic unit for calculating an inverse element of an integer a modulo p, a determination means for determining whether or not intermediate variables u and v are even numbers, and the intermediate variable u , V is an even number, the counting means for counting the number k0 of consecutive 0s from the least significant bit of the intermediate variable u, v, and 0 of the lower-order bits of the intermediate variables u, v counted by the counting means Is set as new intermediate variables u and v, and is set to a new intermediate variable s by adding 0 to the lower side of the intermediate variable s by the number counted by the counting means. And means for adding k0 counted by the counting means to the loop count value k of Phase1.

請求項2の発明は、pを法とする整数aの逆元を算出するMontgomery逆元演算装置であって、中間変数rが偶数か否かを判別する判別手段と、前記中間変数rが偶数であるとき、当該中間変数rの最下位ビットから連続する0の個数k0を計数する計数手段と、前記計数手段によって計数された中間変数rの下位側ビットの0を削除することによって新たな中間変数rを設定する中間変数設定手段と、前記計数手段によって計数されたk0をPhase2のループカウント値iに加算する加算手段とを有することを特徴とする。   The invention of claim 2 is a Montgomery inverse element arithmetic unit for calculating an inverse element of an integer a modulo p, a determination means for determining whether or not the intermediate variable r is an even number, and the intermediate variable r is an even number , The counting means for counting the number k0 of consecutive 0s from the least significant bit of the intermediate variable r, and a new intermediate by deleting 0 of the lower-order bits of the intermediate variable r counted by the counting means. It has an intermediate variable setting means for setting the variable r, and an adding means for adding k0 counted by the counting means to the loop count value i of Phase2.

請求項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 claim 1 or 2, the Montgomery inverse element The calculation process can be significantly speeded up.

なお、請求項1および2の発明は、それぞれ、Montgomery逆元演算処理アルゴリズムのPhase1およびPhase2に係るものである。実施化においては、これらの発明を、Montgomery逆元演算のPhase1およびPhase2の演算処理に同時に適用する形態の他、何れか一方のみを対応するPhase処理に適用する形態とすることもできる。演算処理の高速化においては、前者の形態とするのが望ましいが、後者の形態によっても、1/2演算処理を実際に繰り返して奇数化する場合に比べ、数段の高速化を図ることができる。
The inventions of claims 1 and 2 relate to Phase 1 and Phase 2 of the Montgomery inverse element processing algorithm, respectively. In the implementation, these inventions can be applied to the Phase 1 and Phase 2 arithmetic processing of Montgomery inverse operation, or only one of them can be applied to the corresponding Phase processing. In the speeding up of the arithmetic processing, the former form is desirable. However, even in the latter form, it is possible to increase the speed by several steps compared to the case where the half arithmetic processing is actually repeated to make the odd number. it can.

以下、本発明の実施の形態につき図面を参照して説明する。   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 control unit 101, a memory 102, a memory control unit 103, an arithmetic processing unit 104, a zero detection unit 105, a zero counter 106, a loop The counter 107 is configured.

制御部101は、予め設定された処理フローに従って各部を制御する。メモリ102は、中間変数u、v、r、sを逐次更新記憶する。メモリ制御部103は、制御部101からの指令に応じてメモリ102を制御する。演算処理部104は、制御部101からの指令に応じて、メモリ102に記憶されている中間変数データ(u、v、r、s)に演算処理を施し、処理結果をメモリ102に書き戻す。   The control unit 101 controls each unit according to a preset processing flow. The memory 102 sequentially updates and stores intermediate variables u, v, r, and s. The memory control unit 103 controls the memory 102 according to a command from the control unit 101. The arithmetic processing unit 104 performs arithmetic processing on the intermediate variable data (u, v, r, s) stored in the memory 102 in accordance with a command from the control unit 101, and writes the processing result back to the memory 102.

ゼロ検出部105は、メモリ102に記憶されている中間変数データ(u、v、r、s)を参照し、これら中間変数データ(u、v、r、s)のLSBから連続するゼロを検出する。ゼロカウンタ106は、ゼロ検出部105によって検出されたゼロの個数k0を計数する。ループカウンタ107は、Phase1のループカウント値kおよびPhase2のループカウント値iを計数する。   The zero detection unit 105 refers to the intermediate variable data (u, v, r, s) stored in the memory 102 and detects consecutive zeros from the LSB of these intermediate variable data (u, v, r, s). To do. The zero counter 106 counts the number of zeros k0 detected by the zero detector 105. The loop counter 107 counts the loop count value k of Phase1 and the loop count value i of Phase2.

図2に、Montgomery逆元演算におけるPhase1の処理アルゴリズムを示す。   FIG. 2 shows a processing algorithm of Phase 1 in the Montgomery inverse operation.

本処理アルゴリズムは、上記図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 control unit 101 in order to obtain the inverse element r of the integer a modulo p, the control unit 101 sets initial values (u = p, v = a, r = 0, s = 1) are set and stored in the memory 102 (S101). At the same time, the count value k of the loop counter 107 is reset.

ここで、変数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 memory control unit 103 newly sets the variable u by removing the continuous 0 from the LSB of the variable u based on the detection value by the zero detection unit 105. It is set on the memory 102 (S210). In addition, the memory control unit 103 sets the count value k0 (zero count value of the variable u) by the zero counter 106 (S211), the number of zeros to be added to the LSB of the variable s, that is, the odd number of the variable u. This is held as the number of repetitions of doubling the variable s to be executed (S212). Further, the loop counter 107 executes k = k + k0 based on the count value k0 of the zero counter 106 (zero count value of the variable u), and updates the loop count value k (S213). With the above processing, the variable u is odd-numbered, the repetition processing of the doubling of the variable s, and the update of the loop count value k are completed.

なお、変数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 memory 102 to the LSB of the variable s stored in the memory 102 in the subsequent steps S109 and S110. This is done by adding zeros. That is, the control unit 101 executes the doubling process for the variable s by accessing the memory so that the data is output as data shifted upward by the K0 bit, and thereafter, the control processing unit 104 performs S109 and S110. Let us calculate the variable s at.

次に、変数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 memory control unit 103 newly sets the variable v by removing the continuous 0 from the LSB of the variable v based on the detection value by the zero detection unit 105. It is set on the memory 102 (S214). In addition, the memory control unit 103 sets the count value k0 (zero count value of the variable v) by the zero counter 106 (S215), the number of zeros to be added to the LSB of the variable r, that is, the odd number of the variable v. This is stored as the number of repetitions of doubling the variable r to be executed (S216). Further, the loop counter 107 executes k = k + k0 based on the count value k0 of the zero counter 106 (zero count value of the variable v), and updates the loop count value k (S213). Through the above processing, the variable v is made odd, the doubling of the variable r and the update of the loop count value k are completed.

なお、変数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 memory 102 when performing the calculation using the variable r in the subsequent steps S109 and S110. This is done by adding zeros. That is, the control unit 101 executes a doubling process for the variable r by accessing the memory so that the data is output as data shifted upward by the K0 bit, and thereafter, the control processing unit 104 performs S109 and S110. The calculation of the variable s in is performed.

以上にようにして新たに設定された変数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 arithmetic processing unit 104 determines that u = (u−v) / 2, r = r + s, s = 2s is executed (S109) and written back to the memory 102. At this time, the loop counter 107 executes k = k + 1 and updates the loop count value k (S105). If u ≦ v (S108: NO), the arithmetic processing unit 104 executes u = (v−u) / 2, s = r + s, and r = 2r (S109), and writes it in the memory 102. return. At this time, the loop counter 107 executes k = k + 1 and updates the loop count value k (S105).

かかる処理により、変数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 memory processing unit 103, and further, the arithmetic processing after S108 is performed by the arithmetic processing unit 104. Executed. Such processing is repeated until the variable v becomes v = 0 (S102: YES). When v = 0, the arithmetic processing unit 104 performs a correction operation for the variable r (S111 to S113), and writes the variable r obtained thereby back to the memory 102. Then, based on the variable r and the count value k of the loop counter 107 at this time, the Phase2 calculation process is started.

すなわち、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 Phase 2 calculation process is started, the control unit 101 resets the count value i of the loop counter 107. Here, if the variable r is an even number (S116: YES), the memory control unit 103 newly sets the variable r by removing the consecutive 0 from the LSB of the variable r based on the detection value by the zero detection unit 105. The setting is made on the memory 102 (S220). Further, the loop counter 107 executes i = i + k0 based on the count value k0 of the zero counter 106 (zero count value of the variable r), and updates the loop count value i (S221). With the above processing, the odd number of the variable r and the update of the loop count value i associated therewith are completed.

また、変数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 arithmetic processing unit 104 executes r = (r + p) / 2 (S118) and writes it back to the memory 102. At this time, the loop counter 107 executes i = i + 1 and updates the loop count value i (S119).

以上の処理は、ループカウンタ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 loop counter 107 reaches i = k−n. When i = k−n, the control unit 101 outputs the variable r stored in the memory 102 at that time as the inverse element value of the integer a modulo p.

以上の如く、本実施の形態によれば、変数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.

実施の形態に係るMontgomery逆元演算装置の構成を示す図The figure which shows the structure of the Montgomery inverse element arithmetic unit which concerns on embodiment 実施の形態に係る逆元演算処理アルゴリズム(Phase1)を示す図The figure which shows the inverse element calculation processing algorithm (Phase1) which concerns on embodiment 実施の形態に係る逆元演算処理アルゴリズム(Phase2)を示す図The figure which shows the inverse operation processing algorithm (Phase2) which concerns on embodiment 従来の形態に係る逆元演算処理アルゴリズム(Phase1)を示す図The figure which shows the inverse operation processing algorithm (Phase1) which concerns on the conventional form 従来の形態に係る逆元演算処理アルゴリズム(Phase2)を示す図The figure which shows the inverse operation processing algorithm (Phase2) which concerns on the conventional form

符号の説明Explanation of symbols

101 制御部
102 メモリ
103 メモリ制御部
104 演算処理部
105 ゼロ検出部
106 ゼロカウンタ
107 ループカウンタ
101 Control Unit 102 Memory 103 Memory Control Unit 104 Operation Processing Unit 105 Zero Detection Unit 106 Zero Counter 107 Loop Counter

Claims (4)

pを法とする整数aの逆元を算出するMontgomery逆元演算装置であって、
中間変数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:
pを法とする整数aの逆元を算出するMontgomery逆元演算装置であって、
中間変数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:
変数データの値が奇数になるまで当該変数データに1/2演算処理を施すとともに、この際に繰り返される前記1/2演算処理の回数を出力する演算処理装置であって、
前記変数が偶数か否かを判別する判別手段と、
前記変数が偶数であるとき、当該変数の最下位ビットから連続する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:
変数データの値が奇数になるまで演算回路によって当該変数データに1/2演算処理を施すとともに、この際に繰り返される前記1/2演算処理の回数を出力する演算処理方法であって、
前記変数が偶数か否かを判別する判別ステップと、
前記変数が偶数であるとき、当該変数の最下位ビットから連続する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:
JP2004030514A 2004-02-06 2004-02-06 Inverse element arithmetic unit, arithmetic processing unit, and arithmetic processing method Pending JP2005221830A (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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