EP3166013B1

Modular exponentiation using randomized addition chains

Abstract

This record has no abstract on file.

EP3166013B1, drawing sheet 1
Sheet 1 of 22

Term

10.1 yearsleft in the term

Expires 25 October 2036.

  1. Priority and filed
  2. Granted
  3. Today
  4. Expires

10 claims: 7 independent, 3 dependent

  1. 1
    A device for generating code which implements modular exponentiation, the device comprising:a first part configured to generate a randomized addition chain of addition chain elements a i , a second part comprising: a memory used to store a lookup table;and a processor in communication with the memory, the processor configured to: receive information for the generated randomized addition chain;output code for implementing the modular exponentiation based upon the generated randomized chain, which loads elements from the lookup table including intermediate results which utilize the information for a generated randomized addition chain;and output code for implementing the modular exponentiation which uses the loaded elements to compute the next element, wherein the randomized addition chain is generated by: initializing the first addition chain element a 0 = 1 and the counter i = 1, setting a boolean value m to zero to mark that there is no overflow, picking a uniform random positive integer r 1 from the range [0, b 1 - 1];where exponent d and the integer parameters (p 1 , b 1 , b 2 ) are input, such that p 1 ≤ b 1 and b 2 is larger than an expected length of the addition chain, and may be used to construct the random addition chain, assigning m = 1, if r 1 ≤ p 1 and 2 · a i-1 > d, assigning a i = a i-1 + a i-1 if r 1 ≤ p 1 and 2 · a i-1 ≤ d, and assigning a i = a i-1 + a j , where j is randomly chosen with 0 ≦ j p 1 or m = 1.
  2. 3
    The device of any preceding claim, wherein the processor is further configured to:output code which loads the elements c i-1 = c a i -1 mod N and c j = c a j mod N from the lookup table, wherein the output code computes the modular exponentiation according to c d mod N where elements a n of the randomized addition chain are input into the modular exponentiation, the value c is received as input, the value d is fixed and secret, the modulus N is fixed and public.
  3. 4
    The device of any preceding claim, wherein the processor is further configured to:output code to compute the next element such that: c i ≡ c i − 1 ⋅ c j ≡ c ai − 1 ⋅ c aj ≡ c ai-1+aj mod N , wherein the output source code computes the modular exponentiation according to c d mod N where elements a n of the randomized addition chain are input into the modular exponentiation, the value c is received as input, the value d is fixed and secret, the modulus N is fixed and public.
  4. 5
    The device of any preceding claim, wherein the processor is further configured to:output code which stores c i in the look-up table if this result c i is needed in subsequent steps besides the next step (iteration i + 1).
  5. 6
    A method for generating code which implements modular exponentiation, the method comprising:receiving information for a generated randomized addition chain of addition chain elements a i , outputting code for implementing the modular exponentiation based upon the generated randomized chain, which loads elements from the lookup table including intermediate results which utilize the information for a generated randomized addition chain;and outputting code for implementing the modular exponentiation which uses the loaded elements to compute the next element, wherein the randomized addition chain is generated by: initializing the first addition chain element a 0 = 1 and the counter i = 1, setting a boolean value m to zero to mark that there is no overflow, picking a uniform random positive integer r 1 from the range [0, b 1 - 1];where exponent d and the integer parameters (p 1 , b 1 , b 2 ) are input, such that p 1 ≤ b 1 and b 2 is larger than an expected length of the addition chain, and may be used to construct the random addition chain, assigning m = 1, if r 1 ≤ p 1 and 2 · a i-1 > d, assigning a i - a i-1 + a i-1 if r 1 ≤ p 1 and 2 · a i-1 ≤ d, and assigning a i = a i-1 + a j where j is randomly chosen with 0 ≤ j p 1 or m = 1.
  6. 9
    The method of any one of claims 6 to 8, wherein the method further comprises:outputting code to compute the next element such that: c i ≡ c i − 1 ⋅ c j ≡ c ai − 1 ⋅ c aj ≡ c ai-1+aj mod N , wherein the output source code computes the modular exponentiation according to c d mod N where elements a n of the randomized addition chain are input into the modular exponentiation, the value c is received as input, the value d is fixed and secret, the modulus N is fixed and public.
  7. 10
    The method of any one of claims 6 to 9, wherein the method further comprises:outputting code which stores c i in the look-up table if this result c i is needed in subsequent steps besides the next step (iteration i + 1).