CA2243761C

Timing attack resistant cryptographic system

Abstract

A method for determining a result of a group operation performed an integral number of times on a selected element of the group, the method comprises the steps of :representing the integral number as a binary vector; initializing an intermediate element to the group identity element; selecting successive bits, beginning with a left most bit, of the vector. For each of the selected bits; performing the group operation on the intermediate element to derive a new intermediate element; replacing the intermediate element with the new intermediate element; performing the group operation on the intermediate element and an element, selected from the group consisting of: the group element if the selected bit is a one; and an inverse element of the group element if the selected bit is a zero; replacing the intermediate element with the new intermediate element. In a final step, performing the group operation on the intermediate value and the inverse element if the last selected bit is a zero; and replacing the intermediate element therewith, to obtain the result, whereby each of the bits of the integral is processed with substantially equal operations thereby minimizing timing attacks on the cryptographic system.

CA2243761C, drawing sheet 1
Sheet 1 of 9

Term

Term ended

Expired 21 July 2018, 8.2 years ago.

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

28 claims: 17 independent, 11 dependent

  1. 1
    CA 02243761 2008-07-30 THE EMBODIMENTS OF THE INVENTION IN WHICH AN EXCLUSIVE PROPERTY OR PRIVILEGE IS CLAIMED ARE DEFINED AS FOLLOWS:1. A method for determining a result of a group operation performed an integral number of times on a selected element of the group, said method comprising the steps of : (a) representing said integral number as a binary vector;(b) initializing an intermediate element to the group identity element;(c) selecting successive bits, beginning with a left most bit, of said vector and for each of said selected bits;(i) performing said group operation on said intermediate element to derive a new intermediate element;(ii) replacing said intermediate element with said new intermediate element;(iii) performing said group operation on said intermediate element and an element, selected from the group consisting of: said group element if said selected bit is a one;and an inverse element of said group element if said selected bit is a zero;(iv) replacing said intermediate element with said new intermediate element;(d) performing said group operation on said intermediate element and said inverse element if said last selected bit is a zero;and replacing said intermediate element therewith, to obtain said result, whereby each of the bits of said integral number is processed with substantially equal operations thereby minimizing timing attacks on said cryptographic system.
  2. 2
    A method as defined in claim 1, said group being a multiplicative group F p * said group element being an integer, and said group operation being exponentiation and an inverse element being the multiplicative inverse. 21697826.3 CA 02243761 2008-07-30
  3. 3
    A method as defined in claim 1, said group being an additive group E( F 2 „ ) and said group operation being addition of points.
  4. 4
    A method as defined in claim 1, said group being an additive group E(F ? ), said group element being a point P with coordinates (x,y) on an elliptic curve, and said group operation being a scalar multiple kP of said point and an inverse element being the negative -P of said point.
  5. 5
    A method as defined in claim 1, said integral number being a private key k.
  6. 6
    A method of performing a selected group operation on a scalar and a selected element of said group, in a cryptographic processor, said method comprising the steps of :representing said scalar as a binary vector;recoding said binary vector to produce a signed digit representation of plus one and minus one digits;selecting each of said recoded bits sequentially and for each of said selected bits performing said group operation on an intermediate element to derive a new intermediate element;and adding or subtracting said selected element to said intermediate element in accordance with said signed digit representation of said digit being selected;and outputting said intermediate value as a result of said group operation.
  7. 9
    A method of generating a result of a group operation, said method performed by a computing apparatus an integral number of times on a selected element of a group, said group having a plurality of elements including a group identity element, said method comprising the steps of:a) representing said integral number as a binary vector of bits having one value or another value;b) initializing said result of said group operation to that of said group identity element;c) selecting in sequence a predetermined number of successive bits of said vector and for each of said selected bits;i) performing said group operation on said result to derive a first intermediate value, ii) obtaining a second intermediate value by performing said group operation on said first intermediate value and said selected element when said computing apparatus is in one state and by performing said group operation on said intermediate value and an inverse of said selected element when said computing apparatus is in another state;iii) replacing said result with said second intermediate value, iv) selecting a state of said computing apparatus by examining the next bit in said sequence, wherein if the current state is said one state, maintaining the current state when said next bit is said one value and changing to the other state when said next bit is said another value, and if said current state is said another state, maintaining the current state when said next bit is said another value and changing to the other state when said next bit is said one value;d) repeating step c) for each said predetermined number of said bits and performing said group operation on any remaining bits of said vector to produce said result, wherein if the last bit in said sequence is encountered in said one state, said group operation is performed on said result and said inverse of said selected element performed one more time, whereby each of said predetermined bits of said vector is processed such that said group operation in ii) is performed in an equal amount of time and using an equal amount of power thereby inhibiting disclosure of said sequence of said predetermined number of successive bits;and e) outputting said result for use in subsequent computations. 21697826.3 - 10CA 02243761 2008-07-30
  8. 10
    A method as defined in claim 9, said group being a multiplicative group F p * said group element being an integer, and said group operation being exponentiation g a and said inverse of said selected element having a value corresponding to a multiplicative inverse of said selected element.
  9. 12
    A method as defined in any one of claims 9 to 11, said group being an additive group E (F q ), said group element being a point P with coordinates (x,y) on an elliptic curve, and said group operation being a scalar multiple kP of said point and an inverse element being a negative -P of said point.
  10. 13
    A method as defined in any one of claims 9 to 12, said integral number being a private key k used in a cryptosystem.
  11. 18
    A method of generating a result of a group operation, said method performed by a computing apparatus an integral number of times on a selected element of a group, said group having a plurality of elements including a group identity element, said method comprising the steps of:a) representing said integral number as a binary vector of bits having one value or another;b) initialising said result of said group operation to that of said group identity element;c) selecting in sequence a predetermined number of successive bits of said vector and for each of said selected bits: i) performing said group operation on said result to derive a first intermediate value, ii) obtaining a second intermediate value by performing said group operation on said first intermediate value and said selected element when said computing apparatus is in one state and by performing said group operation on said intermediate value and an inverse of said selected element when said computing apparatus is in another state;iii) replacing said result with said second intermediate value, iv) selecting a state of said computing apparatus by examining an immediately preceding bit and maintaining the current state when said bits are of the same value and changing to said other state when said bits are different;d) repeating step c) for said predetermined number of said bits and performing said group operation on any remaining bits of said vector, whereby each of said predetermined bits of said of said vector is processed with similar operations, thereby inhibiting disclosure of said sequence of predetermined bits to produce said result;and e) outputting said result for use in subsequent computations.
  12. 19
    A method as defined in claim 18, said group being a multiplicative group Fp* said group element being an integer, and said group operation being exponentiation g a and said inverse of said selected element having a value corresponding to a multiplicative inverse of said selected element.
  13. 20
    A method as defined in claim 18, said group being an additive group E( ) and said group operation being addition of points. 21697826.3 - 12CA 02243761 2008-07-30
  14. 21
    A method as defined in claim 18, said group being an additive group E (Fq) said group element being a point P with coordinates (x,y) on an elliptic curve, and said group operation being a scalar multiple kP of said point and an inverse element being a negative -P of said point.
  15. 22
    A method as defined in claim 18, said integral number being a private key k used in a cryptosystem.
  16. 26
    A method of performing a selected group operation on a scalar and a selected element of a group having a plurality of elements, to generate a result, said method performed using a cryptographic processor and comprising the steps of:representing said scalar as a binary vector;recoding said binary vector to produce a signed digit representation of plus one and minus one digits;selecting each of said digits of said signed digit representation sequentially and for each of the selected digits performing said group operation on an intermediate element to derive a new intermediate element;and adding or subtracting a selected element of said group to said intermediate element in accordance with said signed digit representation as each digit is selected;and outputting said intermediate element as said result of said group operation for use in subsequent computations.
  17. 28
    A cryptographic unit configured for performing the method according to any one of claims 18 to 26. 21697826.3
Independent claims17