EP1587237A1

Security countermeasures for power analysis attacks

Abstract

A countermeasure for differential power analysis attacks on computing devices. The countermeasure includes the definition of a set of split mask values. The split mask values are applied to a key value used in conjunction with a masked table defined with reference to a table mask value. The set of n split mask values are defined by randomly generating n-1 split mask values and defining an nth split mask value by exclusive or'ing the table mask value with the n-1 randomly generated split mask values.

EP1587237A1, drawing sheet 1
Sheet 1 of 21

Term

Term ended

Projected expiry passed 16 April 2024, 2.4 years ago.

  1. Priority and filed
  2. Published
  3. Projected expiry
  4. Today

58 claims: 38 independent, 20 dependent

  1. 1
    A computing device-implemented method for carrying out encryption using a key value for encrypting a plaintext value to define a cipher text, the encryption being defined using an encryption function, the method comprising the steps of:a) defining a masked encryption function by masking the encryption function using an encryption function mask value;b) defining a set of more than one split mask values, at least one of the set of split mask values being defined with reference to the encryption function mask value;c) generating a final mask value by masking the key value using masking steps that comprise masking by applying the set of split mask values;d) determining an input value by masking the plaintext value using masking steps that comprise masking by applying the fixed final mask value;ande) applying the input value to the encryption function to provide a cipher text output.
  2. 3
    The method of either preceding claim in which the step of defining one of the set of split mask values with reference to the encryption function mask value further comprises the steps of masking the said split mask value with the other values in the set of split mask values.
  3. 4
    The method of any one of the preceding claims in which the set of more than one split mask values have the values m1...mn and the step of defining a set of split mask values comprises the steps of:a) defining the encryption function mask value to comprise a set of random values min1 to minn;b) defining the set of split mask values to be the random values m1 to mn-1;andc) defining a masking value mn in the set of split mask values to be (key mask value)^ min1^...^minn^m1^...^mn-1.
  4. 5
    The method of any one of the preceding claims, in which the encryption function is a table look-up.
  5. 6
    The method of any one of the preceding claims in which masking is a bitwise exclusive or operation carried out on binary values.
  6. 7
    The method of any one of the preceding claims further comprising the step of storing the masked key and the set of split mask values.
  7. 8
    The method of any one of the preceding claims further comprising the steps of applying a random mask to an even number of the set of split mask values prior to the step of masking the key value with the set of split mask values.
  8. 9
    A countermeasure method for resisting security attacks on a processing unit using a key to perform a defined cryptographic function, the method comprising the following steps:a) obtaining the key and a random value r;b) obtaining a set of n random input values min1, ... minn;c) defining a masked function by masking the defined cryptographic function with the value min1^...^minn;d) masking the key with the random value r to define the value mkey;e) obtaining a set of random values m1, ... mn-1;f) defining a value mn to be r^min1^...^minn^m1^...^mn-1;andg) using the values m1,...,mn and mkey to define input for the masked function.
  9. 11
    The method of either one of claims 9 or 10 in which masking is a bitwise exclusive or operation carried out on binary values.
  10. 12
    A countermeasure method for resisting security attacks on a processing unit using a key to encrypt a plaintext value using a look up on a table, the method comprising the following steps:a) obtaining the key and a random value r;b) obtaining a set of n random input values min1, ... minn;c) defining a masked table by masking the defined look-up table with the valuemin 1^ ... ^ minn;d) masking the key with the random value r to define the value mkey;e) obtaining a set of random values m1, ... mn-1;f) defining a value mn to be r^min 1^ ... ^minn1^m1^... ^mn-1;andg) masking the plaintext with the values m1,...,mn and mkey to define input for the masked table.
  11. 14
    A computing device-implemented method for use in a cryptographic process, the cryptographic process using a key value to define input to a cryptographic function,    the method comprising the steps of:a) masking the cryptographic function using a function mask value;b) defining a set of more than one split mask values, at least one of the set of split mask values being defined with reference to the function mask value;c) masking the key value using steps that comprise masking by applying the set of split mask values to obtain a masked input key value;andd) using the masked input key value to define the input to the masked cryptographic function.
  12. 16
    A computing device-implemented method for use with an AES key generation process for defining masked round keys for use in AES encryption, the method comprising the steps of:a) defining a masked table for use the AES key generation process using table mask M;b) defining a set of four split mask values, one of the set of split mask values being defined with relation to table mask M;c) masking a set of four key values using the set of four split mask values and applying the resulting values to the AES key generation process using the masked table and a set of intermediate mask values whereby the set of AES round keys defined using table look-up are defined by applying an appropriate intermediate mask value to the input value for the masked table;andd) masking the round keys produced by the AES key generation process by applying an appropriate intermediate mask value to the round keys that are not directly defined using table look-up.
  13. 18
    The method of either one of claims 16 or 17 in which the key mask values are specified as n0, n1, n2, n3 and the split mask values are specified as m0, m1, m2, m3 and in which m0, m1, m2 are randomly defined and m3 is defined to beM^n0^n1^n2^n3^m0^m1^m2.
  14. 20
    A computing device-implemented method for carrying out AES encryption using the round keys as defined in any one of Claims 16 to 19, the output of the AES encryption being unmasked using the key mask values and the split mask values.
  15. 22
    A computing device program product for carrying out encryption using a key value for encrypting a plaintext value to define a cipher text, the encryption being defined using an encryption function, the computing device program product comprising a computer usable medium having computer readable program code means embodied in said medium, and comprising    program code means for defining a masked encryption function by masking the encryption function using an encryption function mask value;program code means for defining a set of more than one split mask values, at least one of the set of split mask values being defined with reference to the encryption function mask value;program code means for generating a final mask value by masking the key value using masking steps that comprise masking by applying the set of split mask values;program code means for determining an input value by masking the plaintext value using masking steps that comprise masking by applying the fixed final mask value;and    program code means for applying the input value to the encryption function to provide a cipher text output.
  16. 24
    The computing device program product of either one of Claims 22 or 23 in which the program code means for defining one of the set of split mask values with reference to the encryption function mask value further comprises program code means for masking the said split mask value with the other values in the set of split mask values.
  17. 25
    The computing device program product of any one of Claims 22 to 24 in which the set of more than one split mask values have the values m1 ...mn and the program code means for defining a set of split mask values m1...mn comprises program code means for:a) defining the encryption function mask value to comprise a set of random values min1 to minn,b) defining the set of split mask values to be the random values m1 to mn-1;andc) defining a masking value mn in the set of split mask values to be (key mask value)^ min1^...^minn^m1^...^mn-1.
  18. 26
    The computing device program product of any one of Claims 22 to 25 in which the encryption function is a table look-up.
  19. 27
    The computing device program product of any one of Claims 22 to 26 in which masking is a bitwise exclusive or operation carried out on binary values.
  20. 28
    The computing device program product of any one of Claims 22 to 27 further comprising program code means for storing the masked key and the set of split mask values.
  21. 29
    The computing device program product of any one of Claims 22 to 28 further comprising program code means for applying a random mask to an even number of the set of split mask values prior to masking the key value with the set of split mask values.
  22. 30
    A computing device program product for resisting security attacks on a processing unit using a key to perform a defined cryptographic function, the computing device program product comprising a computer usable medium having computer readable program code means embodied in said medium, and comprising    program code means for obtaining the key and a random value r,    program code means for obtaining a set of n random input values min1, ... minn,    program code means for defining a masked function by masking the defined cryptographic function with the value min1^...^minn,    program code means for masking the key with the random value r to define the value mkey,    program code means for obtaining a set of random values m1, ... mn-1,    program code means for defining a value mn to be r^min1^...^m;"n^m1^...^mn-1, and    program code means for using the values m1,...,mn and mkey to define input for the masked function.
  23. 32
    The computing device program product of either one of claims 30 and 31 in which masking is a bitwise exclusive or operation carried out on binary values.
  24. 33
    A computing device program product for resisting security attacks on a processing unit using a key to encrypt a plaintext value using a look up on a table, the computing device program product comprising a computer usable medium having computer readable program code means embodied in said medium, and comprising    program code means for obtaining the key and a random value r,    program code means for obtaining a set of n random input values min1, ... minn,    program code means for defining a masked table by masking the defined look-up table with the value min1^...^minn,    program code means for masking the key with the random value r to define the value mkey,    program code means for obtaining a set of random values m1, ... mn-1,    program code means for defining a value mn to be r^min1^...^min^m1^...^mn-1, and    program code means for masking the plaintext with the values m1,...,mn and mkey to define input for the masked table.
  25. 35
    A computing device program product for use in a cryptographic process, the cryptographic process using a key value to define input to a cryptographic function, the computing device program product comprising a computer usable medium having computer readable program code means embodied in said medium, and comprising    program code means for masking the cryptographic function using a function mask value,    program code means for defining a set of more than one split mask values, at least one of the set of split mask values being defined with reference to the function mask value,    program code means for masking the key value using steps that comprise masking by applying the set of split mask values to obtain a masked input key value, program code means for using the masked input key value to define the input to the masked cryptographic function.
  26. 37
    A computing device program product for use with an AES key generation process for defining masked round keys for use in AES encryption, the computing device program product comprising a computer usable medium having computer readable program code means embodied in said medium, and comprising    program code means for defining a masked table for use the AES key generation process using table mask M,    program code means for defining a set of four split mask values, one of the set of split mask values being defined with relation to table mask M,    program code means for masking a set of four key values using the set of four split mask values and applying the resulting values to the AES key generation process using the masked table and a set of intermediate mask values whereby the set of AES round keys defined using table look-up are defined by applying an appropriate intermediate mask value to the input value for the masked table program code means for masking the round keys produced by the AES key, and generation process by applying an appropriate intermediate mask value to the round keys that are not directly defined using table look-up.
  27. 39
    The computing device program product of either one of Claims 37 or 38 in which the key mask values are specified as n0, n1, n2, n3 and the split mask values are specified as m0, m1, m2, m3 and comprising program code means for randomly defining m0, m1, m2 and defining m3 to be M^n0^n1^n2^n3^m0^m1^m2.
  28. 41
    A computing device program product for carrying out AES encryption using the round keys as defined in claim 37, the computing device program product comprising a computer usable medium having computer readable program code means embodied in said medium, and comprising program code means for unmasking the output of the AES encryption using the key mask values and the split mask values.
  29. 43
    A system for carrying out encryption using a key value for encrypting a plaintext value to define a cipher text, the encryption being defined using an encryption function, the system comprising    means for defining a masked encryption function by masking the encryption function using an encryption function mask value;means for defining a set of more than one split mask values, at least one of the set of split mask values being defined with reference to the encryption function mask value;means for generating a final mask value by masking the key value using masking steps that comprise masking by applying the set of split mask values;means for determining an input value by masking the plaintext value using masking steps that comprise masking by applying the fixed final mask value;and means for applying the input value to the encryption function to provide a cipher text output.
  30. 45
    The system of either one of Claims 43 or 44 in which the means for defining one of the set of split mask values with reference to the encryption function mask value further comprises means for masking the said split mask value with the other values in the set of split mask values.
  31. 47
    The system of any one of Claims 43 to 46, in which the encryption function is a table look-up.
  32. 48
    The system of any one of Claims 43 to 47 in which masking is a bitwise exclusive or operation carried out on binary values.
  33. 49
    The system of any one of Claims 43 to 48 further comprising means for storing the masked key and the set of split mask values.
  34. 50
    The system of any one of Claims 43 to 49 further comprising means for applying a random mask to an even number of the set of split mask values prior to masking the key value with the set of split mask values.
  35. 51
    A system for use in a cryptographic process, the cryptographic process using a key value to define input to a cryptographic function, the system comprising    means for masking the cryptographic function using a function mask value;means for defining a set of more than one split mask values, at least one of the set of split mask values being defined with reference to the function mask value;means for masking the key value using steps that comprise masking by applying the set of split mask values to obtain a masked input key value;and    means for using the masked input key value to define the input to the masked cryptographic function.
  36. 53
    A system for use with an AES key generation process for defining masked round keys for use in AES encryption, the system comprising    means for defining a masked table for use the AES key generation process using table mask M,    means for defining a set of four split mask values, one of the set of split mask values being defined with relation to table mask M,    means for masking a set of four key values using the set of four split mask values and applying the resulting values to the AES key generation process using the masked table and a set of intermediate mask values whereby the set of AES round keys defined using table look-up are defined by applying an appropriate intermediate mask value to the input value for the masked table, and    means for masking the round keys produced by the AES key generation process by applying an appropriate intermediate mask value to the round keys that are not directly defined using table look-up.
  37. 55
    The system of either one of Claims 53 or 54 in which the key mask values are specified as n0, n1, n2, n3 and the split mask values are specified as m0, m1, m2, m3 and comprising means for randomly defining m0, m1, m2 and defining m3 to be M^n0^n1^n2^n3^m0^m1^m2.
  38. 57
    A system for carrying out AES encryption using the round keys as defined in any one of Claims 53 to 56, the computing device program product comprising a computer usable medium having computer readable means embodied in said medium, and comprising means for unmasking the output of the AES encryption using the key mask values and the split mask values.
Independent claims38