PROCEDE ET DISPOSITIFS DE CONTRE-MESURE POUR CRYPTOGRAPHIE ASYMETRIQUE A SCHEMA DE SIGNATURE COUNTER-MEASUREMENT METHOD AND DEVICES FOR ASYMMETRIC CRYPTOGRAPHY WITH SIGNATURE SCHEMA
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é.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.
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.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 "). In other words, for an asymmetric cryptographic primitive P, involving input data x, it is simple to compute y = F (x), but knowing y and the primitive F, it is "difficult" to find the value of x. The term "difficult" here means "computationally impossible to solve". In finite fields, F is a modular exponentiation, in elliptic curves, F is a scalar multiplication on the points of the defined elliptic curve.
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.Signature schemes are a classic use of asymmetric cryptography. As illustrated in FIG. 1, 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.
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.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. In particular, 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.
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.Among the known auxiliary channel attacks, 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.
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.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.
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.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.
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,In order to combat these attacks which are varied by nature, many solutions very different from each other have been made. 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,
- générer un paramètre de protection a.- generate a protection parameter 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é.These algorithms generally provide for modifying the execution of the primitive using the generated protection parameter.
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.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. Thus, 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. On the other hand, the masking does not disturb the algorithm itself, which therefore provides the same result with or without masking.
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.For example, when running the asymmetric cryptographic algorithm known as RSA (named after its authors Rivest, Shamir, and Adleman), a primitive consisting of a modular exponentiation is executed. 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.
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.Thus, 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.
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 à :On the other hand, another known signature scheme of applying the Fiat-Shamir heuristic to a zero-disclosure identification protocol can not be protected in this way. Such a signature scheme is known: it will be referred for example to its definition in the thesis presented and publicly supported by Benoît Chevallier-Marnes on November 16, 2006 at the Ecole Normale Supérieure, Paris, entitled "Cryptography with public key: constructions and security proofs", more particularly in chapters 4.1.2 and 4.2.1, pages 27-30. Likewise, the Schnorr identification protocol and the El Gamal and DSA signatures (of the "Digital Signature Algorithm") must be protected in another way. For example, the DSA algorithm, which uses this other signature scheme, comprises the steps of:
- 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,generating a first output datum using a primitive based on the discrete logarithm problem and applied using a random variable different from the private key,
- 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, etgenerating, from an operation involving the first output datum and the private key, a second output datum, and
- retourner les première et seconde données de sortie en tant que signature.- return the first and second output data as a 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.A method of countermeasure for this algorithm is described in the article by D. Naccache et al, entitled "Experimenting with faults, lattices and the DSA" published in Proceedings of the 8th International Workshop on the Practice 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.In this document, 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.
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.Protecting the execution of the primitive by masking the hazard is not effective against the attacks by injection of fault (s) in this type of algorithm since it is not necessary to know the value of this hazard to find the private key. The article therefore provides for more complex methods, for example combining different techniques simultaneously.
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 à :It may thus be desired to provide an asymmetric attack-resistant cryptographic method of the aforementioned type that is simple to implement, in particular for signature-scheme algorithms applying the Fiat-Shamir heuristics to an identification protocol to zero disclosure of knowledge. 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:
- générer une première donnée de sortie à l'aide d'une primitive,generate a first output data using a primitive,
- générer un paramètre de protection, caractérisé en ce qu'il comporte en outre les étapes consistant à :generating a protection parameter, characterized in that it further comprises the steps of:
- 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, ettransforming, using the protection parameter, at least one of the elements of the set consisting of the private key and an intermediate parameter obtained from the first output data, to respectively provide first and second operands, and
- générer, à partir d'une opération impliquant les premier et second opérandes, une seconde donnée de sortie.- Generate, from an operation involving the first and second operands, a second output data.
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.Thus 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.
Selon un mode de réalisation, le procédé de contre-mesure comporte les étapes consistant à :According to one embodiment, the countermeasure method comprises the steps of:
- transformer la clé privée à l'aide du paramètre de protection, et- transform the private key using the protection parameter, and
- 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.generating, from a first operation involving the intermediate parameter and the transformed private key, a first intermediate data item, generating, from a second operation involving the intermediate parameter and the protection parameter, a second intermediate data item, and combining the first and second intermediate data to provide the second output data.
Selon un mode de réalisation, le procédé de contre-mesure comporte les étapes consistant à :According to one embodiment, the countermeasure method comprises the steps of:
- transformer le paramètre intermédiaire obtenu à partir de la première donnée de sortie à l'aide du paramètre de protection, ettransforming the intermediate parameter obtained from the first output datum using the protection parameter, and
- 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.generating, from a first operation involving the transformed intermediate parameter and the private key, a first intermediate data item, generating, from a second operation involving the protection parameter and the private key, a second intermediate data item, and combining the first and second intermediate data to provide the second output data.
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.According to one embodiment, the intermediate parameter is the first output data item. According to one embodiment, the primitive is a modular exponentiation for the realization of a signature scheme cryptography algorithm of the DSA type.
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.According to one embodiment, the primitive is a scalar multiplication for the realization of an ECDSA type signature scheme cryptography algorithm.
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.According to one embodiment, the countermeasure method implements a signature-type asymmetric cryptographic algorithm consisting in applying the Fiat-Shamir heuristics to a zero-knowledge identification identification protocol.
Selon un mode de réalisation, la génération du paramètre de protection comporte les étapes consistant à :According to one embodiment, the generation of the protection parameter comprises the steps of:
- 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,defining a generating function, by successive applications to at least one predetermined secret parameter stored in memory, of a sequence of values that can be determined solely from this secret parameter and from this function,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette séquence.- Generate the protection parameter reproducibly from at least one value of this sequence.
Selon un mode de réalisation, le procédé de contre-mesure comporte les étapes consistant à :According to one embodiment, the countermeasure method comprises the steps of:
- 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,defining a plurality of functions, 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,
- 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,combining the plurality of sequences of values generated using a predefined relationship to generate a new sequence of values,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence.- Generate the protection parameter reproducibly from at least one value of this new sequence.
Selon un mode de réalisation, le procédé de contre-mesure comporte les étapes consistant à :According to one embodiment, the countermeasure method comprises the steps of:
- 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,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, combining the sequence of generated values with public parameters of the cryptographic algorithm to generate a new sequence of values,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence.- Generate the protection parameter reproducibly from at least one value of this new sequence.
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.According to one embodiment, 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.
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 :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:
- générer une première donnée de sortie à l'aide d'une primitive,generate a first output data using a 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, ettransforming, using the protection parameter, at least one of the elements of the set consisting of the private key and an intermediate parameter obtained from the first output data, to respectively provide first and second operands, and
- générer, à partir d'une opération impliquant les premier et second opérandes, une seconde donnée de sortie.- Generate, from an operation involving the first and second operands, a second output data.
Selon un mode de réalisation, le dispositif à microcircuit est configuré pour :According to one embodiment, the microcircuit device is configured to:
- transformer la clé privée à l'aide du paramètre de protection, et- transform the private key using the protection parameter, and
- 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.generating, from a first operation involving the intermediate parameter and the transformed private key, a first intermediate data item, generating, from a second operation involving the intermediate parameter and the protection parameter, a second intermediate data item, and combining the first and second intermediate data to provide the second output data.
Selon un mode de réalisation, le dispositif à microcircuit est configuré pour :According to one embodiment, the microcircuit device is configured to:
- transformer le paramètre intermédiaire obtenu à partir de la première donnée de sortie à l'aide du paramètre de protection, ettransforming the intermediate parameter obtained from the first output datum using the protection parameter, and
- 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.generating, from a first operation involving the transformed intermediate parameter and the private key, a first intermediate data item, generating, from a second operation involving the protection parameter and the private key, a second intermediate data, and then combining the first and second intermediate data to provide the second output data.
Selon un mode de réalisation, le paramètre intermédiaire est la première donnée de sortie.According to one embodiment, the intermediate parameter is the first output data item.
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.According to one embodiment, the primitive is a modular exponentiation for the realization of a signature scheme cryptography algorithm of the DSA type.
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.According to one embodiment, the primitive is a scalar multiplication for the realization of an ECDSA type signature scheme cryptography algorithm.
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.According to one embodiment, the microprocessor implements a signature-type asymmetric cryptographic algorithm consisting in applying the Fiat-Shamir heuristics to a zero-knowledge identification identification protocol.
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 :According to one embodiment, the data generator is configured to generate the protection parameter by:
- 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, etdefining 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 this secret parameter and this function, and
- générant le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette séquence.- Generating the protection parameter reproducibly from at least one value of this sequence.
Selon un mode de réalisation, le générateur de données est configuré pour :According to one embodiment, the data generator is configured to:
- 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,defining a plurality of functions, 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,
- 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,combining the plurality of sequences of values generated using a predefined relationship to generate a new sequence of values,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence.- Generate the protection parameter reproducibly from at least one value of this new sequence.
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,According to one embodiment, 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,
- 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,combining the sequence of generated values with public parameters of the cryptographic algorithm to generate a new sequence of values,
- générer le paramètre de protection de façon reproductible à partir d'au moins une valeur de cette nouvelle séquence.- Generate the protection parameter reproducibly from at least one value of this new sequence.
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.According to one embodiment, 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.
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.Another embodiment of the invention consists in providing a portable device, in particular a smart card, comprising a microcircuit device as described above.
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 :Exemplary embodiments of the present invention will be set out in more detail in the following description, given without implied limitation in relation to the appended figures among which:
- la figure 1 précédemment décrite représente de façon schématique la structure d'un dispositif à microcircuit, de type classique,FIG. 1 previously described schematically represents the structure of a microcircuit device, of conventional type,
- 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,FIG. 2 schematically represents the structure of a microcircuit device, according to a first embodiment of the invention,
- la figure 3 représente de façon schématique une carte à puce comprenant le dispositif de la figure 2,FIG. 3 schematically represents a smart card comprising the device of FIG. 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,FIG. 4 illustrates the successive steps of a first countermeasure method implemented by the device of FIG. 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,FIG. 5 illustrates the successive steps of a second countermeasure method implemented by the device of FIG. 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, etFIG. 6 schematically represents the structure of a microcircuit device, according to a second embodiment of the invention, and
- la figure 7 illustre les étapes successives d'un procédé de contre- mesure mis en œuvre par le dispositif de la figure 6.FIG. 7 illustrates the successive steps of a countermeasure method implemented by the device of FIG. 6.
Premier mode de réalisation de l'invention.First embodiment of the 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.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.
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.Furthermore, 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.
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.It will be noted that, although the algorithmic application of cryptography 10 and the countermeasure section 22 'have been represented as distinct, these can in fact be intimately imbricated in the same software or hardware implementation of an algorithm of asymmetric cryptography including a countermeasure.
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 :In the microcircuit device 12 ', 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:
- une section 10a d'application d'une primitive pour générer une première donnée de sortie si , eta section 10a for applying a primitive to generate a first output data if, and
- 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.a section 10b for executing an operation involving at least two operands, one obtained from the first output datum and possibly transformed by the section 22 ', the other being the private key possibly transformed by the section 22 ', to generate a second output data s2.
Pour une application de signature utilisant ce schéma, les première et seconde données de sortie constituent la signature (si , s2).For a signature application using this scheme, the first and second output data constitute the 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.Unlike the device 12, in this device 12 '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. In the case of a DSA signature, the intermediate parameter is the first output data itself. Different methods of countermeasure according to the invention can be implemented by the device of FIG. 2. A number of them, which are not exhaustive, will be presented with reference to FIGS. 4 and 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.A first method of this type, performing a DSA-type signature on a message M, is illustrated in FIG. 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 :During a first step 100 of generating a pair of keys (a public key and a private key), one randomly determines:
- un nombre premier p de L bits, avec 512 < L < 1024, et L divisible par 64,a prime number p of L bits, with 512 <L <1024, and L divisible by 64,
- un nombre premier q de 160 bits, choisi de telle façon que p - 1 = qz, avec z un entier,a prime number q of 160 bits, chosen such that p - 1 = qz, with z an integer,
- un nombre h, avec 1 < h < p - 1 , choisi de telle façon que g = h2 moda number h, with 1 <h <p - 1, chosen in such a way that g = h 2 mod
P > 1.P> 1.
- un nombre d de k bits, tel que 0 < d < q.a number of k bits, such that 0 <d <q.
A l'aide de ces nombres on calcule e = gd mod p.Using these numbers we calculate e = g d mod p.
La clé publique est (p, q, g, e). La clé privée est d.The public key is (p, q, g, e). The private key is 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.Note that a version of the DSA signature allowing larger key sizes is provided by the NIST (for "National Institute of Standards and Technology"), some documents on the subject evoking a size of 3072 bits for 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.In a second step 102 for applying a primitive, a random number u is generated, chosen such that 0 <u <q. Section 10a then calculates a first output data if using the following modular exponentiation: if = (mod g u mod) 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.In a step 104, 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. In a variant, 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. In a variant also, the generator 20 generates a parameter a 'which is combined with other parameters of the DSA 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 use later, especially optionally as a verification parameter for the parameter a 'when combined with other parameters of the DSA algorithm to form 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.In a subsequent masking step 106, the countermeasure section 22 'transforms the private key d as follows: 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 :During a step 108 of calculating an operation involving the first output datum if and the private key transformed by, a linear congruence of the following form is realized:
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.A = u "1 (H (M) + of .si) mod q, where H (M) is the result of a cryptographic hash with the known function SHA-1 on 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 , ...).Next, 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. During this step 110, the parameter a is again calculated, using the COMB function and the public and / or stored values used by this function (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.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.
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 :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:
B = (u'1.a.s1 ) mod q.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.We finally deduce a second output data s2, given by the 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.In a last step 116, the cryptographic application 10 returns the value (si, s2) as the signature DSA of the message M.
En variante, le premier procédé décrit précédemment peut être modifié comme suit.Alternatively, the first method described above can be modified as follows.
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.In the masking step 106, the countermeasure section 22 'transforms the first output data if: if' = 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 :In step 108, calculating the linear congruence operation involves the first transformed output data if 'and the private key d:
A = u-1(H(M) + d.s1 ') mod q.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.In step 114, the following calculation is performed: 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.We deduce the second output data s2, by the relation s2 = (A - B) mod q.
En variante également, le premier procédé décrit précédemment peut être modifié comme suit.Alternatively also, the first method described above can be modified as follows.
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' :In step 108, calculating the linear congruence operation involves the first output data if and the private key transformed from:
A = (H(M) + d'.s1 ) mod q.A = (H (M) + of .s1) mod q.
Lors de l'étape 114, on effectue le calcul suivant :In step 114, the following calculation is performed:
B = (A - a.s1 ) mod q.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.We deduce the second output data s2, by the relation s2 = (u " 1 .B) mod q.
En variante également, le premier procédé décrit précédemment peut être modifié comme suit.Alternatively also, the first method described above can be modified as follows.
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.In the masking step 106, the countermeasure section 22 'transforms the first output data if: if' = 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 :In step 108, calculating the linear congruence operation involves the first transformed output data if 'and the private key d:
A = (H(M) + d.s1 ') mod q.A = (H (M) + d.s1 ') mod q.
Lors de l'étape 114, on effectue le calcul suivant :In step 114, the following calculation is performed:
B = (A - d.a) mod q.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.We deduce the second output data s2, by the relation s2 = (u " 1 .B) mod q.
En variante également, le premier procédé décrit précédemment peut être modifié comme suit.Alternatively also, the first method described above can be modified as follows.
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.In 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.
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.During the masking step 106, the countermeasure section 22 'transforms the private key d as follows: 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' :In step 108, the calculation of the linear congruence operation involves the first transformed output datum if and the transformed private key of:
A = (H(M) + d'.s1 ) mod q.A = (H (M) + of .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.In step 114, the following calculation is performed, giving directly the value of the second output data item: S2 = (u '1 .A) mod q.
On peut également reproduire les contremesures précédentes en prenant a = -a.We can also reproduce the previous countermeasures by taking 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.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.
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.Let 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.
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.In a first step 200 of generating a key pair (a public key and a private key), a random number of k bits, such as 0 <d <q, are randomly determined.
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.Using this number we calculate Q = d.G mod p, where the operator ". "Denotes the scalar product on the elliptic curve to which G belongs.
La clé publique est Q. La clé privée est d.The public key is Q. The private key is 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.During a second step 202 of applying a primitive, a random number u is generated, chosen such that 0 <u <q. Section 10a then calculates a first output data if using the following scalar product: R = u. G = (x R , y R ). We assign indeed to if the value modulo q of the abscissa x R of R: if = x R mod q. If this value is zero, step 202 is repeated, generating another hazard.
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.During a step 204, 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. In a variant, 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. In a variant also, 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.
De même, les variantes proposées au premier procédé décrit précédemment sont également applicables à ce deuxième procédé.Similarly, the variants proposed in the first method described above are also applicable to this second method.
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.Other methods according to the invention, carrying out signatures other than those mentioned above (DSA and ECDSA) can be realized. These methods differ from those mentioned above, possibly by the primitive which they implement in step 102, 202 to obtain the first output data, and by the operation of steps 108, 114 or 208, 214 making it possible to obtain the second output data.
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.For example, another method according to the invention can realize a Schnorr type signature. In this case, the step of calculating the first output data is identical to step 102. On the other hand, a hash function G is applied to the first output data if, to obtain an intermediate parameter c = G ( M, if). It is this intermediate parameter c which is provided by the application 10 to the countermeasure section 22 'instead of if for possible transformation. On the other hand, the linear congruence applied to steps 108, 114 is slightly modified. Indeed, whereas the linear congruence of the DSA signature is, conventionally and before adaptation according to the invention, s2 = u ~ 1 (H (M) + d.s1) mod q, the linear congruence of the Schnorr signature is, conventionally and before adaptation according to the invention, s2 = (u + dc) mod q. It is therefore necessary to replace d by d 'or c by c' (for example c '= c + a) in this operation to carry out a Schnorr signature using a method according to the 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.Other methods in accordance with the invention can still be designed by a similar adaptation of the classical signatures such as those described in the thesis presented and publicly supported by Benoît Chevallier-Marnes on November 16, 2006 at the Ecole Normale Supérieure, Paris, entitled "Public key cryptography: constructions and proof of security", more particularly in chapter 4.4.
Second mode de réalisation de l'invention.Second embodiment of the 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.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 However, it will be noted that, although the algorithmic application of cryptography 10 and the countermeasure section 22 'have been represented as distinct, they can in fact be closely integrated into one and the same implementation. a cryptographic algorithm including a countermeasure.
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 :As in the microcircuit device 12 ', 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:
- une section 10a d'application d'une primitive pour générer une première donnée de sortie si , eta section 10a for applying a primitive to generate a first output data if, and
- 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.a section 10b for executing an operation involving at least two operands, one obtained from the first output datum and possibly transformed, the other being the private key that may be transformed, to generate a second output datum 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.In addition, 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 In the case of a DSA signature, the intermediate parameter is the first output data itself.
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 :Unlike the device 12 ', in this device 12 "the pseudo-random data generator 20 of conventional type is replaced by a data generator 20" which comprises:
- 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, eta 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
- 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.a section 20 "b for providing at least one protection parameter reproducibly has a value of this sequence.
La section 20"a est en fait une implémentation logicielle ou matérielle de la fonction F.Section 20 "is actually a software or hardware implementation of the F function.
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.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 '. In this second embodiment, 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.
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).Repeated application of the function F to S generates a sequence (A n ) whose elements are at the origin of the protection parameter (s) provided by the generator. In a general manner, the generator can supply as many parameters a from values of the sequence (A n ) as necessary according to the application of the countermeasure implemented in the card 30. This sequence (A n ) can not be reproduced only with the knowledge of the generating function F and the initial deterministic elements that it uses (the parameter 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.Each protection parameter may be directly derived from an element A n of the sequence (A n ): in other words, a = A n . Alternatively, the element A n can be processed before providing the parameter a. For example, a may be the result of a computation a = A n XOR k n , where k n is a secret constant of 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.Of course, if the sequence (A n ) is cyclic and / or operates in a finite set of elements, the space of the values A n generated will have to be large enough to resist the attacks. In fact, the greater the space considered, the better the robustness of the countermeasure.
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.We will first present several nonlimiting examples of 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.
Exemples de fonctions génératrices de séquences de valeurs pour la fourniture de paramètres de protectionExamples of value sequence generating functions for providing protection parameters
1 ) Fonctions à base de suites arithmético-géométriques1) Functions based on arithmetic-geometric sequences
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 :If we define the sequence of values (A n ) using the integer integer F function with the following relation:
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).A n + 1 = F (A n ) = qA n + r, where q and r are secret parameters constituting, with the initial element A 0 of the sequence, the secret parameters S previously mentioned, it is possible to provide protection parameters resulting from an arithmetic-geometric sequence. The protection parameters are for example the elements of the sequence (A n ).
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.If r = 0, it is a geometrical sequence whose term A 1 , used at a precise stage of cryptography, can be found using the secret parameters q and A 0 in the following way: = 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.If q = 1, it is an arithmetic sequence which we can find a term A 1 using the secret parameters r and A 0 as follows: A, = ri + A 0 .
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 :If r is non-zero and q is different from 1, it is an arithmetic-geometric sequence whose term A j can be found using the secret parameters q, r and A 0 in the following way:
A, = ql.A0 + r.(ql-1 )/(q-1 ).A, = q L .A 0 + r (q l -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 :We can also reduce the space of the elements of the sequence (A n ) by an integer m by means of the following relation:
An+1 = F(An) modulo m = (q.An + r) modulo m.A n + 1 = F (A n ) modulo m = (qA n + 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}.Note that if m is a prime number, this sequence takes the form of the group of inverse affine transformations on the finite field 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.We can also choose m as a power of 2, to generate sequences of elements with a constant number of bits. For example, if one wants to generate sequences of parameters A, with k bits, one chooses m = 2 k .
De préférence, m fait partie des paramètres secrets à conserver dans la mémoire sécurisée du dispositif.Preferably, m is one of the secret parameters to be kept in the secure memory of the device.
2) Fonctions définissant un groupe multiplicatif cyclique2) Functions defining a cyclic multiplicative group
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 :Let a cyclic group GC with m elements with a value a as generating element and the multiplication as law of internal composition:
GC = {a, a2 am}. On peut définir la séquence de valeurs (An) de la façon suivante :GC = {a, a 2 a m }. The sequence of values (A n ) can be defined as follows:
- 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,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,
- on passe de l'élément A, à l'élément A1+1 en appliquant k' fois la loi de composition interne du groupe GC.from element A to element A 1 + 1 , applying k 'times the law of internal composition of the group 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).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. In addition, as above, the protection parameters generated are for example the elements of the sequence (A n ).
3) Fonctions définissant un groupe de Frobenius3) Functions Defining a Frobenius Group
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.Let GF (q) be 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.
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.In this context, the affine transformations that can be used take the form of functions y = f (x) = bx + c, where b ≠ 0 and where the operations take place in the field GF (q). It is therefore possible to define a generating function of the sequence (A n ) applying to predetermined secret parameters q, b, c and A 0 . By choosing for example q = 2 16 + 1 and, in hexadecimal notation, b = 0x4cd3, c = 0x76bb, A 0 = 0xef34, a sequence beginning with the terms A 1 = Oxcδcf, A 2 = Oxδbaf, A 3 = 0x620d, A 4 = 0x0605, A 5 = 0xe70c, A 6 = 0x3049, A 7 = 0xe069, A 8 = 0x55ee, etc.
4) Fonctions issues d'un registre à décalage avec rétroaction linéaire (registre de type LFSR)4) Functions from a shift register with linear feedback (LFSR type register)
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 :It is for this type of function to choose a secret parameter A 0 , for example 16 bits, and a shift register LFSR, for example with a corresponding output of 16 bits. If the size of the register LFSR is m, then a term A t + m of the sequence (A n ) is determined by the m terms which precede it with the aid of a linear equation of the type:
At+m = αm.At + O1n-1-At+1 + ... + O1-A1+^1, où les α, prennent la valeur 0 ou 1.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.
5) Fonctions définissant un calcul de Contrôle de Redondance Cyclique (CRC)5) Functions Defining a Calculation of Cyclic Redundancy Check (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.For this type of function, it is a matter of choosing a secret parameter A 0 , for example 16 bits, and 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). A term A n + 1 of the sequence (A n ) is determined as a function of the previous term A n by the relation A n + 1 = F (A n ), where F performs a calculation of CRC on the basis of the chosen polynomial.
6) Combinaisons de séquences de valeurs6) Combinations of value sequences
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).It is indeed also possible to calculate several sequences of values, each for example according to one of the methods set out below. above, and combine them using a predefined function to generate a new sequence of values to use as protection parameters. The sequence (A n ) is thus generated from two other sequences (A ' n ) and (A " n ), calculating for each index n, A n = 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.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.
7) Combinaisons impliquant une séquence de valeurs et des données publiques7) Combinations involving a sequence of values and public data
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 :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:
An = COMB(A'n, M, e, ...).A n = 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.One advantage of this combination is that the 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.
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'inventionExamples of use of a sequence of values generated according to one of the preceding methods in a method of countermeasure in asymmetric cryptography, according to the second embodiment of the invention
1 ) Principe général du second mode de réalisation1) General Principle of the Second Embodiment
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.In general, whenever an algorithmic countermeasure is used, the generation of hazards introduced by the counter- measurement is recommended, as described in the first embodiment using a pseudo random data generator 20. As mentioned with reference to FIG. 6, 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.
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.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.
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.During a first step INIT carried out by the generator 20 ", 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.
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.During this step, 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.
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.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.
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.During a first execution EXE 1 of the asymmetric cryptographic algorithm with countermeasure, the generator 20 ", more particularly the section 20" a, 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.
Par exemple, pour tout k tel que 1<k<T, ak = Ak.For example, for every k such that 1 <k <T, a k = A k .
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.In a variant, if there are T additional secret values SeC 1 , ... SeC 1 - among the secret parameters S kept in secure memory, the following additional calculation can be performed: for any k such that 1 <k≤T , a k = Sec k XOR A k , where k = Sec k ADD A k , or also k = Sec k SUB A k , so as to transform (or deform or mask) the parameters used.
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.Subsequently, during an i-th EXEi execution of the cryptography algorithm with countermeasure, the generator 20 ", more particularly the section 20" a, 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.
Par exemple, pour tout k tel que 1<k≤T, ak = AT(μ1)+k.For example, for every k such that 1 <k≤T, a k = 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.Alternatively, if one has T additional secret values Sec 1, ... seC 1 -, one can specify the following additional calculation: for all k such that 1 <k≤T, a k = Sec k XOR A T (M) + k , or a k = Sec k ADD AT (i . 1) + k , or also k = Sec k SUB AT (M) + k , so as to transform (or deform or mask) the parameters used.
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.Whatever the method used to generate the value sequence (s) at the origin of the protection parameters, 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.
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.The choice of the method used to generate the sequence of values and the protection parameter (s) is dictated by the intended application.
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.2) Application of the general principle of the second embodiment to the two methods described with reference to Figures 4 and 5. The method used by the first and second methods of FIGS. 4 and 5 to generate the protection parameter a or the parameter a 'during the steps 104 and 204 may be one of those recommended in the second embodiment. It is then not necessary to keep this parameter a 'and the protection parameter has in memory since they can be found at any moment from the sequence of values which is itself determined by the parameter (s) ) secret (s) and function F. This process of regenerating these parameters is even a useful step in protecting the implementation against fault injection attacks (s). Thus, the parameter a 'can be found in steps 110 and 210 without having necessarily been kept in memory during the execution of steps 104 and 204. At these steps 110 and 210, the protection parameter a can also be found. to verify that its integrity, and that of the parameters used to generate it, has been preserved. It is also useful to regenerate a to perform steps 112 and 212 that use this parameter.
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).It is clear that the methods of countermeasure described above allow to design asymmetric cryptographic applications protecting the private key used against attacks by auxiliary channels or by fault injection (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.
Note furthermore that the invention is not limited to the embodiments described and that, although many variants have been presented, others are also conceivable providing in particular other types of private key transformations than those which have been detailed, or other asymmetric cryptographic applications than those discussed.