JP5179933B2 - Data processing device - Google Patents
Data processing device Download PDFInfo
- Publication number
- JP5179933B2 JP5179933B2 JP2008108462A JP2008108462A JP5179933B2 JP 5179933 B2 JP5179933 B2 JP 5179933B2 JP 2008108462 A JP2008108462 A JP 2008108462A JP 2008108462 A JP2008108462 A JP 2008108462A JP 5179933 B2 JP5179933 B2 JP 5179933B2
- Authority
- JP
- Japan
- Prior art keywords
- storage area
- value
- mod
- storing
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
本発明は、フェルマーテストを実行するデータ処理装置に関し、例えば機密性の高いICカードなどの耐タンパ装置向けの素数生成に関するものである。 The present invention relates to a data processing apparatus that executes a Fermat test, and relates to generation of prime numbers for a tamper resistant apparatus such as a highly confidential IC card.
ICカードは、主に、勝手に書き換えられない情報の保持や秘密情報である暗号鍵を使ったデータの暗号化や暗号文の復号化を行うために使われる装置である。 An IC card is an apparatus mainly used for holding information that cannot be rewritten without permission, encrypting data using an encryption key that is secret information, and decrypting a ciphertext.
ICカードは、電源を持っていないため、リーダライタに差し込まれると、電源の供給を受け、動作可能となる。動作可能になると、リーダライタからコマンドを受けて、コマンドに従い、データの転送を行う。 Since the IC card does not have a power source, when it is inserted into the reader / writer, it is supplied with power and becomes operable. When it becomes operable, it receives a command from the reader / writer and transfers data according to the command.
ICカードチップは、プログラムや重要な情報がICカード用チップの中に密閉されており、外部からそれらの情報に直接アクセスすることはできない。外部との通信は、I/Oピンのみを介して、完全にICカードチップの制御下で行われ、通常情報は暗号化した状態で送受信され、情報の秘匿性を実現している。暗号通信を行うためには、通信する相手と暗号鍵の共有を行う必要がある。事前に鍵を通信相手と共有しておく方法もあるが、一度鍵が判明してしまうと、暗号化した通信内容が復号化されてしまう。そこで、通信に用いる暗号鍵をランダムに生成し、相手に鍵を送信し、その鍵を用いて通信するという方法がある。 In the IC card chip, programs and important information are sealed in the IC card chip, and such information cannot be directly accessed from the outside. Communication with the outside is performed entirely under the control of the IC card chip only through the I / O pins, and normal information is transmitted and received in an encrypted state, thereby realizing confidentiality of information. In order to perform encrypted communication, it is necessary to share an encryption key with a communicating party. There is a method of sharing the key with the communication partner in advance, but once the key is found, the encrypted communication content is decrypted. Therefore, there is a method in which an encryption key used for communication is randomly generated, the key is transmitted to the other party, and communication is performed using the key.
相手に鍵を送る際に、鍵を平文のまま送ってしまうと、次にその鍵を用いた暗号通信は簡単に解読されてしまう。そこで、公開鍵暗号技術を用いる。公開鍵暗号とは、暗号化に用いる鍵と、復号化に用いる鍵が異なり、暗号化に用いる鍵から複号に用いる鍵を求めることが、計算量的に困難な暗号方式である。 When sending a key to the other party, if the key is sent in plaintext, the encrypted communication using that key will be easily deciphered next time. Therefore, public key cryptography is used. Public key cryptography is an encryption method in which the key used for encryption is different from the key used for decryption, and it is difficult to calculate the key used for decryption from the key used for encryption.
公開鍵暗号方式を用いた鍵交換では、相手に自分の公開鍵を送り、相手側は通信の暗号化に用いる鍵を乱数などから生成し、送られてきた公開鍵で暗号化した後、暗号化された鍵を返信する。返信されてきた暗号化鍵を、さきほど相手に送った公開鍵に対応する秘密鍵で復号化し、次の通信に用いる。 In key exchange using the public key cryptosystem, you send your public key to the other party, and the other party generates a key to be used for communication encryption from random numbers, etc., encrypts it with the sent public key, and then encrypts it. Returns the converted key. The returned encryption key is decrypted with the private key corresponding to the public key sent to the other party and used for the next communication.
公開鍵暗号方式として最も広く用いられている暗号として、RSA暗号方式がある。この暗号方式は、2つの大きな素数の積からなる合成数が、容易に因数分解できないことを利用した暗号である。因数分解自体は、試行割り算法や数体篩などによって、アルゴリズム的には求めることは可能であるが、数が大きくなると、因数を求めることが時間的に困難となる。現在、1024ビットから2048ビット長の鍵が用いられている。鍵の生成はICカードの外部の計算機で行い、生成された鍵をICカードに書き込むという方法で公開鍵暗号方式の鍵をICカードに格納してきた。 The RSA encryption method is the most widely used public key encryption method. This encryption method is an encryption that utilizes the fact that a composite number that is a product of two large prime numbers cannot be easily factorized. The factorization itself can be obtained algorithmically by a trial division method, a number field sieve, or the like, but as the number increases, it becomes difficult to obtain the factor in terms of time. Currently, keys with a length of 1024 to 2048 bits are used. The key is generated by a computer outside the IC card, and the key of the public key cryptosystem is stored in the IC card by writing the generated key to the IC card.
この方法では、原理的にICカードの外側に公開鍵暗号の秘密鍵が存在してしまうため、その秘密鍵が適切に管理できないと、セキュリティを確保できないという問題があった。そこで、ICカード内部で公開鍵暗号方式の秘密鍵と公開鍵のペアを生成することが行われるようになった。これにより、セキュリティは向上するが、RSA暗号の鍵生成はICカードで行うには時間の掛かる処理であり、高速化が必要となった。RSA暗号鍵の生成でもっとも時間の掛かる処理は、2つの大きな素数を生成する処理である。素数生成は、奇数乱数を生成し、次に生成された乱数が素数であるかを判定し、素数で無かった場合にはまた新たに素数を生成して素数判定を行う処理を繰り返すことで実現されている。 This method has a problem that, in principle, a secret key for public key cryptography exists outside the IC card, and security cannot be secured unless the secret key can be properly managed. Thus, a private key / public key pair for public key cryptography has been generated inside the IC card. As a result, although security is improved, RSA encryption key generation is a time-consuming process to be performed by an IC card, and it is necessary to increase the speed. The process that takes the most time for generating the RSA encryption key is a process for generating two large prime numbers. Prime number generation is realized by generating an odd random number, determining whether the next generated random number is a prime number, and if it is not a prime number, generate a new prime number and repeat the process of determining the prime number Has been.
素数判定には、いろいろな手法が用いられているが、2を元としたフェルマーテストにより、最初の素数判定を行い、それにパスした乱数をさらに厳密な素数判定処理に掛ける方式が高速化に向いている。これは、2倍算がシフトで行えるためである。 Various methods are used for prime number determination, but the method of performing the first prime number determination by Fermat test based on 2 and applying the passed random number to the more exact prime number determination processing is suitable for speeding up. ing. This is because doubling can be performed by shift.
しかし、指数部が1が0かにより、剰余乗算の有無などの処理の違いを消費電力の違いなどから推定し、秘密情報である素数が推定される可能性があり、セキュリティ面で不安があった。 However, depending on whether the exponent part is 1 or not, there is a possibility that a prime number which is secret information may be estimated by estimating a difference in processing such as presence / absence of remainder multiplication from a difference in power consumption. It was.
高速、かつセキュアにフェルマーテストを行う方法としては、一時に指数をmビットまとめて処理する、非特許文献1に記されているm−ary法(もしくはWindow法とも呼ばれる)がある。m−ary法では、指数部をm[bit]ごとに区切って,区間ごとにm回の剰余二乗算と1回の剰余乗算を行う。指数のビット数がn[bit]の場合,n回の剰余二乗算とn/m回の剰余乗算を行う必要がある。xy mod Nを計算する場合のm−ary法の手順を示す。ここで、e[i]はyをmビット毎に区切った値で、JをJ≧n/mとなる最小の整数としたときに、下記(式1)
y=2(J−1)m・e[J−1]+2(J−2)m・e[J−2]+…+2m・e[1]+e[0] (式1)
を満たす。m−ary法の手順は例えば、
result:= 1;
for i:=J−1 downTo 0 do
for j:=1 to m do
result:=result2 mod N
end for
result:=result * x^(e[i]) mod N
end for
return result
とされる。
As a method for performing the Fermat test securely at high speed, there is an m-ary method (also referred to as a window method) described in Non-Patent
y = 2 (J-1) m · e [J-1] +2 (J-2) m · e [J-2] +... +2 m · e [1] + e [0] (Formula 1)
Meet. The procedure of the m-ary method is, for example,
result: = 1;
for i: = J-1
for j: = 1 to m do
result: = result 2 mod N
end for
result: = result * x ^ (e [i]) mod N
end for
return result
It is said.
この方式は、ビットパタンによる処理内容に違いが発生せず、mの値を増やすことで、処理に必要な剰余乗算の回数がmに反比例して減少する。しかし、x^1〜x^(2m−1)までの値を事前に計算しておく必要があるため、mを増加させるとワークエリアが2mに比例して増加するという問題があった。これは、特にRAMのサイズに制約のあるICカードでは大きなネックとなる。 In this method, there is no difference in the processing contents according to the bit pattern, and by increasing the value of m, the number of remainder multiplications required for processing decreases in inverse proportion to m. However, since it is necessary to calculate in advance values from x ^ 1 to x ^ (2 m -1), there is a problem that increasing m increases the work area in proportion to 2 m . . This becomes a big bottleneck particularly in an IC card with a limited RAM size.
x^(e[i])の値を必要になった際に動的に計算することも考えられるが、特にICカードでよく用いられるモンゴメリ剰余乗算アルゴリズム(非特許文献2)を用いたコプロセッサにおいては、通常の数値表現から2^n mod Nを乗じたモンゴメリ表現に変換する必要があるため、動的に剰余乗算の演算数を計算することは、速度低下をもたらすという問題があった。 Although it is conceivable that the value of x ^ (e [i]) is dynamically calculated when it becomes necessary, a coprocessor using a Montgomery remainder multiplication algorithm (Non-patent Document 2) often used particularly in an IC card. However, since it is necessary to convert from normal numerical expression to Montgomery expression multiplied by 2 ^ n mod N, there is a problem that dynamically calculating the number of operations of remainder multiplication causes a decrease in speed.
RSA暗号の鍵を高速に生成するには、素数を高速に生成することが必要であるが、従来手法で素数判定を高速に行う必要場合、速度と記憶容量はトレードオフの関係にあり、特にメモリ容量がICカードでは高速化が困難であった。 To generate an RSA encryption key at high speed, it is necessary to generate primes at high speed. However, when it is necessary to perform prime number determination at high speed with the conventional method, speed and storage capacity are in a trade-off relationship. It was difficult to increase the speed of memory with an IC card.
本発明の目的は、メモリ容量を消費せずに高速にフェルマーテストによって素数判定を行うことができるデータ処理装置を提供することにある。 An object of the present invention is to provide a data processing apparatus capable of performing prime number determination by Fermat test at high speed without consuming memory capacity.
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。 The above and other objects and novel features of the present invention will be apparent from the description of this specification and the accompanying drawings.
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。 The following is a brief description of an outline of typical inventions disclosed in the present application.
すなわち、本発明は、コプロセッサのビット長をnとしたときに、mをm≦log2(n)を満たす最大の整数とし、mビットごとに指数を処理することで、m−ary法での剰余乗算の回数を減らし、高速化を図る。また、m−ary法では、事前にx1からx2^m−1までの2m−1種類の値を事前計算し、メモリに格納する必要があるが、本発明ではx=2であることを利用し、処理中に剰余乗算に用いる演算数を動的に生成し、事前計算や事前計算した値を保存する記憶容量を用意しなくともよくすることで、必要な記憶容量を増やすことなく高速化を実現しようとするものである。尚、本明細書において記号^はべき乗演算を意味し、記号・は乗算演算を意味する。 That is, according to the present invention, when the bit length of the coprocessor is n, m is the maximum integer satisfying m ≦ log 2 (n), and an exponent is processed for each m bits. Reduce the number of remainder multiplications and increase the speed. Further, in the m-ary method, it is necessary to pre-calculate 2 m −1 types of values from x 1 to x 2 ^ m−1 in advance and store them in a memory. In the present invention, x = 2. To increase the required storage capacity by dynamically generating the number of operations used for remainder multiplication during processing and eliminating the need for pre-calculation and storage capacity to store pre-calculated values. It aims to realize high speed. In this specification, the symbol ^ means a power operation, and the symbol · means a multiplication operation.
剰余乗算をモンゴメリコプロセッサで行う場合、2のベキ数にR(=2n mod N)を剰余乗算した値を用いる必要がある。Rも2のベキ数であるが、法Nよりも大きな値であるので、複雑なビットパタンとなり、事前計算を行うか、剰余乗算の都度、R2 mod Nをさらに乗じる必要がある。ここで、e[i]は(N−1)をmビット毎に区切った値で、JをJ≧n/mとなる最小の整数としたときに式(式2)
N−1=2(J−1)m・e[J−1]+…+2m・e[1]+e[0] (式2)
を満たすものとする。
When the remainder multiplication is performed by the Montgomery processor, it is necessary to use a value obtained by remainder multiplication of R (= 2 n mod N) to a power of 2. R is also a power number of 2, but since it is a value larger than the modulus N, it becomes a complicated bit pattern, and it is necessary to perform pre-calculation or multiply R 2 mod N every time a remainder multiplication is performed. Here, e [i] is a value obtained by dividing (N−1) every m bits, and when J is the smallest integer such that J ≧ n / m (Expression 2)
N-1 = 2 (J-1) m · e [J-1] +... +2 m · e [1] + e [0] (Formula 2)
Shall be satisfied.
モンゴメリ剰余乗算コプロセッサを用いて、剰余乗算ごとにR2 mod Nを乗じる方法により2N−1 mod Nを計算する処理アルゴリズムは、
result:=R mod N
for i:=J−1 downTo 0 do
for j:=1 to m do
result:=result2 ・R−1mod N
end for
result:=result・2e[i]・R−1 mod N
result:=result・R2・R−1 mod N
end for
result:=result・1・R−1 mod N
return result
である。
A processing algorithm for calculating 2 N−1 mod N by a method of multiplying R 2 mod N for each remainder multiplication using a Montgomery remainder multiplication coprocessor is as follows:
result: = R mod N
for i: = J-1
for j: = 1 to m do
result: = result 2 · R −1 mod N
end for
result: = result · 2 e [i] · R −1 mod N
result: = result · R 2 · R −1 mod N
end for
result: = result · 1 · R −1 mod N
return result
It is.
R2 mod Nを乗じる方式でも、必要なメモリ容量を増やすことなく、乗算回数は2・n/m回に削減することができるが、m−ary法でmビットごとに指数を扱った場合のn/m回と比べると、剰余乗算の回数が倍となる。 Even with the method of multiplying by R 2 mod N, the number of multiplications can be reduced to 2 · n / m times without increasing the required memory capacity. However, when the exponent is handled every m bits by the m-ary method, Compared with n / m times, the number of times of remainder multiplication is doubled.
この問題を解決するために、剰余乗算の演算数と被演算数それぞれにRが乗じられているのを、片方の被演算数のみにR2を乗じる方式を考える。こうすることで、乗じる値がハミングウエイト1となり、事前計算が不要となる。ただし、そのままの値を乗じると、剰余乗算後の結果にはRが乗じられているのみの形式になる。ベキ乗剰余の剰余演算の前には、剰余二乗算がm回行われることを利用し、剰余二乗算の結果、R2が乗じられる形式になるように、剰余乗算の際に補正値を乗じる。
To solve this problem, from which R is multiplied by each operand and operands of modular multiplication, consider a method of multiplying the R 2 only operands of one. By doing so, the value to be multiplied becomes
剰余乗算する際に、被演算数にR2=22nが乗じられるようにするには、剰余乗算後の被演算数には2nが乗じられているので、m回の剰余自乗算後に2nとなるような値を乗じればよい。すでに乗じられている2nと、追加で乗じられる2nとをあわせて、22nが常時乗じられる。したがって、演算数に次の式(3)
a^(2m)=2n (式3)
を満たす補正値aを乗ずればよい。
In order to multiply the operand by R 2 = 2 2n when performing modular multiplication, the operand after multiplication is multiplied by 2 n, so that 2 after m modular multiplication. What is necessary is just to multiply the value which becomes n . And 2 n being multiplied already, together with 2 n to be multiplied by an additional, 2 2n is multiplied constantly. Therefore, the following equation (3)
a ^ (2 m ) = 2 n (Formula 3)
The correction value a satisfying the above may be multiplied.
これは、簡単に解くことができて、
a=2^(n/(2m)) (式4)
でaは与えられる。nが2のベキ数の場合は、mの定義より2m=nであるので、直ちに
a=2 (式5)
が求まる。
This is easy to solve,
a = 2 ^ (n / (2 m )) (Formula 4)
Where a is given. When n is a power number of 2, since 2 m = n from the definition of m , a = 2 immediately (formula 5)
Is obtained.
一方、nが2のベキ数ではない場合、
a=2・2^(n・(2m)−1) (式6)
となり、2(n/(2^m)−1)は整数ではないため、そのまま補正値に用いることはできない。そこで、補正をm回の剰余自乗算の前に行う部分a’と、m回の剰余自乗算の後に行う部分bの2つに分ける。ここでは、a’=2とする。すなわち、剰余自乗算前に2で補正を行い、剰余自乗算後の補正値として(式7)
b=(2^(n/(2m)−1))^(2m) (式7)
を満たすbを考える。
On the other hand, if n is not a power of 2,
a = 2 · 2 ^ (n · (2 m ) −1) (Formula 6)
Since 2 (n / (2 ^ m) -1) is not an integer, it cannot be used as a correction value as it is. Therefore, the correction is divided into a part a ′ performed before m times of modular multiplication and a part b performed after m times of modular multiplication. Here, a ′ = 2. That is, the correction is performed by 2 before the modular multiplication, and the corrected value after the modular multiplication is expressed as (Equation 7).
b = (2 ^ (n / ( 2m ) -1)) ^ ( 2m ) (Formula 7)
Consider b that satisfies
指数法則により、bは、
b=2^(n−2m) (式8)
となる。したがって、nが2のベキ数でない場合の補正値 a’・b は、
a’・b=2・2^(n−2m)=2^(1+n−2m) (式9)
となる。nが2のベキ数の場合は、n−2m=0であるので、(式9)は(式5)と等しくなる。また、(式7)はb=1となる。
According to the power law, b is
b = 2 ^ (n- 2m ) (Formula 8)
It becomes. Therefore, the correction value a ′ · b when n is not a power of 2 is
a ′ · b = 2 · 2 ^ (n−2 m ) = 2 ^ (1 + n−2 m ) (Formula 9)
It becomes. When n is a power number of 2, since n−2 m = 0, (Equation 9) is equal to (Equation 5). Further, in (Expression 7), b = 1.
N−1をmビット毎に区切った剰余乗算では、(式9)の補正値と指数をmビット毎に区切った値を指数とした2のべき数である2^(e[i])の積である
2^(e[i]+1+n−2m) (式10)
を乗じることになる。e[i]はmビットの値なので、最大値は2m−1となる。この値を(式10)に代入すると、2nとなる。これは、n+1ビット長の値であり、コプロのビット長nを超えてしまう。こうしたビット溢れが生ずるのは、e[i]が最大値である2m−1となる場合のみで、それ以外の場合は、(式10)の値は2n未満となり、nビット以下の値であるので、nビット長のコプロセッサで計算ができる。
In the remainder multiplication in which N−1 is divided every m bits, 2 ^ (e [i]), which is a power of 2 with the correction value of (Equation 9) and the value obtained by dividing the exponent every m bits as an exponent. 2 ^ (e [i] + 1 + n- 2m ) which is the product (Formula 10)
Will be multiplied. Since e [i] is an m-bit value, the maximum value is 2 m −1. Substituting this value into (Equation 10) yields 2 n . This is a value of n + 1 bit length, which exceeds the bit length n of co-pro. Such bit overflow occurs only when e [i] is 2 m −1 which is the maximum value, otherwise, the value of (Equation 10) is less than 2 n and is a value of n bits or less. Therefore, calculation can be performed with an n-bit coprocessor.
したがって、e[i]の値が2m−1の場合は、演算数としてR mod Nを用い、e[i]の値が2m−1未満の場合は、演算数として(式10)の2^(e[i]+1+n−2m)を用いる。 Therefore, when the value of e [i] is 2 m −1, R mod N is used as the number of operations, and when the value of e [i] is less than 2 m −1, the number of operations is represented by (Equation 10). 2 ^ (e [i] + 1 + n−2 m ) is used.
また、演算の最初のステップでは、あらかじめ被演算数にはR2 mod Nで初期化しておくので、補正値のbの値は不要である。したがって、指数の最上位を処理する最初のステップでは、e[i]+1の値が2nと等しいか否かを判定し、等しい場合は、演算数としてR mod Nを用い、2n未満の場合は、2^(e[i]+1)を用いる。nが2のベキ数でない場合は、e[i]+1は常に2n未満となるので、nが2のベキ数でないことが予めわかっている場合において、最初のe[i]+1が2nと等しいか否かを検査はしなくてもよい。 In the first step of the calculation, the number of operands is initialized with R 2 mod N in advance, so that the correction value b is not necessary. Therefore, in the first step of processing the top of the exponent, it is determined whether or not the value of e [i] +1 is equal to 2 n, and if so, R mod N is used as the number of operations and less than 2 n In this case, 2 ^ (e [i] +1) is used. If n is not a power of 2, e [i] +1 is always less than 2 n , so if it is known in advance that n is not a power of 2, then the first e [i] +1 is 2 n It is not necessary to check whether or not the same.
モンゴメリ剰余乗算で計算を行う場合には、最終結果からRを取り除く必要があり、通常、1とのモンゴメリ剰余乗算を行うことで、R−1を乗じ、通常の表現に戻す。 When performing computation by Montgomery modular multiplication, it is necessary to remove R from the final result. Usually, by performing Montgomery modular multiplication with 1 , R- 1 is multiplied to return to the normal expression.
本発明では、結果にR2が乗じられているので、最後の2回の剰余乗算で補正を行う。まず、最後から2番目のe[1]を処理する際には、次の剰余乗算の際にR2が乗じられるようにするための補正は不要で、Rのみが残るように、a’・bのうちのbのみの補正値を乗ずればよい。したがって、演算数として、
2^(e[1]+n−2m) (式11)
を乗じる。e[1]+n−2^mの値は、必ず2n未満となるため、2nとの比較は必要ない。この値を乗じた後、m回の自乗演算を行うと、被演算数にはRが乗じられている状態になるので、最後の最下位の指数e[0]を処理する際に、
2^(e[0]) (式12)
を乗じることで、最終結果はモンゴメリ形式ではなく、通常の数値表現になる。以上の手順をアルゴリズム表現すると、以下の如く、
result:=R2 mod N
if e[J−1]+1<2n then
result:=result・2^(e[i]+1)・R−1mod N
else
result:=result・(R mod N)・R−1mod N
end if
for i:=J−2 downTo 2 do
for j:=1 to m do
result:=result2 ・R−1mod N
end for
if e[i]+1+n−2m<2n then
result:=result・2^(e[i]+1+n−2m)・R−1mod N
else
result:=result・(R mod N)・R−1mod N
end if
end for
for j:=1 to m do
result:=result2 ・R−1mod N
end for
result:=result・2^(e[1]+n−2m)・R−1 mod N
for j:=1 to m do
result:=result2 ・R−1mod N
end for
result:=result・2^(e[0])・R−1 mod N
return result
と、表すことができる。
In the present invention, since R 2 is multiplied by the result, correction is performed modulo multiplication of the last two. First, when processing the second e [1] from the end, correction for multiplying R 2 in the next remainder multiplication is unnecessary, and a ′ · What is necessary is just to multiply the correction value of only b of b. Therefore, as the number of operations,
2 ^ (e [1] + n- 2m ) (Formula 11)
Multiply The value of e [1] + n-2 ^ m , since always less than 2 n, no comparison with the 2 n need. After multiplying this value, if m square operations are performed, the number of operands is multiplied by R, so when processing the last lowest exponent e [0],
2 ^ (e [0]) (Formula 12)
By multiplying, the final result is not a Montgomery form, but a normal numerical expression. When the above procedure is expressed as an algorithm,
result: = R 2 mod N
if e [J-1] +1 <2 n then
result: = result · 2 ^ (e [i] +1) · R −1 mod N
else
result: = result · (R mod N) · R −1 mod N
end if
for i: = J-2
for j: = 1 to m do
result: = result 2 · R −1 mod N
end for
if e [i] + 1 + n-2 m <2 n then
result: = result · 2 ^ (e [i] + 1 + n−2 m ) · R −1 mod N
else
result: = result · (R mod N) · R −1 mod N
end if
end for
for j: = 1 to m do
result: = result 2 · R −1 mod N
end for
result: = result · 2 ^ (e [1] + n−2 m ) · R −1 mod N
for j: = 1 to m do
result: = result 2 · R −1 mod N
end for
result: = result · 2 ^ (e [0]) · R −1 mod N
return result
It can be expressed as.
また、(式11)で示される演算数はハミングウエイトが1であり、モンゴメリ剰余乗算コプロでは通常下位側から演算が進められるため、演算数のビットが0となっている部分を処理している間は電流地が小さく、ビットが1となっている部分で大きく消費電流が増加する可能性がある。その場合、消費電流を測定して指数の値をある程度推定することが可能となる。そうした問題を解決するために、演算がNを法とする剰余乗算であることと、剰余乗算の後に剰余二乗算が行われることを利用し、演算数には(式11)の値の代わりに、
N ± 2^(e[i]+1+n−2m) (式13)
を使用することができる。しかし、(式13)では加減算によるキャリーが発生し、キャリーの伝版によるディレイや、最上位ビットからのキャリーの発生による桁あふれが発生する可能性がある。そこで、
N xor 2^(e[i]+1+n−2m) (式14)
の形式にすることで、キャリーは発生しなくなる。(式14)はNの(e[i]+1+n−2m)ビット目のビットが1であるか0であるかにより、加減算のいずれかが行われることと等価で、Nの該当ビットが1であった場合は減算、Nの該当ビットが0であった場合は加算が行われる。排他的論理和(xor)演算ではキャリーの伝播が発生せず、キャリーの伝播に伴うディレイもない上、回路も小さくて済む。
In addition, the number of operations shown in (Equation 11) has a Hamming weight of 1, and the Montgomery remainder multiplication co-pro is normally operated from the lower side, so that the portion where the number of operations is 0 is processed. There is a possibility that current consumption is greatly increased in a portion where the current ground is small and the bit is 1. In that case, it is possible to estimate the index value to some extent by measuring the current consumption. In order to solve such a problem, the fact that the operation is a modular multiplication modulo N and the fact that a modular multiplication is performed after the modular multiplication is used, the number of operations is replaced with the value of (Equation 11). ,
N ± 2 ^ (e [i] + 1 + n- 2m ) (Formula 13)
Can be used. However, in (Equation 13), carry due to addition / subtraction occurs, and there is a possibility that a delay due to carry transmission or overflow due to the occurrence of carry from the most significant bit may occur. there,
By using this form, no carry occurs. (Equation 14) is equivalent to performing either addition or subtraction depending on whether the bit of the (e [i] + 1 + n−2 m ) bit of N is 1 or 0, and the corresponding bit of N is 1 Is subtracted, and if the corresponding bit of N is 0, addition is performed. In the exclusive OR (xor) operation, carry propagation does not occur, there is no delay associated with carry propagation, and the circuit can be small.
(式14)による変形を行うと、演算数のハミングウエイトはほぼビット長の半分となり、消費電流を用いたアタック手法に対して、耐タンパ性が強化される。(式14)の変形を導入した手順をアルゴリズム表現すると、
result:=R2 mod N
if e[J−1]+1<2n then
result:=result・(N xor 2^(e[J−1]+1))・R−1mod N
else
result:=result・(R mod N)・R−1mod N
end if
for i:=J−2 downTo 2 do
for j:=1 to m do
result:=result2 ・R−1mod N
end for
if e[i]+1+n−2m<2n then
result:=result・(N xor 2^(e[i]+1+n−2m))・R−1 mod N
else
result:=result・(R mod N)・R−1 mod N
end if
end for
for j:=1 to m do
result:=result2 ・R−1mod N
end for
result:=result・2^(e[1]+n−2m)・R−1 mod N
for j:=1 to m do
result:=result2 ・R−1mod N
end for
result:=result・2^(e[0])・R−1 mod N
return result
と、表すことができる。
When the transformation according to (Equation 14) is performed, the Hamming weight of the number of operations is approximately half the bit length, and tamper resistance is enhanced compared to the attack method using current consumption. When the procedure that introduces the transformation of (Equation 14) is expressed as an algorithm,
result: = R 2 mod N
if e [J-1] +1 <2 n then
result: = result · (
else
result: = result · (R mod N) · R −1 mod N
end if
for i: = J-2
for j: = 1 to m do
result: = result 2 · R −1 mod N
end for
if e [i] + 1 + n-2 m <2 n then
result: = result · (
else
result: = result · (R mod N) · R −1 mod N
end if
end for
for j: = 1 to m do
result: = result 2 · R −1 mod N
end for
result: = result · 2 ^ (e [1] + n−2 m ) · R −1 mod N
for j: = 1 to m do
result: = result 2 · R −1 mod N
end for
result: = result · 2 ^ (e [0]) · R −1 mod N
return result
It can be expressed as.
この手順に従い、モンゴメリ剰余乗算コプロを用いて2を元とするフェルマーテストを高速に実装することができる。 According to this procedure, a Fermat test based on 2 can be implemented at high speed using Montgomery modular multiplication co-pro.
同様の手法は、モンゴメリ剰余乗算方式ではない通常表現を用いる剰余乗算コプロセッサを用いる場合でも用いることができる。通常の表現を用いる剰余乗算コプロセッサでは、演算数には補正値がいらないので、次の(式15)
N xor 2^(e[i]) (式15)
の値を演算数に用いる。
A similar method can be used even when a remainder multiplication coprocessor using a normal expression that is not the Montgomery remainder multiplication method is used. In the remainder multiplication coprocessor using the normal expression, no correction value is required for the number of operations.
Is used as the number of operations.
(式14)であらわされる剰余乗算の演算数の変形は、剰余乗算後に剰余二乗算により負の値の符号が正となることを前提としているので、最下位のmビット分、すなわちe[0]に対しては用いることができない。したがって、e[0]の場合は(式14)の変形は行わない。以上の手順をアルゴリズム表現すると、
result:=N xor 2^(e[J−1])
for i:=J−2 downTo 1 do
for j:=1 to m do
result:=result2 mod N
end for
result:=result・(N xor 2^(e[i])) mod N
end for
for j:=1 to m do
result:=result2 mod N
end for
result:=result・2^(e[0]) mod N
return result
と、表すことができる。
The modification of the number of operations of the remainder multiplication expressed by (Equation 14) is based on the premise that the sign of a negative value becomes positive by the remainder multiplication after the remainder multiplication. Therefore, the least significant m bits, that is, e [0 ] Cannot be used. Therefore, in the case of e [0], the transformation of (Equation 14) is not performed. When the above procedure is expressed as an algorithm,
result: =
for i: = J-2
for j: = 1 to m do
result: = result 2 mod N
end for
result: = result · (
end for
for j: = 1 to m do
result: = result 2 mod N
end for
result: = result · 2 ^ (e [0]) mod N
return result
It can be expressed as.
以上の手順を用いれば、モンゴメリ型剰余乗算器あるいは剰余乗算器のいずれを用いた場合でも、メモリ容量を消費せずに高速にフェルマーテストを行って素数判定が可能になる。 By using the above procedure, it is possible to perform prime number determination by performing a Fermat test at high speed without consuming a memory capacity, regardless of whether a Montgomery type remainder multiplier or a remainder multiplier is used.
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。 The effects obtained by the representative ones of the inventions disclosed in the present application will be briefly described as follows.
すなわち、メモリ容量を消費せずに高速にフェルマーテストによって素数判定を行うことができるデータ処理装置を提供することができる。 That is, it is possible to provide a data processing apparatus that can perform prime number determination by a Fermat test at high speed without consuming memory capacity.
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
1. First, an outline of a typical embodiment of the invention disclosed in the present application will be described. Reference numerals in the drawings referred to in parentheses in the outline description of the representative embodiments merely exemplify what are included in the concept of the components to which the reference numerals are attached.
〔1〕本発明に係るデータ処理装置(図1、図7、図9、図10、図11)は、モンゴメリ剰余乗算を行うモンゴメリ剰余乗算器を備えたコプロセッサと、プログラムを実行し前記コプロセッサを制御する中央処理装置とを有し、前記中央処理装置の制御によってデータ処理を行なうことにより、外部より与えられた素数候補Nに対して、2(N−1)mod Nを計算してフェルマーテストを実行する。前記データ処理は、
前記素数候補Nを記憶する処理と、
Nのビット長nを記憶する処理と、
log2(n)を超えない最大の整数mを計算して(図9のステップ7010)記憶する処理と、
前記素数候補Nから、N−1を計算し、JをJ≧n/mとなる最小の整数としたときに(図9のステップ7020)、(N−1)を最下位からmビットごとにJ個の区間に区切り、(N−1)=2(J−1)m・e[J−1]+2(J−2)m・e[J−2]+…+2m・e[1]+e[0]なる式を満たすように(N−1)を部分指数e[0],e[1],…,e[J−1]に分割する指数部切り出し処理と (図9のステップ7030)、
前記指数部切り出し処理により切り出されたmビットの値e[i]から2^(e[i]+1+n−2m)を生成する2のベキ乗生成処理と(図9のステップ7060の一部分)、
前記指数部切り出し処理で切り出された部分指数の最上位の値に1を加えたe[J−1]+1が2nと等しい場合は(図9のステップ7050)、R mod N=2n mod Nの演算結果と、R2 mod N=22n mod Nの演算結果との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を第1記憶領域に格納する第1処理と (図9のステップ7070)、
前記e[J−1]+1が2n未満の場合は、前記2のベキ乗生成手段により計算した2^(e[J−1]+1)と、前記R2modN=22n mod Nの演算結果との前記Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1の記憶領域に格納する第2処理と (図9のステップ7060)、
前記第1処理又は前記第2処理のいずれか一方の処理の後に内部の状態変数iをJ−2とする第3処理と(図9のステップ7080)、
前記第3処理の後に、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に書き戻す動作をm回繰り返す第4処理と(図10のステップ7090)、
前記第4処理の後に、前記指数部切り出し処理で切り出された部分指数e[i]が2m−1未満の場合は(図10のステップ7100)、前記2のベキ乗生成処理により生成された2^(e[i]+1+n−2m)と前記第1の記憶領域に格納された値との前記Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第5処理と(図10のステップ7110)、
前記第5処理の後に、前記内部状態変数iから1を引いた値を前記内部状態変数iに格納し(図10のステップ7130)、前記iの値が2以上の場合は前記第4処理に戻り、前記iの値が1以下になるまでそれを繰り返す第6処理と、
前記第6処理の後に、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に書き込む動作をm回繰り返す第7処理と(図11のステップ7150)、
前記第7処理の後、前記2のベキ乗生成処理により計算された2^(e[1]+n−2m)と、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第8処理と(図11のステップ7160)、
前記第8処理の後、前記モンゴメリ剰余乗算装置により、前記素数候補Nを法とし、前記第1記憶領域に格納された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第9処理と(図11のステップ7170)、
前記第9処理の後、前記2のベキ乗生成処理により計算された2^(e[0])と、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行って(図11のステップ7180)、その演算結果をフェルマーテスト結果として出力する第10処理とを含む。
[1] A data processing apparatus according to the present invention (FIGS. 1, 7, 9, 10, and 11) includes a coprocessor including a Montgomery residue multiplier that performs Montgomery residue multiplication, a program, A central processing unit that controls the processor, and by processing data under the control of the central processing unit, 2 (N-1) mod N is calculated for a prime number candidate N given from the outside. Run the Fermat test. The data processing is
Storing the prime candidate N;
A process of storing a bit length n of N;
processing to calculate and store the largest integer m not exceeding log 2 (n) (
When N-1 is calculated from the prime candidate N and J is the smallest integer such that J ≧ n / m (
A power-of-two generation process for generating 2 ^ (e [i] + 1 + n−2 m ) from the m-bit value e [i] cut out by the exponent part cut-out process (part of
When e [J-1] +1, which is obtained by adding 1 to the highest value of the partial exponent extracted by the exponent segmentation processing, is equal to 2 n (
When e [J-1] +1 is less than 2 n, the calculation of 2 ^ (e [J-1] +1) calculated by the power-of-two generating unit and R 2 mod N = 2 2n mod N A second process for performing Montgomery modular multiplication on the result modulo N and storing the calculation result in the first storage area (
A third process in which an internal state variable i is set to J-2 after either the first process or the second process (
After the third process, the prime candidate N is used as a modulus, and the operation of performing the Montgomery modular multiplication of the values stored in the first storage area and writing the calculation result back to the first storage area is repeated m times. The fourth process (
After the fourth process, when the partial index e [i] cut out by the exponent part cut-out process is less than 2 m −1 (
After the fifth process, a value obtained by subtracting 1 from the internal state variable i is stored in the internal state variable i (
After the sixth process, the prime candidate N is used as a modulus, and the operation of performing the Montgomery remainder multiplication of the values stored in the first storage area and writing the calculation result in the first storage area is repeated m times. 7 processing (
After the seventh process, the prime candidate N of 2 ^ (e [1] + n-2 m ) calculated by the power-of-two generation process and the value stored in the first storage area is modulo An eighth process of performing a Montgomery modular multiplication and storing the calculation result in the first storage area (
After the eighth processing, the Montgomery residue multiplication device modulo the prime candidate N, performs Montgomery residue multiplication between the values stored in the first storage area, and stores the calculation result in the first storage area. A ninth process of repeating the storing operation m times (
After the ninth process, the Montgomery residue modulo the prime candidate N between 2 ^ (e [0]) calculated by the power-of-two generation process and the value stored in the first storage area And a tenth process of performing multiplication (
〔2〕項1のデータ処理装置において、前記プログラムを格納したメモリを更に有し、1個の半導体基板に形成される。
[2] The data processing apparatus according to
〔3〕別の観点によるデータ処理装置(図4、図7、図12、図13、図14)は、モンゴメリ剰余乗算を行うモンゴメリ剰余乗算器を備えたコプロセッサと、プログラムを実行し前記コプロセッサを制御する中央処理装置とを有し、前記中央処理装置の制御によってデータ処理を行なうことにより、外部より与えられた素数候補Nに対して、2(N−1)mod Nを計算してフェルマーテストを実行する。前記データ処理は、
前記素数候補Nを記憶する処理と、
Nのビット長nを記憶する処理と、
log2(n)を超えない最大の整数mを計算して(図12のステップ7010)記憶する処理と、
前記素数候補Nから、N−1を計算し、JをJ≧n/mとなる最小の整数としたときに(図12のステップ7020)、(N−1)を最下位からmビットごとにJ個の区間に区切り、(N−1)=2(J−1)m・e[J−1]+2(J−2)m・e[J−2]+…+2m・e[1]+e[0]なる式を満たすように(N−1)を部分指数e[0],e[1],…,e[J−1]に分割する指数部切り出し処理と(図12のステップ7030)、
前記指数部切り出し処理により切り出されたmビットの値e[i]から2^(e[i]+1+n−2m)
を生成する2のベキ乗生成処理と、
前記指数部切り出し処理により切り出された部分指数の最上位の値に1を加えたe[J−1]+1が2nと等しい場合は(図12のステップ7050)、R mod N=2n mod Nの演算結果と、R2 mod N=22n mod Nの演算結果との前記素数候補Nを法とするモンゴメリ剰余乗算を行って(図12のステップ7070)、その演算結果を第1記憶領域に格納する第1処理と、
前記e[J−1]+1が2n未満の場合は、前記2のベキ乗生成手段により計算した2^(e[J−1]+1)と前記素数候補Nとの排他的論理和(図4の3032)を取った値と、前記R2 mod N=22n mod Nの演算結果との前記Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第2処理と(図12のステップ8060)、
前記第1処理又は第2処理のいずれか一方の処理の後に内部の状態変数iをJ−2とする第3処理と (図12のステップ7080)、
前記第3処理の後に、前記素数候補Nを法とし、前記第1記憶領域に格納された値同士のモンゴメリ剰余乗算を行ってその4演算結果を前記第1記憶領域に格納する動作をm回繰り返す第4処理と(図12のステップ7090)、
前記第4処理の後に、前記指数部切り出し処理で切り出された部分指数e[i]が2m−1未満の場合は(図13のステップ7100)、前記2のベキ乗生成処理により生成された2^(e[i]+1+n−2m)と前記素数候補Nとの排他的論理和(図4の3032)が採られた値と、前記第1記憶領域に格納されている値との前記素数候補Nを法とするモンゴメリ剰余乗算を行って(図13のステップ8110)その演算結果を前記第1記憶領域に格納する第5処理と、
前記第4処理の後に、前記指数部切り出し処理で切り出された部分指数e[i]が2m−1と等しい場合は、前記R mod N=2n mod Nと、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行って(図13のステップ7120)その演算結果を前記第1記憶領域に格納する第6処理と、
前記第5処理又は第6処理のいずれか一方の処理の後に前記内部状態変数iから1を引いた値を前記内部状態変数iに格納し(図13のステップ7130)、前記iの値が2以上の場合は、前記第3処理に戻り(図13のステップ7140)、前記iの値が1以下になるまでそれを繰り返す第7処理と、
前記第7処理の後に前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第8処理と(図14のステップ7150)、
前記第8処理の後、前記2のベキ乗生成処理で生成された2^(e[1]+n−2m)と、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第9処理と(図14のステップ7160)、
前記第9処理の後、前記素数候補Nを法とし、前記第1記憶領域に格納された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第10処理と(図14のステップ7170)、
前記第10処理の後、前記2のベキ乗生成処理により生成された2^(e[0])と前記第1記憶領域に格納された値との前記Nを法とするモンゴメリ剰余乗算を行って(図14のステップ7180)、その演算結果をフェルマーテスト結果として出力する第11処理とを含む。
[3] A data processing apparatus (FIGS. 4, 7, 12, 13, and 14) according to another aspect executes a program, a coprocessor including a Montgomery residue multiplier for performing Montgomery residue multiplication, A central processing unit that controls the processor, and by processing data under the control of the central processing unit, 2 (N-1) mod N is calculated for a prime number candidate N given from the outside. Run the Fermat test. The data processing is
Storing the prime candidate N;
A process of storing a bit length n of N;
processing to calculate and store the largest integer m not exceeding log 2 (n) (
When N−1 is calculated from the prime candidate N and J is set to the smallest integer satisfying J ≧ n / m (
From the m-bit value e [i] cut out by the exponent part cut-out process, 2 ^ (e [i] + 1 + n−2 m ).
Generating a power of 2 to generate
When e [J−1] +1, which is obtained by adding 1 to the highest value of the partial exponent extracted by the exponent segmentation process, is equal to 2 n (
When e [J-1] +1 is less than 2 n , an exclusive OR of 2 ^ (e [J-1] +1) calculated by the power-of-two generating means 2 and the prime candidate N (see FIG. 4 and 3032) and the operation result of R 2 mod N = 2 2n mod N is subjected to Montgomery modular multiplication modulo N, and the operation result is stored in the first storage area. 2 processing (
A third process in which the internal state variable i is set to J-2 after either the first process or the second process (
After the third processing, the prime candidate N is used as a modulus, and Montgomery modular multiplication of the values stored in the first storage area is performed, and the operation result of storing the four calculation results in the first storage area is m times. A fourth process to repeat (
After the fourth process, when the partial index e [i] cut out by the exponent part cut-out process is less than 2 m −1 (
After the fourth process, when the partial index e [i] cut out by the exponent part cutout process is equal to 2 m −1, the R mod N = 2 n mod N is stored in the first storage area. A sixth process of performing a Montgomery residue multiplication modulo the prime candidate N with the obtained value (
After either one of the fifth process and the sixth process, a value obtained by subtracting 1 from the internal state variable i is stored in the internal state variable i (
After the seventh process, the prime candidate N is used as a modulus, and the operation of performing Montgomery modular multiplication of the values stored in the first storage area and storing the calculation result in the first storage area is repeated m times. 8 processing (
After the eighth process, the prime candidate N of 2 ^ (e [1] + n-2 m ) generated by the power-of-two generation process and the value stored in the first storage area is modulo A ninth process for performing a Montgomery residue multiplication and storing the calculation result in the first storage area (
After the ninth process, the prime candidate N is used as a modulus, and the operation of performing Montgomery modular multiplication of the values stored in the first storage area and storing the calculation result in the first storage area is repeated m times. The tenth process (
After the tenth processing, Montgomery modular multiplication is performed modulo N of 2 ^ (e [0]) generated by the power-of-two generation processing and the value stored in the first storage area. (
〔4〕項3のデータ処理装置は、前記プログラムを格納したメモリを更に有し、1個の半導体基板に形成される。
[4] The data processing apparatus according to
〔6〕別の観点によるデータ処理装置(図3、図7、図12、図13、図14)は、モンゴメリ剰余乗算を行うモンゴメリ剰余乗算器を備えたコプロセッサと、プログラムを実行し前記コプロセッサを制御する中央処理装置とを有し、前記中央処理装置の制御によってデータ処理を行なうことにより、外部より与えられた素数候補Nに対して、2(N−1)mod Nを計算してフェルマーテストを実行する。前記データ処理は、
前記素数候補Nを記憶する処理と、
Nのビット長nを記憶する処理と、
log2(n)を超えない最大の整数mを計算して(図12のステップ7010)記憶する処理と、
前記素数候補Nから、N−1を計算し、JをJ≧n/mとなる最小の整数としたときに(図12のステップ7020)、(N−1)を最下位からmビットごとにJ個の区間に区切り、(N−1)=2(J−1)m・e[J−1]+2(J−2)m・e[J−2]+…+2m・e[1]+e[0]なる式を満たすように(N−1)を部分指数e[0],e[1],…,e[J−1]に分割する指数部切り出し処理と(図12のステップ7030)、
前記指数部切り出し処理により切り出されたmビットの値e[i]から2^(e[i]+1+n−2m)を生成する2のベキ乗生成処理と、
前記指数部切り出し処理により切り出された部分指数の最上位の値に1を加えたe[J−1]+1が2nと等しい場合は(図12のステップ7050)、R mod N=2n mod Nの演算結果と、R2 mod N=22n mod Nの演算結果との前記素数候補Nを法とするモンゴメリ剰余乗算を行って(図12のステップ7070)その演算結果を第1記憶領域に格納する第1処理と、
前記e[J−1]+1が2n未満の場合は、前記Nのe[J−1]+1ビット目の値を指定ビット反転器(3020)により反転した値と前記R2 mod N=22n mod Nの演算結果との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第2処理と(図12のステップ8086)、
前記第1処理又は第2処理のいずれか一方の処理の後に内部の状態変数iをJ−2とする第3処理と(図12のステップ7080)、
前記第3処理の後に、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第4処理と (図13のステップ7090)、
前記第4処理の後に、前記指数部切り出し処理によって切り出された部分指数e[i]が2m−1未満の場合は(図13のステップ7100)、前記Nのe[i]+1+n−2mビット目の値を前記指定ビット反転器(3020)により反転した値と前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に記憶する第5処理と (図13のステップ8110)、
前記第4処理の後に、前記指数部切り出し処理によって切り出された部分指数e[i]が2m−1と等しい場合は、前記R mod N=2n mod Nの演算結果と前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第6処理と(図13のステップ7120)、
前記第5処理又は第6処理のいずれか一方の処理の後に、前記内部状態変数iから1を引いた値を前記内部状態変数iに格納し(図13のステップ7130)、前記iの値が2以上の場合は、前記第3処理に戻り(図13のステップ7140)、前記iの値が1以下になるまでそれを繰り返す第7処理と、
前記第7処理の後に、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第8処理と(図14のステップ7150)、
前記第8処理の後、前記2のベキ乗生成手段により計算した2^(e[1]+n−2m)と前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算をおこなってその演算結果を前記第1記憶領域に格納する第9処理と(図14のステップ7160)、
前記第9処理の後、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第10処理と(図14のステップ7170)、
前記第10処理の後、前記2のベキ乗生成処理により生成された2^(e[0])と、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行って(図14のステップ7180)その演算結果をフェルマーテスト結果として出力する第11処理とを含む、データ処理装置。
[6] A data processing apparatus (FIGS. 3, 7, 12, 13, and 14) according to another aspect executes a program, a coprocessor having a Montgomery residue multiplier for performing Montgomery residue multiplication, A central processing unit that controls the processor, and by processing data under the control of the central processing unit, 2 (N-1) mod N is calculated for a prime number candidate N given from the outside. Run the Fermat test. The data processing is
Storing the prime candidate N;
A process of storing a bit length n of N;
processing to calculate and store the largest integer m not exceeding log 2 (n) (
When N−1 is calculated from the prime candidate N and J is set to the smallest integer satisfying J ≧ n / m (
2 power generation processing for generating 2 ^ (e [i] + 1 + n−2 m ) from the m-bit value e [i] cut out by the exponent part cut-out processing;
When e [J−1] +1, which is obtained by adding 1 to the highest value of the partial exponent extracted by the exponent segmentation process, is equal to 2 n (
When e [J-1] +1 is less than 2n, a value obtained by inverting the value of the e [J-1] +1 bit of N by a designated bit inverter (3020) and the R 2 mod N = 2 A second process of performing a Montgomery remainder multiplication modulo the prime candidate N with the 2n mod N operation result and storing the operation result in the first storage area (step 8086 in FIG. 12);
A third process in which the internal state variable i is set to J-2 after either the first process or the second process (
After the third process, the prime candidate N is used as a modulus, and Montgomery modular multiplication of the values stored in the first storage area is performed and the operation result is stored m times in the first storage area. The fourth process (
When the partial index e [i] cut out by the exponent part cut-out process after the fourth process is less than 2 m −1 (
When the partial index e [i] cut out by the exponent part cutout process after the fourth process is equal to 2 m −1, the calculation result of the R mod N = 2 n mod N and the first storage area A sixth process of performing a Montgomery residue multiplication modulo the prime candidate N with the value stored in the value and storing the calculation result in the first storage area (
After one of the fifth process and the sixth process, a value obtained by subtracting 1 from the internal state variable i is stored in the internal state variable i (
After the seventh process, the prime candidate N is used as a modulus, the Montgomery modular multiplication of the values stored in the first storage area is performed, and the operation of storing the calculation result in the first storage area is repeated m times. The eighth process (
After the eighth process, modulo the prime candidate N between 2 ^ (e [1] + n-2 m ) calculated by the power-of-two generating means and the value stored in the first storage area A ninth process for performing a Montgomery modular multiplication and storing the calculation result in the first storage area (
After the ninth process, the prime candidate N is used as a modulus, and the operation of performing Montgomery modular multiplication of the values stored in the first storage area and storing the calculation result in the first storage area is repeated m times. The tenth process (
After the tenth processing, the Montgomery residue modulo the prime candidate N between 2 ^ (e [0]) generated by the power-of-two generation processing and the value stored in the first storage area A data processing apparatus including an eleventh process of performing multiplication (
〔6〕項5のデータ処理装置は、前記プログラムを格納したメモリを更に有し、1個の半導体基板に形成される。
[6] The data processing apparatus according to
2.実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
2. Details of Embodiments Embodiments will be further described in detail. DESCRIPTION OF EMBODIMENTS Hereinafter, embodiments for carrying out the present invention will be described in detail with reference to the drawings. Note that components having the same function are denoted by the same reference symbols throughout the drawings for describing the embodiments for carrying out the invention, and the repetitive description thereof will be omitted.
<<第1の実施形態>>
図1はフェルマーテストを実行する本発明に係るデータ処理装置1を機能ブロックダイヤグラムで示すものであり、図9、図10及び図11に示される本発明によるフェルマーテスト高速演算手順を実現する。データ処理装置1は、図7に例示されるモンゴメリ剰余乗算器(6050)及び演算レジスタ(6060,6070,6080)等を備えたモンゴメリ乗算コプロセッサ(6040)と共に、プログラムを実行してモンゴメリ乗算コプロセッサ6040等を制御する中央処理装置(6010)とメモリ(6020)等を有し、相互にバス6030で接続される。メモリ(6020)はプログラム(PGM)を格納する電気的に書換え可能な不揮発性メモリと、変数やデータ(DAT)等の格納に利用されるSRAM等のランダムアクセスメモリから成る。このデータ処理装置1は例えば、図17に示されるような1個の半導体基板に形成されたICカード用マイクロコンピュータ107として実現される。図17ではICカード用マイクロコンピュータ107はICカード基板108に搭載されている。ICカード用マイクロコンピュータ107は、プログラムや重要な情報がオンチップのメモリに格納されており、外部からそれらの情報に直接アクセスすることができない。ようになっている。外部との通信は、I/Oピン(106)のみを介して、完全にICカードチップの制御下で行われ、通常情報は暗号化した状態で送受信され、情報の秘匿性が実現されている。暗号通信を行うためには、通信する相手と暗号鍵の共有を行う必要がある。事前に鍵を通信相手と共有しておく方法もあるが、一度鍵が判明してしまうと、暗号化した通信内容が復号化されてしまう。そこで、通信に用いる暗号鍵をランダムに生成し、相手に鍵を送信し、その鍵を用いて通信するという方法が一般的に用いられている。外部インタフェース端子として、Vccピン101、リセットピン102、クロック入力ピン103、グランドピン104、不揮発メモリプログラム用電源ピン105、及びI/Oピン106を有する。
<< First Embodiment >>
FIG. 1 shows a functional block diagram of a
ICカード用マイクロコンピュータ107はオンチップのメモリ等の限られた演算リソースを用いて暗号通信に使用する暗号鍵を生成する機能を備える。暗号鍵にはビット数の多い素数を用いることになり、その素数性を判定する演算処理の第1の例について説明する。
The
図1において法レジスタN(1000)は外部より素数候補Nを入力して格納し、ビットnレジスタ(1010)は、外部より素数候補Nのビット数nを入力して格納する。log2(n)を超えない最大の整数を与えるlog2計算装置(1030)により、log2(n)を超えない最大の整数mが得られる。1030の出力する値の種類は、log2(nの最大値)であるので、実際には計算を行わずにテーブル引きや、nの非零のビットのうちの最上位のビットの位置から求めることができる。たとえば、
n0:=n
m:=0
while n0>1
m:=m+1
n0:=n0>>1
end while
としてもよい。この処理は、図9の7010のステップに相当する。1030で求められたmはmを格納するレジスタ(1020)に格納される。整数除算器(1040)により、n/mの小数点以下を切り上げた値が求められ、セレクタ(1050)により1040の出力が選択され、カウンタi(1060)にセットされる。この処理は、図9のステップ7020に相当する。カウンタiは、mビットごとに分割された(N−1)の何番目の部分ビットを取り出すのかを指定するために用いられる。一方、演算器(1100)により、R2 mod N=22n mod Nが計算され、結果レジスタ(1160)に格納される。図1においてその格納パスは図示が省略されている。この処理は図9のステップ7040に相当する。図9の“result”は前記結果レジスタ’1160)を意味する。つぎに、R mod N=2n mod Nが計算され、レジスタ(1110)に格納される。この処理は、図9のステップ7070で用いるRmodNの準備に相当する。iの値にしたがって、指数切り出し部(1080)により、(N−1)の最上位が切り出され、演算数生成装置(1090)により、2^(e[i]+1)が生成される。つぎに、mビット長の値すべてのビットが1である値を生成する2m−1生成器(1120)の値と1090により切り出された指数との比較が比較器(1130)により行われ、等しい場合はセレクタ(1140)はレジスタ(1110)を選択し、そうでない場合は演算数生成装置(1090)の出力が選択される。モンゴメリ剰余乗算器(1150)により、結果レジスタ(1160)の値とセレクタ(1140)に選択された値とのモンゴメリ剰余乗算が行われ、結果レジスタ(1160)に格納される。この処理は、図9のステップ7050、7060,7070に相当する。減算器(1070)により、カウンタi(1060)の値はデクリメントされ、デクリメントされた結果がセレクタ(1050)に選択され、カウンタi(1070)が更新される。この処理は図9のステップ7080に相当する。
In FIG. 1, the modulus register N (1000) receives and stores a prime number candidate N from the outside, and the bit n register (1010) inputs and stores the bit number n of the prime number candidate N from the outside. The log 2 largest log 2 computing device that provides an integer not exceeding (n) (1030), the maximum integer m not exceeding log 2 (n) of is obtained. Since the type of the value output by 1030 is log 2 (maximum value of n), the table is not actually calculated, and it is obtained from the position of the most significant bit among the non-zero bits of n. be able to. For example,
n0: = n
m: = 0
while n0> 1
m: = m + 1
n0: = n0 >> 1
end while
It is good. This process corresponds to step 7010 in FIG. M obtained in 1030 is stored in a register (1020) for storing m. A value obtained by rounding up the decimal point of n / m is obtained by the integer divider (1040), the output of 1040 is selected by the selector (1050), and set to the counter i (1060). This process corresponds to step 7020 in FIG. The counter i is used to designate the (N−1) th partial bits to be extracted every m bits. On the other hand, R 2 mod N = 2 2n mod N is calculated by the computing unit (1100) and stored in the result register (1160). In FIG. 1, the storage path is not shown. This process corresponds to step 7040 in FIG. "Result" in FIG. 9 means the result register '1160). Next, R mod N = 2 n mod N is calculated and stored in the register (1110). This process corresponds to the preparation of RmodN used in
モンゴメリ剰余乗算演算モード制御部(1200)は次にモンゴメリ剰余乗算器(1150)の演算モードを二乗算に変更し、セレクタ(1170)を介してカウンタj(1180)を初期化する。モンゴメリ剰余乗算演算モード制御部は(1200)は、カウンタj(1180)を減算器(1190)で1回デクリメントする毎に、モンゴメリ剰余乗算器(1150)を用いて、結果レジスタ(1160)の値をモンゴメリ剰余二乗算し結果レジスタ(1160)に格納する処理を、カウンタj(1180)がゼロになるまで行う。これは、図10のステップ7090に相当する。つぎに、カウンタi(1060)の値にしたがって、指数切り出し部(1080)により、(N−1)の部分ビットが切り出され、比較器(1130)により2m−1と比較される。比較結果により、セレクタ(1140)により、演算数生成装置(1090)の出力かR mod Nを格納したレジスタ(1110)が選択され、結果レジスタ(1160)の値と剰余乗算が行われる。これは、図10のステップ7100,7110,7120の処理に相当する。剰余乗算が終了したら、カウンタi(1060)の値を演算器(1070)によりデクリメントし、カウンタi(1060)の値が1以上の場合は、図9のステップ7090に相当する処理から繰り返す。
The Montgomery residue multiplication operation mode control unit (1200) then changes the operation mode of the Montgomery residue multiplier (1150) to double multiplication, and initializes the counter j (1180) via the selector (1170). The Montgomery remainder multiplication operation mode control unit (1200) uses the Montgomery remainder multiplier (1150) to decrement the value of the result register (1160) every time the counter j (1180) is decremented once by the subtracter (1190). Is multiplied by the Montgomery remainder and stored in the result register (1160) until the counter j (1180) becomes zero. This corresponds to Step 7090 in FIG. Next, according to the value of the counter i (1060), the exponent cutout unit (1080) cuts out the partial bits of (N−1) and compares them with 2 m −1 by the comparator (1130). Based on the comparison result, the selector (1140) selects the output of the operation number generator (1090) or the register (1110) storing R mod N, and performs the remainder multiplication with the value of the result register (1160). This corresponds to the processing of
カウンタi(1060)の値が1の場合は、モンゴメリ剰余乗算器(1150)の演算モードを二乗算に変更し、セレクタ(1170)を介してカウンタj(1180)を初期化する。モンゴメリ剰余乗算演算モード制御部は(1200)は、カウンタj(1180)を減算器(1190)で1回デクリメントする毎に、モンゴメリ剰余乗算器(1150)を用いて、結果レジスタ(1160)の値をモンゴメリ剰余二乗算し結果レジスタ(1160)に格納する処理を、カウンタj(1180)がゼロになるまで行う。これは、図11のステップ7150に相当する。 When the value of the counter i (1060) is 1, the operation mode of the Montgomery remainder multiplier (1150) is changed to double multiplication, and the counter j (1180) is initialized via the selector (1170). The Montgomery remainder multiplication operation mode control unit (1200) uses the Montgomery remainder multiplier (1150) to decrement the value of the result register (1160) every time the counter j (1180) is decremented once by the subtracter (1190). Is multiplied by the Montgomery remainder and stored in the result register (1160) until the counter j (1180) becomes zero. This corresponds to step 7150 in FIG.
つぎに、カウンタi(1060)の値にしたがって、指数切り出し部(1080)により、(N−1)の最下位から2番目のmビットが取り出される。カウンタi(1060)が1の場合は、演算数生成装置(1090)を常に選択し、結果レジスタ(1160)の値と剰余乗算が行われる。これは、図11のステップ7160の処理に相当する。剰余乗算が終了したら、カウンタi(1060)の値が演算器(1070)によりデクリメントされ、カウンタi(1060)に設定される。
Next, according to the value of the counter i (1060), the exponent mute unit (1080) extracts the second m bits from the least significant bit of (N-1). When the counter i (1060) is 1, the operation number generation device (1090) is always selected, and the value of the result register (1160) is subjected to modular multiplication. This corresponds to the processing of
モンゴメリ剰余乗算器(1150)の演算モードが二乗算に変更され、セレクタ(1170)を介してカウンタj(1180)が初期化される。モンゴメリ剰余乗算演算モード制御部は(1200)は、カウンタj(1180)を減算器(1190)で1回デクリメントする毎に、モンゴメリ剰余乗算器(1150)を用いて、結果レジスタ(1160)の値をモンゴメリ剰余二乗算し結果レジスタ(1160)に格納する処理を、カウンタj(1180)がゼロになるまで行う。これは、図11のステップ7170に相当する。 The operation mode of the Montgomery remainder multiplier (1150) is changed to double multiplication, and the counter j (1180) is initialized via the selector (1170). The Montgomery remainder multiplication operation mode control unit (1200) uses the Montgomery remainder multiplier (1150) to decrement the value of the result register (1160) every time the counter j (1180) is decremented once by the subtracter (1190). Is multiplied by the Montgomery remainder and stored in the result register (1160) until the counter j (1180) becomes zero. This corresponds to Step 7170 in FIG.
最後に、カウンタi(1060)の値にしたがって、指数切り出し部(1080)により、(N−1)の最下位のmビットを取り出す。カウンタi(1060)が0の場合は、演算数生成装置(1090)を常に選択し、結果レジスタ(1160)の値と剰余乗算が行われる。これは、図11のステップ7180の処理に相当する。剰余乗算が終了したら、結果レジスタ(1160)に2^(N−1)mod Nの値が格納され、処理が終了する。
Finally, according to the value of the counter i (1060), the exponent cutout unit (1080) extracts the least significant m bits of (N−1). When the counter i (1060) is 0, the operation number generation device (1090) is always selected, and the value of the result register (1160) and the remainder multiplication are performed. This corresponds to the processing in
図2はR2mod Nを計算する演算器(1100)の詳細を示す。演算器(1100)は、法N(1000)およびビット長n(1010)が入力されると、演算器(2010)により、2RmodNが計算される。ここで、2R=2n+1である。nビット目が1になるまでNが左ビットシフトされ、2n+1から左シフトしされたNの値が減算されて2RmodNレジスタ(2020)に格納すされる。Nは素数候補であるから奇数であるので、必ずn−1ビット目以下にゼロでないビットを含む。したがって、Nを左シフトした値は2nよりも大きな値となるので、2n+1から左シフトしたNの値を減算した結果は、2nよりも小さな値となる。2RmodN(2020)に格納される値は、2n未満であれば、正確にmodNを求めなくとも良い。 FIG. 2 shows details of a computing unit (1100) for calculating R 2 mod N. When the modulus N (1000) and the bit length n (1010) are input to the computing unit (1100), 2RmodN is calculated by the computing unit (2010). Here, 2R = 2n + 1 . N is left-bit shifted until the n-th bit becomes 1, and the value of N shifted left from 2 n + 1 is subtracted and stored in the 2RmodN register (2020). Since N is an odd number because it is a prime number candidate, the n-1th bit or less always includes a non-zero bit. Therefore, since the value obtained by shifting N to the left is greater than 2 n, the result of subtracting the value of N shifted left from 2 n + 1 is a value smaller than 2 n . If the value stored in 2RmodN (2020) is less than 2n, it is not necessary to accurately calculate modN.
2SmodNレジスタ(2060)には、2n−N=Rを代入しておく。Rはモンゴメリ剰余乗算では1と等価である。2RmodNレジスタ(2020)に格納されている値は、2tRmodNと表記するとt=1に相当する。モンゴメリ剰余乗算器を用いて、モンゴメリ剰余二乗算を1回行うと、tが倍となる。モンゴメリ剰余二乗算を行った後は、結果は演算数レジスタ(2030)に格納される。R2modNは、2nRmodNと等しいので、R2modNを計算するには、モンゴメリ剰余二乗算を行い、tの値が変わるたびに、tとnの値の論理積(AND)を採り、ゼロでない場合は、演算数(2030)と2SmodNレジスタ(2060)を入力とし、モンゴメリ剰余乗算器(2050)で剰余乗算を行い、結果を2SmodNレジスタ(2060)に格納するという処理を行う。次に、ふたたび演算数レジスタ(2030)の値をモンゴメリ剰余二乗算する処理を行い、tとnの値のANDをとり、ゼロでない場合は、演算数(2030)と2SmodNレジスタ(2060)を入力とし、モンゴメリ剰余乗算器(2050)剰余乗算を行い、結果を2SmodNレジスタ(2060)に格納するという処理を、2t>nとなるまで繰り返す。この処理が終了すると、2SmodNレジスタ(2060)にはR2modNが格納される。
2 n -N = R is assigned to the 2 S modN register (2060). R is equivalent to 1 in Montgomery modular multiplication. Value stored in 2RmodN register (2020) is equivalent to t = 1 when expressed as 2 t RmodN. When the Montgomery remainder double multiplication is performed once using the Montgomery remainder multiplier, t is doubled. After performing Montgomery modular multiplication, the result is stored in the operation number register (2030). Since R 2 modN is equal to 2 n RmodN, in order to calculate R 2 modN, Montgomery modular multiplication is performed, and whenever t changes, the logical product (AND) of t and n is taken, If it is not zero, the
<<第2の実施形態>>
図3はフェルマーテストを実行する本発明に係るデータ処理装置2を機能ブロックダイヤグラムで示すものであり、図12、図13及び図14に示される本発明によるフェルマーテスト高速演算手順を実現する。データ処理装置1は図7で説明したのと同様にモンゴメリ剰余乗算器(6050)及び演算レジスタ(6060,6070,6080)等を備えたモンゴメリ乗算コプロセッサ(6040)と共に、プログラムを実行してモンゴメリ乗算コプロセッサ6040等を制御する中央処理装置(6010)とメモリ(6020)等を有し、例えば図17に例示されるようなICカード用マイクロコンピュータ107として実現される。データ処理装置2で構成されたICカード用マイクロコンピュータ107はオンチップのメモリ等の限られた演算リソースを用いて暗号通信に使用する暗号鍵を生成する機能を備え、暗号鍵と種いて用いる乱数の素数性を判定する演算処理の第2の例について説明する。
<< Second Embodiment >>
FIG. 3 is a functional block diagram showing the
図3において、法レジスタN(1000)は外部より素数候補Nを入力し、格納し、法ビットnレジスタ(1010)は、外部より素数候補のビット数nを入力し、格納する。log2(n)を超えない最大の整数を与えるlog2計算装置(1030)により、log2(n)を超えない最大の整数mが得られる。この処理は、図12の7010のステップに相当する。1030で求められたmはmを格納するレジスタ(1020)に格納される。整数除算器(1040)により、n/mの少数点以下を切り上げた値が求められ、セレクタ(1050)により1040の出力が選択され、カウンタi(1060)にセットされる。この処理は、図12のステップ7020に相当する。カウンタiは、mビットごとに分割された(N−1)の何番目の部分ビットを取り出すのかを指定するために用いられる。一方、演算器(1100)により、R2modN=22nmodNが計算され、結果レジスタ(1160)に格納される。図3においてその格納パスは図示が省略されている。この処理は図12のステップ7040に相当する。つぎに、RmodN=2nmodNが計算され、レジスタ(1110)に格納される。この処理は、図12のステップ7070で用いるRmodNの準備を行うことに相当する。iの値にしたがって、指数切り出し部(1080)により、(N−1)の最上位e[J−1]が切り出され、セレクタ(3010)によりNが選択され、指定ビット反転器(3020)により、e[J−1]+1ビット目が反転され、演算数発生装置(1090)に格納される。指定ビット反転器(3020)ではe[J−1]+1がn以上の場合は、どのビットも反転されない。つぎに、mビット長の値すべてのビットが1である値を生成する2m−1生成器(1120)の値と1090により切り出された指数との比較が比較器(1130)により比較され、等しい場合はセレクタ(1140)がレジスタ(1110)を選択し、そうでない場合は演算数生成装置(1090)の出力が選択される。モンゴメリ剰余乗算器(1150)により、結果レジスタ(1160)の値とセレクタ(1140)に選択された値とのモンゴメリ剰余乗算が行われ、その演算結果が結果レジスタ(1160)に格納される。この処理は、図12のステップ7050、8060,7070に相当する。減算器(1070)により、カウンタi(1060)の値はデクリメントされ、デクリメントされた結果がセレクタ(1050)に選択され、カウンタi(1070)が更新される。この処理は図12のステップ7080に相当する。
In FIG. 3, the modulus register N (1000) inputs and stores a prime number candidate N from the outside, and the modulus bit n register (1010) inputs and stores the bit number n of the prime number candidate from the outside. The log 2 largest log 2 computing device that provides an integer not exceeding (n) (1030), the maximum integer m not exceeding log 2 (n) of is obtained. This process corresponds to step 7010 in FIG. M obtained in 1030 is stored in a register (1020) for storing m. A value obtained by rounding up the decimal point of n / m or less is obtained by the integer divider (1040), and the output of 1040 is selected by the selector (1050) and set in the counter i (1060). This process corresponds to step 7020 in FIG. The counter i is used to designate the (N−1) th partial bits to be extracted every m bits. On the other hand, R 2 modN = 2 2n modN is calculated by the computing unit (1100) and stored in the result register (1160). In FIG. 3, the storage path is not shown. This process corresponds to step 7040 in FIG. Next, RmodN = 2 n modN is calculated and stored in the register (1110). This process is equivalent to preparing RmodN used in
モンゴメリ剰余乗算演算モード制御部(1200)は次にモンゴメリ剰余乗算器(1150)の演算モードを二乗算に変更し、セレクタ(1170)を介してカウンタj(1180)を初期化する。モンゴメリ剰余乗算演算モード制御部は(1200)は、カウンタj(1180)を減算器(1190)で1回デクリメントする毎に、モンゴメリ剰余乗算器(1150)を用いて、結果レジスタ(1160)の値をモンゴメリ剰余二乗算し結果レジスタ(1160)に格納する処理を、カウンタj(1180)がゼロになるまで行う。これは、図13のステップ7090に相当する。つぎに、カウンタi(1060)の値にしたがって、指数切り出し部(1080)により、(N−1)の部分ビットe[i]が切り出される。セレクタ(3010)によりNが選択され、指定ビット反転器(3020)により、e[i]+1+n−2mビット目が反転され、演算数発生装置(1090)に格納される。指定ビット反転器(3020)ではe[i]+1+n−2mがn以上の場合は、どのビットも反転されない。指数切り出し部(1080)により切り出された値は比較器(1130)により2m−1と比較される。比較結果に基づいて、セレクタ(1140)により、演算数生成装置(1090)の出力又はR mod Nを格納したレジスタ(1110)が選択され、選択された値が結果レジスタ(1160)の値と剰余乗算が行われる。これは、図13のステップ7100,8110,7120の処理に相当する。剰余乗算が終了したら、カウンタi(1060)の値が演算器(1070)によりデクリメントされ、カウンタi(1060)の値が1以上の場合は、図13のステップ7090に相当する処理から繰り返される。
The Montgomery residue multiplication operation mode control unit (1200) then changes the operation mode of the Montgomery residue multiplier (1150) to double multiplication, and initializes the counter j (1180) via the selector (1170). The Montgomery remainder multiplication operation mode control unit (1200) uses the Montgomery remainder multiplier (1150) to decrement the value of the result register (1160) every time the counter j (1180) is decremented once by the subtracter (1190). Is multiplied by the Montgomery remainder and stored in the result register (1160) until the counter j (1180) becomes zero. This corresponds to Step 7090 in FIG. Next, according to the value of the counter i (1060), the exponent cutout unit (1080) cuts out the partial bit e [i] of (N−1). N is selected by the selector (3010), the e [i] + 1 + n-2 m-th bit is inverted by the designated bit inverter (3020), and is stored in the arithmetic number generator (1090). In the designated bit inverter (3020), when e [i] + 1 + n−2 m is n or more, no bit is inverted. The value cut out by the exponent cutout unit (1080) is compared with 2 m −1 by the comparator (1130). Based on the comparison result, the selector (1140) selects the output (1090) of the operation number generator (1090) or the register (1110) storing R mod N, and the selected value is the value of the result register (1160) and the remainder. Multiplication is performed. This corresponds to the processing of
カウンタi(1060)の値が1の場合は、モンゴメリ剰余乗算器(1150)の演算モードが二乗算に変更され、セレクタ(1170)を介してカウンタj(1180)が初期化される。モンゴメリ剰余乗算演算モード制御部は(1200)は、カウンタj(1180)を減算器(1190)で1回デクリメントする毎に、モンゴメリ剰余乗算器(1150)を用いて、結果レジスタ(1160)の値をモンゴメリ剰余二乗算してその演算結果を結果レジスタ(1160)に格納する処理を、カウンタj(1180)がゼロになるまで行う。これは、図14のステップ7150に相当する。 When the value of the counter i (1060) is 1, the operation mode of the Montgomery remainder multiplier (1150) is changed to double multiplication, and the counter j (1180) is initialized via the selector (1170). The Montgomery remainder multiplication operation mode control unit (1200) uses the Montgomery remainder multiplier (1150) to decrement the value of the result register (1160) every time the counter j (1180) is decremented once by the subtracter (1190). , And the result of storing the result of the operation in the result register (1160) is performed until the counter j (1180) becomes zero. This corresponds to Step 7150 in FIG.
つぎに、カウンタi(1060)の値にしたがって、指数切り出し部(1080)により、(N−1)の最下位から2番目のmビットが取り出される。カウンタi(1060)が1の場合は、セレクタ(3010)により0が選択され、指定ビット反転器(3020)により、e[1]+n−2mビット目が反転した値、すなわちe[1]+n−2mビット目がセットされた値が演算数生成装置(1090)に格納され、結果レジスタ(1160)の値と剰余乗算が行われる。これは、図14のステップ7160の処理に相当する。剰余乗算が終了したら、カウンタi(1060)の値を演算器(1070)によりデクリメントし、カウンタi(1060)に設定する。
Next, according to the value of the counter i (1060), the exponent mute unit (1080) extracts the second m bits from the least significant bit of (N-1). When the counter i (1060) is 1, 0 is selected by the selector (3010), and the value of e [1] + n-2 m-th bit is inverted by the designated bit inverter (3020), that is, e [1]. The value in which the (+ n-2 ) -th m-th bit is set is stored in the operation number generation device (1090), and the value of the result register (1160) is subjected to modular multiplication. This corresponds to the processing of
続いてモンゴメリ剰余乗算器(1150)の演算モードが二乗算に変更され、セレクタ(1170)を介してカウンタj(1180)が初期化される。モンゴメリ剰余乗算演算モード制御部は(1200)は、カウンタj(1180)を減算器(1190)で1回デクリメントする毎に、モンゴメリ剰余乗算器(1150)を用いて、結果レジスタ(1160)の値をモンゴメリ剰余二乗算し結果レジスタ(1160)に格納する処理を、カウンタj(1180)がゼロになるまで行う。これは、図14のステップ7170に相当する。 Subsequently, the operation mode of the Montgomery remainder multiplier (1150) is changed to double multiplication, and the counter j (1180) is initialized via the selector (1170). The Montgomery remainder multiplication operation mode control unit (1200) uses the Montgomery remainder multiplier (1150) to decrement the value of the result register (1160) every time the counter j (1180) is decremented once by the subtracter (1190). Is multiplied by the Montgomery remainder and stored in the result register (1160) until the counter j (1180) becomes zero. This corresponds to Step 7170 in FIG.
最後に、カウンタi(1060)の値にしたがって、指数切り出し部(1080)により、(N−1)の最下位のmビットを取り出す。カウンタi(1060)が0の場合は、セレクタ(3010)により0が選択され、指定ビット反転器(3020)により、e[0]ビット目が反転した値、すなわちe[0]ビット目がセットされた値が演算数生成装置(1090)に格納され、その演算数生成装置(1090)が常に選択されて、結果レジスタ(1160)の値と剰余乗算が行われる。これは、図14のステップ7180の処理に相当する。剰余乗算が終了したら、結果レジスタ(1160)に2^(N−1)mod Nの値が格納され、処理が終了する。
Finally, according to the value of the counter i (1060), the exponent cutout unit (1080) extracts the least significant m bits of (N−1). When the counter i (1060) is 0, 0 is selected by the selector (3010), and the designated bit inverter (3020) sets the value obtained by inverting the e [0] bit, that is, the e [0] bit. The calculated value is stored in the operation number generation device (1090), and the operation number generation device (1090) is always selected, and the value of the result register (1160) and the remainder multiplication are performed. This corresponds to the processing of
<<第3の実施形態>>
図4はフェルマーテストを実行する本発明に係るデータ処理装置3を機能ブロックダイヤグラムで示すものであり、図12、図13及び図14に示される本発明によるフェルマーテスト高速演算手順を実現する。図3のデータ処理装置2では指定ビット反転器(3020)を用いたが、図4ではそれに代えて2のベキ数演算器(3031)と排他的論理和回路(3032)を用いた点が相違され、その他の構成については同じ参照符号を付してその詳細な説明を省略する。2のベキ数演算器(3031)は指数切り出し部(1080)で切り出された指数を2のベキ乗に形態にする。排他的論理和回路(3032)は2のべき乗演算器(3031)の出力とセレクタ(3010)の出力に対して排他的論理和を採る。その演算結果は図3の指定ビット反転器(3020)の出力と同じである。
<< Third Embodiment >>
FIG. 4 shows a functional block diagram of the
<<第4の実施形態>>
図5はフェルマーテストを実行する本発明に係るデータ処理装置4を機能ブロックダイヤグラムで示すものであり、図15に示されるフェルマーテスト高速演算手順を実現する。この例ではモンゴメリ剰余乗算装置を用いない。データ処理装置4は、図8に例示される剰余乗算器(6150)及び演算レジスタ(6160,6170,6180)等を備えた剰余乗算コプロセッサ(6140)と共に、プログラムを実行して剰余乗算コプロセッサ6140等を制御する中央処理装置(6010)とメモリ(6020)等を有し、相互にバス6030で接続される。メモリ(6020)はプログラム(PGM)を格納する電気的に書換え可能な不揮発性メモリと、変数やデータ(DAT)等の格納に利用されるSRAM等のランダムアクセスメモリから成る。このデータ処理装置4は例えば、前記図17に示されるような1個の半導体基板に形成されたICカード用マイクロコンピュータ107として実現される。
<< Fourth Embodiment >>
FIG. 5 is a functional block diagram showing the
図5において、法レジスタN(1000)には外部より素数候補Nが入力されて格納され、法ビットnレジスタ(1010)には外部より素数候補Nのビット数nが入力されて格納される。log2(n)を超えない最大の整数を与えるlog2計算装置(1030)により、log2(n)を超えない最大の整数mが得られる。1030の出力する値の種類は、log2(nの最大値)であるので、実際には計算を行わずにテーブル引きや、nの非零のビットのうちの最上位のビットの位置から求めることができる。この処理は、図15の9010のステップに相当する。log2計算装置(1030)で求められた値mはレジスタ(1020)に格納される。整数除算器(1040)により、n/mの少数点以下を切り上げた値が求められ、セレクタ(1050)により1040の出力が選択され、カウンタi(1060)にセットされる。この処理は、図15のステップ9020に相当する。カウンタiは、mビットごとに分割された(N−1)の何番目の部分ビットを取り出すのかを指定するために用いられる。iの値にしたがって、指数切り出し部(1080)により、(N−1)の最上位が切り出され、演算数生成装置(1090)により、2^(e[J−1])が生成される。最初は剰余乗算器(4010)で乗算を行わずに、演算数生成装置(1090)の値をそのまま結果レジスタ(4020)に格納する。この処理は、図15のステップ9040に相当する。減算器(1070)により、カウンタi(1060)の値はデクリメントされ、デクリメントされた結果がセレクタ(1050)に選択され、これによってカウンタi(1070)が更新される。この処理は図15のステップ9050に相当する。 In FIG. 5, prime number candidate N is input from the outside and stored in modulus register N (1000), and bit number n of prime number candidate N is input and stored from outside in modulus bit n register (1010). The log 2 largest log 2 computing device that provides an integer not exceeding (n) (1030), the maximum integer m not exceeding log 2 (n) of is obtained. Since the type of the value output by 1030 is log 2 (maximum value of n), the table is not actually calculated, and it is obtained from the position of the most significant bit among the non-zero bits of n. be able to. This process corresponds to step 9010 in FIG. The value m obtained by the log 2 calculation device (1030) is stored in the register (1020). A value obtained by rounding up the decimal point of n / m or less is obtained by the integer divider (1040), and the output of 1040 is selected by the selector (1050) and set in the counter i (1060). This process corresponds to Step 9020 in FIG. The counter i is used to designate the (N−1) th partial bits to be extracted every m bits. According to the value of i, the exponent cutout unit (1080) cuts out the most significant of (N-1), and the operation number generation device (1090) generates 2 ^ (e [J-1]). Initially, the value of the operation number generator (1090) is stored as it is in the result register (4020) without performing multiplication by the remainder multiplier (4010). This process corresponds to Step 9040 in FIG. The value of the counter i (1060) is decremented by the subtracter (1070), and the decremented result is selected by the selector (1050), whereby the counter i (1070) is updated. This process corresponds to Step 9050 in FIG.
剰余乗算演算モード制御部(4030)は次に剰余乗算器(4010)の演算モードを二乗算に変更し、セレクタ(1170)を介してカウンタj(1180)を初期化する。剰余乗算演算モード制御部(4030)は、カウンタj(1180)を減算器(1190)で1回デクリメントする毎に、剰余乗算器(4010)を用いて、結果レジスタ(4020)の値を剰余二乗算して結果レジスタ(4020)に格納する処理を、カウンタj(1180)がゼロになるまで行う。これは、図15のステップ9060に相当する。つぎに、カウンタi(1060)の値にしたがって、指数切り出し部(1080)により、(N−1)の部分ビットが切り出され、演算数生成装置(1090)の出力と、結果レジスタ(4020)の値との剰余乗算が行われる。これは、図15のステップ9070の処理に相当する。剰余乗算が終了したら、カウンタi(1060)の値が演算器(1070)によりデクリメントされ、カウンタi(1060)の値が0以上の場合は、図15のステップ9060に相当する処理から繰り返される。
The remainder multiplication operation mode control unit (4030) then changes the operation mode of the remainder multiplier (4010) to double multiplication, and initializes the counter j (1180) via the selector (1170). Every time the counter j (1180) is decremented once by the subtracter (1190), the remainder multiplication operation mode control unit (4030) uses the remainder multiplier (4010) to set the value of the result register (4020) to the remainder of the two. The process of multiplying and storing in the result register (4020) is performed until the counter j (1180) becomes zero. This corresponds to Step 9060 in FIG. Next, according to the value of the counter i (1060), the exponent cutout unit (1080) cuts out the (N-1) partial bits, and outputs the operation number generator (1090) and the result register (4020). A remainder multiplication with the value is performed. This corresponds to the processing of
カウンタi(1060)の値が0の場合は、結果レジスタ(4020)に2^(N−1)mod Nの値が格納され、処理が終了する。 When the value of the counter i (1060) is 0, the value of 2 ^ (N-1) mod N is stored in the result register (4020), and the process ends.
<<第5の実施形態>>
図6はフェルマーテストを実行する本発明に係るデータ処理装置5を機能ブロックダイヤグラムで示すものであり、図16に示されるフェルマーテスト高速演算手順を実現する。この例ではモンゴメリ剰余乗算装置を用いない。データ処理装置4は、前記図8に例示される剰余乗算器(6150)及び演算レジスタ(6160,6170,6180)等を備えた剰余乗算コプロセッサ(6140)と共に、プログラムを実行して剰余乗算コプロセッサ6140等を制御する中央処理装置(6010)とメモリ(6020)等を有し、相互にバス6030で接続される。このデータ処理装置5は例えば、前記図17に示されるような1個の半導体基板に形成されたICカード用マイクロコンピュータ107として実現される。
<< Fifth Embodiment >>
FIG. 6 is a functional block diagram showing the
図6において、法レジスタN(1000)は外部より素数候補Nを入力して格納し、法ビットnレジスタ(1010)は、外部より素数候補のビット数nを入力して格納する。log2(n)を超えない最大の整数を与えるlog2計算装置(1030)により、log2(n)を超えない最大の整数mが得られる。1030の出力する値の種類は、log2(nの最大値)であるので、実際には計算を行わずにテーブル引きや、nの非零のビットのうちの最上位のビットの位置から求めることができる。この処理は、図16の9010のステップに相当する。1030で求められた値mはレジスタ(1020)に格納される。整数除算器(1040)により、n/mの少数点以下を切り上げた値が求められ、セレクタ(1050)により1040の出力が選択され、カウンタi(1060)にセットされる。この処理は、図16のステップ9020に相当する。カウンタiは、mビットごとに分割された(N−1)の何番目の部分ビットを取り出すのかを指定するために用いられる。iの値にしたがって、指数切り出し部(1080)により、(N−1)の最上位(e[J−1])が切り出され、セレクタ(3010)が0を選択し、指定ビット反転器(3020)が(e[J−1])ビット目を反転することにより、2^(e[J−1])が演算数生成装置(1090)にセットされる。一番最初は剰余乗算器(4010)で乗算を行わずに、演算数生成装置(1090)の値をそのまま結果レジスタ(4020)に格納する。この処理は、図16のステップ9040に相当する。減算器(1070)により、カウンタi(1060)の値はデクリメントされ、デクリメントされた結果がセレクタ(1050)に選択され、カウンタi(1070)が更新される。この処理は図16のステップ9050に相当する。 In FIG. 6, the modulus register N (1000) receives and stores a prime number candidate N from the outside, and the modulus bit n register (1010) inputs and stores the bit number n of the prime number candidate from the outside. The log 2 largest log 2 computing device that provides an integer not exceeding (n) (1030), the maximum integer m not exceeding log 2 (n) of is obtained. Since the type of the value output by 1030 is log 2 (maximum value of n), the table is not actually calculated, and it is obtained from the position of the most significant bit among the non-zero bits of n. be able to. This process corresponds to step 9010 in FIG. The value m obtained in 1030 is stored in the register (1020). A value obtained by rounding up the decimal point of n / m or less is obtained by the integer divider (1040), and the output of 1040 is selected by the selector (1050) and set in the counter i (1060). This process corresponds to Step 9020 in FIG. The counter i is used to designate the (N−1) th partial bits to be extracted every m bits. According to the value of i, the exponent cutout unit (1080) cuts out the most significant (e [J-1]) of (N-1), the selector (3010) selects 0, and the designated bit inverter (3020). ) Inverts the (e [J-1])-th bit, so that 2 ^ (e [J-1]) is set in the operation number generator (1090). At first, without performing multiplication by the remainder multiplier (4010), the value of the operation number generator (1090) is stored in the result register (4020) as it is. This process corresponds to Step 9040 in FIG. The value of the counter i (1060) is decremented by the subtracter (1070), the decremented result is selected by the selector (1050), and the counter i (1070) is updated. This process corresponds to step 9050 in FIG.
剰余乗算演算モード制御部(4030)は次に剰余乗算器(4010)の演算モードを二乗算に変更し、セレクタ(1170)を介してカウンタj(1180)を初期化する。剰余乗算演算モード制御部(4030)は、カウンタj(1180)を減算器(1190)で1回デクリメントする毎に、剰余乗算器(4010)を用いて、結果レジスタ(4020)の値を剰余二乗算し結果レジスタ(4020)に格納する処理を、カウンタj(1180)がゼロになるまで行う。これは、図15のステップ9060に相当する。つぎに、カウンタi(1060)の値にしたがって、指数切り出し部(1080)により、(N−1)の部分ビット(e[i])が切り出され、セレクタ(3010)がNを選択し、指定ビット反転器(3020)が(e[i])ビット目を反転することにより、N xor 2^(e[i])が演算数生成装置(1090)にセットされる。演算数生成装置(1090)の出力と結果レジスタ(4020)の値との剰余乗算が行われ、演算結果が結果レジスタ(4020)に格納される。これは、図16のステップ10070の処理に相当する。剰余乗算が終了したら、カウンタi(1060)の値が演算器(1070)によりデクリメントされ、カウンタi(1060)の値が1以上の場合は、図16のステップ9060に相当する処理から繰り返される。
The remainder multiplication operation mode control unit (4030) then changes the operation mode of the remainder multiplier (4010) to double multiplication, and initializes the counter j (1180) via the selector (1170). Every time the counter j (1180) is decremented once by the subtracter (1190), the remainder multiplication operation mode control unit (4030) uses the remainder multiplier (4010) to set the value of the result register (4020) to the remainder of the two. The process of multiplying and storing in the result register (4020) is performed until the counter j (1180) becomes zero. This corresponds to Step 9060 in FIG. Next, according to the value of the counter i (1060), the exponent cutout unit (1080) cuts out the partial bit (e [i]) of (N−1), the selector (3010) selects N, and designates it. When the bit inverter (3020) inverts the (e [i])-th bit,
カウンタi(1060)の値が0の場合は、指数切り出し部(1080)により、(N−1)の最下位の部分ビット(e[0])が切り出され、セレクタ(3010)が0を選択し、指定ビット反転器(3020)が(e[i])ビット目を反転することにより、2^(e[0])が演算数生成装置(1090)にセットされる。演算数生成装置(1090)の出力と結果レジスタ(4020)の値との剰余乗算が行われ、演算結果が結果レジスタ(4020)に格納される。結果レジスタ(4020)には2^(N−1)mod Nの値が格納されるので、処理が終了する。 When the value of the counter i (1060) is 0, the exponent segmentation unit (1080) extracts the least significant partial bit (e [0]) of (N−1) and the selector (3010) selects 0. Then, the designated bit inverter (3020) inverts the (e [i])-th bit, so that 2 ^ (e [0]) is set in the operation number generator (1090). A modular multiplication is performed between the output of the operation number generator (1090) and the value of the result register (4020), and the operation result is stored in the result register (4020). Since the value of 2 ^ (N-1) mod N is stored in the result register (4020), the process ends.
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。本発明の好適な例はICカード用マイクロコンピュータであるが、オンチップされる回路モジュールは上記説明に限定されず、その他の回路モジュールが追加されてもよい。また、ICカード用マイクロコンピュータはセキュリティ評価基準のISO/IEC15408の評価・認証機関によって認証済みであることに限定されない。 Although the invention made by the present inventor has been specifically described based on the embodiments, it is needless to say that the present invention is not limited thereto and can be variously modified without departing from the gist thereof. A preferred example of the present invention is an IC card microcomputer, but the circuit module to be on-chip is not limited to the above description, and other circuit modules may be added. Further, the IC card microcomputer is not limited to being certified by an evaluation / certification organization of ISO / IEC15408, which is a security evaluation standard.
107:ICカード用チップ
1000:法Nを格納するレジスタ
1010:法Nのビット長を格納するレジスタ
1020:指数を切り出すビット長mを格納するレジスタ
1030:入力された値のlog2を超えない最大の整数を与えるlog2計算装置
1040:整数除算器
1050:整数除算器と減算器の出力を選択するセレクタ
1060:カウンタiを格納するレジスタ
1070:減算器
1080:N−1をmビット毎に区切り、下位側からi番目の値を出力する指数切り出し部
1090:入力値のビット位置のみを1としその他のビットを0とする演算数を生成する演算数生成装置
1100:R mod NもしくはR2modNを計算する演算器
1110:演算器が計算したRもしくはR2を格納するレジスタ
1120:mビット長の値すべてのビットが1である値を生成する2m−1生成器
1130:比較器
1150:モンゴメリ剰余乗算器
1160:剰余乗算の結果を格納する結果レジスタ
1180:カウンタ値jを格納するレジスタ
1190:減算器
1200:モンゴメリ剰余乗算モード制御装置
2010:法Nと法Nのビット長Nから、2n+1modNを計算する演算器
2020:2n+1modNをか苦悩するレジスタ
2030:演算途中の値を格納する演算数レジスタ
2060:モンゴメリ剰余乗算器
3020:指定されたビットのみを反転して出力する指定ビット反転器
3032:排他的論理和回路
4010:剰余乗算器
4020:結果を格納するレジスタ
4030:剰余乗算器の演算モードを制御する制御装置
6010:CPU
6020:メモリ
6030:バス
6040:剰余乗算コプロセッサ
6050:モンゴメリ剰余乗算器
6060:演算数を格納するレジスタ
6070:演算数を格納するレジスタ
6080:法Nを格納するレジスタ
6140:剰余乗算コプロセッサ
6150:剰余乗算器
6160:演算数を格納するレジスタ
6170:演算数を格納するレジスタ
6180:法Nを格納するレジスタ
7010:log2(n)を超えない最大の整数をmに代入するステップ
7020:n/mの少数点以下を切り上げた値をJに代入するステップ
7030:N−1をmビットごとに区切りe[0]…e[J−1]に代入するステップ
7040:R2modNをresultに代入するステップ
7050:e[J−1]+1がnと等しいか条件判定するステップ
7060:最上位の指数が2m−1未満の場合に最上位の指数に相当する演算数を剰余乗算するステップ
7070:最上位の指数が2m−1と等しい場合に最上位の指数に相当する演算数を剰余乗算するステップ
7080:カウンタiにJ−2を代入するステップ
7090:resultをm回剰余二乗算してresultに代入するステップ
7100:e[i]+n−2mがnと等しいか条件判断するステップ
7110:e[i]+n−2mがn未満のときi番目のmビットの指数に相当する演算数を剰余乗算するステップ
7120:e[i]+n−2mがnと等しいときi番目のmビットの指数に相当する演算数を剰余乗算するステップ
7130:カウンタiの値を1だけ減算するステップ
7140:iが1より大きいか条件判断し条件分岐するステップ
7150:resultをm回剰余二乗算してresultに代入するステップ
7160:最下位の1つ前のmビットの指数に相当する演算数を剰余乗算するステップ
7170:resultをm回剰余二乗算してresultに代入するステップ
7180:最下位の1つ前のmビットの指数に相当する演算数を剰余乗算するステップ
7190:結果を出力するステップ
8060:最上位の指数が2m−1未満の場合に最上位の指数に相当する演算数を法Nでマスクしながら剰余乗算するステップ
8110:e[i]+n−2mがn未満の場合にi番目のmビットの指数に相当する演算数を法Nでマスクしながら剰余乗算するステップ
9010:log2(n)を超えない最大の整数をmに代入するステップ
9020:n/mの少数点以下を切り上げた値をJに代入するステップ
9030:N−1をmビットごとに区切りe[0]…e[J−1]に代入するステップ
9040:最上位の指数に相当する演算数をresultに代入するステップ
9050はカウンタiにJ−2を代入するステップ
9060:resultをm回剰余二乗算してresultに代入するステップ
9070:i番目のmビットの指数に相当する演算数を剰余乗算するステップ
9080:カウンタiの値を1だけ減算するステップ
9090:カウンタiが0以上かを判定し条件分岐するステップ
9100:結果を出力するステップ
10070:i番目のmビットの指数に相当する演算数を法Nでマスクしながら剰余乗算するステップ
10090:カウンタiが1以上かを判定し条件分岐するステップ
10100:最下位のmビットの指数に相当する演算数を剰余乗算するステップ
107: IC card chip 1000: register 1010 for storing the modulus N 1010: register for storing the bit length of the modulus N 1020: register for storing the bit length m for extracting the exponent 1030: maximum not exceeding log 2 of the input value Log 2 calculator 1040: integer divider 1050: selector for selecting the output of the integer divider and subtractor 1060: register 1070 for storing counter i: subtractor 1080: delimiter N-1 every m bits The exponent cutout unit 1090 for outputting the i-th value from the lower side: the operation number generator 1100 for generating the operation number in which only the bit position of the input value is 1 and the other bits are 0: R mod N or R 2 mod N calculator 1110 to calculate the: register 1120 calculator stores the R or R 2 were calculated: m bits Values all 2 bits to generate a value that is 1 m -1 generator 1130: comparator 1150: Montgomery modular multiplier 1160: the result stores the result of the modular multiplication register 1180: register for storing a counter value j 1190 : Subtractor 1200: Montgomery remainder multiplication mode control device 2010: arithmetic unit 2020 for calculating 2 n + 1 modN from bit length N of modulus N and modulus N: register 2030 for storing 2 n + 1 modN Operation number register 2060: Montgomery remainder multiplier 3020: Designated bit inverter 3032 that inverts and outputs only designated bits: Exclusive OR circuit 4010: Residue multiplier 4020: Register 4030: Residue multiplication Controller 6010 for controlling the operation mode of the controller: CPU
6020: Memory 6030: Bus 6040: Remainder Coprocessor 6050: Montgomery Remainder Multiplier 6060: Register for storing the number of operations 6070: Register for storing the number of operations 6080: Register for storing the modulus N 6140: Remainder multiplication coprocessor 6150: Residue multiplier 6160: Register 6170: Register 6170: Register 6180: Modulus N register 7010: Maximum integer not exceeding log 2 (n) is substituted for m 7020: n / Substituting a value obtained by rounding up the decimal point of m into J Step 7030: Dividing N−1 into m bits and substituting into e [0]... e [J−1] Step 7040: Substituting R 2 modN into result Step 7050: Step 7 for determining whether e [J−1] +1 is equal to n 060: Multiply the number of operations corresponding to the highest index when the highest index is less than 2 m −1 Step 7070: Equivalent to the highest index when the highest index is equal to 2 m −1 Step 7080: Substituting J-2 into the counter i Step 7090: Multiplying the result m times by the remainder and substituting it into the result Step 7100: e [i] + n-2 m is equal to n or conditional judgment to step 7110: e [i] + n -2 m to modular multiplication of the number of operations corresponding to the i-th exponent m bits when less than n steps 7120: e [i] + n -2 m and the n Step 7130: Subtract the value of the counter i by 1 Step 7140: Conditionally determine if i is greater than 1 Branching step 7150: multiplying the result by m times the remainder and substituting it in the result Step 7160: multiplying the operation number corresponding to the last m-bit exponent by the last step 7170: dividing the result by m times Step 7180 of multiplying by 2 and substituting in result: Multiplying the number of operations corresponding to the last m-bit exponent by the lowest one Step 7190: Outputting the result Step 8060: The highest exponent is 2 m −1 If the number is less than n, the number of operations corresponding to the most significant exponent is masked with modulus N and remainder multiplication is performed. Step 8110: e [i] + n-2. If m is less than n, it corresponds to the i-th m-bit exponent. step for modular multiplication while masking the operand by law n 9010:
Claims (6)
前記素数候補Nを記憶する処理と、
Nのビット長nを記憶する処理と、
log2(n)を超えない最大の整数mを計算して記憶する処理と、
前記素数候補Nから、N−1を計算し、JをJ≧n/mとなる最小の整数としたときに、(N−1)を最下位からmビットごとにJ個の区間に区切り、(N−1)=2(J−1)m・e[J−1]+2(J−2)m・e[J−2]+…+2m・e[1]+e[0]なる式を満たすように(N−1)を部分指数e[0],e[1],…,e[J−1]に分割する指数部切り出し処理と、
前記指数部切り出し処理により切り出されたmビットの値e[i]から2^(e[i]+1+n−2m)を生成する2のベキ乗生成処理と、
前記指数部切り出し処理で切り出された部分指数の最上位の値に1を加えたe[J−1]+1が2nと等しい場合は、R mod N=2n mod Nの演算結果と、R2 mod N=22n mod Nの演算結果との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を第1記憶領域に格納する第1処理と、
前記e[J−1]+1が2n未満の場合は、前記2のベキ乗生成手段により計算した2^(e[J−1]+1)と、前記R2modN=22n mod Nの演算結果との前記Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1の記憶領域に格納する第2処理と、
前記第1処理又は前記第2処理のいずれか一方の処理の後に内部の状態変数iをJ−2とする第3処理と、
前記第3処理の後に、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に書き戻す動作をm回繰り返す第4処理と、
前記第4処理の後に、前記指数部切り出し処理で切り出された部分指数e[i]が2m−1未満の場合は、前記2のベキ乗生成処理により生成された2^(e[i]+1+n−2m)と前記第1の記憶領域に格納された値との前記Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第5処理と、
前記第5処理の後に、前記内部状態変数iから1を引いた値を前記内部状態変数iに格納し、前記iの値が2以上の場合は前記第4処理に戻り、前記iの値が1以下になるまでそれを繰り返す第6処理と、
前記第6処理の後に、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に書き込む動作をm回繰り返す第7処理と、
前記第7処理の後、前記2のベキ乗生成処理により計算された2^(e[1]+n−2m)と、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第8処理と、
前記第8処理の後、前記モンゴメリ剰余乗算装置により、前記素数候補Nを法とし、前記第1記憶領域に格納された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第9処理と、
前記第9処理の後、前記2のベキ乗生成処理により計算された2^(e[0])と、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行って、その演算結果をフェルマーテスト結果として出力する第10処理とを含む、データ処理装置。 A coprocessor having a Montgomery modular multiplier for performing Montgomery modular multiplication; and a central processing unit that executes a program and controls the coprocessor, and performs data processing under the control of the central processing unit, so that external processing is performed. A data processing device that performs a Fermat test by calculating 2 (N−1) mod N for a given prime candidate N, wherein the data processing includes:
Storing the prime candidate N;
A process of storing a bit length n of N;
processing to calculate and store the largest integer m not exceeding log 2 (n);
When N−1 is calculated from the prime candidate N and J is the smallest integer such that J ≧ n / m, (N−1) is divided into J intervals every m bits from the least significant bit, (N-1) = 2 (J-1) m · e [J-1] +2 (J-2) m · e [J-2] +... +2 m · e [1] + e [0] Exponential part cutout processing for dividing (N−1) into partial exponents e [0], e [1],..., E [J−1] to satisfy
2 power generation processing for generating 2 ^ (e [i] + 1 + n−2 m ) from the m-bit value e [i] cut out by the exponent part cut-out processing;
When e [J−1] +1, which is obtained by adding 1 to the highest value of the partial exponent extracted by the exponent segmentation process, is equal to 2 n , the calculation result of R mod N = 2 n mod N, and R A first process of performing Montgomery modular multiplication modulo the prime candidate N with the operation result of 2 mod N = 2 2n mod N and storing the operation result in a first storage area;
When e [J-1] +1 is less than 2 n, the calculation of 2 ^ (e [J-1] +1) calculated by the power-of-two generating unit and R 2 mod N = 2 2n mod N A second process for performing Montgomery modular multiplication on the result modulo N and storing the operation result in the first storage area;
A third process in which an internal state variable i is J-2 after either the first process or the second process;
After the third process, the prime candidate N is used as a modulus, and the operation of performing the Montgomery modular multiplication of the values stored in the first storage area and writing the calculation result back to the first storage area is repeated m times. A fourth process;
After the fourth process, when the partial index e [i] cut out by the exponent part cut-out process is less than 2 m −1, 2 ^ (e [i] generated by the power-of-two generation process of 2 + 1 + n−2 m ) and a value stored in the first storage area, performing a Montgomery modular multiplication modulo the N, and storing the calculation result in the first storage area;
After the fifth process, a value obtained by subtracting 1 from the internal state variable i is stored in the internal state variable i. When the value of i is 2 or more, the process returns to the fourth process, and the value of i A sixth process that repeats until it is less than or equal to 1,
After the sixth process, the prime candidate N is used as a modulus, and the operation of performing the Montgomery remainder multiplication of the values stored in the first storage area and writing the calculation result in the first storage area is repeated m times. 7 treatments,
After the seventh process, the prime candidate N of 2 ^ (e [1] + n-2 m ) calculated by the power-of-two generation process and the value stored in the first storage area is modulo An eighth process of performing a Montgomery modular multiplication and storing the operation result in the first storage area;
After the eighth processing, the Montgomery residue multiplication device modulo the prime candidate N, performs Montgomery residue multiplication between the values stored in the first storage area, and stores the calculation result in the first storage area. A ninth process of repeating the storing operation m times;
After the ninth process, the Montgomery residue modulo the prime candidate N between 2 ^ (e [0]) calculated by the power-of-two generation process and the value stored in the first storage area And a tenth process for performing multiplication and outputting the calculation result as a Fermat test result.
前記素数候補Nを記憶する処理と、
Nのビット長nを記憶する処理と、
log2(n)を超えない最大の整数mを計算して記憶する処理と、
前記素数候補Nから、N−1を計算し、JをJ≧n/mとなる最小の整数としたときに、(N−1)を最下位からmビットごとにJ個の区間に区切り、(N−1)=2(J−1)m・e[J−1]+2(J−2)m・e[J−2]+…+2m・e[1]+e[0]なる式を満たすように(N−1)を部分指数e[0],e[1],…,e[J−1]に分割する指数部切り出し処理と、
前記指数部切り出し処理により切り出されたmビットの値e[i]から2^(e[i]+1+n−2m)
を生成する2のベキ乗生成処理と、
前記指数部切り出し処理により切り出された部分指数の最上位の値に1を加えたe[J−1]+1が2nと等しい場合は、R mod N=2n mod Nの演算結果と、R2 mod N=22n mod Nの演算結果との前記素数候補Nを法とするモンゴメリ剰余乗算を行って、その演算結果を第1記憶領域に格納する第1処理と、
前記e[J−1]+1が2n未満の場合は、前記2のベキ乗生成手段により計算した2^(e[J−1]+1)と前記素数候補Nとの排他的論理和を取った値と、前記R2 mod N=22n mod Nの演算結果との前記Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第2処理と、
前記第1処理又は第2処理のいずれか一方の処理の後に内部の状態変数iをJ−2とする第3処理と、
前記第3処理の後に、前記素数候補Nを法とし、前記第1記憶領域に格納された値同士のモンゴメリ剰余乗算を行ってその4演算結果を前記第1記憶領域に格納する動作をm回繰り返す第4処理と、
前記第4処理の後に、前記指数部切り出し処理で切り出された部分指数e[i]が2m−1未満の場合は、前記2のベキ乗生成処理により生成された2^(e[i]+1+n−2m)と前記素数候補Nとの排他的論理和が採られた値と、前記第1記憶領域に格納されている値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第5処理と、
前記第4処理の後に、前記指数部切り出し処理で切り出された部分指数e[i]が2m−1と等しい場合は、前記R mod N=2n mod Nと、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第6処理と、
前記第5処理又は第6処理のいずれか一方の処理の後に前記内部状態変数iから1を引いた値を前記内部状態変数iに格納し、前記iの値が2以上の場合は、前記第3処理に戻り、前記iの値が1以下になるまでそれを繰り返す第7処理と、
前記第7処理の後に前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第8処理と、
前記第8処理の後、前記2のベキ乗生成処理で生成された2^(e[1]+n−2m)と、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第9処理と、
前記第9処理の後、前記素数候補Nを法とし、前記第1記憶領域に格納された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第10処理と、
前記第10処理の後、前記2のベキ乗生成処理により生成された2^(e[0])と前記第1記憶領域に格納された値との前記Nを法とするモンゴメリ剰余乗算を行って、その演算結果をフェルマーテスト結果として出力する第11処理とを含む、データ処理装置。 A coprocessor having a Montgomery modular multiplier for performing Montgomery modular multiplication; and a central processing unit that executes a program and controls the coprocessor, and performs data processing under the control of the central processing unit, so that external processing is performed. A data processing device that performs a Fermat test by calculating 2 (N−1) mod N for a given prime candidate N, wherein the data processing includes:
Storing the prime candidate N;
A process of storing a bit length n of N;
processing to calculate and store the largest integer m not exceeding log 2 (n);
When N−1 is calculated from the prime candidate N and J is the smallest integer such that J ≧ n / m, (N−1) is divided into J intervals every m bits from the least significant bit, (N-1) = 2 (J-1) m · e [J-1] +2 (J-2) m · e [J-2] +... +2 m · e [1] + e [0] Exponential part cutout processing for dividing (N−1) into partial exponents e [0], e [1],..., E [J−1] to satisfy
From the m-bit value e [i] cut out by the exponent part cut-out process, 2 ^ (e [i] + 1 + n−2 m ).
Generating a power of 2 to generate
When e [J−1] +1 obtained by adding 1 to the highest value of the partial exponent extracted by the exponent segmentation process is equal to 2 n , the calculation result of R mod N = 2 n mod N, and R A first process of performing Montgomery modular multiplication modulo the prime candidate N with an operation result of 2 mod N = 2 2n mod N, and storing the operation result in a first storage area;
When e [J−1] +1 is less than 2 n , an exclusive OR of 2 ^ (e [J−1] +1) calculated by the power-of-two generating unit and the prime candidate N is calculated. A second process of performing a Montgomery modular multiplication modulo N of the calculated value and the calculation result of R 2 mod N = 2 2n mod N and storing the calculation result in the first storage area;
A third process in which the internal state variable i is set to J-2 after either the first process or the second process;
After the third processing, the prime candidate N is used as a modulus, and Montgomery modular multiplication of the values stored in the first storage area is performed, and the operation result of storing the four calculation results in the first storage area is m times. A fourth process to repeat;
After the fourth process, when the partial index e [i] cut out by the exponent part cut-out process is less than 2 m −1, 2 ^ (e [i] generated by the power-of-two generation process of 2 + 1 + n−2 m ) and the prime candidate N and the value stored in the first storage area are subjected to Montgomery residue multiplication modulo the prime candidate N. A fifth process for storing the calculation result in the first storage area;
After the fourth process, when the partial index e [i] cut out by the exponent part cutout process is equal to 2 m −1, the R mod N = 2 n mod N is stored in the first storage area. A sixth process of performing Montgomery modular multiplication modulo the prime candidate N with the obtained value and storing the operation result in the first storage area;
A value obtained by subtracting 1 from the internal state variable i after any one of the fifth process and the sixth process is stored in the internal state variable i, and when the value of i is 2 or more, Returning to 3 processing, and repeating the 7th processing until the value of i becomes 1 or less,
After the seventh process, the prime candidate N is used as a modulus, and the operation of performing Montgomery modular multiplication of the values stored in the first storage area and storing the calculation result in the first storage area is repeated m times. 8 treatments,
After the eighth process, the prime candidate N of 2 ^ (e [1] + n-2 m ) generated by the power-of-two generation process and the value stored in the first storage area is modulo A ninth process for performing a Montgomery modular multiplication and storing the operation result in the first storage area;
After the ninth process, the prime candidate N is used as a modulus, and the operation of performing Montgomery modular multiplication of the values stored in the first storage area and storing the calculation result in the first storage area is repeated m times. A tenth process;
After the tenth processing, Montgomery modular multiplication is performed modulo N of 2 ^ (e [0]) generated by the power-of-two generation processing and the value stored in the first storage area. And an eleventh process for outputting the calculation result as a Fermat test result.
前記素数候補Nを記憶する処理と、
Nのビット長nを記憶する処理と、
log2(n)を超えない最大の整数mを計算して記憶する処理と、
前記素数候補Nから、N−1を計算し、JをJ≧n/mとなる最小の整数としたときに、(N−1)を最下位からmビットごとにJ個の区間に区切り、(N−1)=2(J−1)m・e[J−1]+2(J−2)m・e[J−2]+…+2m・e[1]+e[0]なる式を満たすように(N−1)を部分指数e[0],e[1],…,e[J−1]に分割する指数部切り出し処理と、
前記指数部切り出し処理により切り出されたmビットの値e[i]から2^(e[i]+1+n−2m)を生成する2のベキ乗生成処理と、
前記指数部切り出し処理により切り出された部分指数の最上位の値に1を加えたe[J−1]+1が2nと等しい場合は、R mod N=2n mod Nの演算結果と、R2 mod N=22n mod Nの演算結果との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を第1記憶領域に格納する第1処理と、
前記e[J−1]+1が2n未満の場合は、前記Nのe[J−1]+1ビット目の値を指定ビット反転器により反転した値と前記R2 mod N=22n mod Nの演算結果との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第2処理と、
前記第1処理又は第2処理のいずれか一方の処理の後に内部の状態変数iをJ−2とする第3処理と、
前記第3処理の後に、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第4処理と、
前記第4処理の後に、前記指数部切り出し処理によって切り出された部分指数e[i]が2m−1未満の場合は、前記Nのe[i]+1+n−2mビット目の値を前記指定ビット反転器により反転した値と前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に記憶する第5処理と、
前記第4処理の後に、前記指数部切り出し処理によって切り出された部分指数e[i]が2m−1と等しい場合は、前記R mod N=2n mod Nの演算結果と前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する第6処理と、
前記第5処理又は第6処理のいずれか一方の処理の後に、前記内部状態変数iから1を引いた値を前記内部状態変数iに格納し、前記iの値が2以上の場合は、前記第3処理に戻り、前記iの値が1以下になるまでそれを繰り返す第7処理と、
前記第7処理の後に、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第8処理と、
前記第8処理の後、前記2のベキ乗生成手段により計算した2^(e[1]+n−2m)と前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算をおこなってその演算結果を前記第1記憶領域に格納する第9処理と、
前記第9処理の後、前記素数候補Nを法とし、前記第1記憶領域に記憶された値同士のモンゴメリ剰余乗算を行ってその演算結果を前記第1記憶領域に格納する動作をm回繰り返す第10処理と、
前記第10処理の後、前記2のベキ乗生成処理により生成された2^(e[0])と、前記第1記憶領域に格納された値との前記素数候補Nを法とするモンゴメリ剰余乗算を行ってその演算結果をフェルマーテスト結果として出力する第11処理とを含む、データ処理装置。 A coprocessor having a Montgomery modular multiplier for performing Montgomery modular multiplication; and a central processing unit that executes a program and controls the coprocessor, and performs data processing under the control of the central processing unit, so that external processing is performed. A data processing device that performs a Fermat test by calculating 2 (N−1) mod N for a given prime candidate N, wherein the data processing includes:
Storing the prime candidate N;
A process of storing a bit length n of N;
processing to calculate and store the largest integer m not exceeding log 2 (n);
When N−1 is calculated from the prime candidate N and J is the smallest integer such that J ≧ n / m, (N−1) is divided into J intervals every m bits from the least significant bit, (N-1) = 2 (J-1) m · e [J-1] +2 (J-2) m · e [J-2] +... +2 m · e [1] + e [0] Exponential part cutout processing for dividing (N−1) into partial exponents e [0], e [1],..., E [J−1] to satisfy
2 power generation processing for generating 2 ^ (e [i] + 1 + n−2 m ) from the m-bit value e [i] cut out by the exponent part cut-out processing;
When e [J−1] +1 obtained by adding 1 to the highest value of the partial exponent extracted by the exponent segmentation process is equal to 2 n , the calculation result of R mod N = 2 n mod N, and R A first process of performing Montgomery modular multiplication modulo the prime candidate N with the operation result of 2 mod N = 2 2n mod N and storing the operation result in a first storage area;
The e If [J-1] +1 is less than 2 n, wherein N of e [J-1] the inverted value as the specified bit inverter values of +1 bit R 2 mod N = 2 2n mod N A second process of performing a Montgomery modular multiplication modulo the prime candidate N with the operation result of and storing the operation result in the first storage area;
A third process in which the internal state variable i is set to J-2 after either the first process or the second process;
After the third process, the prime candidate N is used as a modulus, and Montgomery modular multiplication of the values stored in the first storage area is performed and the operation result is stored m times in the first storage area. A fourth process;
If the partial index e [i] cut out by the exponent cutout process after the fourth process is less than 2 m −1, the value of the e [i] + 1 + n−2 m bit of the N is specified A fifth process for performing Montgomery modular multiplication on the prime candidate N modulo the value inverted by the bit inverter and the value stored in the first storage area, and storing the calculation result in the first storage area; ,
When the partial index e [i] cut out by the exponent part cutout process after the fourth process is equal to 2 m −1, the calculation result of the R mod N = 2 n mod N and the first storage area A sixth process of performing Montgomery modular multiplication modulo the prime candidate N with the value stored in, and storing the operation result in the first storage area;
After either one of the fifth process and the sixth process, a value obtained by subtracting 1 from the internal state variable i is stored in the internal state variable i, and when the value of i is 2 or more, Returning to the third process, the seventh process is repeated until the value of i becomes 1 or less,
After the seventh process, the prime candidate N is used as a modulus, the Montgomery modular multiplication of the values stored in the first storage area is performed, and the operation of storing the calculation result in the first storage area is repeated m times. An eighth process;
After the eighth process, modulo the prime candidate N between 2 ^ (e [1] + n-2 m ) calculated by the power-of-two generating means and the value stored in the first storage area A ninth process for performing Montgomery modular multiplication and storing the operation result in the first storage area;
After the ninth process, the prime candidate N is used as a modulus, and the operation of performing Montgomery modular multiplication of the values stored in the first storage area and storing the calculation result in the first storage area is repeated m times. A tenth process;
After the tenth processing, the Montgomery residue modulo the prime candidate N between 2 ^ (e [0]) generated by the power-of-two generation processing and the value stored in the first storage area And an eleventh process for performing multiplication and outputting the operation result as a Fermat test result.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008108462A JP5179933B2 (en) | 2008-04-18 | 2008-04-18 | Data processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008108462A JP5179933B2 (en) | 2008-04-18 | 2008-04-18 | Data processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009258460A JP2009258460A (en) | 2009-11-05 |
JP5179933B2 true JP5179933B2 (en) | 2013-04-10 |
Family
ID=41385963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008108462A Expired - Fee Related JP5179933B2 (en) | 2008-04-18 | 2008-04-18 | Data processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5179933B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102011117236A1 (en) | 2011-10-28 | 2013-05-02 | Giesecke & Devrient Gmbh | Efficient prime number testing |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3626340B2 (en) * | 1996-12-26 | 2005-03-09 | 株式会社東芝 | Cryptographic device, cryptographic key generation method, prime number generation device, and prime number generation method |
JP2002229445A (en) * | 2001-01-30 | 2002-08-14 | Mitsubishi Electric Corp | Modulator exponent device |
JP3950638B2 (en) * | 2001-03-05 | 2007-08-01 | 株式会社日立製作所 | Tamper resistant modular processing method |
JP3904421B2 (en) * | 2001-10-04 | 2007-04-11 | 株式会社ルネサステクノロジ | Remainder multiplication arithmetic unit |
JP4662802B2 (en) * | 2005-03-30 | 2011-03-30 | 富士通株式会社 | Calculation method, calculation apparatus, and computer program |
JP5328186B2 (en) * | 2008-03-21 | 2013-10-30 | ルネサスエレクトロニクス株式会社 | Data processing system and data processing method |
-
2008
- 2008-04-18 JP JP2008108462A patent/JP5179933B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2009258460A (en) | 2009-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7904498B2 (en) | Modular multiplication processing apparatus | |
CN109039640B (en) | Encryption and decryption hardware system and method based on RSA cryptographic algorithm | |
US7835517B2 (en) | Encryption processing apparatus, encryption processing method, and computer program | |
Großschädl | A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m) | |
US6480606B1 (en) | Elliptic curve encryption method and system | |
Harb et al. | FPGA implementation of the ECC over GF (2m) for small embedded applications | |
EP1600852A2 (en) | Method and apparatus for calculating a modular inverse | |
JP2003098962A (en) | Method and device for calculating elliptic curve scalar multiple, and recording medium | |
JP4351987B2 (en) | Montgomery conversion device, arithmetic device, IC card, encryption device, decryption device, and program | |
CN111092718A (en) | Encryption method and device and electronic equipment | |
KR100508092B1 (en) | Modular multiplication circuit with low power | |
JP2009505148A (en) | Circuit arrangement and method for performing inversion operation in encryption operation | |
Großschädl | High-speed RSA hardware based on Barret’s modular reduction method | |
Telle et al. | Customising hardware designs for elliptic curve cryptography | |
TWI630545B (en) | Non-modular multiplier, method for non-modular multiplication and computational device | |
JP5179933B2 (en) | Data processing device | |
US7113593B2 (en) | Recursive cryptoaccelerator and recursive VHDL design of logic circuits | |
Huynh et al. | An efficient cryptographic accelerators for IoT system based on elliptic curve digital signature | |
JP3779479B2 (en) | IC card | |
TWI403952B (en) | A large integer modulus index chip structure for signature cryptography | |
Poomagal et al. | Modular multiplication algorithm in cryptographic processor: A review and future directions | |
US7472154B2 (en) | Multiplication remainder calculator | |
Maurya et al. | FPGA Implementation of a Fast Scalar Point Multiplier for an Elliptic Curve Crypto-Processor | |
JP2005316038A (en) | Scalar multiple computing method, device, and program in elliptic curve cryptosystem | |
Patel et al. | High speed elliptic curve cryptography architecture for NIST recommended Galois field |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100527 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110406 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121203 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121227 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130110 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |