← Back to Patent Explorer
US5724279A Expired / Lapsed US ⏱️ 0.0 years remaining

Computer-implemented method and computer for performing modular reduction

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1995-08-25
•
Granted: 1998-03-03
•
Expires: 2015-08-25
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract This invention provides a computer-implemented method for performing a modular reduction operation "X mod M" and doing modular arithmetic on a computer. In a first stage of the method, the number X=<x k x k-1 . . . x 1 x 0 >, written in base α, is reduced from k+1 blocks to an n+1 block integer Y that is equivalent to X modulo M. The stage one process is achieved via a reduce-and-compensate scheme that involves a series of simple multiply and add/subtract operations that are much faster than conventional techniques for performing the division remainder operation "X mod M." The reduction phase requires reducing the number X to an intermediate value that is equal to X mod α k . The compensate phase requires adjustment by an amount sufficient to produce an incrementally reduced value X R which is equivalent to X modulo M. This compensate phase can be implemented by adding back a multiple of α n+1 mod M, or by subtracting a multiple of M-(α n+1 mod M). The stage two process further reduces the n+1 block integer Y to an equivalent n block integer Z. Although intermediate computations may stop after stage one or stage two, the resulting integer Z might be larger than the modulus M, and thus still require further reduction to produce a final result. Accordingly, the third stage involves reducing the integer Z to an equivalent remainder R such that 0≦R<M.

Inventors

  • 👤 Josh Benaloh
  • 👤 Wei Dai

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 14:41
CPC Classifications
G; G06; G06F; G06F7/00; G06F7/60; G06F7/72

Claims Analysis

