US20110213819A1 - Modular multiplication method with precomputation using one known operand - Google Patents

Modular multiplication method with precomputation using one known operand Download PDF

Info

Publication number
US20110213819A1
US20110213819A1 US13/042,284 US201113042284A US2011213819A1 US 20110213819 A1 US20110213819 A1 US 20110213819A1 US 201113042284 A US201113042284 A US 201113042284A US 2011213819 A1 US2011213819 A1 US 2011213819A1
Authority
US
United States
Prior art keywords
operand
operands
circle around
quotient
value
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.)
Abandoned
Application number
US13/042,284
Inventor
Michel Douguet
Vincent Dupaquis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inside Secure SA
Cryptography Research Inc
Original Assignee
Atmel Rousset SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Atmel Rousset SAS filed Critical Atmel Rousset SAS
Priority to US13/042,284 priority Critical patent/US20110213819A1/en
Publication of US20110213819A1 publication Critical patent/US20110213819A1/en
Assigned to INSIDE SECURE reassignment INSIDE SECURE ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ATMEL ROUSSET S.A.S.
Assigned to CRYPTOGRAPHY RESEARCH, INC. reassignment CRYPTOGRAPHY RESEARCH, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RAMBUS INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication

Definitions

  • the present invention relates to methods or arrangements for processing numerical data by electrical programmable computers, digital processing systems, logic circuitry, or similar electronic hardware together with any associated software, and in particular relates to arithmetic processing and calculating methods involving finite field, residue or congruence operations, including modular multiplication operations upon integers or polynomials, especially methods based upon or derived from the Barrett reduction method.
  • Numerous cryptographic algorithms make use of large-integer multiplication (or exponentiation) and reduction of the product to a residue value that is congruent for a specified, modulus that is related to the cryptographic key.
  • Some cryptographic algorithms including the AES/Rijndael block cipher and also those based, on discrete logarithms and elliptic curves, perform arithmetic operations on polynomials in a finite field, such as the binary field GF(2 n ), including multiplication (or exponentiation) and modular reduction operations on such polynomials.
  • Mathematical computations in cryptographic algorithms may be susceptible to various side-channel attacks, including power analysis and timing attacks.
  • An attacker externally monitors aspects of the hardware that are accessible, such as current through chip pads or electromagnetic emissions from a chip, in order to obtain information about internal operations which may be subjected to various analyses in an effort to uncover the encrypt ion key. Therefore, it is important that computations be secured so that information about the key cannot be obtained.
  • secure microcontrollers for smart cards use various kinds of hardware-based countermeasures to thwart such attacks. While some software-level countermeasures introduced into a cryptographic algorithm itself might also be considered, it is very important that any such countermeasures not adversely affect the speed or accuracy of the underlying computations. Not all of the internal operations of a cryptographic algorithm are as readily adaptable so as to incorporate software countermeasures without appreciable slowing and without jeopardizing accuracy of a final result.
  • the present invention is a method implemented in an electronic digital processing system that performs fast modular multiplication computations upon integers or polynomials.
  • a precomputation is carried out using one operand that is known in advance, in order that the modular reduction quotient to be quickly estimated for any given product involving that operand.
  • the estimated quotient so obtained can be optionally reduced by a random value.
  • the reduced product will then be larger than or equal to, yet still congruent to, the exact residue value for the modular multiplication.
  • the exact residue value may need to be found using a few additional subtractions with the modulus, but the intermediate randomization is still useful in resisting cryptoanalytic attacks.
  • V and W are two operands of which W is known in advance
  • M is the modulus
  • a product congruent to (V ⁇ W) mod M is to be found
  • the choice of small integer increment ⁇ depends upon the maximum size of the other operand (the one not known in advance), and determines the permissible rounding error obtained for the quotient estimation.
  • the computation method is easily implemented with processing hardware, or by executing an equivalent firmware or software program in a data processor or computer.
  • Exemplary hardware used to execute the modular multiplication may include an arithmetic logic unit (ALU) with multiplication-accumulate (MAC) circuitry, which might be selectable to perform either natural or polynomial arithmetic, and which could, if desired, be dedicated to finite field operations.
  • ALU arithmetic logic unit
  • MAC multiplication-accumulate
  • a random number generator may be provided to inject a random value into an estimated quotient value used for the modular reduction of the product. It is also well within the level of skill of hardware system designers to implement the method entirely in hardware, using, for example, a field programmable gate array (FPGA) or application-specific integrated circuit (ASIC).
  • FPGA field programmable gate array
  • ASIC application-specific integrated circuit
  • FIG. 1 is a schematic plan view of exemplary processor hardware for use in executing the modular multiplication in accord with the present invention.
  • FIG. 2 is a flow diagram illustrating the general steps in the modular multiplication method of the present invention for integers.
  • FIG. 3 is a flow diagram illustrating the general steps in the modular multiplication method of the present invention for polynomials.
  • computational processor hardware for executing modular multiplication may include an arithmetic-logic unit (ALU) 10 , or similar computational circuitry containing a hardware multiplier, for executing numerical operations, including multiplication, upon the provided operands.
  • the ALU 10 generally has access to memory (RAM) 12 and various working registers 14 .
  • An operation sequencer 16 comprises logic circuitry for controlling the ALU, including data transfers to and from the memory 12 and registers 14 , in accord with firmware or software instructions for the set of operations used to carry out the modular multiplication.
  • Operation sequencer 16 may access operation parameters in the form of pointers stored in registers 18 that enable the operation sequencer 16 to locate an operand within the RAM 12 , as well as information such as the operand sizes, carry injection control information, the destination address of intermediate results, etc.
  • the hardware may also include a pseudo-random number generator circuit 20 that performs calculations and outputs a random numerical value (interpreted as either an integer or a polynomial). This random generator 20 may be accessed by the ALU 10 , as directed by the operation sequencer in accord with program instructions implementing the modular multiplication method of the present invention, in order to inject a randomized error quantity Rand into the quotient estimation, as described herein.
  • Modular multiplication of two operands typically consists in calculating a product of the two numbers, and then processing a modular reduction of the product.
  • the residue r V ⁇ W ⁇ q ⁇ M.
  • Barrett's reduction method involves pre-calculating and storing a scaled estimate of the modulus' reciprocal, M ⁇ 1 , and replacing the long division with multiplications and word shifts to obtain an estimated quotient q ⁇ circle around ( ) ⁇ . Obtaining the estimated quotient q ⁇ circle around ( ) ⁇ is much faster than calculating the true quotient.
  • the resulting remainder r ⁇ circle around ( ) ⁇ will be slightly larger than, but congruent with, the residue value r.
  • the exact residue value r if desired, can be obtained from the remainder r ⁇ circle around ( ) ⁇ by a final strict reduction.
  • the present invention modifies this approach still further when one of the operands is known in advance or is used many times in the execution of a given algorithm.
  • This value P will be used for efficiently estimating quotient values needed to quickly reduce the products of W with one or more operands V.
  • the integer n in the expression 2 n+ ⁇ is the size in bits of the larger of the known operand W and. the modulus M, so that W ⁇ 2 n and M ⁇ 2 n .
  • the choice of the integer ⁇ depends upon the maximum possible size of the other operand V. If V ⁇ 2 n+ ⁇ , then we can choose ⁇ and we will obtain a good estimated quotient as our estimate, that verifies Q ⁇ 1 ⁇ q ⁇ circle around ( ) ⁇ Q, where Q is the real quotient. Alternatively, we can choose ⁇ for a faster quotient estimation, but with a greater degree of rounding, so that the estimated quotient will differ from the exact quotient up to some maximum error determined by our choice of ⁇ . The choice ⁇ may be made, for example, if a bigger error on the quotient is accepted, or if a randomization is applied.
  • step 34 we load (step 34 ) a first of the operands V for which we wish to calculate a modular product with pre-known operand W.
  • random value E may have a size of no more than a half-word so as to limit the potential error contributed by that random value E.
  • the remainder R′ will usually be larger than the modulus M, because the quotient value used q′ is not exactly equal to actual quotient q. Nevertheless R′ is congruent to the residue value for the modular multiplication.
  • the residue R can be calculated from the remainder R′ by applying subtractions (step 46 ) of the modulus M until the number is smaller than the modulus M. Then the residue value R can be returned (step 48 ), possibly together with the particular operand V, for use in the rest of the cryptographic system.
  • the remainder R′ could be returned and used in the further calculations, since it is congruent modulo M with the residue value R.
  • step 50 one can check (step 50 ) whether there are other operands V to be used in a modular multiplication with the same pre-known operand W. If so, the procedure may return (path 52 ) to step 34 and load the next operand V. If there are no additional operands V, the procedure may return to the main program.
  • the modular multiplication operation may be adapted, for operation upon polynomial operands, e.g., in a binary finite field GF(2 N ).
  • Modular arithmetic with polynomials is similar in some respects to modular arithmetic with integers, although extending this to polynomials over a binary finite field GF(2 N ) requires certain modifications to the basic operation.
  • each binary byte value [a 7 a 6 a 5 a 4 a 3 a 2 a 1 a 0 ] with a corresponding polynomial over GF(2 N ) of degree 7 or less: a m x 7 +a 6 x 6 +a 5 x 5 +a 4 x 4 +a 3 x 3 +a 2 x 2 +a 1 x+a 0 .
  • the byte value [01100011] is interpreted as the binary polynomial x 6 +x 5 +x+1.
  • Longer multi-byte sequences may likewise be interpreted as polynomials of higher degree, provided that the polynomial degree (m ⁇ 1) is less than N in order for the polynomial to belong to the field GF(2 N ).
  • the comparison is performed degree by degree, starting with the polynomial coefficients for the largest degree in x.
  • Addition and subtraction of polynomials in a field are carried out in the usual manner of adding or subtracting the coefficients for each degree separately,
  • Polynomial multiplication is ordinarily defined (for infinite fields) by:
  • n is the dimension of the finite field, as in GF(2 n ).
  • the modulus m(x) is preferably chosen to be an irreducible polynomial (the polynomial analogue of a prime number, i.e.
  • p(x) and r(x) have the same remainder upon division by m(x).
  • the polynomial residue r (x) which is congruent with p(x), is the polynomial value we ultimately want.
  • m(x) will be an irreducible polynomial of degree n and the residue polynomial r(x) that is sought will be of degree less than n; but p(x) and hence also q(x) can be any degree, and at least the polynomial p(x) to be reduced is often of degree larger than m, as for example when p(x) is a product.
  • the basic problem in any modular reduction method is in efficiently obtaining a quotient, especially for polynomial p(x) and m(x) of large degree.
  • the polynomial p(x) will be used to efficiently compute a polynomial quotient q(x) for all modular multiplication operations involving the operand w(x),
  • the other operand v(x), not necessarily known in advance, is loaded (step 64 ) and the polynomial quotient q(x) associated with the product v(x) ⁇ w(x) is computed (step 66 ) as:
  • the random polynomial value E(x) may be generated by any known random or pseudo-random number generator (hardware or software), where the binary value generated is interpreted as a polynomial in the manner already described above.
  • the random polynomial value E(x) may be constrained to fall within some specified range, such as 0 ⁇ deg(E(x)) ⁇ w/2, where here w is the word size.
  • step 44 the modular multiplication operation is carried out (step 44 ), producing a remainder r′(x):
  • the residue polynomial r(x) can be calculated from the remainder r′(x) by applying ordinary GF(2 N ) polynomial reduction with the modulus m(x) to obtain a polynomial smaller than m(x).
  • the polynomial remainder r′(x) or the residue r(x) may be returned for further use by the application. If modular multiplication on another polynomial operand v(x) is to be carried out (step 80 ) using the same w (x), then the procedure goes back (path 82 ) to loading (step 64 ) the next v(x).

Abstract

A modular multiplication method implemented in an electronic digital processing system takes advantage of the case where one of the operands W is known in advance or used multiple times with different second operands V to speed calculation. The operands V and W and the modulus M may be integers or polynomials over a variable X. A possible choice for the type of polynomials can be polynomials of the binary finite field GF(2N). Once operand W is loaded into a data storage location, a value P=└W·Xn+δ/M┘ is pre-computed by the processing system. Then when a second operand V is loaded, the quotient q{circle around ( )} for the product V·W being reduced modulo M is quickly estimated, q{circle around ( )}=└V·P/Xn+δ┘, optionally randomized, q′=q{circle around ( )}−E, and can be used to obtain the remainder r′=V·W−q′·M, which is congruent to (V·W) mod M. A final reduction can be carried out, and the later steps repeated with other second operands V.

Description

    RELATED APPLICATIONS
  • This application is a continuation of U.S. application Ser. No. 11/556,894, filed on Nov. 6, 2006, which is incorporated herein by reference in its entirety.
  • TECHNICAL FIELD
  • The present invention relates to methods or arrangements for processing numerical data by electrical programmable computers, digital processing systems, logic circuitry, or similar electronic hardware together with any associated software, and in particular relates to arithmetic processing and calculating methods involving finite field, residue or congruence operations, including modular multiplication operations upon integers or polynomials, especially methods based upon or derived from the Barrett reduction method.
  • BACKGROUND ART
  • Numerous cryptographic algorithms make use of large-integer multiplication (or exponentiation) and reduction of the product to a residue value that is congruent for a specified, modulus that is related to the cryptographic key. Some cryptographic algorithms, including the AES/Rijndael block cipher and also those based, on discrete logarithms and elliptic curves, perform arithmetic operations on polynomials in a finite field, such as the binary field GF(2n), including multiplication (or exponentiation) and modular reduction operations on such polynomials.
  • Mathematical computations in cryptographic algorithms, especially those performed by hardware-implemented cryptographic systems (such as RISC-based smart cards), may be susceptible to various side-channel attacks, including power analysis and timing attacks. An attacker externally monitors aspects of the hardware that are accessible, such as current through chip pads or electromagnetic emissions from a chip, in order to obtain information about internal operations which may be subjected to various analyses in an effort to uncover the encrypt ion key. Therefore, it is important that computations be secured so that information about the key cannot be obtained.
  • Typically, secure microcontrollers for smart cards use various kinds of hardware-based countermeasures to thwart such attacks. While some software-level countermeasures introduced into a cryptographic algorithm itself might also be considered, it is very important that any such countermeasures not adversely affect the speed or accuracy of the underlying computations. Not all of the internal operations of a cryptographic algorithm are as readily adaptable so as to incorporate software countermeasures without appreciable slowing and without jeopardizing accuracy of a final result.
  • Arithmetic operations in particular, including modular multiplication, either upon integers or upon polynomials with integer coefficients, generally require a specific result from operating upon given operands. Any changes that would obtain an erroneous final result would clearly be unwelcome. At the same time, it is important that these computations be fast and accurate. Multiplication and reduction, whether operated upon large integers or upon polynomials in a finite field, is usually the most computationally intensive portion of a cryptographic algorithm. In electronic digital hardware, various computational methods have been developed for efficiently performing modular multiplication, including those based upon the Barrett reduction method.
  • One particular case that frequently occurs in cryptographic applications is where one of the operands of a modular multiplication (or exponentiation) operation is known in advance or used several times. It would be desirable to take advantage of such occurrences in order to speed up the computation.
  • SUMMARY DISCLOSURE
  • The present invention is a method implemented in an electronic digital processing system that performs fast modular multiplication computations upon integers or polynomials. In particular, a precomputation is carried out using one operand that is known in advance, in order that the modular reduction quotient to be quickly estimated for any given product involving that operand. For added cryptographic security, the estimated quotient so obtained can be optionally reduced by a random value. The reduced product will then be larger than or equal to, yet still congruent to, the exact residue value for the modular multiplication. In some cryptographic algorithms, it is possible to work with the larger randomized, but congruent, value without affecting the final result. In other algorithms, the exact residue value may need to be found using a few additional subtractions with the modulus, but the intermediate randomization is still useful in resisting cryptoanalytic attacks.
  • More specifically, where V and W are two operands of which W is known in advance, M is the modulus, and a product congruent to (V×W) mod M is to be found, the method precomputes P=└W×2n+δ)/M┘, where n is greater than the size of the larger of W and M. The choice of small integer increment δ depends upon the maximum size of the other operand (the one not known in advance), and determines the permissible rounding error obtained for the quotient estimation. For each modular multiplication involving the pre-known operand W, an estimated quotient q{circle around ( )}=└(V×P)/2n+δ┘ is obtained. Then a remainder value r{circle around ( )}=V×W−q{circle around ( )}×M is calculated. If the estimated quotient is reduced by a random value, q′=q{circle around ( )}−E, then the randomized estimated quotient q′ is used to obtain a remainder value r′ congruent with the exact residue.
  • This sequence of steps can be carried out using either integer or polynomial operands. For polynomial operands over a variable X, when calculating both P and q{circle around ( )}, Xn+δ replaces 2n+δ. To clarify the differences between integers and polynomials: (1) For integers, if the maximum possible size of V>2n+φ, and if δ≧φ, then the result q{circle around ( )} is less than or equal to the actual quotient Q with a maximum error of 1, i.e., Q−1≦q{circle around ( )}≦Q. But if δ<φ, the result q{circle around ( )} is less than or equal to the actual quotient Q with a maximum error defined by Q−2φ−δ≦q{circle around ( )}≦Q; (2) For polynomials, if the maximum size (i.e., degree) of polynomial V(x) is such that deg(V(x))<n+φ, and if δ≧φ−1, then the result q{circle around ( )} is equal to the actual quotient Q. But if δ<φ−1, the result q{circle around ( )} can be different from the actual quotient Q with a maximum error deg(Q−q{circle around ( )})≦φ−δ−2.
  • The computation method is easily implemented with processing hardware, or by executing an equivalent firmware or software program in a data processor or computer. Exemplary hardware used to execute the modular multiplication may include an arithmetic logic unit (ALU) with multiplication-accumulate (MAC) circuitry, which might be selectable to perform either natural or polynomial arithmetic, and which could, if desired, be dedicated to finite field operations. Such a computation unit, with memory access, operates under the control of an operation sequencer executing firmware to carry out the modular multiplication steps. A random number generator may be provided to inject a random value into an estimated quotient value used for the modular reduction of the product. It is also well within the level of skill of hardware system designers to implement the method entirely in hardware, using, for example, a field programmable gate array (FPGA) or application-specific integrated circuit (ASIC).
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a schematic plan view of exemplary processor hardware for use in executing the modular multiplication in accord with the present invention.
  • FIG. 2 is a flow diagram illustrating the general steps in the modular multiplication method of the present invention for integers.
  • FIG. 3 is a flow diagram illustrating the general steps in the modular multiplication method of the present invention for polynomials.
  • DETAILED DESCRIPTION
  • With reference to FIG. 1, computational processor hardware for executing modular multiplication in accord with the present invention may include an arithmetic-logic unit (ALU) 10, or similar computational circuitry containing a hardware multiplier, for executing numerical operations, including multiplication, upon the provided operands. The ALU 10 generally has access to memory (RAM) 12 and various working registers 14. An operation sequencer 16 comprises logic circuitry for controlling the ALU, including data transfers to and from the memory 12 and registers 14, in accord with firmware or software instructions for the set of operations used to carry out the modular multiplication. Operation sequencer 16 may access operation parameters in the form of pointers stored in registers 18 that enable the operation sequencer 16 to locate an operand within the RAM 12, as well as information such as the operand sizes, carry injection control information, the destination address of intermediate results, etc. The hardware may also include a pseudo-random number generator circuit 20 that performs calculations and outputs a random numerical value (interpreted as either an integer or a polynomial). This random generator 20 may be accessed by the ALU 10, as directed by the operation sequencer in accord with program instructions implementing the modular multiplication method of the present invention, in order to inject a randomized error quantity Rand into the quotient estimation, as described herein.
  • Modular multiplication of two operands, whether of integers or polynomials, typically consists in calculating a product of the two numbers, and then processing a modular reduction of the product. Modular reduction generally solves r≡X mod M≡X−└X/M┘ M, where r is the residue value to be found which is congruent to X for a modulus M, and the symbol └a┘ represents the floor function (the largest integer≦a) so that q=└X/M┘ corresponds to an integer division operation to find a quotient q. In the present case, the numerical value X, whether an integer or a polynomial, is the product of two operands, X=V×W, where the operands V and W are themselves either integers or polynomials. Thus, the residue r=V×W−q×M. Barrett's reduction method involves pre-calculating and storing a scaled estimate of the modulus' reciprocal, M−1, and replacing the long division with multiplications and word shifts to obtain an estimated quotient q{circle around ( )}. Obtaining the estimated quotient q{circle around ( )} is much faster than calculating the true quotient. When the estimated quotient q{circle around ( )} is used in place of the true quotient, the resulting remainder r{circle around ( )} will be slightly larger than, but congruent with, the residue value r. The exact residue value r, if desired, can be obtained from the remainder r{circle around ( )} by a final strict reduction. The present invention modifies this approach still further when one of the operands is known in advance or is used many times in the execution of a given algorithm.
  • With reference to FIG. 2, in order to carry out a processor-implemented function R: =(V×W) mod M, on one or more operands V, where the other operand W is known in advance, begin by loading (step 30) the operand W that is known in advance, then pre-computing (step 32) a value P:=└(W×2n+δ)/M┘. This value P will be used for efficiently estimating quotient values needed to quickly reduce the products of W with one or more operands V. The integer n in the expression 2n+δ is the size in bits of the larger of the known operand W and. the modulus M, so that W≦2n and M≦2n. The choice of the integer δ depends upon the maximum possible size of the other operand V. If V<2n+φ, then we can choose δ≧φ and we will obtain a good estimated quotient as our estimate, that verifies Q−1≦q{circle around ( )}≦Q, where Q is the real quotient. Alternatively, we can choose δ<φ for a faster quotient estimation, but with a greater degree of rounding, so that the estimated quotient will differ from the exact quotient up to some maximum error determined by our choice of δ. The choice δ<φ may be made, for example, if a bigger error on the quotient is accepted, or if a randomization is applied. If δ<φ, the result is less than or equal to the real quotient with a error boundary Q−2φ−δ≦q{circle around ( )}≦Q, where Q is the real quotient. If a randomization is applied with a maximum boundary, the error boundary may be equal or near the random boundary. If 0≦E<2s, where E is the random value, then we can take φ−δ=s, so δ=φ−s. As the values of δ are defined by inequalities, it is possible to round them to more practical values, if needed.
  • Next, we load (step 34) a first of the operands V for which we wish to calculate a modular product with pre-known operand W. The quotient is estimated (step 36) as q{circle around ( )}:=└(V×P)/2n+δ┘. The estimated quotient q{circle around ( )} can be optional diminished (step 40) by a random value E generated (step 38) by a pseudo-random number generator circuit 20 (in FIG. 1), q′:=q{circle around ( )}−E. As an option, random value E may have a size of no more than a half-word so as to limit the potential error contributed by that random value E. Randomizing provides a layer of security against various cryptoanalytic attacks that rely upon consistency in power usage to determine the modulus M, which may be derived from or otherwise related to a cryptographic key. Introducing the random value E, causes the modular multiplication operation to differ from one execution to the next, while still producing a congruent result R′. Alternatively, we may keep near the quotient q by leaving the estimated quotient unchanged, q′:=q{circle around ( )}.
  • In either case, the quotient value q′ is used to compute a remainder R′ in the modular multiplication operation (step 44), where R′:=(V×W)−(q′×M). The remainder R′ will usually be larger than the modulus M, because the quotient value used q′ is not exactly equal to actual quotient q. Nevertheless R′ is congruent to the residue value for the modular multiplication. Depending on the needs of the particular application, the residue R can be calculated from the remainder R′ by applying subtractions (step 46) of the modulus M until the number is smaller than the modulus M. Then the residue value R can be returned (step 48), possibly together with the particular operand V, for use in the rest of the cryptographic system. Alternatively, if a final reduction to the residue is not required, the remainder R′ could be returned and used in the further calculations, since it is congruent modulo M with the residue value R.
  • Next, one can check (step 50) whether there are other operands V to be used in a modular multiplication with the same pre-known operand W. If so, the procedure may return (path 52) to step 34 and load the next operand V. If there are no additional operands V, the procedure may return to the main program.
  • With reference to FIG. 3, the modular multiplication operation may be adapted, for operation upon polynomial operands, e.g., in a binary finite field GF(2N). Modular arithmetic with polynomials is similar in some respects to modular arithmetic with integers, although extending this to polynomials over a binary finite field GF(2N) requires certain modifications to the basic operation. Let us first introduce polynomials over a field. To any multiple (am−1, . . . a1, a0) of members of a field F, we can associate a polynomial in x of degree (m−1): am−1xm−1 + . . . a1x1+a0x0. In the case of any binary finite field, the members of the field are {0,1} and so the polynomial coefficients ai are likewise 0 or 1. This concept adapts particularly well, to computer hardware and other digital processing circuitry, which are binary in nature, since each bit can be interpreted as a finite field element. For example, we can associate each binary byte value [a7 a6 a5 a4 a3 a2 a1 a0] with a corresponding polynomial over GF(2N) of degree 7 or less: amx7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x+a0. Hence, e.g., the byte value [01100011] is interpreted as the binary polynomial x6+x5+x+1. Longer multi-byte sequences may likewise be interpreted as polynomials of higher degree, provided that the polynomial degree (m−1) is less than N in order for the polynomial to belong to the field GF(2N). (Note: when comparing the relative sizes of polynomials, the comparison is performed degree by degree, starting with the polynomial coefficients for the largest degree in x.) Addition and subtraction of polynomials in a field are carried out in the usual manner of adding or subtracting the coefficients for each degree separately,
  • i a i x i ± i b i x i = i ( a i ± b i ) x i .
  • However, for any binary field, the members are {0,1}, so that addition and subtraction of the field elements are performed modulo 2 (0±0=0, 0±1=1, 1±0=1, 1±1=0). Note that, in this case, subtraction is identical to addition. In computer hardware, addition/subtraction modulo 2 is performed, with a logical XOR operation upon the array of bits. For example, (x6+x4+x2+x+1)+(x7+x+1)=(x7+x6+x4+x2); or in binary notation [01010111]⊕[10000011]=[11010100].
  • Polynomial multiplication is ordinarily defined (for infinite fields) by:
  • ( i a i x i ) · ( j b j x j ) = k c k x k ,
  • where the coefficient ck is given by the convolution:
  • c k = i + j = k a i b j .
  • (Again, in a binary field, the summation is performed modulo 2.) However, in a finite field, this definition must be modified in order to ensure that the product also belongs to the field. In particular, ordinary polynomial multiplication is followed by modular reduction by a modulus m(x) of degree n (where n is the dimension of the finite field, as in GF(2n). The modulus m(x) is preferably chosen to be an irreducible polynomial (the polynomial analogue of a prime number, i.e. one that cannot be factored into nontrivial polynomials over the same field.) For example, in the AES/Rijndael symmetric block cipher, operations are performed on bytes (polynomials of degree 7 or less) in the binary finite field GF(28), using the particular irreducible polynomial m(x)=x8+x4+x3+x+1 as the chosen basis for modular reduction when performing polynomial multiplication. As an example of polynomial multiplication in a binary finite field, using the particular m(x) specified for AES: (x6+x4+x2+x+1) ·(x7+x+1)=(x13+x11+x9+x8+x6+x5+x4+x3+1), which after reduction, gives (x7+x6+1).
  • Let F[x] be the set of polynomials all of whose coefficients are members of a field F. If the modulus m(x) is a polynomial of degree d in F[x], then for polynomials p(x), r(x)εF[x], we say that p(x) is congruent to r(x) modulo m(x), written as p(x)≡r(x) (mod m(x)), if and only if m(x) divides the polynomial p(x)−r(x); in other words p(x)−r(x) is a polynomial multiple of m(x), that is, p(x)−r(x)=q(x)·m(x) for some polynomial q(x)εF[x]. Equivalently, p(x) and r(x) have the same remainder upon division by m(x). Modular reduction of a polynomial p(x), which could be an ordinary product of polynomials a(x) and b(x) in F[x], that is, p(x)=a(x)·b(x), involves finding a polynomial quotient q(x) such that the remainder or residue r(x) is a polynomial of degree less than m(x), that is, deg(r(x)) <d. The polynomial residue r (x), which is congruent with p(x), is the polynomial value we ultimately want. In the binary finite field GF(2n), m(x) will be an irreducible polynomial of degree n and the residue polynomial r(x) that is sought will be of degree less than n; but p(x) and hence also q(x) can be any degree, and at least the polynomial p(x) to be reduced is often of degree larger than m, as for example when p(x) is a product. In any case, the basic problem in any modular reduction method is in efficiently obtaining a quotient, especially for polynomial p(x) and m(x) of large degree.
  • As shown in FIG. 3, a modular multiplication method in accord with the present invention, where one of the polynomial operands w(x) is known in advance, begins by loading (step 60) that known operand w(x), then pre-computing (step 62) a polynomial p(x):=[w(x)·xn+δ]/m(x). The polynomial p(x) will be used to efficiently compute a polynomial quotient q(x) for all modular multiplication operations involving the operand w(x), The other operand v(x), not necessarily known in advance, is loaded (step 64) and the polynomial quotient q(x) associated with the product v(x)·w(x) is computed (step 66) as:

  • q(x):=v(xp(x)/x n+δ.
  • The q(x) can be randomized (step 40) by subtracting a random polynomial value E (x), q′(x):=q(x)−E(x). The random polynomial value E(x) may be generated by any known random or pseudo-random number generator (hardware or software), where the binary value generated is interpreted as a polynomial in the manner already described above. As an option, the random polynomial value E(x) may be constrained to fall within some specified range, such as 0<deg(E(x))<w/2, where here w is the word size.
  • Next, the modular multiplication operation is carried out (step 44), producing a remainder r′(x):

  • r′(x):=(v(xx(x))−(q′(xm(x)).
  • This remainder r′(x) will be congruent modulo m(x) with the residue value r(x). Note that the choice of δ in the equations given above will determine whether the quotient is exact. If deg (v(x) )<n+φ, and δ≧φ−1, then the polynomial q(x) will equal the exact quotient, prior to any randomization. If δ<φ−1, then q(x) will differ from the exact quotient, but deg(r′(x))−deg(r(x)) will be less than a maximum limit defined by δ, deg (Q−q{circle around ( )})≦φ−δ−2, where Q is the real quotient. Depending upon the needs of the particular application, the residue polynomial r(x) can be calculated from the remainder r′(x) by applying ordinary GF(2N) polynomial reduction with the modulus m(x) to obtain a polynomial smaller than m(x). The polynomial remainder r′(x) or the residue r(x) may be returned for further use by the application. If modular multiplication on another polynomial operand v(x) is to be carried out (step 80) using the same w (x), then the procedure goes back (path 82) to loading (step 64) the next v(x).

Claims (20)

1. A system comprising:
a multiplier to perform multiplication operations;
a storage device coupled to the multiplier to store multiple operands, V, and a known operand W to be multiplied, a modulus M, and intermediate results, including a value P pre-computed as a function of W and M and a maximum possible size of V;
a controller to control the multiplier to perform multiple modular multiplication operations for multiple different values of v using the pre-computed value P where W is constant.
2. The system of claim 1 wherein P=└(W·Xn+δ)/m┘ for the operand W and a modulus M, where X is selected to represent either a numerical constant or a polynomial variable, n is an integer representing a size of the larger of W and M, and where δ is a selected constant greater than 1.
3. The system of claim 2 where V<2n+φ, and the constant δ is chosen so that δ≧φ.
4. The system of claim 3 wherein the multiplier is controlled to compute an estimated quotient, q{circle around ( )}, and a congruent remainder for modular operation (V·W) mod M for multiple values of V.
5. The system of claim 4 wherein the estimated quotient q{circle around ( )}=└(V·P)/Xn+δ┘.
6. The system of claim 4 and further comprising a random number generator to generate a random numerical value E to apply to the estimated quotient.
7. The system of claim 1 wherein the operands, V and w, are integers.
8. The system of claim 1 wherein the operands, V and W, are polynomials.
9. A system comprising:
a multiplier to perform multiplication operations;
a storage device coupled to the multiplier to store multiple operands, V, and a known operand W to be multiplied, a modulus M, and intermediate results, including a value P pre-computed as a function of W and M and a maximum possible size of V;
a controller to control the multiplier to perform multiple modular multiplication operations for multiple different values of V using the pre-computed value P where V is constant.
10. The system of claim 9 wherein P=└(W·Xn+δ)/M┘ for the operand W and a modulus M, where X is selected to represent either a numerical constant or a polynomial variable, n is an integer representing a size of the larger of W and M, and where δ is a selected constant greater than 1.
11. The system of claim 10 where V<2n+φ, and the constant δ is chosen so that δ≧φ.
12. The system of claim 11 wherein the multiplier is controlled to compute an estimated quotient, q{circle around ( )}, and a congruent, remainder for modular operation (V·W) mod M for multiple values of V.
13. The system of claim 12 wherein the estimated quotient q{circle around ( )}=└(V·P)/Xn+δ┘.
14. The system of claim 12 and further comprising a random number generator to generate a random numerical value E to apply to the estimated quotient.
15. The system of claim 9 wherein the operands, V and W, are integers.
16. The system, of claim 9 wherein the operands, V and W, are polynomials.
17. A method comprising:
loading a first operand W into data storage accessible to a processor unit, wherein W is a first operand to be multiplied by a second, operand;
pre-computing, using the processor unit, and storing a value P, where
P is a function of the operand w and a modulus M;
loading a second operand V into the data storage, wherein V is a second operand to be multiplied by W;
computing, using the processor unit, an estimated quotient q{circle around ( )} for the product (V·W) to be reduced modulo M using P and V;
calculating a remainder r′ such that it is congruent to (V·W) mod M; and
repeating the loading of operand V, computing, and calculating for multiple values of V.
18. The method of claim 17 wherein P=└(W·Xn+δ)/M┘ for the operand W and a modulus M, where X is selected to represent either a numerical constant or a polynomial variable, n is an integer representing a size of the larger of W and M, where δ is a selected constant greater than 1, and where V<2n+φ, and the constant δ is chosen so that δ≧φ.
19. The method of claim 18 wherein the estimated quotient q{circle around ( )}=└(V·P)/Xn+δ┘.
20. The method of claim 17 and further comprising generating a random numerical value E to apply to the estimated quotient q{circle around ( )}.
US13/042,284 2006-11-06 2011-03-07 Modular multiplication method with precomputation using one known operand Abandoned US20110213819A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/042,284 US20110213819A1 (en) 2006-11-06 2011-03-07 Modular multiplication method with precomputation using one known operand

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/556,894 US8024391B2 (en) 2006-11-06 2006-11-06 Modular multiplication method with precomputation using one known operand
US13/042,284 US20110213819A1 (en) 2006-11-06 2011-03-07 Modular multiplication method with precomputation using one known operand

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/556,894 Continuation US8024391B2 (en) 2006-11-06 2006-11-06 Modular multiplication method with precomputation using one known operand

Publications (1)

Publication Number Publication Date
US20110213819A1 true US20110213819A1 (en) 2011-09-01

Family

ID=39360945

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/556,894 Expired - Fee Related US8024391B2 (en) 2006-11-06 2006-11-06 Modular multiplication method with precomputation using one known operand
US13/042,284 Abandoned US20110213819A1 (en) 2006-11-06 2011-03-07 Modular multiplication method with precomputation using one known operand

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/556,894 Expired - Fee Related US8024391B2 (en) 2006-11-06 2006-11-06 Modular multiplication method with precomputation using one known operand

Country Status (3)

Country Link
US (2) US8024391B2 (en)
TW (1) TW200839609A (en)
WO (1) WO2008057804A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090292752A1 (en) * 2008-05-23 2009-11-26 Red Hat, Inc. Mechanism for generating pseudorandom number sequences
US20090292751A1 (en) * 2008-05-22 2009-11-26 James Paul Schneider Non-linear mixing of pseudo-random number generator output
US8416947B2 (en) 2008-02-21 2013-04-09 Red Hat, Inc. Block cipher using multiplication over a finite field of even characteristic

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2862454A1 (en) * 2003-11-18 2005-05-20 Atmel Corp RANDOM MODULAR REDUCTION METHOD AND EQUIPMENT THEREFOR
FR2885711B1 (en) * 2005-05-12 2007-07-06 Atmel Corp METHOD AND MODULAR AND RANDOM EQUIPMENT FOR POLYNOMIAL REDUCTION
FR2897963A1 (en) * 2006-02-28 2007-08-31 Atmel Corp Polynomial quotient estimating method for e.g. cryptographic processor, involves dividing polynomial by right shifting bits, if polynomial`s degree is less than or equal to maximum degree, for obtaining polynomial quotient
US8024391B2 (en) * 2006-11-06 2011-09-20 Atmel Rousset S.A.S. Modular multiplication method with precomputation using one known operand
US8781117B2 (en) * 2007-08-29 2014-07-15 Red Hat, Inc. Generating pseudo random bits from polynomials
US8265272B2 (en) * 2007-08-29 2012-09-11 Red Hat, Inc. Method and an apparatus to generate pseudo random bits for a cryptographic key
US8144864B2 (en) * 2007-12-28 2012-03-27 Intel Corporation Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems
US7945049B2 (en) * 2008-02-28 2011-05-17 Red Hat, Inc. Stream cipher using multiplication over a finite field of even characteristic
US8358781B2 (en) * 2008-11-30 2013-01-22 Red Hat, Inc. Nonlinear feedback mode for block ciphers
US8370705B1 (en) * 2009-09-23 2013-02-05 Nvidia Corporation System and method for calculating a checksum address while maintaining error correction information
IL239880B (en) * 2015-07-09 2018-08-30 Kaluzhny Uri Simplified montgomery multiplication
DE102017117907B4 (en) * 2017-08-07 2023-04-27 Infineon Technologies Ag Performing a cryptographic operation
FR3070814B1 (en) * 2017-09-05 2019-09-13 Commissariat A L'energie Atomique Et Aux Energies Alternatives MODULAR REDUCTION DEVICE
CN109977166B (en) * 2019-02-18 2022-12-20 陕西优米数据技术有限公司 Block chain consensus mechanism
US11468797B2 (en) * 2020-06-24 2022-10-11 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
RU2755734C1 (en) * 2020-08-25 2021-09-20 федеральное государственное автономное образовательное учреждение высшего образования "Северо-Кавказский федеральный университет" Apparatus for multiplying numbers by an arbitrary modulus
US11502819B2 (en) * 2021-01-21 2022-11-15 Nxp B.V. Efficient masked polynomial comparison

Citations (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847801A (en) * 1987-10-26 1989-07-11 Cyclotomics, Inc. Compact galois field multiplier
US5274707A (en) * 1991-12-06 1993-12-28 Roger Schlafly Modular exponentiation and reduction device and method
US5373560A (en) * 1991-12-06 1994-12-13 Schlafly; Roger Partial modular reduction method
US5499299A (en) * 1993-07-02 1996-03-12 Fujitsu Limited Modular arithmetic operation system
US5502665A (en) * 1993-11-20 1996-03-26 Goldstar Co., Ltd. Galois field multiplier
US5642367A (en) * 1994-02-07 1997-06-24 Mitsubishi Semiconductor America, Inc. Finite field polynomial processing module for error control coding
US5793659A (en) * 1996-10-15 1998-08-11 United Microelectronics Corporation Method of modular reduction and modular reduction circuit
US5828590A (en) * 1996-11-27 1998-10-27 United Microelectronics Corp. Multiplier based on a variable radix multiplier coding
US5954788A (en) * 1987-09-09 1999-09-21 Electronics And Telecommunications Research Institute Apparatus for performing modular multiplication
US5999959A (en) * 1998-02-18 1999-12-07 Quantum Corporation Galois field multiplier
US6049815A (en) * 1996-12-30 2000-04-11 Certicom Corp. Method and apparatus for finite field multiplication
US6091819A (en) * 1996-08-16 2000-07-18 Telcordia Technologies, Inc. Accelerating public-key cryptography by precomputing randomly generated pairs
US6256656B1 (en) * 1998-12-28 2001-07-03 Silicon Graphics, Inc. Apparatus and method for extending computational precision of a computer system having a modular arithmetic processing unit
US20020039418A1 (en) * 2000-05-15 2002-04-04 Fortress U&T Div. M-Systems Flash Disk Pioneers Ltd. Extending the range of computational fields of integers
US6457035B1 (en) * 1999-04-28 2002-09-24 Via Technologies, Inc. Table matching for multiplication of elements in Galois Field
US20030123655A1 (en) * 2001-12-31 2003-07-03 Lambert Robert J. Method and apparatus for elliptic curve scalar multiplication
US20040066934A1 (en) * 2002-10-02 2004-04-08 International Business Machines Corporation Efficient modular reduction and modular multiplication
US20040111459A1 (en) * 2002-12-10 2004-06-10 Isic Corporation Methods and apparatus for modular reduction circuits
US6760742B1 (en) * 2000-02-18 2004-07-06 Texas Instruments Incorporated Multi-dimensional galois field multiplier
US6766345B2 (en) * 2001-11-30 2004-07-20 Analog Devices, Inc. Galois field multiplier system
US20040236813A1 (en) * 2003-05-19 2004-11-25 Grinchuk Mikhail I. Multiplier for modular exponentiation
US20050105723A1 (en) * 2003-11-18 2005-05-19 Vincent Dupaquis Randomized modular reduction method and hardware therefor
US20050149595A1 (en) * 2002-04-29 2005-07-07 Infineon Technologies Ag Apparatus and method for calculating a result of a modular multiplication
US6917218B2 (en) * 2002-12-03 2005-07-12 Electronics And Telecommunications Research Institute Serial finite field multiplier
US6920473B2 (en) * 2001-02-16 2005-07-19 Infineon Technologies Ag Method and apparatus for modular multiplying and calculating unit for modular multiplying
US6925479B2 (en) * 2001-04-30 2005-08-02 Industrial Technology Research Institute General finite-field multiplier and method of the same
US6957243B2 (en) * 2001-10-09 2005-10-18 International Business Machines Corporation Block-serial finite field multipliers
US7003538B2 (en) * 2001-02-08 2006-02-21 Systemonic Ag Process and apparatus for finite field multiplication (FFM)
US20060061795A1 (en) * 2004-05-27 2006-03-23 Silverbrook Research Pty Ltd Storage of key in arbitrary locations in memory
US20070083586A1 (en) * 2005-10-12 2007-04-12 Jianjun Luo System and method for optimized reciprocal operations
US20080109501A1 (en) * 2006-11-06 2008-05-08 Atmel Corporation Modular multiplication method with precomputation using one known operand
US20100020965A1 (en) * 2007-12-28 2010-01-28 Shay Gueron Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems

Patent Citations (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5954788A (en) * 1987-09-09 1999-09-21 Electronics And Telecommunications Research Institute Apparatus for performing modular multiplication
US4847801A (en) * 1987-10-26 1989-07-11 Cyclotomics, Inc. Compact galois field multiplier
US5274707A (en) * 1991-12-06 1993-12-28 Roger Schlafly Modular exponentiation and reduction device and method
US5373560A (en) * 1991-12-06 1994-12-13 Schlafly; Roger Partial modular reduction method
US5499299A (en) * 1993-07-02 1996-03-12 Fujitsu Limited Modular arithmetic operation system
US5502665A (en) * 1993-11-20 1996-03-26 Goldstar Co., Ltd. Galois field multiplier
US5642367A (en) * 1994-02-07 1997-06-24 Mitsubishi Semiconductor America, Inc. Finite field polynomial processing module for error control coding
US6091819A (en) * 1996-08-16 2000-07-18 Telcordia Technologies, Inc. Accelerating public-key cryptography by precomputing randomly generated pairs
US5793659A (en) * 1996-10-15 1998-08-11 United Microelectronics Corporation Method of modular reduction and modular reduction circuit
US5828590A (en) * 1996-11-27 1998-10-27 United Microelectronics Corp. Multiplier based on a variable radix multiplier coding
US6049815A (en) * 1996-12-30 2000-04-11 Certicom Corp. Method and apparatus for finite field multiplication
US5999959A (en) * 1998-02-18 1999-12-07 Quantum Corporation Galois field multiplier
US6256656B1 (en) * 1998-12-28 2001-07-03 Silicon Graphics, Inc. Apparatus and method for extending computational precision of a computer system having a modular arithmetic processing unit
US6457035B1 (en) * 1999-04-28 2002-09-24 Via Technologies, Inc. Table matching for multiplication of elements in Galois Field
US6760742B1 (en) * 2000-02-18 2004-07-06 Texas Instruments Incorporated Multi-dimensional galois field multiplier
US20020039418A1 (en) * 2000-05-15 2002-04-04 Fortress U&T Div. M-Systems Flash Disk Pioneers Ltd. Extending the range of computational fields of integers
US7003538B2 (en) * 2001-02-08 2006-02-21 Systemonic Ag Process and apparatus for finite field multiplication (FFM)
US6920473B2 (en) * 2001-02-16 2005-07-19 Infineon Technologies Ag Method and apparatus for modular multiplying and calculating unit for modular multiplying
US6925479B2 (en) * 2001-04-30 2005-08-02 Industrial Technology Research Institute General finite-field multiplier and method of the same
US6957243B2 (en) * 2001-10-09 2005-10-18 International Business Machines Corporation Block-serial finite field multipliers
US6766345B2 (en) * 2001-11-30 2004-07-20 Analog Devices, Inc. Galois field multiplier system
US20030123655A1 (en) * 2001-12-31 2003-07-03 Lambert Robert J. Method and apparatus for elliptic curve scalar multiplication
US20050149595A1 (en) * 2002-04-29 2005-07-07 Infineon Technologies Ag Apparatus and method for calculating a result of a modular multiplication
US20040066934A1 (en) * 2002-10-02 2004-04-08 International Business Machines Corporation Efficient modular reduction and modular multiplication
US6917218B2 (en) * 2002-12-03 2005-07-12 Electronics And Telecommunications Research Institute Serial finite field multiplier
US20040111459A1 (en) * 2002-12-10 2004-06-10 Isic Corporation Methods and apparatus for modular reduction circuits
US20040236813A1 (en) * 2003-05-19 2004-11-25 Grinchuk Mikhail I. Multiplier for modular exponentiation
US20050105723A1 (en) * 2003-11-18 2005-05-19 Vincent Dupaquis Randomized modular reduction method and hardware therefor
US20060061795A1 (en) * 2004-05-27 2006-03-23 Silverbrook Research Pty Ltd Storage of key in arbitrary locations in memory
US20070083586A1 (en) * 2005-10-12 2007-04-12 Jianjun Luo System and method for optimized reciprocal operations
US20080109501A1 (en) * 2006-11-06 2008-05-08 Atmel Corporation Modular multiplication method with precomputation using one known operand
US20100020965A1 (en) * 2007-12-28 2010-01-28 Shay Gueron Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Comparison of three modular reduction functions, Bosselaers et al. KAtholike Universiteit Leuvenm Dept Electrical Engineering, 1993, pages 1-13 *
Lim et al., Fast Modular Reduction with Precomputation, 1997, Cireseer Scientific Literature Digital Library, Pages 1-15 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8416947B2 (en) 2008-02-21 2013-04-09 Red Hat, Inc. Block cipher using multiplication over a finite field of even characteristic
US20090292751A1 (en) * 2008-05-22 2009-11-26 James Paul Schneider Non-linear mixing of pseudo-random number generator output
US8560587B2 (en) 2008-05-22 2013-10-15 Red Hat, Inc. Non-linear mixing of pseudo-random number generator output
US20090292752A1 (en) * 2008-05-23 2009-11-26 Red Hat, Inc. Mechanism for generating pseudorandom number sequences
US8588412B2 (en) 2008-05-23 2013-11-19 Red Hat, Inc. Mechanism for generating pseudorandom number sequences

Also Published As

Publication number Publication date
WO2008057804A3 (en) 2008-07-31
US20080109501A1 (en) 2008-05-08
US8024391B2 (en) 2011-09-20
WO2008057804A2 (en) 2008-05-15
TW200839609A (en) 2008-10-01

Similar Documents

Publication Publication Date Title
US8024391B2 (en) Modular multiplication method with precomputation using one known operand
US7805480B2 (en) Randomized modular polynomial reduction method and hardware therefor
US6714648B2 (en) IC card equipped with elliptic curve encryption processing facility
CN107040362B (en) Modular multiplication apparatus and method
US7809133B2 (en) Randomized modular reduction method and hardware therefor
EP1889398B1 (en) Randomized modular polynomial reduction method and hardware therefore
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
US7672990B2 (en) Digital computation method involving euclidean division
US9722773B2 (en) Method of determining a representation of a product of a first element and a second element of a finite set, method of evaluating a function applied to an element of a finite set and associated devices
US11502836B2 (en) Method for performing cryptographic operations on data in a processing device, corresponding processing device and computer program product
US20070244949A1 (en) Method for Generating the Multiplicative Inverse in a Finite Field Gf(P)
JP3779479B2 (en) IC card
Monfared et al. Secure and efficient exponentiation architectures using Gaussian normal basis
Erdem Fast software multiplication in F_2 [x] for embedded processors
Knezevic et al. Speeding up Barrett and Montgomery modular multiplications
US20070217602A1 (en) Method for fast quotient guess and congruencies manipulation
Ding Acceleration of algorithm for the reduced sum of two divisors of a hyperelliptic curve
JP2006500615A (en) Improved QuisquaterReduction

Legal Events

Date Code Title Description
AS Assignment

Owner name: INSIDE SECURE, FRANCE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ATMEL ROUSSET S.A.S.;REEL/FRAME:028644/0509

Effective date: 20120316

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: CRYPTOGRAPHY RESEARCH, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RAMBUS INC.;REEL/FRAME:054539/0109

Effective date: 20201120