WO2009109715A2 - Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature - Google Patents

Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature Download PDF

Info

Publication number
WO2009109715A2
WO2009109715A2 PCT/FR2009/000072 FR2009000072W WO2009109715A2 WO 2009109715 A2 WO2009109715 A2 WO 2009109715A2 FR 2009000072 W FR2009000072 W FR 2009000072W WO 2009109715 A2 WO2009109715 A2 WO 2009109715A2
Authority
WO
WIPO (PCT)
Prior art keywords
parameter
generating
sequence
private key
protection
Prior art date
Application number
PCT/FR2009/000072
Other languages
English (en)
Other versions
WO2009109715A3 (fr
Inventor
Bruno Benteo
Benoît FEIX
Sebastien Nerot
Original Assignee
Inside Contactless
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 Inside Contactless filed Critical Inside Contactless
Priority to CA2712180A priority Critical patent/CA2712180A1/fr
Priority to CN2009801023050A priority patent/CN101911009B/zh
Priority to JP2010543544A priority patent/JP2011510579A/ja
Priority to EP09718480A priority patent/EP2248008A2/fr
Publication of WO2009109715A2 publication Critical patent/WO2009109715A2/fr
Publication of WO2009109715A3 publication Critical patent/WO2009109715A3/fr
Priority to US12/840,407 priority patent/US20110170685A1/en

Links

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3013Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • 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
    • 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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Definitions

  • the present invention relates to a countermeasure method in an electronic component implementing an asymmetric cryptography algorithm with a private key, resistant to attacks aimed at discovering the private key. It also relates to a microcircuit device and a portable device, in particular a smart card, implementing such a method.
  • Private-key asymmetric cryptography is based on the use of primitives P which are generally functions exploiting a problem with complex and one-way resolution, such as the so-called discrete logarithm problem in finite fields (DLP of English "Discrete Logarithm Problem ”) or the so-called discrete logarithm on elliptic curves (ECDLP of the English” Elliptic Curves Discrete Logarithm Problem ").
  • DLP discrete logarithm problem in finite fields
  • ECDLP of the English Elliptic Curves Discrete Logarithm Problem ").
  • Signature schemes are a classic use of asymmetric cryptography.
  • an algorithmic application of asymmetric cryptography with a signature scheme involving the use of a private key d is generally implemented by a microcircuit 12 to authenticate the transmission of an M message by a signature of this message using the private key.
  • the private key d is for example stored in the microcircuit 12 which includes a memory 14 including itself a secure memory space 16 provided for this purpose and a microprocessor 18 for executing the asymmetric cryptographic algorithm 10.
  • Microcircuit devices implementing cryptographic algorithms are sometimes attacked to determine the secret data they manipulate such as the key (s) used and possibly, in some cases, information. on the messages themselves.
  • the algorithms of asymmetric cryptography to signature scheme are under attack to discover the private key.
  • Auxiliary channel attacks are an important family of cryptanalysis techniques that exploit certain properties of software or hardware implementations of cryptographic algorithms.
  • the attacks of the SPA (Simple Power Analysis) or DPA (Differential Power Analysis) type consist in measuring the incoming and outgoing currents and voltages in the microcircuit. during the execution of the asymmetric cryptographic algorithm in order to deduce the private key.
  • the feasibility of this family of attacks has been demonstrated in the article by P. Kocher, J. Jaffe and B. Jun entitled “Differential Power Analysis” published in Advances in Cryptology in particular - Crypto 99 Proceedings, Lecture Notes In Computer Science Vol . 1666, M. Wiener, eds., Springer-Verlag, 1999.
  • Time attacks analyze the time taken to perform certain operations. Such attacks on asymmetric cryptographic algorithms are described in the article by P. Kocher, N. Koblitz titled “Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other Systems” published in Advances in Cryptology - Crypto 96, 16th annual international cryptology conference, Aug. 18-22, 1996 Proceedings.
  • Fault injection (s) attacks are also known, among which are the DFA (Differential Fault Analysis) attacks, which consist in intentionally generating faults during the execution of the algorithm. cryptography, for example by disrupting the microcircuit on which it runs. Such a disturbance may include one or more short illumination (s) of the microcircuit or the generation of one or more peak (s) of voltage on one of its contacts. It thus makes it possible, under certain conditions, to exploit the calculation and behavior errors generated in order to obtain part or all of the private key sought.
  • DFA Different Fault Analysis attacks
  • the invention more particularly relates to a method of countermeasure in an electronic component implementing an asymmetric cryptography algorithm with a private key d, comprising the steps of: generate a first output data using a primitive,
  • the protection parameter a is conventionally generated using a pseudo random data generator 20, so that the execution of the primitive by the cryptographic algorithm 10 is itself made random, for example by a technique commonly referred to as masking, which can also be renamed a method of transformation or deformation of the data since their manipulation is deformed as opposed to their raw use, performed by a countermeasure section 22 of the microprocessor 18, using the protection parameter a.
  • masking a technique commonly referred to as masking
  • the intermediate data of the cryptographic algorithm and, consequently, the measurable currents are modified by the random protection parameter and their observation does not make it possible to find the true value of the private key.
  • the masking does not disturb the algorithm itself, which therefore provides the same result with or without masking.
  • RSA asymmetric cryptographic algorithm
  • An efficient implementation of this primitive uses a binary representation of the private key d by iterating on each bit of this binary representation. In each iteration, the calculation performed and in fact the energy consumption during the calculation depends on the value of the bit concerned. Therefore, the execution of such a primitive makes the private key particularly vulnerable to the aforementioned attacks.
  • a conventional countermeasure then consists in directly masking the private key using the protection parameter.
  • a known signature scheme using this RSA algorithm can be used to sign an M message by applying the modular exponentiation to the message M using the private key d as an exponent.
  • the signature is in this case the direct result of the modular exponentiation.
  • a fault injection attack (s) is described. This attack allows, by switching to 0 a number of low-order bits of the random and then calculation of the signature a number of times, to deduce the value of the private key.
  • One embodiment of the invention relates to a countermeasure method in an electronic component implementing a private key asymmetric cryptography algorithm, comprising the steps of:
  • generating a protection parameter characterized in that it further comprises the steps of:
  • the protection parameter is used to protect the execution of the operation following the application of the primitive, rather than the execution of the primitive itself. It is indeed more this operation that is exploited in the attacks aimed at this type of signature scheme.
  • the countermeasure method comprises the steps of:
  • the countermeasure method comprises the steps of:
  • the intermediate parameter is the first output data item.
  • the primitive is a modular exponentiation for the realization of a signature scheme cryptography algorithm of the DSA type.
  • the primitive is a scalar multiplication for the realization of an ECDSA type signature scheme cryptography algorithm.
  • the countermeasure method implements a signature-type asymmetric cryptographic algorithm consisting in applying the Fiat-Shamir heuristics to a zero-knowledge identification identification protocol.
  • the generation of the protection parameter comprises the steps of:
  • the countermeasure method comprises the steps of:
  • each function being generating, by successive applications to at least one predetermined secret parameter and stored in memory, a corresponding sequence of values that can be determined solely from the corresponding secret parameter and the corresponding function
  • the countermeasure method comprises the steps of:
  • the method of countermeasure comprises, after carrying out the transformation, a step of regenerating the protection parameter for use in the step of generating the second output data item.
  • Another embodiment of the invention consists in providing a microcircuit device, comprising a microprocessor for implementing a countermeasure method of a private key asymmetric cryptography algorithm, at least one secure memory for storage of the private key, and a data generator for generating a protection parameter, characterized in that it is configured to:
  • the microcircuit device is configured to:
  • the microcircuit device is configured to:
  • the intermediate parameter is the first output data item.
  • the primitive is a modular exponentiation for the realization of a signature scheme cryptography algorithm of the DSA type.
  • the primitive is a scalar multiplication for the realization of an ECDSA type signature scheme cryptography algorithm.
  • the microprocessor implements a signature-type asymmetric cryptographic algorithm consisting in applying the Fiat-Shamir heuristics to a zero-knowledge identification identification protocol.
  • the data generator is configured to generate the protection parameter by:
  • the data generator is configured to:
  • each function being generating, by successive applications to at least one predetermined secret parameter and stored in memory, a corresponding sequence of values that can be determined solely from the corresponding secret parameter and the corresponding function
  • the data generator is configured to: defining a generating function, by successive applications to at least one predetermined secret parameter and stored in memory, of a sequence of values that can be determined solely from the secret parameter and from the function,
  • the microcircuit device is configured to, after completion of the transformation, regenerate the protection parameter to use it during the step of generating the second output datum.
  • Another embodiment of the invention consists in providing a portable device, in particular a smart card, comprising a microcircuit device as described above.
  • FIG. 1 previously described schematically represents the structure of a microcircuit device, of conventional type
  • FIG. 2 schematically represents the structure of a microcircuit device, according to a first embodiment of the invention
  • FIG. 3 schematically represents a smart card comprising the device of FIG. 2,
  • FIG. 4 illustrates the successive steps of a first countermeasure method implemented by the device of FIG. 2,
  • FIG. 5 illustrates the successive steps of a second countermeasure method implemented by the device of FIG. 2,
  • FIG. 6 schematically represents the structure of a microcircuit device, according to a second embodiment of the invention.
  • FIG. 7 illustrates the successive steps of a countermeasure method implemented by the device of FIG. 6.
  • the microcircuit device 12 'represented in FIG. 2 comprises, like that represented in FIG. 1, an algorithmic application of asymmetric cryptography 10, a memory 14 including a secure memory space 16 for storing, in particular, a private key d intended to be used by the application 10, a microprocessor 18 and a pseudo-random data generator 20 for the supply a protection parameter a. It also has a countermeasure section 22 ', but this provides an improvement to the existing countermeasures, in particular to the countermeasure section 22 previously described.
  • the device 12 ' is for example integrated in a portable device, in particular in the form of a secure smart card chip 30, as shown in FIG.
  • the algorithmic application of asymmetric cryptography 10 is more precisely adapted for the implementation of a signature scheme of the type consisting in applying the heuristics of Fiat-Shamir to an identification protocol to zero disclosure of knowledge. It therefore comprises:
  • the first and second output data constitute the signature (si, s2).
  • the countermeasure section 22' is configured to transform, using the protection parameter a, the private key d and / or an intermediate parameter obtained from the first data Release.
  • the intermediate parameter is the first output data itself.
  • a first method of this type, performing a DSA-type signature on a message M, is illustrated in FIG. 4.
  • the public key is (p, q, g, e).
  • the private key is d.
  • a random number u is generated, chosen such that 0 ⁇ u ⁇ q.
  • the pseudo-random data generator 20 generates a protection parameter a whose size of the binary representation is equal to that of the private key d.
  • the generator 20 generates a parameter a 'whose size is much smaller than that of d, but the binary representation of this parameter a' is concatenated as many times with itself as necessary, in order finally to provide a protection parameter a whose size of the binary representation is equal to that of d.
  • the parameter generated by the generator 20 (a or a ') is stored in memory for use later, especially optionally as a verification parameter for the parameter a 'when combined with other parameters of the DSA algorithm to form a.
  • an optional verification step 110 is performed if, in step 104, the parameter a 'generated by the generator 20 has been stored in memory as a verification parameter.
  • the parameter a is again calculated, using the COMB function and the public and / or stored values used by this function (a ', q, si, ).
  • step 104 If the value of a has changed between step 104 and step 110, it can be concluded that a fault injection attack (s) has occurred between these two steps. An alert is then transmitted by the cryptographic application 10 and the cryptographic algorithm is stopped (112) or a different security response comes into application.
  • step 114 If the value of a has not changed between step 104 and step 110, proceed to a step 114 in which the following calculation is performed:
  • a last step 116 the cryptographic application 10 returns the value (si, s2) as the signature DSA of the message M.
  • the first method described above can be modified as follows.
  • step 108 calculating the linear congruence operation involves the first transformed output data if 'and the private key d:
  • the first method described above can be modified as follows.
  • step 108 calculating the linear congruence operation involves the first output data if and the private key transformed from:
  • step 114 the following calculation is performed:
  • the first method described above can be modified as follows.
  • step 108 calculating the linear congruence operation involves the first transformed output data if 'and the private key d:
  • step 114 the following calculation is performed:
  • the first method described above can be modified as follows.
  • step 104 the pseudo-random data generator 20 generates a protection parameter a whose size of the binary representation is much smaller than that of d.
  • step 108 the calculation of the linear congruence operation involves the first transformed output datum if and the transformed private key of:
  • FIG. 1 A second method according to the invention, carrying out an ECDSA signature of the "Elliptic Curve Digital Signature Algorithm" on a message M, is illustrated in FIG.
  • G be an elliptic curve of order q with q a prime number greater than 2160 .
  • the curve is also defined by two elements a and b which are elements of a Galois field of cardinality n.
  • a random number of k bits such as 0 ⁇ d ⁇ q, are randomly determined.
  • the public key is Q.
  • the private key is d.
  • a random number u is generated, chosen such that 0 ⁇ u ⁇ q.
  • the pseudo-random data generator 20 generates a protection parameter a whose size of the binary representation is equal to that of the private key d.
  • the generator 20 generates a parameter a 'whose size is much smaller than that of d, but the binary representation of this parameter a' is concatenated as many times with itself as necessary, in order finally to provide a protection parameter a whose size of the binary representation is equal to that of d.
  • the generator 20 generates a parameter a 'which is combined with other parameters of the ECDSA algorithm, such as q or if previously determined, using a COMB function to provide the protection parameter a.
  • a COMB (a ', q, si, ).
  • the parameter generated by the generator 20 (a or a ') is stored in memory for later use, especially optionally as a verification parameter for the parameter a' when combined with other parameters of the DSA algorithm to train a.
  • the following steps 206 to 216 are identical to steps 106 to 116. They will therefore not be detailed.
  • another method according to the invention can realize a Schnorr type signature.
  • the step of calculating the first output data is identical to step 102.
  • the linear congruence applied to steps 108, 114 is slightly modified.
  • the microcircuit device 12 "represented in FIG. 6 comprises, like that represented in FIG. 2, an algorithmic application of asymmetric cryptography 10, a memory 14 including a secure memory space 16, a microprocessor 18 and a countermeasure section 22 'It is for example integrated in a portable device, in particular in the form of a chip of a secure smart card 30 as
  • a cryptographic algorithm including a countermeasure can in fact be closely integrated into one and the same implementation.
  • the algorithmic application of asymmetric cryptography 10 of the device 12 is more precisely adapted for the implementation of a signature scheme of the type consisting in applying the heuristics of Fiat-Shamir to a identification protocol with zero knowledge disclosure, and therefore includes:
  • the countermeasure section 22 'of the device 12 is configured, like that of the device 12', to transform, using the protection parameter a, the private key d and / or an intermediate parameter obtained at From the first output data
  • the intermediate parameter is the first output data itself.
  • the pseudo-random data generator 20 of conventional type is replaced by a data generator 20" which comprises:
  • a section 20 "has application of a predefined function F to at least one predetermined secret parameter S for generating a sequence of determinable values solely from this secret parameter and this function F, and
  • a section 20 "b for providing at least one protection parameter reproducibly has a value of this sequence.
  • Section 20 is actually a software or hardware implementation of the F function.
  • the secret parameter S is stored in the secure memory 16 and supplied at the input of the section 20 "of the generator 20", while the protection parameter a is provided, at the output of the section 20 “b, at the counter section. -measure 22 '.
  • the parameter a is not therefore a hazard in the conventional sense mentioned in the documents of the state of the art. This is a deterministic result derived from the calculation of the function F executed by the generator 20 "on at least one secret parameter S which may be specific to the smart card 30 on which the microcircuit 12 'is disposed. secret is for example derived from a public data device 30.
  • the element A n can be processed before providing the parameter a.
  • sequences of values (A n ) that can be provided by a generator 20 "according to the second embodiment of the invention . Then a second step, we will expose several possible uses of such sequences of values for the provision of protection parameters, in particular to the two countermeasure applications in asymmetric cryptography previously described with reference to FIGS. 4 and 5.
  • the protection parameters are for example the elements of the sequence (A n ).
  • A, q L .A 0 + r (q l -1) / (q-1).
  • m 2 k .
  • m is one of the secret parameters to be kept in the secure memory of the device.
  • the initial element A 0 is chosen as being the generating element a to which the law of internal composition of the group GC is applied k times,
  • the secret parameters S used by the generating function of the sequence (A n ) are then for example the generating element a and the values k, k 'and m.
  • the protection parameters generated are for example the elements of the sequence (A n ).
  • Frobenius a finite field, where the order q is a prime number of k bits.
  • the group of inverse affine transformations on this finite field is a group of Frobenius.
  • An interesting property of Frobenius groups is that no non-trivial element fixes more than one point.
  • a t + m ⁇ m + O .A t 1n-1 -A t + 1 + ... + A 1 -A ⁇ 1+ 1, wherein the ⁇ , take the value 0 or 1.
  • a secret parameter A 0 for example 16 bits
  • a corresponding CRC polynomial among those conventionally used in CRC calculations, for example the CRC-16 polynomial (X 16 + X 15 + X 2 + 1) or the CRC CCITT V41 polynomial (X 16 + X 12 + X 5 + 1).
  • the function T in question can be a secret matrix of values, the values A ' n and A " n respectively denoting respectively a row and a column of this matrix.
  • the sequence (A n ) can be generated from a first sequence (A ' n ), also according to public data, such as for example data used during the execution of the cryptography application with countermeasure and not secret. Among these data, depending on the applications, mention may be made of the message M (in clear or encrypted), a public key e, etc.
  • the values of the sequence used as protection parameters are then calculated using any COMB function combining all these data:
  • a n COMB (A ' n , M, e, ).
  • sequence of values (A n ) can be used not only to supply the countermeasure application of the cryptography algorithm with protection parameters, but also to detect fault injection attacks. (especially on public data). Indeed by regeneration of the sequence (A ' n ) using the secret parameter (s), at the end of the execution of the cryptography algorithm for example, but before doing the opposite operation of the initial transformation using a regenerated protection parameter, then by using this regenerated sequence (A ' n ) and public data as it appears at the end of execution, it is possible to check whether the application of the COMB function produces the same sequence of values (A n ) or not and therefore if public data has been assigned or not running.
  • this generation of random events can be replaced by the non-random generation of parameters derived from one or more sequence (s) of values obtained using at least one secret parameter.
  • FIG. 7 illustrates an example of steps performed by a method according to the second embodiment of FIG. 6, applied to the execution of an asymmetrical cryptographic algorithm with countermeasure, using T protection parameters a. ... a ⁇ by execution, all the protection parameters that can be extracted from the same sequence of values (A n ) generated by the section 20'a.
  • a counter i is initialized to 0. This counter i is intended to keep in memory the number of times that the asymmetric cryptographic algorithm has been executed since this step of initialization INIT, as long as another initialization is not performed.
  • the secret parameter S (or the parameters S when there are several), from which the sequence of values must be generated, is defined. It can be kept from a previous initialization, but can also be generated on the basis of a new value on the occasion of this initialization. It is for example generated from unique identification data, such as a public data device 30. It can also be generated from parameters or physical phenomena related to the microcircuit at a given instant, which can be random. In all cases, it is stored in memory in a secure manner, to allow the microcircuit to regenerate at any time the same sequence of values (A n ) using the function implemented by section 20 "a.
  • the initialization step INIT can be unique in the life cycle of the microcircuit, carried out during the design by the manufacturer, or reproduced several times, for example regularly or whenever the counter i reaches an imax value.
  • the generator 20 " is solicited one or more times to apply the secret parameter S to the predefined function F , so as to generate, in one or more times, a number T of elements of the sequence of values (A n ): A 1 , ... A ⁇ . From these first T elements, the protection parameters T v ... a ⁇ are generated.
  • a k A k .
  • the generator 20 " is again requested one or more times to apply the secret parameter S to the predefined function F, so as to generate, in one or more times, a number T of additional elements of the sequence of values (A n ): A T (M) +1 , ... A 11 . From these additional elements T, the protection parameters ⁇ ,..., ⁇ are generated, as before.
  • a k AT ( ⁇ 1) + k .
  • the knowledge of the method and the secret values used by the method including the initial parameter A 0 previously loaded in memory or during a stage of the life cycle of the microcircuit device in EEPROM memory, allows to find at any time the protection parameters generated and used in the life of the device. It is clear that this feature then allows simple and effective debugging and improved resistance to attack by fault injection.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Ce procédé de contre-mesure dans un composant électronique mettant en œuvre un algorithme de cryptographie asymétrique à clé privée, comprend les étapes consistant à générer (102) une première donnée de sortie (s1), à l'aide d'une primitive, et (104) un paramètre de protection. Il comporte en outre les étapes consistant à transformer (106), à l'aide du paramètre de protection, au moins l'un des éléments de l'ensemble constitué de la clé privée et d'un paramètre intermédiaire obtenu à partir de la première donnée de sortie (s1), pour fournir respectivement des premier et second opérandes, et à générer (108, 114), à partir d'une opération impliquant les premier et second opérandes, une seconde donnée de sortie (s2).

Description

PROCEDE ET DISPOSITIFS DE CONTRE-MESURE POUR CRYPTOGRAPHIE ASYMETRIQUE A SCHEMA DE SIGNATURE
La présente invention concerne un procédé de contre-mesure dans un composant électronique mettant en œuvre un algorithme de cryptographie asymétrique à clé privée, résistant à des attaques visant à découvrir la clé privée. Elle concerne également un dispositif à microcircuit et un dispositif portable, notamment une carte à puce, mettant en œuvre un tel procédé.
La cryptographie asymétrique à clé privée repose sur l'utilisation de primitives P qui sont généralement des fonctions exploitant un problème à résolution complexe et à sens unique, tel que le problème dit du logarithme discret dans les corps finis (DLP de l'Anglais « Discrète Logarithm Problem ») ou celui dit du logarithme discret sur les courbes elliptiques (ECDLP de l'Anglais « Elliptic Curves Discrète Logarithm Problem »). En d'autres termes, pour une primitive P de cryptographie asymétrique, impliquant une donnée d'entrée x, il est simple de calculer y = F(x), mais connaissant y et la primitive F, il est « difficile » de retrouver la valeur de x. Le terme « difficile » signifie ici « calculatoirement impossible à résoudre ». Dans les corps finis, F est une exponentiation modulaire, dans les courbes elliptiques, F est une multiplication scalaire sur les points de la courbe elliptique définie.
Les schémas de signature constituent une utilisation classique de la cryptographie asymétrique. Comme cela est illustré sur la figure 1 , une application algorithmique de cryptographie asymétrique à schéma de signature 10 impliquant l'utilisation d'une clé privée d est généralement mise en oeuvre par un microcircuit 12 pour authentifier l'émission d'un message M par une signature de ce message à l'aide de la clé privée. La clé privée d est par exemple stockée dans le microcircuit 12 qui comporte une mémoire 14 incluant elle-même un espace de mémoire sécurisé 16 prévu à cet effet et un microprocesseur 18 pour exécuter l'algorithme de cryptographie asymétrique 10.
Les dispositifs à microcircuits mettant en œuvre des algorithmes de cryptographie font parfois l'objet d'attaques visant à déterminer les données secrètes qu'ils manipulent telles que la ou les clés utilisée(s) et éventuellement, dans certains cas, de l'information sur les messages eux- mêmes. En particulier, les algorithmes de cryptographie asymétrique à schéma de signature font l'objet d'attaques visant à découvrir la clé privée. Les attaques par canaux auxiliaires constituent une famille importante des techniques de cryptanalyse qui exploitent certaines propriétés des implémentations logicielles ou matérielles des algorithmes de cryptographie.
Parmi les attaques par canaux auxiliaires connues, les attaques de type SPA (de l'anglais « Simple Power Analysis ») ou DPA (de l'anglais « Différentiel Power Analysis ») consistent à mesurer les courants et tensions entrants et sortants dans le microcircuit au cours de l'exécution de l'algorithme de cryptographie asymétrique dans le but d'en déduire la clé privée. La faisabilité de cette famille d'attaques a été démontrée dans l'article de P. Kocher, J. Jaffe et B. Jun intitulé « Differential Power Analysis » notamment publié dans Advances in Cryptology - Crypto 99 Proceedings, Lecture Notes In Computer Science Vol. 1666, M. Wiener, éd., Springer-Verlag, 1999.
Les attaques temporelles analysent le temps mis pour effectuer certaines opérations. De telles attaques sur des algorithmes de cryptographie asymétrique sont décrites dans l'article de P. Kocher, N. Koblitz intitulé « Timing attacks on implémentations of Diffie-Hellman, RSA, DSS, and other Systems » notamment publié dans Advances in Cryptology - Crypto 96, 16th annual international cryptology conférence, Aug. 18-22, 1996 Proceedings.
On connaît également les attaques par injection de faute(s), parmi lesquelles on peut citer les attaques DFA (de l'anglais « Differential Fault Analysis »), qui consistent à engendrer volontairement des fautes lors de l'exécution de l'algorithme de cryptographie, par exemple en perturbant le microcircuit sur lequel il s'exécute. Une telle perturbation peut inclure un (ou plusieurs) éclairage(s) bref(s) du microcircuit ou la génération d'un ou plusieurs pic(s) de tension sur l'un de ses contacts. Elle permet ainsi sous certaines conditions d'exploiter les erreurs de calcul et de comportement générées afin d'obtenir une partie voire la totalité de la clé privée recherchée.
Afin de lutter contre ces attaques qui sont variées par nature, de nombreuses solutions très différentes les unes des autres ont été apportées. L'invention concerne plus particulièrement celles qui concernent un procédé de contre-mesure dans un composant électronique mettant en œuvre un algorithme de cryptographie asymétrique à clé privée d, comprenant les étapes consistant à : - générer une première donnée de sortie à l'aide d'une primitive,
- générer un paramètre de protection a.
Ces algorithmes prévoient en général de modifier l'exécution de la primitive à l'aide du paramètre de protection généré.
Le paramètre de protection a est généré de façon classique à l'aide d'un générateur de données pseudo aléatoires 20, de sorte que l'exécution de la primitive par l'algorithme de cryptographie 10 est elle-même rendue aléatoire, par exemple par une technique communément qualifiée de masquage, qui peut être également renommée méthode de transformation ou de déformation des données puisque leur manipulation est déformée par opposition à leur utilisation brute, réalisée, par une section de contre-mesure 22 du microprocesseur 18, à l'aide du paramètre de protection a. Ainsi, les données intermédiaires de l'algorithme de cryptographie et, par suite, les courants mesurables sont modifiés par le paramètre de protection aléatoire et leur observation ne permet pas de retrouver la véritable valeur de la clé privée. En revanche, le masquage ne perturbe pas l'algorithme lui-même qui fournit donc le même résultat avec ou sans masquage.
Par exemple, lors de l'exécution de l'algorithme de cryptographie asymétrique connu sous le nom de RSA (du nom de ses auteurs Rivest, Shamir et Adleman), une primitive consistant en une exponentiation modulaire est exécutée. Une implémentation efficace de cette primitive utilise une représentation binaire de la clé privée d en réalisant des itérations sur chaque bit de cette représentation binaire. Dans chaque itération, le calcul effectué et de fait la consommation d'énergie lors de la réalisation du calcul dépend de la valeur du bit concerné. Par conséquent, l'exécution d'une telle primitive rend la clé privée particulièrement vulnérable aux attaques précitées. Une contre-mesure classique consiste alors à masquer directement la clé privée à l'aide du paramètre de protection.
On peut donc protéger de cette façon un schéma connu de signature utilisant cet algorithme RSA pour signer un message M par application de l'exponentiation modulaire au message M à l'aide de la clé privée d en tant qu'exposant. La signature est dans ce cas le résultat direct de l'exponentiation modulaire.
En revanche, on ne peut pas protéger de cette façon un autre schéma connu de signature consistant à appliquer l'heuristique de Fiat-Shamir à un protocole d'identification à divulgation nulle de connaissance. Un tel schéma de signature est connu : on se reportera par exemple à sa définition dans la thèse présentée et soutenue publiquement par Benoît Chevallier-Marnes le 16 Novembre 2006 à l'Ecole Normale Supérieure, Paris, intitulée « Cryptographie à clé publique : constructions et preuves de sécurité », plus particulièrement aux chapitres 4.1.2 et 4.2.1 , pages 27-30. De même le protocole d'identification de Schnorr et les signatures El Gamal et DSA (de l'anglais « Digital Signature Algorithm ») doivent être protégées d'une autre façon. Par exemple l'algorithme DSA, qui utilise cet autre schéma de signature, comprend les étapes consistant à :
- générer une première donnée de sortie à l'aide d'une primitive basée sur le problème du logarithme discret et appliquée à l'aide d'un aléa différent de la clé privée,
- générer, à partir d'une opération impliquant la première donnée de sortie et la clé privée, une seconde donnée de sortie, et
- retourner les première et seconde données de sortie en tant que signature.
Un procédé de contre-mesure pour cet algorithme est décrit dans l'article de D. Naccache et al, intitulé « Experimenting with faults, lattices and the DSA » publié dans Proceedings of the 8th International Workshop on Theory and Practice in Public Key Cryptography 2005 (January 23-26, 2005, Les Diablerets, Switzerland), Lecture Notes in Computer Science, vol. 3386/2005, pp 16-28, Springer Ed.
Dans ce document, une attaque par injection de faute(s) est décrite. Cette attaque permet, par commutation à 0 d'un certain nombre de bits de poids faible de l'aléa puis calcul de la signature un certain nombre de fois, d'en déduire la valeur de la clé privée.
Protéger l'exécution de la primitive en masquant l'aléa n'est pas efficace contre les attaques par injection de faute(s) dans ce type d'algorithme puisqu'il n'est pas nécessaire de connaître la valeur de cet aléa pour retrouver la clé privée. L'article prévoit donc des méthodes plus complexes, combinant par exemple différentes techniques de façon simultanée.
Il peut ainsi être souhaité de prévoir un procédé de cryptographie asymétrique résistant aux attaques du type précité et qui soit simple à mettre en œuvre, notamment pour les algorithmes à schéma de signature appliquant l'heuristique de Fiat-Shamir à un protocole d'identification à divulgation nulle de connaissance. Un mode de réalisation de l'invention concerne un procédé de contre- mesure dans un composant électronique mettant en œuvre un algorithme de cryptographie asymétrique à clé privée, comprenant les étapes consistant à :
- générer une première donnée de sortie à l'aide d'une primitive,
- générer un paramètre de protection, caractérisé en ce qu'il comporte en outre les étapes consistant à :
- transformer, à l'aide du paramètre de protection, au moins l'un des éléments de l'ensemble constitué de la clé privée et d'un paramètre intermédiaire obtenu à partir de la première donnée de sortie, pour fournir respectivement des premier et second opérandes, et
- générer, à partir d'une opération impliquant les premier et second opérandes, une seconde donnée de sortie.
Ainsi le paramètre de protection est utilisé pour protéger l'exécution de l'opération qui suit l'application de la primitive, plutôt que l'exécution de la primitive elle-même. C'est en effet davantage cette opération qui est exploitée dans les attaques visant ce type de schéma de signature.
Selon un mode de réalisation, le procédé de contre-mesure comporte les étapes consistant à :
- transformer la clé privée à l'aide du paramètre de protection, et
- générer, à partir d'une première opération impliquant le paramètre intermédiaire et la clé privée transformée, une première donnée intermédiaire, générer, à partir d'une seconde opération impliquant le paramètre intermédiaire et le paramètre de protection, une seconde donnée intermédiaire, puis combiner les première et seconde données intermédiaires pour fournir la seconde donnée de sortie.
Selon un mode de réalisation, le procédé de contre-mesure comporte les étapes consistant à :
- transformer le paramètre intermédiaire obtenu à partir de la première donnée de sortie à l'aide du paramètre de protection, et
- générer, à partir d'une première opération impliquant le paramètre intermédiaire transformé et la clé privée, une première donnée intermédiaire, générer, à partir d'une seconde opération impliquant le paramètre de protection et la clé privée, une seconde donnée intermédiaire, puis combiner les première et seconde données intermédiaires pour fournir la seconde donnée de sortie.
Selon un mode de réalisation, le paramètre intermédiaire est la première donnée de sortie. Selon un mode de réalisation, la primitive est une exponentiation modulaire pour la réalisation d'un algorithme de cryptographie à schéma de signature de type DSA.
Selon un mode de réalisation, la primitive est une multiplication scalaire pour la réalisation d'un algorithme de cryptographie à schéma de signature de type ECDSA.
Selon un mode de réalisation, le procédé de contre-mesure met en œuvre un algorithme de cryptographie asymétrique à schéma de signature du type consistant à appliquer l'heuristique de Fiat-Shamir à un protocole d'identification à divulgation nulle de connaissance.
Selon un mode de réalisation, la génération du paramètre de protection comporte les étapes consistant à :
- définir une fonction génératrice, par applications successives à au moins un paramètre secret prédéterminé et stocké en mémoire, d'une séquence de valeurs déterminable uniquement à partir de ce paramètre secret et de cette fonction,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette séquence.
Selon un mode de réalisation, le procédé de contre-mesure comporte les étapes consistant à :
- définir une pluralité de fonctions, chaque fonction étant génératrice, par applications successives à au moins un paramètre secret correspondant prédéterminé et stocké en mémoire, d'une séquence de valeurs correspondante déterminable uniquement à partir du paramètre secret correspondant et de la fonction correspondante,
- combiner la pluralité de séquences de valeurs générées à l'aide d'une relation prédéfinie pour générer une nouvelle séquence de valeurs,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence.
Selon un mode de réalisation, le procédé de contre-mesure comporte les étapes consistant à :
- définir une fonction génératrice, par applications successives à au moins un paramètre secret prédéterminé et stocké en mémoire, d'une séquence de valeurs déterminable uniquement à partir du paramètre secret et de la fonction, - combiner la séquence de valeurs générées avec des paramètres publics de l'algorithme de cryptographie pour générer une nouvelle séquence de valeurs,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence.
Selon un mode de réalisation, le procédé de contre-mesure comporte, après réalisation de la transformation, une étape consistant à régénérer le paramètre de protection pour l'utiliser lors de l'étape de génération de la seconde donnée de sortie.
Un autre mode de réalisation de l'invention consiste à fournir un dispositif à microcircuit, comprenant un microprocesseur pour la mise en œuvre d'un procédé de contre-mesure d'un algorithme de cryptographie asymétrique à clé privée, au moins une mémoire sécurisée pour le stockage de la clé privée, et un générateur de données pour la génération d'un paramètre de protection, caractérisé en ce qu'il est configuré pour :
- générer une première donnée de sortie à l'aide d'une primitive,
- transformer, à l'aide du paramètre de protection, au moins l'un des éléments de l'ensemble constitué de la clé privée et d'un paramètre intermédiaire obtenu à partir de la première donnée de sortie, pour fournir respectivement des premier et second opérandes, et
- générer, à partir d'une opération impliquant les premier et second opérandes, une seconde donnée de sortie.
Selon un mode de réalisation, le dispositif à microcircuit est configuré pour :
- transformer la clé privée à l'aide du paramètre de protection, et
- générer, à partir d'une première opération impliquant le paramètre intermédiaire et la clé privée transformée, une première donnée intermédiaire, générer, à partir d'une seconde opération impliquant le paramètre intermédiaire et le paramètre de protection, une seconde donnée intermédiaire, puis combiner les première et seconde données intermédiaires pour fournir la seconde donnée de sortie.
Selon un mode de réalisation, le dispositif à microcircuit est configuré pour :
- transformer le paramètre intermédiaire obtenu à partir de la première donnée de sortie à l'aide du paramètre de protection, et
- générer, à partir d'une première opération impliquant le paramètre intermédiaire transformé et la clé privée, une première donnée intermédiaire, générer, à partir d'une seconde opération impliquant le paramètre de protection et la clé privée, une seconde donnée intermédiaire, puis combiner les première et seconde données intermédiaires pour fournir la seconde donnée de sortie.
Selon un mode de réalisation, le paramètre intermédiaire est la première donnée de sortie.
Selon un mode de réalisation, la primitive est une exponentiation modulaire pour la réalisation d'un algorithme de cryptographie à schéma de signature de type DSA.
Selon un mode de réalisation, la primitive est une multiplication scalaire pour la réalisation d'un algorithme de cryptographie à schéma de signature de type ECDSA.
Selon un mode de réalisation, le microprocesseur met en œuvre un algorithme de cryptographie asymétrique à schéma de signature du type consistant à appliquer l'heuristique de Fiat-Shamir à un protocole d'identification à divulgation nulle de connaissance.
Selon un mode de réalisation, le générateur de données est configuré pour générer le paramètre de protection en :
- définissant une fonction génératrice, par applications successives à au moins un paramètre secret prédéterminé et stocké en mémoire, d'une séquence de valeurs déterminable uniquement à partir de ce paramètre secret et de cette fonction, et
- générant le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette séquence.
Selon un mode de réalisation, le générateur de données est configuré pour :
- définir une pluralité de fonctions, chaque fonction étant génératrice, par applications successives à au moins un paramètre secret correspondant prédéterminé et stocké en mémoire, d'une séquence de valeurs correspondante déterminable uniquement à partir du paramètre secret correspondant et de la fonction correspondante,
- combiner la pluralité de séquences de valeurs générées à l'aide d'une relation prédéfinie pour générer une nouvelle séquence de valeurs,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence.
Selon un mode de réalisation, le générateur de données est configuré pour : - définir une fonction génératrice, par applications successives à au moins un paramètre secret prédéterminé et stocké en mémoire, d'une séquence de valeurs déterminable uniquement à partir du paramètre secret et de la fonction,
- combiner la séquence de valeurs générées avec des paramètres publics de l'algorithme de cryptographie pour générer une nouvelle séquence de valeurs,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence.
Selon un mode de réalisation, le dispositif à microcircuit est configuré pour, après réalisation de la transformation, régénérer le paramètre de protection pour l'utiliser lors de l'étape de génération de la seconde donnée de sortie.
Un autre mode de réalisation de l'invention consiste à fournir un dispositif portable, notamment une carte à puce, comprenant un dispositif à microcircuit tel que décrit précédemment.
Des exemples de réalisation de la présente invention seront exposés plus en détail dans la description suivante, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles :
- la figure 1 précédemment décrite représente de façon schématique la structure d'un dispositif à microcircuit, de type classique,
- la figure 2 représente de façon schématique la structure d'un dispositif à microcircuit, selon un premier mode de réalisation de l'invention,
- la figure 3 représente de façon schématique une carte à puce comprenant le dispositif de la figure 2,
- la figure 4 illustre les étapes successives d'un premier procédé de contre-mesure mis en œuvre par le dispositif de la figure 2,
- la figure 5 illustre les étapes successives d'un deuxième procédé de contre-mesure mis en œuvre par le dispositif de la figure 2,
- la figure 6 représente de façon schématique la structure d'un dispositif à microcircuit, selon un deuxième mode de réalisation de l'invention, et
- la figure 7 illustre les étapes successives d'un procédé de contre- mesure mis en œuvre par le dispositif de la figure 6.
Premier mode de réalisation de l'invention.
Le dispositif à microcircuit 12' représenté sur la figure 2 comporte, comme celui représenté sur la figure 1 , une application algorithmique de cryptographie asymétrique 10, une mémoire 14 incluant un espace de mémoire sécurisé 16 pour le stockage, notamment, d'une clé privée d destinée à être utilisée par l'application 10, un microprocesseur 18 et un générateur de données pseudo aléatoires 20 pour la fourniture d'un paramètre de protection a. Il comporte également une section de contre- mesure 22', mais celle-ci apporte une amélioration aux contre-mesures existantes, en particulier à la section de contre-mesure 22 précédemment décrite.
Par ailleurs, le dispositif 12' est par exemple intégré dans un dispositif portable, notamment sous la forme d'une puce de carte à puce sécurisée 30, comme représenté sur la figure 3.
On notera que, bien que l'application algorithmique de cryptographie 10 et la section de contre-mesure 22' aient été représentées comme distinctes, celles-ci peuvent être en fait intimement imbriquées en une même implémentation, logicielle ou matérielle, d'un algorithme de cryptographie asymétrique incluant une contre-mesure.
Dans le dispositif à microcircuit 12', l'application algorithmique de cryptographie asymétrique 10 est plus précisément adaptée pour la mise en œuvre d'un schéma de signature du type consistant à appliquer l'heuristique de Fiat-Shamir à un protocole d'identification à divulgation nulle de connaissance. Elle comporte donc :
- une section 10a d'application d'une primitive pour générer une première donnée de sortie si , et
- une section 10b d'exécution d'une opération impliquant au moins deux opérandes, l'un obtenu à partir de la première donnée de sortie et éventuellement transformé par la section 22', l'autre étant la clé privée éventuellement transformée par la section 22', pour générer une seconde donnée de sortie s2.
Pour une application de signature utilisant ce schéma, les première et seconde données de sortie constituent la signature (si , s2).
Contrairement au dispositif 12, dans ce dispositif 12' la section de contre-mesure 22' est configurée pour transformer, à l'aide du paramètre de protection a, la clé privée d et/ou un paramètre intermédiaire obtenu à partir de la première donnée de sortie. Dans le cas d'une signature DSA, le paramètre intermédiaire est la première donnée de sortie elle-même. Différents procédés de contre-mesure conformes à l'invention peuvent être mis en œuvre par le dispositif de la figure 2. Un certain nombre d'entre eux, non exhaustifs vont être présentés en référence aux figures 4 et 5.
Un premier procédé de ce type, réalisant une signature de type DSA sur un message M, est illustré par la figure 4.
Lors d'une première étape 100 de génération d'une paire de clés (une clé publique et une clé privée), on détermine aléatoirement :
- un nombre premier p de L bits, avec 512 < L < 1024, et L divisible par 64,
- un nombre premier q de 160 bits, choisi de telle façon que p - 1 = qz, avec z un entier,
- un nombre h, avec 1 < h < p - 1 , choisi de telle façon que g = h2 mod
P > 1.
- un nombre d de k bits, tel que 0 < d < q.
A l'aide de ces nombres on calcule e = gd mod p.
La clé publique est (p, q, g, e). La clé privée est d.
On notera qu'une version de la signature DSA permettant des tailles de clefs plus grandes est prévue par le NIST (pour « National Institute of Standards and Technology »), certains documents sur le sujet évoquant une taille de 3072 bits pour L.
Lors d'une deuxième étape 102 d'application d'une primitive, un aléa u est généré, choisi de telle façon que 0 < u < q. La section 10a calcule alors une première donnée de sortie si à l'aide de l'exponentiation modulaire suivante : si = (gu mod p) mod q.
Lors d'une étape 104, le générateur 20 de données pseudo aléatoires génère un paramètre de protection a dont la taille de la représentation binaire est égale à celle de la clé privée d. En variante, le générateur 20 génère un paramètre a' dont la taille est largement inférieure à celle de d, mais la représentation binaire de ce paramètre a' est concaténée autant de fois avec elle-même que nécessaire, pour fournir finalement un paramètre de protection a dont la taille de la représentation binaire est égale à celle de d. En variante également, le générateur 20 génère un paramètre a' qui est combiné à d'autres paramètres de l'algorithme DSA, tels que q ou si déterminés précédemment, à l'aide d'une fonction COMB pour fournir le paramètre de protection a : a = COMB(a', q, si , ...). Le paramètre généré par le générateur 20 (a ou a') est conservé en mémoire pour une utilisation ultérieure, notamment de façon optionnelle en tant que paramètre de vérification pour le paramètre a' lorsqu'il est combiné à d'autres paramètres de l'algorithme DSA pour former a.
Lors d'une étape suivante de masquage 106, la section de contre- mesure 22' transforme la clé privée d de la façon suivante : d' = d + a.
Lors d'une étape 108 de calcul d'une opération impliquant la première donnée de sortie si et la clé privée transformée d', on réalise une congruence linéaire de la forme suivante :
A = u"1(H(M) + d'.si ) mod q, où H(M) est le résultat d'un hachage cryptographique avec la fonction connue SHA-1 sur le message M.
On passe ensuite à une étape de vérification optionnelle 110 qui est exécutée si, lors de l'étape 104, le paramètre a' généré par le générateur 20 a été conservé en mémoire en tant que paramètre de vérification. Lors de cette étape 110, on calcule de nouveau le paramètre a, à l'aide de la fonction COMB et des valeurs publiques et/ou conservées en mémoire utilisées par cette fonction (a', q, si , ...).
Si la valeur de a a changé entre l'étape 104 et l'étape 110, cela permet de conclure qu'une attaque par injection de faute(s) a eu lieu entre ces deux étapes. Une alerte est alors transmise par l'application de cryptographie 10 et l'algorithme de cryptographie est stoppé (112) ou une réaction sécuritaire différente entre en application.
Si la valeur de a n'a pas changé entre l'étape 104 et l'étape 110, on passe à une étape 114 lors de laquelle on effectue le calcul suivant :
B = (u'1.a.s1 ) mod q.
On en déduit enfin une seconde donnée de sortie s2, donnée par la relation s2 = (A - B) mod q.
Lors d'une dernière étape 116, l'application de cryptographie 10 retourne la valeur (si , s2) en tant que signature DSA du message M.
En variante, le premier procédé décrit précédemment peut être modifié comme suit.
Lors de l'étape de masquage 106, la section de contre-mesure 22' transforme la première donnée de sortie si de la façon suivante : si ' = si + a.
Lors de l'étape 108, le calcul de l'opération de congruence linéaire implique la première donnée de sortie transformée si' et la clé privée d :
A = u-1(H(M) + d.s1 ') mod q.
Lors de l'étape 114, on effectue le calcul suivant : B = (uΛd.a) mod q.
On en déduit la seconde donnée de sortie s2, par la relation s2 = (A - B) mod q.
En variante également, le premier procédé décrit précédemment peut être modifié comme suit.
Lors de l'étape 108, le calcul de l'opération de congruence linéaire implique la première donnée de sortie si et la clé privée transformée d' :
A = (H(M) + d'.s1 ) mod q.
Lors de l'étape 114, on effectue le calcul suivant :
B = (A - a.s1 ) mod q.
On en déduit la seconde donnée de sortie s2, par la relation s2 = (u" 1.B) mod q.
En variante également, le premier procédé décrit précédemment peut être modifié comme suit.
Lors de l'étape de masquage 106, la section de contre-mesure 22' transforme la première donnée de sortie si de la façon suivante : si ' = si + a.
Lors de l'étape 108, le calcul de l'opération de congruence linéaire implique la première donnée de sortie transformée si' et la clé privée d :
A = (H(M) + d.s1 ') mod q.
Lors de l'étape 114, on effectue le calcul suivant :
B = (A - d.a) mod q.
On en déduit la seconde donnée de sortie s2, par la relation s2 = (u" 1.B) mod q.
En variante également, le premier procédé décrit précédemment peut être modifié comme suit.
Lors de l'étape 104, le générateur 20 de données pseudo aléatoires génère un paramètre de protection a dont la taille de la représentation binaire est largement inférieure à celle de d.
Lors de l'étape de masquage 106, la section de contre-mesure 22' transforme la clé privée d de la façon suivante : d' = d + a.q.
Lors de l'étape 108, le calcul de l'opération de congruence linéaire implique la première donnée de sortie transformée si et la clé privée transformée d' :
A = (H(M) + d'.s1 ) mod q.
Lors de l'étape 114, on effectue le calcul suivant, donnant directement la valeur de la seconde donnée de sortie : S2 = (u'1.A) mod q.
On peut également reproduire les contremesures précédentes en prenant a = -a.
Un deuxième procédé conforme à l'invention, réalisant une signature de type ECDSA (de l'anglais « Elliptic Curve Digital Signature Algorithm ») sur un message M, est illustré par la figure 5.
Soit un élément G d'une courbe elliptique d'ordre q avec q un nombre premier supérieur à 2160. La courbe est également définie par deux éléments a et b qui sont des éléments d'un champ de Galois de cardinalité n.
Lors d'une première étape 200 de génération d'une paire de clés (une clé publique et une clé privée), on détermine aléatoirement un nombre d de k bits, tel que 0 < d < q.
A l'aide de ce nombre on calcule Q = d.G mod p, où l'opérateur « . » désigne le produit scalaire sur la courbe elliptique à laquelle G appartient.
La clé publique est Q. La clé privée est d.
Lors d'une deuxième étape 202 d'application d'une primitive, un aléa u est généré, choisi de telle façon que 0 < u < q. La section 10a calcule alors une première donnée de sortie si à l'aide du produit scalaire suivant : R = u. G = (xR, yR). On affecte en effet à si la valeur modulo q de l'abscisse xR de R : si = xR mod q. Si cette valeur est nulle, on reprend l'étape 202 en générant un autre aléa.
Lors d'une étape 204, le générateur 20 de données pseudo aléatoires génère un paramètre de protection a dont la taille de la représentation binaire est égale à celle de la clé privée d. En variante, le générateur 20 génère un paramètre a' dont la taille est largement inférieure à celle de d, mais la représentation binaire de ce paramètre a' est concaténée autant de fois avec elle-même que nécessaire, pour fournir finalement un paramètre de protection a dont la taille de Ia représentation binaire est égale à celle de d. En variante également, le générateur 20 génère un paramètre a' qui est combiné à d'autres paramètres de l'algorithme ECDSA, tels que q ou si déterminés précédemment, à l'aide d'une fonction COMB pour fournir le paramètre de protection a : a = COMB(a', q, si , ...). Le paramètre généré par le générateur 20 (a ou a') est conservé en mémoire pour une utilisation ultérieure, notamment de façon optionnelle en tant que paramètre de vérification pour le paramètre a' lorsqu'il est combiné à d'autres paramètres de l'algorithme DSA pour former a. Les étapes 206 à 216 suivantes sont identiques aux étapes 106 à 116. Elles ne seront donc pas détaillées.
De même, les variantes proposées au premier procédé décrit précédemment sont également applicables à ce deuxième procédé.
D'autres procédés conformes à l'invention, réalisant des signatures autres que celles précitées (DSA et ECDSA) peuvent être réalisés. Ces procédés diffèrent de ceux précités, éventuellement par la primitive qu'ils mettent en œuvre à l'étape 102, 202 pour obtenir la première donnée de sortie, et par l'opération des étapes 108, 114 ou 208, 214 permettant d'obtenir la seconde donnée de sortie.
Par exemple, un autre procédé conforme à l'invention peut réaliser une signature de type Schnorr. Dans ce cas, l'étape de calcul de la première donnée de sortie est identique à l'étape 102. En revanche, on applique une fonction de hachage G à la première donnée de sortie si , pour obtenir un paramètre intermédiaire c = G(M, si ). C'est ce paramètre intermédiaire c qui est fourni par l'application 10 à la section de contre-mesure 22'au lieu de si , pour transformation éventuelle. Par ailleurs, la congruence linéaire appliquée aux étapes 108, 114 est légèrement modifiée. En effet, alors que la congruence linéaire de la signature DSA est, de façon classique et avant adaptation selon l'invention, s2 = u~1(H(M) + d.s1 ) mod q, la congruence linéaire de la signature Schnorr est, de façon classique et avant adaptation selon l'invention, s2 = (u + d.c) mod q. Il convient donc de remplacer d par d' ou c par c' (par exemple c' = c + a) dans cette opération pour réaliser une signature de Schnorr à l'aide d'un procédé conforme à l'invention.
D'autres procédés conformes à l'invention peuvent encore être conçus par une adaptation similaire des signatures classiques telles que celles décrites dans la thèse présentée et soutenue publiquement par Benoît Chevallier-Marnes le 16 Novembre 2006 à l'Ecole Normale Supérieure, Paris, intitulée « Cryptographie à clé publique : constructions et preuves de sécurité », plus particulièrement au chapitre 4.4.
Second mode de réalisation de l'invention.
Le dispositif à microcircuit 12" représenté sur la figure 6 comporte, comme celui représenté sur la figure 2, une application algorithmique de cryptographie asymétrique 10, une mémoire 14 incluant un espace de mémoire sécurisé 16, un microprocesseur 18 et une section de contre- mesure 22'. Il est par exemple intégré dans un dispositif portable, notamment sous la forme de puce d'une carte à puce sécurisée 30 comme représenté sur la figure 3. On notera cependant que, bien que l'application algorithmique de cryptographie 10 et la section de contre-mesure 22' aient été représentées comme distinctes, celles-ci peuvent être en fait intimement imbriquées en une même implémentation d'un algorithme de cryptographie incluant une contre-mesure.
Comme dans le dispositif à microcircuit 12', l'application algorithmique de cryptographie asymétrique 10 du dispositif 12" est plus précisément adaptée pour la mise en œuvre d'un schéma de signature du type consistant à appliquer l'heuristique de Fiat-Shamir à un protocole d'identification à divulgation nulle de connaissance. Elle comporte donc :
- une section 10a d'application d'une primitive pour générer une première donnée de sortie si , et
- une section 10b d'exécution d'une opération impliquant au moins deux opérandes, l'un obtenu à partir de la première donnée de sortie et éventuellement transformé, l'autre étant la clé privée éventuellement transformée, pour générer une seconde donnée de sortie s2.
En outre, la section de contre-mesure 22' du dispositif 12" est configurée, comme celle du dispositif 12', pour transformer, à l'aide du paramètre de protection a, la clé privée d et/ou un paramètre intermédiaire obtenu à partir de la première donnée de sortie. Dans le cas d'une signature DSA, le paramètre intermédiaire est la première donnée de sortie elle-même.
Contrairement au dispositif 12', dans ce dispositif 12" le générateur de données pseudo aléatoires 20 de type classique est remplacé par un générateur de données 20" qui comporte :
- une section 20"a d'application d'une fonction F prédéfinie à au moins un paramètre secret prédéterminé S pour la génération d'une séquence de valeurs déterminable uniquement à partir de ce paramètre secret et de cette fonction F, et
- une section 20"b de fourniture d'au moins un paramètre de protection a de façon reproductible à partir d'une valeur de cette séquence.
La section 20"a est en fait une implémentation logicielle ou matérielle de la fonction F.
Le paramètre secret S est stocké dans la mémoire sécurisée 16 et fourni en entrée de la section 20"a du générateur 20", tandis que le paramètre de protection a est fourni, en sortie de la section 20"b, à la section de contre-mesure 22'. Dans ce second mode de réalisation, le paramètre a n'est donc pas un aléa au sens classique mentionné dans les documents de l'état de la technique. Il s'agit d'un résultat déterministe issu du calcul de la fonction F exécuté par le générateur 20" sur au moins un paramètre secret S qui peut être propre à la carte à puce 30 sur laquelle est disposé le microcircuit 12'. Ce paramètre secret est par exemple dérivé d'une donnée publique du dispositif 30.
L'application répétée de la fonction F à S génère une séquence (An) dont les éléments sont à l'origine du(des) paramètre(s) de protection fourni(s) par le générateur. D'une façon générale, le générateur peut fournir autant de paramètres a issus de valeurs de la séquence (An) que nécessaire en fonction de l'application de contre-mesure implémentée dans la carte 30. Cette séquence (An) ne peut être reproduite qu'avec la connaissance de la fonction génératrice F et des éléments déterministes initiaux qu'elle utilise (le paramètre S).
Chaque paramètre de protection a peut être directement issu d'un élément An de la séquence (An) : en d'autres termes, a = An. De façon alternative, l'élément An peut subir un traitement avant de fournir le paramètre a. Par exemple a peut être le résultat d'un calcul a = An XOR kn, où kn est une constante secrète de transformation.
Bien entendu, si la séquence (An) est cyclique et/ou opère dans un ensemble fini d'éléments, l'espace des valeurs An générées devra être suffisamment grand pour résister aux attaques. En effet plus l'espace considéré est grand, meilleure est la robustesse de la contre-mesure.
Nous allons dans un premier temps présenter plusieurs exemples non limitatifs de séquences de valeurs (An) pouvant être fournies par un générateur 20" selon le deuxième mode de réalisation de l'invention. Dans un deuxième temps, nous exposerons plusieurs utilisations possibles de telles séquences de valeurs pour la fourniture de paramètres de protection notamment aux deux applications de contre-mesure en cryptographie asymétrique précédemment décrites en références aux figures 4 et 5.
Exemples de fonctions génératrices de séquences de valeurs pour la fourniture de paramètres de protection
1 ) Fonctions à base de suites arithmético-géométriques
Si l'on définit la séquence de valeurs (An) à l'aide de la fonction F entière à valeurs entières par la relation suivante :
An+1 = F(An) = q.An + r, où q et r sont des paramètres secrets constituant, avec l'élément initial A0 de la séquence, les paramètres secrets S précédemment cités, on est capable de fournir des paramètres de protection issus d'une suite arithmético- géométrique. Les paramètres de protection sont par exemple les éléments de la séquence (An).
Si r = 0, il s'agit d'une séquence géométrique dont on peut retrouver un terme A1, utilisé à une étape précise de la cryptographie, à l'aide des paramètres secrets q et A0 de la façon suivante : A, = q'.Ao.
Si q = 1 , il s'agit d'un séquence arithmétique dont on peut retrouver un terme A1 à l'aide des paramètres secrets r et A0 de la façon suivante : A, = r.i + A0.
Si r est non nul et q différent de 1 , il s'agit d'une séquence arithmético-géométrique dont on peut retrouver un terme Aj à l'aide des paramètres secrets q, r et A0 de la façon suivante :
A, = ql.A0 + r.(ql-1 )/(q-1 ).
On peut aussi réduire l'espace des éléments de la séquence (An) par un nombre entier m à l'aide de la relation suivante :
An+1 = F(An) modulo m = (q.An + r) modulo m.
On remarque que si m est un nombre premier, cette séquence prend la forme du groupe des transformations affines inversibles sur le corps fini GF(m) = {0, 1 m-1}.
On peut aussi choisir m comme une puissance de 2, pour générer des séquences d'éléments à nombre de bits constant. Par exemple, si l'on veut générer des séquences de paramètres A, à k bits, on choisit m = 2k.
De préférence, m fait partie des paramètres secrets à conserver dans la mémoire sécurisée du dispositif.
2) Fonctions définissant un groupe multiplicatif cyclique
Soit un groupe cyclique GC à m éléments avec une valeur a comme élément générateur et la multiplication comme loi de composition interne :
GC = {a, a2 am}. On peut définir la séquence de valeurs (An) de la façon suivante :
- l'élément initial A0 est choisi comme étant l'élément générateur a auquel on applique k fois la loi de composition interne du groupe GC,
- on passe de l'élément A, à l'élément A1+1 en appliquant k' fois la loi de composition interne du groupe GC.
Les paramètres secrets S utilisés par la fonction génératrice de la séquence (An) sont alors par exemple l'élément générateur a et les valeurs k, k' et m. De plus, comme précédemment, Les paramètres de protection générés sont par exemple les éléments de la séquence (An).
3) Fonctions définissant un groupe de Frobenius
Soit un corps fini GF(q), où l'ordre q est un nombre premier de k bits. Le groupe des transformations affines inversibles sur ce corps fini est un groupe de Frobenius. Une propriété intéressante des groupes de Frobenius est qu'aucun élément non trivial ne fixe plus d'un point.
Dans ce contexte, les transformations affines utilisables prennent la forme de fonctions y = f(x) = b.x + c, où b ≠ 0 et où les opérations se font dans le corps GF(q). Il est donc possible de définir une fonction génératrice de la séquence (An) s'appliquant à des paramètres secrets q, b, c et A0 prédéterminés. En choisissant par exemple q = 216 + 1 et, en notation hexadécimale, b = 0x4cd3, c = 0x76bb, A0 = 0xef34, on obtient une séquence commençant par les termes A1 = Oxcδcf, A2 = Oxδbaf, A3 = 0x620d, A4 = 0x0605, A5 = 0xe70c, A6 = 0x3049, A7 = 0xe069, A8 = 0x55ee, etc.
4) Fonctions issues d'un registre à décalage avec rétroaction linéaire (registre de type LFSR)
II s'agit pour ce type de fonctions de choisir un paramètre secret A0, par exemple de 16 bits, et un registre à décalage LFSR, par exemple avec une sortie correspondante de 16 bits. Si la taille du registre LFSR est m, alors un terme At+m de la séquence (An) est déterminé par les m termes qui le précèdent à l'aide d'une équation linéaire du type :
At+m = αm.At + O1n-1-At+1 + ... + O1-A1+^1, où les α, prennent la valeur 0 ou 1.
5) Fonctions définissant un calcul de Contrôle de Redondance Cyclique (CRC)
II s'agit pour ce type de fonctions de choisir un paramètre secret A0, par exemple de 16 bits, et un polynôme CRC correspondant parmi ceux utilisés de façon classique dans les calculs de CRC, par exemple le polynôme CRC-16 (X16 + X15 + X2 + 1 ) ou le polynôme CRC CCITT V41 (X16 + X12 + X5 + 1 ). Un terme An+1 de la séquence (An) est déterminé en fonction du terme précédent An par la relation An+1 = F(An), où F réalise un calcul de CRC sur la base du polynôme choisi.
6) Combinaisons de séquences de valeurs
II est en effet aussi possible de calculer plusieurs séquences de valeurs, chacune par exemple selon l'une des méthodes exposées ci- dessus, et de les combiner à l'aide d'une fonction prédéfinie pour générer une nouvelle séquence de valeurs à utiliser comme paramètres de protection. On génère ainsi la séquence (An), d'après deux autres séquences (A'n) et (A"n), en calculant pour chaque indice n, An = T(A'n, A"n).
La fonction T en question peut être une matrice secrète de valeurs, les valeurs A'n et A"n désignant alors respectivement une ligne et une colonne de cette matrice.
7) Combinaisons impliquant une séquence de valeurs et des données publiques
La séquence (An) peut être générée à partir d'une première séquence (A'n), en fonction également de données publiques, telles que par exemple des données utilisées pendant l'exécution de l'application de cryptographie avec contre-mesure et non secrètes. Parmi ces données, selon les applications, on peut citer le message M (en clair ou crypté), une clé publique e, etc. Les valeurs de la séquence utilisées comme paramètres de protection sont alors calculées à l'aide d'une fonction COMB quelconque combinant toutes ces données :
An = COMB(A'n, M, e, ...).
Un intérêt de cette combinaison est que la séquence de valeurs (An) peut servir, non seulement à alimenter en paramètres de protection l'application de contre-mesure de l'algorithme de cryptographie, mais aussi à détecter des attaques par injection de fautes (notamment sur les données publiques). En effet par régénération de la séquence (A'n) à l'aide du ou des paramètre(s) secret(s), en fin d'exécution de l'algorithme de cryptographie par exemple, mais avant de faire l'opération inverse de la transformation initiale en utilisant un paramètre de protection régénéré, puis par utilisation de cette séquence (A'n) régénérée et des données publiques telles qu'elles apparaissent en fin d'exécution, on peut vérifier si l'application de la fonction COMB produit la même séquence de valeurs (An) ou non et donc si des données publiques ont été affectées ou pas en cours d'exécution.
Exemples d'utilisation d'une séquence de valeurs générée selon l'une des méthodes précédentes dans un procédé de contre-mesure en cryptographie asymétrique, selon le deuxième mode de réalisation de l'invention
1 ) Principe général du second mode de réalisation
D'une façon générale, chaque fois qu'une contre-mesure algorithmique est utilisée, la génération d'aléas introduits par la contre- mesure est préconisée, comme cela a été décrit dans le premier mode de réalisation utilisant un générateur de données pseudo aléatoires 20. Comme mentionné en référence à la figure 6, cette génération d'aléas peut être remplacée par la génération non aléatoire de paramètres issus d'une ou plusieurs séquence(s) de valeurs obtenue(s) à l'aide d'au moins un paramètre secret.
La figure 7 illustre un exemple d'étapes réalisées par un procédé selon le second mode de réalisation de la figure 6, appliqué à l'exécution d'un algorithme de cryptographie asymétrique avec contre-mesure, utilisant T paramètres de protection a.,, ... aτ par exécution, tous les paramètres de protection pouvant être extraits d'une même séquence de valeurs (An) générée par la section 20'a.
Lors d'une première étape INIT réalisée par le générateur 20", un compteur i est initialisé à 0. Ce compteur i est destiné à conserver en mémoire le nombre de fois que l'algorithme de cryptographie asymétrique a été exécuté depuis cette étape d'initialisation INIT, tant qu'une autre initialisation n'est pas réalisée.
Au cours de cette étape, le paramètre secret S (ou les paramètres S lorsqu'il y en a plusieurs), à partir duquel la séquence de valeurs doit être générée, est défini. Il peut être conservé d'une précédente initialisation, mais peut aussi être généré sur la base d'une nouvelle valeur à l'occasion de cette initialisation. Il est par exemple généré à partir de données uniques d'identification, telle qu'une donnée publique du dispositif 30. Il peut aussi être généré à partir de paramètres ou phénomènes physiques liés au microcircuit à un instant donné, qui peuvent être aléatoires. Dans tous les cas, il est conservé en mémoire de façon sécurisée, pour permettre au microcircuit de régénérer à tout moment une même séquence de valeurs (An) à l'aide de la fonction implémentée par la section 20"a.
L'étape d'initialisation INIT peut être unique dans le cycle de vie du microcircuit, réalisée lors de la conception par le constructeur, ou reproduite plusieurs fois, par exemple régulièrement ou chaque fois que le compteur i atteint une valeur imax.
Lors d'une première exécution EXE 1 de l'algorithme de cryptographie asymétrique avec contre-mesure, le générateur 20", plus particulièrement la section 20"a, est sollicité une ou plusieurs fois pour appliquer le paramètre secret S à la fonction F prédéfinie, de manière à générer, en une ou plusieurs fois, un nombre T d'éléments de la séquence de valeurs (An) : A1, ... Aτ. A partir de ces T premiers éléments, les T paramètres de protection av ... aτ sont générés.
Par exemple, pour tout k tel que 1<k<T, ak = Ak.
En variante, si l'on dispose de T valeurs secrètes supplémentaires SeC1, ... SeC1- parmi les paramètres secrets S conservés en mémoire sécurisée, on peut effectuer le calcul supplémentaire suivant : pour tout k tel que 1<k≤T, ak = Seck XOR Ak, ou ak = Seck ADD Ak, ou bien également ak = Seck SUB Ak, de manière à transformer (ou déformer ou masquer) les paramètres utilisés.
Par la suite, lors d'une i-ème exécution EXEi de l'algorithme de cryptographie avec contre-mesure, le générateur 20", plus particulièrement la section 20"a, est de nouveau sollicité une ou plusieurs fois pour appliquer le paramètre secret S à la fonction F prédéfinie, de manière à générer, en une ou plusieurs fois, un nombre T d'éléments supplémentaires de la séquence de valeurs (An) : AT(M)+1, ... A11. A partir de ces T éléments supplémentaires, les T paramètres de protection a.,, ... aτ sont générés, comme précédemment.
Par exemple, pour tout k tel que 1<k≤T, ak = AT(μ1)+k.
En variante, si l'on dispose des T valeurs secrètes supplémentaires SeC1, ... SeC1-, on peut effectuer le calcul supplémentaire suivant : pour tout k tel que 1<k≤T, ak = Seck XOR AT(M)+k, ou ak = Seck ADD AT(i. 1)+k, ou bien également ak = Seck SUB AT(M)+k, de manière à transformer (ou déformer ou masquer) les paramètres utilisés.
Quelle que soit la méthode utilisée pour générer la ou les séquence(s) de valeurs à l'origine des paramètres de protection, la connaissance de la méthode et des valeurs secrètes utilisées par la méthode, y compris le paramètre initial A0 chargé préalablement en mémoire ou lors d'une étape du cycle de vie du dispositif à microcircuit en mémoire EEPROM, permet de retrouver à tout moment les paramètres de protection générés et utilisés dans la vie du dispositif. Il apparaît clairement que cette particularité permet alors des débogages simples et efficaces ainsi qu'une résistance améliorée aux attaques par injection de fautes.
Le choix de la méthode utilisée pour générer la séquence de valeurs et le ou les paramètre(s) de protection est dicté par l'application envisagée.
2) Application du principe général du second mode de réalisation aux deux procédés décrits en référence aux figures 4 et 5. La méthode utilisée par les premier et second procédés des figures 4 et 5 pour générer le paramètre de protection a ou le paramètre a' lors des étapes 104 et 204 peut être l'une de celles préconisées dans le second mode de réalisation. Il n'est alors pas utile de conserver ce paramètre a' et le paramètre de protection a en mémoire puisqu'ils peuvent être retrouvés à chaque instant à partir de la séquence de valeurs qui est elle même déterminée par le(s) paramètre(s) secret(s) et la fonction F. Ce processus consistant à régénérer ces paramètres est même une étape utile dans la protection de l'implémentation contre les attaques par injection de faute(s). C'est ainsi que le paramètre a' peut être retrouvé aux étapes 110 et 210 sans avoir nécessairement été conservé en mémoire pendant l'exécution des étapes 104 et 204. A ces étapes 110 et 210, le paramètre de protection a peut également être retrouvé pour vérifier que son intégrité, et celle des paramètres utilisés pour le générer, a été conservée. Il est également utile de régénérer a pour réaliser les étapes 112 et 212 qui utilisent ce paramètre.
Il apparaît clairement que les procédés de contre-mesure décrits précédemment permettent de concevoir des applications de cryptographie asymétriques protégeant la clé privée utilisée contre des attaques par canaux auxiliaires ou par injection de faute(s).
On notera en outre que l'invention n'est pas limitée aux modes de réalisation décrits et que, bien que de nombreuses variantes aient été présentées, d'autres sont également envisageables prévoyant notamment d'autres types de transformations de la clé privée que ceux qui ont été détaillés, ou d'autres applications de cryptographie asymétrique que celles abordées.

Claims

REVENDICATIONS
1. Procédé de contre-mesure dans un composant électronique mettant en œuvre un algorithme de cryptographie asymétrique à clé privée (d), comprenant les étapes consistant à :
- générer (102 ; 202) une première donnée de sortie (si ) à l'aide d'une primitive,
- générer (104 ; 204) un paramètre de protection (a), caractérisé en ce qu'il comporte en outre les étapes consistant à :
- transformer (106 ; 206), à l'aide du paramètre de protection (a), au moins l'un des éléments de l'ensemble constitué de la clé privée (d) et d'un paramètre intermédiaire obtenu à partir de la première donnée de sortie (si ), pour fournir respectivement des premier et second opérandes, et
- générer (108, 114 ; 208, 214), à partir d'une opération impliquant les premier et second opérandes, une seconde donnée de sortie (s2).
2. Procédé de contre-mesure dans un composant électronique selon la revendication 1 , comportant les étapes consistant à :
- transformer (106 ; 206) la clé privée (d) à l'aide du paramètre de protection (a), et
- générer (108 ; 208), à partir d'une première opération impliquant le paramètre intermédiaire et la clé privée transformée, une première donnée intermédiaire, générer (114 ; 214), à partir d'une seconde opération impliquant le paramètre intermédiaire et le paramètre de protection (a), une seconde donnée intermédiaire, puis combiner les première et seconde données intermédiaires pour fournir la seconde donnée de sortie (si ).
3. Procédé de contre-mesure dans un composant électronique selon la revendication 1 , comportant les étapes consistant à :
- transformer (106 ; 206) le paramètre intermédiaire obtenu à partir de la première donnée de sortie (si ) à l'aide du paramètre de protection (a), et
- générer (108 ; 208), à partir d'une première opération impliquant le paramètre intermédiaire transformé et la clé privée (d), une première donnée intermédiaire, générer (114 ; 214), à partir d'une seconde opération impliquant le paramètre de protection (a) et la clé privée (d), une seconde donnée intermédiaire, puis combiner les première et seconde données intermédiaires pour fournir la seconde donnée de sortie (s2).
4. Procédé de contre-mesure dans un composant électronique selon l'une quelconque des revendications 1 à 3, dans lequel le paramètre intermédiaire est la première donnée de sortie (si ).
5. Procédé de contre-mesure dans un composant électronique selon la revendication 4, dans lequel la primitive est une exponentiation modulaire pour la réalisation d'un algorithme de cryptographie à schéma de signature de type DSA.
6. Procédé de contre-mesure dans un composant électronique selon la revendication 4, dans lequel la primitive est une multiplication scalaire pour la réalisation d'un algorithme de cryptographie à schéma de signature de type ECDSA.
7. Procédé de contre-mesure dans un composant électronique selon l'une quelconque des revendications 1 à 6, mettant en œuvre un algorithme de cryptographie asymétrique à schéma de signature du type consistant à appliquer l'heuristique de Fiat-Shamir à un protocole d'identification à divulgation nulle de connaissance.
8. Procédé de contre-mesure dans un composant électronique selon l'une quelconque des revendications 1 à 7, dans lequel la génération (104 ; 204) du paramètre de protection (a) comporte les étapes consistant à :
- définir une fonction (20"a) génératrice, par applications successives à au moins un paramètre secret (S) prédéterminé et stocké en mémoire (16), d'une séquence de valeurs ((An)) déterminable uniquement à partir de ce paramètre secret (S) et de cette fonction (20"a),
- générer le paramètre de protection (a) de façon reproductible à partir d'au moins une valeur de cette séquence.
9. Procédé de contre-mesure dans un composant électronique selon la revendication 8, comportant les étapes consistant à :
- définir une pluralité de fonctions, chaque fonction étant génératrice, par applications successives à au moins un paramètre secret (S) correspondant prédéterminé et stocké en mémoire (16), d'une séquence de valeurs ((A1J, (A"n)) correspondante déterminable uniquement à partir du paramètre secret (S) correspondant et de la fonction correspondante,
- combiner la pluralité de séquences de valeurs ((A'n), (A"n)) générées à l'aide d'une relation prédéfinie pour générer une nouvelle séquence de valeurs ((An)),
- générer le paramètre de protection (a) de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence ((An)).
10. Procédé de contre-mesure dans un composant électronique selon la revendication 8, comportant les étapes consistant à :
- définir une fonction génératrice, par applications successives à au moins un paramètre secret (S) prédéterminé et stocké en mémoire (16), d'une séquence de valeurs ((A'n)) déterminable uniquement à partir du paramètre secret (S) et de la fonction,
- combiner la séquence de valeurs ((A1J) générées avec des paramètres publics de l'algorithme de cryptographie pour générer une nouvelle séquence de valeurs ((An)),
- générer le paramètre de protection (a) de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence ((An)).
11. Procédé de contre-mesure dans un composant électronique selon l'une quelconque des revendications 8 à 10, comportant, après réalisation de la transformation (106 ; 206), une étape (110 ; 210) consistant à régénérer le paramètre de protection (a) pour l'utiliser lors de l'étape (114 ; 214) de génération de la seconde donnée de sortie (s2).
12. Dispositif à microcircuit (12', 12"), comprenant un microprocesseur (18) pour la mise en œuvre d'un procédé de contre-mesure d'un algorithme de cryptographie asymétrique à clé privée (d), au moins une mémoire sécurisée (16) pour le stockage de la clé privée (d), et un générateur de données (20, 20") pour la génération d'un paramètre de protection (a), caractérisé en ce qu'il est configuré pour :
- générer (102 ; 202) une première donnée de sortie (si ) à l'aide d'une primitive,
- transformer (106 ; 206), à l'aide du paramètre de protection (a), au moins l'un des éléments de l'ensemble constitué de la clé privée (d) et d'un paramètre intermédiaire obtenu à partir de la première donnée de sortie (si ), pour fournir respectivement des premier et second opérandes, et
- générer (108, 114 ; 208, 214), à partir d'une opération impliquant les premier et second opérandes, une seconde donnée de sortie (s2).
13. Dispositif à microcircuit (12', 12") selon la revendication 12, configuré pour :
- transformer (106 ; 206) la clé privée (d) à l'aide du paramètre de protection (a), et
- générer (108 ; 208), à partir d'une première opération impliquant le paramètre intermédiaire et la clé privée transformée, une première donnée intermédiaire, générer (114 ; 214), à partir d'une seconde opération impliquant le paramètre intermédiaire et le paramètre de protection (a), une seconde donnée intermédiaire, puis combiner les première et seconde données intermédiaires pour fournir la seconde donnée de sortie (s2).
14. Dispositif à microcircuit (12', 12") selon la revendication 12, configuré pour :
- transformer (106 ; 206) le paramètre intermédiaire obtenu à partir de la première donnée de sortie (si ) à l'aide du paramètre de protection (a), et
- générer (108 ; 208), à partir d'une première opération impliquant le paramètre intermédiaire transformé et la clé privée (d), une première donnée intermédiaire, générer (114 ; 214), à partir d'une seconde opération impliquant le paramètre de protection (a) et la clé privée (d), une seconde donnée intermédiaire, puis combiner les première et seconde données intermédiaires pour fournir la seconde donnée de sortie (s2).
15. Dispositif à microcircuit (12', 12") selon l'une quelconque des revendications 12 à 14, dans lequel le paramètre intermédiaire est la première donnée de sortie (si ).
16. Dispositif à microcircuit (12', 12") selon la revendication 15, dans lequel la primitive est une exponentiation modulaire pour la réalisation d'un algorithme de cryptographie à schéma de signature de type DSA.
17. Dispositif à microcircuit (12', 12") selon la revendication 15, dans lequel la primitive est une multiplication scalaire pour la réalisation d'un algorithme de cryptographie à schéma de signature de type ECDSA.
18. Dispositif à microcircuit (12', 12") selon l'une quelconque des revendications 12 à 17, dans lequel le microprocesseur (18) met en œuvre un algorithme de cryptographie asymétrique à schéma de signature du type consistant à appliquer l'heuristique de Fiat-Shamir à un protocole d'identification à divulgation nulle de connaissance.
19. Dispositif à microcircuit (12") selon l'une quelconque des revendications 12 à 18, dans lequel le générateur de données (20") est configuré pour générer (104 ; 204) le paramètre de protection (a) en :
- définissant une fonction (20"a) génératrice, par applications successives à au moins un paramètre secret (S) prédéterminé et stocké en mémoire (16), d'une séquence de valeurs ((An)) déterminable uniquement à partir de ce paramètre secret (S) et de cette fonction (20"a), et
- générant le paramètre de protection (a) de façon reproductible à partir d'au moins une valeur de cette séquence.
20. Dispositif à microcircuit (12") selon la revendication 19, dans lequel le générateur de données (20") est configuré pour :
- définir une pluralité de fonctions, chaque fonction étant génératrice, par applications successives à au moins un paramètre secret (S) correspondant prédéterminé et stocké en mémoire (16), d'une séquence de valeurs ((A'n), (A"n)) correspondante déterminable uniquement à partir du paramètre secret (S) correspondant et de la fonction correspondante,
- combiner la pluralité de séquences de valeurs ((A1J, (A"n)) générées à l'aide d'une relation prédéfinie pour générer une nouvelle séquence de valeurs ((An)),
- générer le paramètre de protection (a) de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence ((An)).
21. Dispositif à microcircuit (12") selon la revendication 19, dans lequel le générateur de données (20") est configuré pour :
- définir une fonction génératrice, par applications successives à au moins un paramètre secret (S) prédéterminé et stocké en mémoire (16), d'une séquence de valeurs ((A1J) déterminable uniquement à partir du paramètre secret (S) et de la fonction,
- combiner la séquence de valeurs ((A'n)) générées avec des paramètres publics de l'algorithme de cryptographie pour générer une nouvelle séquence de valeurs ((An)),
- générer le paramètre de protection (a) de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence ((An)).
22. Dispositif à microcircuit (12") selon l'une quelconque des revendications 19 à 21 , configuré pour, après réalisation de la transformation (106 ; 206), régénérer (110 ; 210) le paramètre de protection (a) pour l'utiliser lors de l'étape (114 ; 214) de génération de la seconde donnée de sortie (s2).
23. Dispositif portable, notamment carte à puce (30), comprenant un dispositif à microcircuit (12', 12") selon l'une quelconque des revendications 12 à 22.
PCT/FR2009/000072 2008-01-23 2009-01-23 Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature WO2009109715A2 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CA2712180A CA2712180A1 (fr) 2008-01-23 2009-01-23 Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature
CN2009801023050A CN101911009B (zh) 2008-01-23 2009-01-23 用于以签名方案进行非对称加密的对策方法和设备
JP2010543544A JP2011510579A (ja) 2008-01-23 2009-01-23 署名ダイアグラムを用いた非対称暗号方式のための対策方法およびデバイス
EP09718480A EP2248008A2 (fr) 2008-01-23 2009-01-23 Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature
US12/840,407 US20110170685A1 (en) 2008-01-23 2010-07-21 Countermeasure method and devices for asymmetric encryption with signature scheme

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0800345A FR2926652B1 (fr) 2008-01-23 2008-01-23 Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature
FR0800345 2008-01-23

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/840,407 Continuation US20110170685A1 (en) 2008-01-23 2010-07-21 Countermeasure method and devices for asymmetric encryption with signature scheme

Publications (2)

Publication Number Publication Date
WO2009109715A2 true WO2009109715A2 (fr) 2009-09-11
WO2009109715A3 WO2009109715A3 (fr) 2010-01-14

Family

ID=39720608

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2009/000072 WO2009109715A2 (fr) 2008-01-23 2009-01-23 Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature

Country Status (8)

Country Link
US (1) US20110170685A1 (fr)
EP (1) EP2248008A2 (fr)
JP (1) JP2011510579A (fr)
KR (1) KR20100117589A (fr)
CN (1) CN101911009B (fr)
CA (1) CA2712180A1 (fr)
FR (1) FR2926652B1 (fr)
WO (1) WO2009109715A2 (fr)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5328993B2 (ja) * 2010-12-24 2013-10-30 三菱電機株式会社 署名生成装置及び署名生成方法及び記録媒体
FR2980602B1 (fr) * 2011-09-28 2015-06-26 Oberthur Technologies Procede de communication avec une entite electronique portable
US8886924B1 (en) * 2011-11-15 2014-11-11 The Boeing Company System and method for transmitting an alert
CN105739946A (zh) * 2014-12-08 2016-07-06 展讯通信(上海)有限公司 随机数生成方法及装置
EP3438832B1 (fr) * 2017-08-03 2020-10-07 Siemens Aktiengesellschaft Procédé pour exécuter un programme dans un ordinateur
CN107317671B (zh) * 2017-08-22 2019-12-24 兆讯恒达微电子技术(北京)有限公司 防御旁路攻击的crc运算电路装置和方法
CN109768988B (zh) * 2019-02-26 2021-11-26 安捷光通科技成都有限公司 去中心化物联网安全认证***、设备注册和身份认证方法
FR3095709B1 (fr) * 2019-05-03 2021-09-17 Commissariat Energie Atomique Procédé et système de masquage pour la cryptographie
US12021985B2 (en) 2022-06-03 2024-06-25 Nxp B.V. Masked decomposition of polynomials for lattice-based cryptography

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1291763A1 (fr) * 2001-09-06 2003-03-12 STMicroelectronics S.A. Procédé de brouillage d'un calcul à quantité secrète

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991415A (en) * 1997-05-12 1999-11-23 Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science Method and apparatus for protecting public key schemes from timing and fault attacks
US6144740A (en) * 1998-05-20 2000-11-07 Network Security Technology Co. Method for designing public key cryptosystems against fault-based attacks with an implementation
US6873706B1 (en) * 1999-09-29 2005-03-29 Hitachi, Ltd. Processing apparatus, program, or system of secret information
JP4086503B2 (ja) * 2002-01-15 2008-05-14 富士通株式会社 暗号演算装置及び方法並びにプログラム
AU2003304629A1 (en) * 2003-07-22 2005-02-04 Fujitsu Limited Tamper-resistant encryption using individual key
JP2008512060A (ja) * 2004-08-27 2008-04-17 株式会社エヌ・ティ・ティ・ドコモ 仮署名スキーム
KR100891323B1 (ko) * 2005-05-11 2009-03-31 삼성전자주식회사 이진 필드 ecc에서 랜덤 포인트 표현을 이용하여 파워해독의 복잡도를 증가시키기 위한 암호화 방법 및 장치
US7404089B1 (en) * 2005-06-03 2008-07-22 Pitney Bowes Inc. Method and system for protecting against side channel attacks when performing cryptographic operations
DE602005020702D1 (de) * 2005-10-18 2010-05-27 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen elliptischer kurven über primkörpern für nebenkanal-attacken-beständige kryptosysteme
EP1840732A1 (fr) * 2006-03-31 2007-10-03 Axalto SA Protection contre les attaques latérales de la chaîne
US20080104402A1 (en) * 2006-09-28 2008-05-01 Shay Gueron Countermeasure against fault-based attack on RSA signature verification
US8139763B2 (en) * 2007-10-10 2012-03-20 Spansion Llc Randomized RSA-based cryptographic exponentiation resistant to side channel and fault attacks
US8091139B2 (en) * 2007-11-01 2012-01-03 Discretix Technologies Ltd. System and method for masking arbitrary Boolean functions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1291763A1 (fr) * 2001-09-06 2003-03-12 STMicroelectronics S.A. Procédé de brouillage d'un calcul à quantité secrète

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CORON J-S: "RESISTANCE AGAINST DIFFERENTIAL POWER ANALYSIS FOR ELLIPTIC CURVE CRYPTOSYSTEMS" CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. INTERNATIONALWORKSHOP, XX, XX, 1 août 1999 (1999-08-01), pages 292-302, XP000952243 *
D. NACCACHE ET AL.: "Experimenting with Faults, Lattice and the DSA" PKC '05, LECTURE NOTES IN COMPUTER SCIENCE, vol. 3386, 2005, pages 16-28, XP002495194 Berlin, Germany, ISBN 978-3-540-24454-7 cité dans la demande *

Also Published As

Publication number Publication date
CN101911009B (zh) 2012-10-10
FR2926652A1 (fr) 2009-07-24
FR2926652B1 (fr) 2010-06-18
US20110170685A1 (en) 2011-07-14
WO2009109715A3 (fr) 2010-01-14
CA2712180A1 (fr) 2009-09-11
JP2011510579A (ja) 2011-03-31
EP2248008A2 (fr) 2010-11-10
CN101911009A (zh) 2010-12-08
KR20100117589A (ko) 2010-11-03

Similar Documents

Publication Publication Date Title
EP2215768B1 (fr) Procede et dispositifs de protection d&#39;un microcircuit contre des attaques visant a decouvrir une donnee secrete
WO2009109715A2 (fr) Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature
CA2614120C (fr) Multiplication de points d&#39;une courbe elliptique
EP2248009A2 (fr) Procede et dispositifs de contre-mesure pour cryptographie asymetrique
EP1166494B1 (fr) Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
WO2007074149A1 (fr) Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée
EP2791784A1 (fr) Procede de generation de nombres premiers prouves adapte aux cartes a puce
EP2015171A1 (fr) Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés sans la connaissance de l&#39;exposant public, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée
FR2941798A1 (fr) Appareil pour calculer un resultat d&#39;une multiplication scalaire
WO2007116171A2 (fr) Procede et dispositif pour engendrer une suite pseudo-aleatoire
WO2006103149A1 (fr) Procede et dispositif cryptographique permettant de proteger les logiques de cles publiques contre les attaques par faute
EP1904921A1 (fr) Procede cryptographique pour la mise en oeuvre securisee d&#39;une exponentiation et composant associe
FR2949886A1 (fr) Procede de traitement cryptographique de donnees
EP1829279A2 (fr) Procede et dispositif d&#39;execution d&#39;un calcul cryptographique
FR3000246A1 (fr) Generateur de sequences chaotiques
FR2818846A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie
WO1998051038A1 (fr) Generateur pseudo-aleatoire base sur une fonction de hachage pour systemes cryptographiques necessitant le tirage d&#39;aleas
EP4239944B1 (fr) Procédé de signature cryptographique d&#39;une donnée, dispositif électronique et programme d&#39;ordinateur associés
EP1989820A1 (fr) Dispositif et procede de hachage cryptographique
FR2864390A1 (fr) Procede cryptographique d&#39;exponentiation modulaire protege contre les attaques de type dpa.
Zeitoun Algebraic methods for security analysis of cryptographic algorithms implementations
FR2984548A1 (fr) Procede de generation de nombres premiers prouves adapte aux cartes a puce
FR2984547A1 (fr) Procede de generation de nombres premiers prouves adapte aux cartes a puce
WO2006067157A2 (fr) Procede de generation rapide d&#39;un nombre aleatoire non divisible par un ensemble predetermine de nombres premiers
FR2821945A1 (fr) Procede de protection contre les attaques par mesure de courant ou de rayonnement electromagnetique

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200980102305.0

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09718480

Country of ref document: EP

Kind code of ref document: A2

WWE Wipo information: entry into national phase

Ref document number: 2712180

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 2010543544

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20107017062

Country of ref document: KR

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2009718480

Country of ref document: EP