Total Claims: 60
Claim 1
Independent Claim 193 words
In an electronic system involving transmission of data over a network between two computing units, a computer-implemented method comprising the following steps: sending data from one computing unit to another; and processing the data at one of the computing units using a modular reduction operation "X mod M," where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, said processing step comprising defining a constant U that is equal to α n+1 mod M, reducing the number X by an integer multiple of α n+1 to yield an intermediate value that is less than the number X but greater than zero, and compensating for reduction of the number X by adjusting the intermediate value by an amount that is one of (1) an integer multiple of the constant U or (2) an integer multiple of a constant V, where V=M-U, to yield an incrementally reduced value X R that is equivalent modulo M to the number X.
Claim 2
Dependent Claim 193 words
In an electronic system involving transmission of data over a network between two computing units, a computer-implemented method comprising the following steps: sending data from one computing unit to another; and processing the data at one of the computing units using a modular reduction operation "X mod M," where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, said processing step comprising defining a constant U that is equal to α n+1 mod M, reducing the number X by an integer multiple of α n+1 to yield an intermediate value that is less than the number X but greater than zero, and compensating for reduction of the number X by adjusting the intermediate value by an amount that is one of (1) an integer multiple of the constant U or (2) an integer multiple of a constant V, where V=M-U, to yield an incrementally reduced value X R that is equivalent modulo M to the number X.
Claim 3
Dependent Claim 25 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises adding the integer multiple of the constant U to the intermediate value.
Claim 4
Dependent Claim 25 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises subtracting the integer multiple of the constant V from the intermediate value.
Claim 5
Dependent Claim 25 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises subtracting the integer multiple of the constant U from the intermediate value.
Claim 6
Dependent Claim 26 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises computing an intermediate value that is equal to X mod α k .
Claim 7
Dependent Claim 29 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises deleting a most significant block x k from the number X to yield the intermediate value.
Claim 8
Dependent Claim 36 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises subtracting a product of a most significant block x k multiplied by α k from the number X to yield the intermediate value.
Claim 9
Dependent Claim 23 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises computing X mod α k to yield the intermediate value.
Claim 10
Dependent Claim 29 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises adding to the intermediate value an amount equal to a product x k *U*α k-n-1 .
Claim 11
Dependent Claim 69 words
A computer-implemented method as recited in claim 1 wherein the processing step comprises one of the following: in an event that X≧0, subtracting an amount that is equal to a product x k *V*α k-n-1 from the intermediate value; and in an event that X<0, subtracting an amount that is equal to a product x k '*U*α k-n-1 , where x k '=α-x k , from the intermediate value.
Claim 12
Dependent Claim 262 words
In an electronic system involving transmission of data over a network between two computing units, a computer-implemented method comprising the following steps: sending data from one computing unit to another; and processing the data at one of the computing units using a modular reduction operation "X mod M," where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, said processing step comprising: a) computing a constant U=α n+1 mod M; b) storing the constant U in a constant register; c) establishing a value Y=<y k y k-1 . . . y 1 y 0 > that is equal to the number X so that y k =x k , y k-1 =x k-1 , . . . y 1 =x 1 , and y 0 =x 0 ; d) storing Y in an intermediate value register; e) initializing a count i=k in a count register; f) retrieving the constant U from the constant register, the value Y from the intermediate value register, and the count i from the count register; g) computing a partially reduced value Y R =Y mod α i +y i *U*α i-n-1 , the partially reduced value Y R being equivalent to Y modulo M; and h) storing the partially reduced value Y R in the intermediate value register to replace the value Y, whereby Y=Y R for any subsequent modular reduction.
Claim 13
Dependent Claim 262 words
In an electronic system involving transmission of data over a network between two computing units, a computer-implemented method comprising the following steps: sending data from one computing unit to another; and processing the data at one of the computing units using a modular reduction operation "X mod M," where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, said processing step comprising: a) computing a constant U=α n+1 mod M; b) storing the constant U in a constant register; c) establishing a value Y=<y k y k-1 . . . y 1 y 0 > that is equal to the number X so that y k =x k , y k-1 =x k-1 , . . . y 1 =x 1 , and y 0 =x 0 ; d) storing Y in an intermediate value register; e) initializing a count i=k in a count register; f) retrieving the constant U from the constant register, the value Y from the intermediate value register, and the count i from the count register; g) computing a partially reduced value Y R =Y mod α i +y i *U*α i-n-1 , the partially reduced value Y R being equivalent to Y modulo M; and h) storing the partially reduced value Y R in the intermediate value register to replace the value Y, whereby Y=Y R for any subsequent modular reduction.
Claim 14
Dependent Claim 63 words
A computer-implemented method as recited in claim 11 wherein in an event that the computing step (g) yields a partially reduced value of Y R ≧α i , the computing step (g) additionally comprises further reducing the partially reduced value Y R by replacing the partially reduced value Y R with an amount equal to Y R mod α i +U*α i-n-1 .
Claim 15
Dependent Claim 38 words
A computer-implemented method as recited in claim 11, wherein said processing step further comprises the following additional steps: i) decrementing the count i in the count register; and j) in an event that count i≧n+1, repeating steps (f)-(h).
Claim 16
Dependent Claim 377 words
In an electronic system involving transmission of data over a network between two computing units, a computer-implemented method comprising the following steps: sending data from one computing unit to another; and processing the data at one of the computing units using a modular reduction operation "X mod M," where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, said processing step comprising: a) computing a constant U=α n+1 mod M; b) storing the constant U in a first constant register; c) computing a constant V=M-U; d) storing the constant V in a second constant register; e) establishing a value Y=<y k y k-1 . . . y 1 y 0 > that is equal to the number X so that y k =x k , y k-1 =x k-1 , . . . y 1 =x 1 , and y 0 =x 0 ; f) storing Y in an intermediate value register; g) initializing a count i=k in a count register; h) determining whether Y≧0; i) in the event that the step (h) determination yields Y≧0, then performing steps of (1) retrieving the constant V from the second constant register, the value Y from the intermediate value register, and the count i from the count register, and (2) computing a partially reduced value Y R =Y mod α i -y i *V*α i-n-1 , the partially reduced value Y R being equivalent to the value Y modulo M; j) in the event that the step (h) determination yields Y<0, then performing steps of (1) retrieving the constant U from the first constant register, the value Y from the intermediate value register, and the count i from the count register, and (2) computing a partially reduced value Y R =Y mod α i -y i '*U*α i-n-1 where y i '=α-y i , the partially reduced value Y R being equivalent to Y modulo M; and k) storing the partially reduced value Y R in the intermediate value register to replace the value Y, whereby Y=Y R for any subsequent modular reduction.
Claim 17
Dependent Claim 377 words
In an electronic system involving transmission of data over a network between two computing units, a computer-implemented method comprising the following steps: sending data from one computing unit to another; and processing the data at one of the computing units using a modular reduction operation "X mod M," where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, said processing step comprising: a) computing a constant U=α n+1 mod M; b) storing the constant U in a first constant register; c) computing a constant V=M-U; d) storing the constant V in a second constant register; e) establishing a value Y=<y k y k-1 . . . y 1 y 0 > that is equal to the number X so that y k =x k , y k-1 =x k-1 , . . . y 1 =x 1 , and y 0 =x 0 ; f) storing Y in an intermediate value register; g) initializing a count i=k in a count register; h) determining whether Y≧0; i) in the event that the step (h) determination yields Y≧0, then performing steps of (1) retrieving the constant V from the second constant register, the value Y from the intermediate value register, and the count i from the count register, and (2) computing a partially reduced value Y R =Y mod α i -y i *V*α i-n-1 , the partially reduced value Y R being equivalent to the value Y modulo M; j) in the event that the step (h) determination yields Y<0, then performing steps of (1) retrieving the constant U from the first constant register, the value Y from the intermediate value register, and the count i from the count register, and (2) computing a partially reduced value Y R =Y mod α i -y i '*U*α i-n-1 where y i '=α-y i , the partially reduced value Y R being equivalent to Y modulo M; and k) storing the partially reduced value Y R in the intermediate value register to replace the value Y, whereby Y=Y R for any subsequent modular reduction.
Claim 18
Dependent Claim 38 words
A computer-implemented method as recited in claim 14, wherein the processing step further comprises the following additional steps: l) decrementing the count i in the count register; and m) in an event that count i≧n+1, repeating steps (h)-(k).
Claim 19
Dependent Claim 43 words
A computer-implemented method as recited in claim 15, wherein the processing step further comprises the following additional step: n) in an event that, subsequent to step (m), the partially reduced value Y R <0, computing Y R =Y R mod α n+1 -U.
Claim 20
Dependent Claim 197 words
A computer for performing at least partially a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the computer comprising: a data processor; said data processor being programmed with computer-executable instructions, including: (a) computer-executable instructions to direct the data processor to precompute a constant U that is equal to α n+1 mod M; (b) computer-executable instructions to direct the data processor to reduce the number X by an integer multiple of α n+1 to yield an intermediate value that is less than the number X but greater than zero; and (c) computer-executable instructions to direct the data processor to compensate for reduction of the number X by adjusting the intermediate value by an amount that is one of (1) an integer multiple of the constant U or (2) an integer multiple of a constant V, where V=M-U, to yield an incrementally reduced value X R that is equivalent modulo M to the number X.
Claim 21
Dependent Claim 197 words
A computer for performing at least partially a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the computer comprising: a data processor; said data processor being programmed with computer-executable instructions, including: (a) computer-executable instructions to direct the data processor to precompute a constant U that is equal to α n+1 mod M; (b) computer-executable instructions to direct the data processor to reduce the number X by an integer multiple of α n+1 to yield an intermediate value that is less than the number X but greater than zero; and (c) computer-executable instructions to direct the data processor to compensate for reduction of the number X by adjusting the intermediate value by an amount that is one of (1) an integer multiple of the constant U or (2) an integer multiple of a constant V, where V=M-U, to yield an incrementally reduced value X R that is equivalent modulo M to the number X.
Claim 22
Dependent Claim 35 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable institutions to direct the data processor to add the integer multiple of the constant U to the intermediate value.
Claim 23
Dependent Claim 35 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable instructions to direct the data processor to subtract the integer multiple of the constant V from the intermediate value.
Claim 24
Dependent Claim 35 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable instructions to direct the data processor to subtract the integer multiple of the constant U from the intermediate value.
Claim 25
Dependent Claim 39 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable instructions to direct the data processor to delete a most significant block x k from the number X to yield the intermediate value.
Claim 26
Dependent Claim 46 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable instructions to direct the data processor to subtract a product of a most significant block x k multiplied by α k from the number X to yield the intermediate value.
Claim 27
Dependent Claim 33 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable instructions to direct the data processor to compute X mod α k to yield the intermediate value.
Claim 28
Dependent Claim 40 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable instructions to direct the data processor to reduce the number X to an intermediate value that is equal to X mod α k .
Claim 29
Dependent Claim 41 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable instructions to direct the data processor to add to the intermediate value an amount that is equal to a product x k *U*α k-n-1 .
Claim 30
Dependent Claim 74 words
A computer as recited in claim 17 wherein the data processor is further programmed with computer-executable instructions to direct the data processor to: in an event that X≧0, subtract an amount that is equal to a product x k *V*α k-n-1 from the intermediate value; and in an event that X<0, subtract an amount that is equal to a product x k '*U*α k-n-1 where x k '=α-x k , from the intermediate value.
Claim 31
Dependent Claim 129 words
A computer for performing at least partially a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the computer comprising: a data processor; said data processor being programmed with computer-executable instructions, including: (a) computer-executable instructions to direct the data processor to precompute a constant U=α n+1 mod M; and (b) computer-executable instructions to direct the data processor to compute an incrementally reduced value X R =X mod α k +x k *U*α k-n-1 where the incrementally reduced value X R is equivalent to X modulo M.
Claim 32
Dependent Claim 129 words
A computer for performing at least partially a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the computer comprising: a data processor; said data processor being programmed with computer-executable instructions, including: (a) computer-executable instructions to direct the data processor to precompute a constant U=α n+1 mod M; and (b) computer-executable instructions to direct the data processor to compute an incrementally reduced value X R =X mod α k +x k *U*α k-n-1 where the incrementally reduced value X R is equivalent to X modulo M.
Claim 33
Dependent Claim 32 words
A computer as recited in claim 27 wherein the computer-executable instructions of part (b) direct the data processor to iteratively compute the reduced value X R for iterations i=k down to n+1.
Claim 34
Dependent Claim 32 words
A computer as recited in claim 27 wherein the computer-executable instructions of part (b) direct the data processor to iteratively compute the reduced value X R for iterations i=k down to i>n+1.
Claim 35
Dependent Claim 174 words
A computer for performing at least partially a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the computer comprising: a data processor; said data processor being programmed with computer-executable instructions, including: (a) computer-executable instructions to direct the data processor to precompute a constant U=α n+1 mod M; (b) computer-executable instructions to direct the data processor to precompute a constant V=M-U; (c) computer-executable instructions to direct the data processor to determine whether X≧0; (d) in the event that X≧0, computer-executable instructions to direct the data processor to compute X R =X mod α k -x k *V*α k-n-1 ; and (e) in the event that X<0, computer-executable instructions to direct the data processor to compute X R =X mod α k -x k '*U*α k-n-1 where x k '=α-x k .
Claim 36
Dependent Claim 174 words
A computer for performing at least partially a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the computer comprising: a data processor; said data processor being programmed with computer-executable instructions, including: (a) computer-executable instructions to direct the data processor to precompute a constant U=α n+1 mod M; (b) computer-executable instructions to direct the data processor to precompute a constant V=M-U; (c) computer-executable instructions to direct the data processor to determine whether X≧0; (d) in the event that X≧0, computer-executable instructions to direct the data processor to compute X R =X mod α k -x k *V*α k-n-1 ; and (e) in the event that X<0, computer-executable instructions to direct the data processor to compute X R =X mod α k -x k '*U*α k-n-1 where x k '=α-x k .
Claim 37
Dependent Claim 32 words
A computer as recited in claim 30 wherein the computer-executable instructions of parts (c)-(e) direct the data processor to iteratively compute the reduced value X R for iterations i=k down to n+1.
Claim 38
Dependent Claim 32 words
A computer as recited in claim 30 wherein the computer-executable instructions of parts (c)-(e) direct the data processor to iteratively compute the reduced value X R for iterations i=k down to i>n+1.
Claim 39
Dependent Claim 150 words
A math processing unit for performing at least partially a cryptographic function using a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the math processing unit comprising: a first register to store the number X; a second register to store a precomputed constant U, where U=α n+1 mod M; and means coupled to receive the number X from the first register and to receive the precomputed constant U from the second register for computing a cryptographic function by, in part, modularly reducing the number X to produce an incrementally reduced value X R that is equal to X mod α k +x k *U*α k-n-1 .
Claim 40
Dependent Claim 150 words
A math processing unit for performing at least partially a cryptographic function using a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the math processing unit comprising: a first register to store the number X; a second register to store a precomputed constant U, where U=α n+1 mod M; and means coupled to receive the number X from the first register and to receive the precomputed constant U from the second register for computing a cryptographic function by, in part, modularly reducing the number X to produce an incrementally reduced value X R that is equal to X mod α k +x k *U*α k-n-1 .
Claim 41
Dependent Claim 53 words
A math processing unit as recited in claim 33 wherein said means is configured for calculating an incrementally reduced value X R by (1) deleting a most significant block x k from the number X to provide an intermediate value and (2) adding a product x k *U*α k-n-1 to the intermediate value.
Claim 42
Dependent Claim 50 words
A math processing unit as recited in claim 33 wherein the means is configured for calculating an incrementally reduced value X R by (1) subtracting a product x k *α k from the number X and (2) adding a product x k *U*α k-n-1 to the result of the subtraction.
Claim 43
Dependent Claim 47 words
A math processing unit as recited in claim 33 wherein the means is configured for calculating an incrementally reduced value X R by (1) subtracting X mod α k to provide an intermediate value, and (2) adding a product x k *U*α k-n-1 to the intermediate value.
Claim 44
Dependent Claim 12 words
A microprocessor comprising a math processing unit as recited in claim 33.
Claim 45
Dependent Claim 13 words
A smart card comprising a math processing unit as recited in claim 33.
Claim 46
Dependent Claim 199 words
A math processing unit for performing at least partially a cryptographic function using a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n <k+1, the math processing unit comprising: a first register to store the number X; a second register to store a precomputed constant U, where U=α n+1 mod M; a third register to hold a precomputed constant V, where V=M-U; and means coupled to receive the number X from the first register, to receive the precomputed constant U from the second register, and to receive the precomputed constant V from the third register, for computing a cryptographic function by, in part, modularly reducing the number X to an incrementally reduced value X R that is equal to either (1) X mod α k -x k *V*α k-n-1 in the event that X≧0, or (2) X mod α k -x k '*U*α k-n-1 , where x k '=α-k k , in the event that X<0.
Claim 47
Dependent Claim 199 words
A math processing unit for performing at least partially a cryptographic function using a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n <k+1, the math processing unit comprising: a first register to store the number X; a second register to store a precomputed constant U, where U=α n+1 mod M; a third register to hold a precomputed constant V, where V=M-U; and means coupled to receive the number X from the first register, to receive the precomputed constant U from the second register, and to receive the precomputed constant V from the third register, for computing a cryptographic function by, in part, modularly reducing the number X to an incrementally reduced value X R that is equal to either (1) X mod α k -x k *V*α k-n-1 in the event that X≧0, or (2) X mod α k -x k '*U*α k-n-1 , where x k '=α-k k , in the event that X<0.
Claim 48
Dependent Claim 73 words
A math processing unit as recited in claim 39 wherein the means is configured for calculating an incrementally reduced value X R by (1) deleting a most significant block x k from the number X to provide an intermediate value, and (2) subtracting from the intermediate value either (a) a product x k *V*α k-n-1 in the event that X≧0, or (b) a product x k '*U*α k-n-1 in the event that X<0.
Claim 49
Dependent Claim 65 words
A math processing unit as recited in claim 39 wherein the means is configured for calculating an incrementally reduced value X R by (1) subtracting a product x k *α k from the number X, and (2) further subtracting either (a) a product x k *V*α k-n-1 in the event that X≧0, or (b) a product x k '*U*α k-n-1 in the event that X<0.
Claim 50
Dependent Claim 67 words
A math processing unit as recited in claim 39 wherein the means is configured for calculating an incrementally reduced value X R by (1) subtracting X mod α k to provide an intermediate value, and (2) subtracting from the intermediate value either (a) a product x k *V*α k-n-1 in the event that X≧0, or (b) a product x k '*U*α k-n-1 in the event that X<0.
Claim 51
Dependent Claim 12 words
A microprocessor comprising a math processing unit as recited in claim 39.
Claim 52
Dependent Claim 13 words
A smart card comprising a math processing unit as recited in claim 39.
Claim 53
Dependent Claim 196 words
A computer-readable memory used to direct a computer to perform at least partially a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the computer-readable memory having computer-executable instructions for directing the computer, including: (a) computer-executable instructions to direct the computer to precompute a constant U that is equal to α n+1 mod M; (b) computer-executable instructions to direct the computer to reduce the number X by an integer multiple of α n+1 to yield an intermediate value that is less than the number X but greater than zero; and (c) computer-executable instructions to direct the computer to compensate for reduction of the number X by adjusting the intermediate value by an amount that is one of (1) an integer multiple of the constant U or (2) an integer multiple of a constant V, where V=M-U, to yield an incrementally reduced value X R that is equivalent modulo M to the number X.
Claim 54
Dependent Claim 196 words
A computer-readable memory used to direct a computer to perform at least partially a modular reduction operation "X mod M" where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, the computer-readable memory having computer-executable instructions for directing the computer, including: (a) computer-executable instructions to direct the computer to precompute a constant U that is equal to α n+1 mod M; (b) computer-executable instructions to direct the computer to reduce the number X by an integer multiple of α n+1 to yield an intermediate value that is less than the number X but greater than zero; and (c) computer-executable instructions to direct the computer to compensate for reduction of the number X by adjusting the intermediate value by an amount that is one of (1) an integer multiple of the constant U or (2) an integer multiple of a constant V, where V=M-U, to yield an incrementally reduced value X R that is equivalent modulo M to the number X.
Claim 55
Dependent Claim 36 words
A computer-readable memory as recited in claim 45, wherein the computer-executable instructions of part (b) direct the computer to reduce the number X to an intermediate value that is equal to X mod α k .
Claim 56
Dependent Claim 37 words
A computer-readable memory as recited in claim 16, wherein the computer-executable instructions of part (c) direct the computer to add to the intermediate value an amount that is equal to a product x k *U*α k-n-1 .
Claim 57
Dependent Claim 71 words
A computer-readable memory as recited in claim 16, wherein the computer-executable in instruction of part (c) direct the computer to: in an event that X≧0, subtract an amount that is equal to a product x k *V*α k-n-1 from the intermediate value; and in an event that X≧0, subtract an amount that is equal to a product x k '*U*α k-n-1 where x k '=α-x k , from the intermediate value.
Claim 58
Dependent Claim 12 words
A smart card comprising a computer-readable memory as recited in claim 45.
Claim 59
Dependent Claim 189 words
In a cryptographic system, a computer-implemented method comprising the following steps: processing a message according to a cryptographic function; and said processing step including to at least partially computing a modular reduction operation "X mod M" as part of the cryptographic function, where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, said computing comprising the following steps: defining a constant U that is equal to α n+1 mod M; reducing the number X by an integer multiple of α n+1 to yield an intermediate value that is less than the number X but greater than zero; and compensating for reduction of the number X by adjusting the intermediate value by an amount that is one of (1) an integer multiple of the constant U or (2) an integer multiple of a constant V, where V=M-U, to yield an incrementally reduced value X R that is equivalent modulo M to the number X.
Claim 60
Dependent Claim 189 words
In a cryptographic system, a computer-implemented method comprising the following steps: processing a message according to a cryptographic function; and said processing step including to at least partially computing a modular reduction operation "X mod M" as part of the cryptographic function, where X is a number with k+1 blocks written in base α, X=<x k x k-1 . . . x 1 x 0 >, and M is a modulus having n blocks, M=<m n-1 m n-2 . . . m 1 m 0 >, and n<k+1, said computing comprising the following steps: defining a constant U that is equal to α n+1 mod M; reducing the number X by an integer multiple of α n+1 to yield an intermediate value that is less than the number X but greater than zero; and compensating for reduction of the number X by adjusting the intermediate value by an amount that is one of (1) an integer multiple of the constant U or (2) an integer multiple of a constant V, where V=M-U, to yield an incrementally reduced value X R that is equivalent modulo M to the number X.

References Cited (Backward Citations)

US4538237A Cited
US4949293A Cited
US5499299A Cited
US5572454A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-03-02 2001-09-01 2002-03-03 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-03-02 2005-09-01 2006-03-03 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-03-02 2009-09-01 2010-03-03 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag