EP0601907A2

A compact microelectronic device for performing modular multiplication and exponentiation over large numbers.

Abstract

A compact synchronous microelectronic peripheral machine for standard microprocessors with means for proper clocking and control, has as essential elements : three main subdivided, switched and clocked shift registers, B, S, and N; two only multiplexed serial/parallel multipliers; borrow detectors, ancillary subtractors and adders ; delay registers and switching elements ; all of which embody a totally integrated concurrent and synchronous process approach to modular multiplication, squaring, and exponentiation. A method for carrying out modular multiplication, wherein the multiplicand A , the multiplier B and the modul, N, comprise m characters of k bits each, the multiplier not being greater than the modulus, is also described, wherein the multiplicand can be much larger than the modulus. It is demonstrated how the device can be used as a large number processor in the normal field of numbers.

EP0601907A2, drawing sheet 1
Sheet 1 of 53

Term

Term ended

Projected expiry passed 26 November 2013, 12.8 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

31 claims: 5 independent, 26 dependent

  1. 1
    1) A compact synchronous microelectronic peripheral machine for standard microprocessors with means for proper clocking and control, having as essential elements:three main subdivided, switched and clocked shift registers, B (13), S (14) and N (15);two only multiplexed serial/parallel multipliers;borrow detectors (35), ancillary subtractors and adders (27,28,29,30 & 31);delay registers and switching elements;all of which embody a totally integrated concurrent and synchronous process approach to modular multiplication, squaring, and exponentiation.
  2. 19
    19) A method for carrying out modular multiplication, wherein the multiplicand A, the multiplier B and the modulus N comprise m characters of k bits each, the multiplier not being greater than the modulus, which comprises the steps of:1. precalculating a parameter H and at least the least significant character Jo of another parameter J, as hereinbefore defined, and loading Jo into a k-bit register;2. loading the multiplier B and the modulus N into respective registers of n-bit length, wherein n=m.k;3. setting an n-bit long register S to zero;and4. carrying out an i-iteration m times, wherein i is from zero to m-1, each ith iteration comprising the following operations: a) transferring the ith characterAi-1 of the multiplicand Afrom Ai register means to storing means chosen from among register and latch means;b) generating the value X = S(i-1) + A(i-1)·B, wherein S(i-1) is the "updated" value of S, as hereinafter defined, by : I - cycle right shifting of the B register into multiplying means,II - serially multiplying B by Ai,III - cycle right shifting of the modulus N,IV - deternining the "updated" value of S(i-1) as the value stored in the S register after the (i-1)th iteration, if the same is not greater N, or if it is greater than N, by serially subtracting N from it and assuming the resulting value as the "updated" value of S(i-1);andV - cycle right shifting of the register S and serially adding the value of the multiplication A(i-1)·B bit by bit to the "updated" value of S;c) multiplying the LS character of X(Xo) by Jo and entering the value Xo Jo mod 2k into register means as Yo, while delaying N and X by k clock cycles;d) calculating the value Z = X + Y0·N by: I - multiplying Yo by N by a delayed right shifting of the N register concurrent with the aforesaid right cycle shifting thereof, andII - adding X to the value of Yo.N;e) ignoring the least significant characterofZ and entering the remaining characters into the S register, whereby to enter Z/2k, except for the last iteration;f) comparing Z/2k to N bit by bit for the purpose of determining the updated value of S(i-1) in the manner hereinbefore defined;g) wherein the ith character of the multiplicand Ai is loaded into the Aregister means at any time during the aforesaid operations;5. at the last (mth) iteration, ignoring the least significant character of Z/2k and entering the remaining characters into the B register, as the value of C ¥ (A·B)N;6. repeating the steps 3) to 4), wherein C or C-N, if C is greater than N, is substituted for B and H is substituted for A, whereby to calculate P = (C·H)N;and 7) assuming the value of P obtained from the last iteration as the result of the operation A·B modN.
  3. 27
    27) A method for performing modular exponentiation of D = AE mod N, which comprises the steps of:1. storing the exponent E in a computer register;2. loading the modulus into the aforesaid register N;3. setting the aforesaid register S to zero;4. performing a multiplication operation, by the method of application No. 104753, of A*= (A.H)N while A is the operand to be exponentiated, and H is a precalculated parameter as defined before;5. loading A* into the base register B;6. performing a squaring operation of the contents of register B;7. shifting said exponent E left;8. ignoring all the zero bits thereof which precede the first 1 bit and ignoring the first 1 bit of said exponent E, and for all the following bits performing the operations 9 to 10;9. for every one of said E bits, regardless of their being 0 or 1, carrying out operations 4 and 5 of the squaring method hereinbefore set forth, wherein both the multiplicand and the multiplier originate from the B register, and wherein the successive characters of the Montgomery multiplier are loaded into register A, from register B;10. if and only if the current bit of the exponent E is 1, carrying out, after performing operation 9, operations 4 and 5 of the multiplication method hereinbefore set forth, wherein the multiplicand is the content of register B and the multiplier is the base A*;and11. after performing steps 8-10 for all bits of E, performing an additional multiplication of register B by the original base A and then storing the result of the last operation as D ¥ AE modN in register B.
  4. 30
    30) A method for performing modular exponentiation of D = AE mod N, substantially as described.
  5. 31
    31) A method for carrying out conventional multiplication of n/2-bit numbers, substantially as described.