PROCEDE D'ENCODAGE DE DONNEES SUR UNE CARTE A PUCE PAR DES METHOD OF ENCODING DATA ON A CHIP CARD BY
CODES DE POIDS CONSTANT CONSTANT WEIGHT CODES
DOMAINE DE L'INVENTION FIELD OF THE INVENTION
Le domaine de l'invention est celui de l'encodage de données dans des cartes à puces, pour sécuriser leur utilisation ultérieure, notamment dans des applications de cryptographie. The field of the invention is that of the encoding of data in smart cards, to secure their subsequent use, particularly in cryptography applications.
ETAT DE LA TECHNIQUE STATE OF THE ART
De nombreux composants électroniques, tels que par exemple des cartes à puces, mettent en œuvre des opérations de calcul ou de comparaison sur des données secrètes. Certaines applications de ces opérations sont par exemple des applications bancaires, des applications pour téléphonie mobile, etc. Many electronic components, such as for example smart cards, implement calculation or comparison operations on secret data. Some applications of these operations are for example banking applications, applications for mobile telephony, etc.
Les opérations sur les données secrètes peuvent faire l'objet d'attaques pour déterminer lesdites données secrètes. Operations on the secret data can be attacked to determine said secret data.
Certaines de ces attaques, dites « sides channels » en anglais ou encore attaques sur canaux cachés, consistent à étudier le comportement physique du composant électronique, notamment en termes de fuites électromagnétiques, ou encore en termes de variations de consommation électrique, ou de temps de réponse. Some of these attacks, known as "sides channels" in English or attacks on hidden channels, consist in studying the physical behavior of the electronic component, in particular in terms of electromagnetic leakage, or in terms of variations in electrical consumption, or time of reply.
D'autres attaques, qualifiées d'attaques « par injection de fautes » ont également été développées, qui consistent en la corruption de certaines données utilisées lors d'un calcul mis en œuvre par le composant électronique pour obtenir les données secrètes. Ces attaques comprennent par exemple le bombardement du composant électronique par laser ou par lumière, la génération de champs électromagnétiques parasites, l'injection de pics de tension dans l'alimentation du composant, etc. Other attacks, referred to as "fault injection" attacks, have also been developed, which consist in the corruption of certain data used during a calculation implemented by the electronic component to obtain the secret data. These attacks include, for example, the bombardment of the electronic component by laser or light, the generation of parasitic electromagnetic fields, the injection of voltage peaks into the power supply of the component, etc.
Pour contrer ces types d'attaques, il a été proposé d'ajouter aux données secrètes une valeur aléatoire, décorrélant ainsi les données utilisées de leur valeur d'origine. Cette méthode n'est pourtant pas pleinement efficace car il est possible, à partir de l'observation de plusieurs calculs successifs, de retrouver la donnée secrète d'origine.
Une autre proposition a consisté en l'encodage des données secrètes avec des codes dits « de poids constant », c'est-à-dire des codes associant à chaque donnée un mot de code présentant un poids de Hamming constant prédéterminé. Le poids de Hamming d'une série de bits est le nombre de bits à 1 de la série. To counter these types of attacks, it has been proposed to add to the secret data a random value, thus decorrelating the used data from their original value. This method is however not fully effective because it is possible, from the observation of several successive calculations, to find the original secret data. Another proposal consisted of the encoding of the secret data with so-called "constant weight" codes, that is to say codes associating with each datum a code word having a predetermined constant Hamming weight. The Hamming weight of a series of bits is the number of 1-bit bits in the series.
Grâce à cet encodage, toutes les données utilisées présentent le même poids de Hamming, ce qui permet de rendre également constant la consommation électrique du composant électronique lors de l'utilisation desdites données (la consommation électrique du composant dépend en effet du poids de Hamming des données utilisées). Le composant est donc protégé des attaques par canaux cachés. Thanks to this encoding, all the data used have the same Hamming weight, which also makes it possible to make the power consumption of the electronic component constant while using the data (the electrical consumption of the component depends in fact on the Hamming weight of the data used). The component is protected from hidden channel attacks.
De plus, il est possible de détecter une attaque par injection de faute si une donnée encodée présente un poids de Hamming différent du poids de Hamming prédéterminé. In addition, it is possible to detect a fault injection attack if an encoded data has a Hamming weight different from the predetermined Hamming weight.
Cependant, l'encodage par codes de poids constant ne permet pas actuellement de mettre en œuvre des opérations sur données encodées dans un composant électronique de faible mémoire tel qu'une carte à puce. However, the encoding by constant weight codes does not currently make it possible to implement data operations encoded in a low-memory electronic component such as a smart card.
Par exemple, on connaît un encodage appelé Dual Rail, qui consiste à encoder un 0 par la combinaison 1 -0 et un 1 par la combinaison 0-1 . Ce procédé double donc la taille de la séquence de bits encodée par rapport à la donnée initiale, et la mise en œuvre d'opérations sur ces données encodées n'est pas possible sur une carte à puce car elle requiert trop de mémoire. For example, we know an encoding called Dual Rail, which consists in encoding a 0 by the combination 1 -0 and a 1 by the combination 0-1. This method therefore doubles the size of the encoded bit sequence with respect to the initial data, and the implementation of operations on these encoded data is not possible on a smart card because it requires too much memory.
De même, on connaît du brevet FR2855286 un procédé de transmission de données encodées à l'aide de codes de poids constant, mais ce procédé ne permet pas la mise en œuvre d'opérations sur les données encodées, car ces opérations nécessiteraient encore trop de mémoire que la mémoire disponible dans une carte à puce. Similarly, patent FR2855286 discloses a method of transmitting data encoded using constant weight codes, but this method does not allow the implementation of operations on the encoded data, because these operations would still require too much data. memory as the memory available in a smart card.
PRESENTATION DE L'INVENTION PRESENTATION OF THE INVENTION
L'invention a pour but de remédier aux inconvénients de l'art antérieur mentionnés ci-avant, en proposant un procédé d'encodage de données limitant la taille des mots de code obtenus afin de permettre la mise en œuvre ultérieure de calculs à partir desdits mots de code sur un composant électronique de type carte à puce.
L'invention a également pour but de fournir un procédé d'encodage de données permettant de résister à des attaques de types à canaux cachés ou de détecter des attaques par injection de fautes. A cet égard, l'invention a pour objet un procédé de traitement de données comprenant l'encodage d'une pluralité de données de n bits en des mots de code présentant un poids de Hamming constant prédéfini, The object of the invention is to overcome the drawbacks of the prior art mentioned above, by proposing a data encoding method limiting the size of the obtained code words in order to allow the subsequent implementation of calculations based on said data. codewords on an electronic component of the smart card type. The invention also aims to provide a data encoding method for resisting concealed channel type attacks or for detecting fault injection attacks. In this regard, the subject of the invention is a data processing method comprising the encoding of a plurality of n-bit data into code words having a predefined constant Hamming weight,
le procédé étant caractérisé en ce qu'il comprend en outre la mise en œuvre d'opérations de chiffrement ou d'opérations arithmétiques sur le ou les mots de code obtenus, et en ce que l'encodage de chaque donnée comprend : the method being characterized in that it further comprises the implementation of encryption operations or arithmetic operations on the obtained code word or words, and in that the encoding of each data item comprises:
la décomposition de la donnée en une pluralité de m séquences de bits à coder, m étant strictement inférieur à n, decomposing the data into a plurality of m sequences of bits to be encoded, m being strictly less than n,
le codage de chaque séquence de bits en un mot de code partiel présentant chacun un poids de Hamming prédéfini, de sorte que la somme des poids de Hamming des mots de code partiels soit égale au poids de Hamming du mot de code, et encoding each bit sequence into a partial codeword each having a predefined Hamming weight so that the sum of the Hamming weights of the partial codewords is equal to the Hamming weight of the code word, and
la concaténation des mots de code partiels pour obtenir le mot de code correspondant à la donnée. Avantageusement, mais facultativement, le procédé de traitement selon l'invention peut en outre comprendre au moins l'une des caractéristiques suivantes : la taille du mot de code obtenu est strictement inférieure à 2n bits. concatenating the partial code words to obtain the code word corresponding to the data item. Advantageously, but optionally, the treatment method according to the invention may further comprise at least one of the following characteristics: the size of the codeword obtained is strictly less than 2n bits.
la taille n des données est une puissance de 2 bits. the size n of the data is a power of 2 bits.
la taille des séquences de bits est une puissance de 2 bits. the size of the bit sequences is a power of 2 bits.
- les données comprennent 4 bits, chaque donnée étant décomposée en une séquence de 3 bits, et une séquence d'un bit, la première séquence étant codée en un mot de code partiel de taille 5 bits et de poids de Hamming égal à 2 ou 3, et le bit restant étant codé en un mot de code partiel de taille 2 bits et de poids de Hamming égal à 1. the data comprises 4 bits, each data being decomposed into a 3-bit sequence, and a one-bit sequence, the first sequence being coded into a 5-bit partial codeword and a Hamming weight equal to 2 or 3, and the remaining bit is encoded into a 2-bit size partial codeword and a Hamming weight equal to 1.
- les données comprennent 8 bits, le procédé comprenant la décomposition de chaque donnée en deux séquences de 4 bits, les deux séquences de 4 bits étant codées en deux mots de code partiels de 6 bits et de poids de the data comprises 8 bits, the method comprising the decomposition of each data into two 4-bit sequences, the two 4-bit sequences being coded in two partial code words of 6 bits and a weight of
Hamming égal à 3.
L'encodage est mis en œuvre par une première unité de traitement, le procédé comprend en outre la transmission à la seconde unité de traitement d'au moins un mot de code obtenu à partir de la ou les données, et les opérations de chiffrement ou les opérations arithmétiques sont mises en œuvre sur ledit au moins un mot de code par la seconde unité de traitement, le procédé comprend en outre la vérification, par la seconde unité de traitement, de la valeur du poids de Hamming du mot de code reçu, la mise en œuvre des opérations arithmétiques ou les opérations de chiffrement est réalisée sur au moins un mot de code, et produit en sortie le résultat codé de l'opération appliquée à la donnée correspondant au mot de code. Hamming equal to 3. The encoding is implemented by a first processing unit, the method further comprises transmitting to the second processing unit at least one code word obtained from the or the data, and the encryption operations or the arithmetic operations are carried out on said at least one code word by the second processing unit, the method furthermore comprises verifying, by the second processing unit, the value of the Hamming weight of the received codeword, the implementation of the arithmetic operations or the encryption operations is performed on at least one code word, and outputs the coded result of the operation applied to the data item corresponding to the code word.
les opérations arithmétiques ou les opérations de chiffrement comprennent des opérations linéaires appliquées sur au moins un mot de code, et la mise en œuvre d'une opération linéaire comprend : the arithmetic operations or the encryption operations comprise linear operations applied to at least one code word, and the implementation of a linear operation comprises:
o la génération d'au moins une table prenant en entrée au moins un mot de code partiel, et produisant en sortie le résultat de l'opération appliquée au(x) mot(s) de code partiel(s), the generation of at least one table taking as input at least one partial code word, and producing as output the result of the operation applied to the partial code word (s),
o la décomposition de chaque mot de code sur lequel l'opération est mise en œuvre en mots de code partiels, et o the decomposition of each codeword on which the operation is implemented in partial code words, and
o le calcul de l'opération par application des mots de code partiels aux tables, et la concaténation des résultats obtenus, o the calculation of the operation by applying the partial code words to the tables, and the concatenation of the results obtained,
les opérations arithmétiques ou les opérations de chiffrement sont non- linéaires, et la mise en œuvre d'une opération non linéaire comprend : the arithmetic operations or the encryption operations are non-linear, and the implementation of a non-linear operation comprises:
o la génération d'au moins une table prenant en entrée au moins un mot de code partiel d'au moins un mot de code, et produisant en sortie le résultat codé de l'opération appliquée à au moins une donnée complète dont sont tirés les mots de codes partiels, the generation of at least one table taking as input at least one partial code word of at least one code word, and outputting the coded result of the operation applied to at least one complete piece of data from which they are drawn; partial code words,
o la décomposition de chaque mot de code sur lequel l'opération est mise en œuvre en mots de code partiels, et o the decomposition of each codeword on which the operation is implemented in partial code words, and
o le calcul de l'opération par application des mots de code partiels aux tables. o the calculation of the operation by applying the partial code words to the tables.
les opérations de chiffrement ou les opérations arithmétiques des étapes de traitement de d'algorithmes cryptographiques, d'algorithmes de calcul de
fonctions de hachage, ou d'algorithmes de calcul d'intégrité adaptés pour recevoir en entrée lesdits mots de code. the cryptographic operations or arithmetic operations of the cryptographic algorithm processing steps, the calculation algorithms of hash functions, or integrity calculation algorithms adapted to receive said code words as input.
L'invention a également pour objet un circuit électronique comprenant : The invention also relates to an electronic circuit comprising:
un module d'encodage comportant une unité de traitement adaptée pour coder des données de n bits en des mots de code présentant un poids de Hamming constant prédéfini et pour mettre en œuvre sur lesdits mots de code des opérations de chiffrement ou des opérations arithmétiques par la mise en œuvre du procédé de traitement décrit ci-avant. an encoding module comprising a processing unit adapted to encode n-bit data into code words having a predefined constant Hamming weight and to implement on said code words encryption operations or arithmetic operations by the implementation of the treatment method described above.
Avantageusement, mais facultativement, le circuit électronique selon l'invention peut en outre comprendre les caractéristiques suivantes : le module d'encodage comporte en outre des moyens de transmission de données, et le circuit comprend en outre : Advantageously, but optionally, the electronic circuit according to the invention may further include the following features: the encoding module further comprises data transmission means, and the circuit further comprises:
un module de décodage comportant une unité de traitement adaptée pour décoder un mot de code transmis par le premier module, et a decoding module comprising a processing unit adapted to decode a code word transmitted by the first module, and
un module de génération de signal d'erreur, adapté pour générer un signal d'erreur lorsque le poids de Hamming d'un mot de code transmis par le premier module est différent d'un poids de Hamming prédéfini. an error signal generating module adapted to generate an error signal when the Hamming weight of a code word transmitted by the first module is different from a predefined Hamming weight.
L'invention a enfin pour objet une carte à puce comportant un tel circuit électronique. The invention finally relates to a smart card comprising such an electronic circuit.
Le procédé de traitement proposé comprend un encodage de données en mots de code de taille suffisamment faible pour que des algorithmes puissent être mis en œuvre sur lesdits mots de code, même dans des unités informatiques à faible mémoire telles que des cartes à puce. The proposed processing method includes encoding data into code words of sufficiently small size that algorithms can be implemented on said code words, even in low memory computing units such as smart cards.
En outre, l'utilisation de codes de poids constant permet de sécuriser les données contre des attaques par canaux cachés comme les attaques nommées SPA, DPA, MIA, CPA, ASCA, car la consommation électrique de la carte à puce est la même pour toutes les données utilisées. In addition, the use of constant weight codes makes it possible to secure the data against hidden channel attacks such as attacks named SPA, DPA, MIA, CPA, ASCA, because the power consumption of the smart card is the same for all the data used.
En outre, l'utilisation de codes de poids constant permet de détecter certaines attaques par injection de faute comme notamment les attaques par impulsion laser.
DESCRIPTION DES FIGURES In addition, the use of constant weight codes makes it possible to detect certain fault injection attacks such as laser pulse attacks. DESCRIPTION OF THE FIGURES
D'autres caractéristiques, buts et avantages de la présente invention apparaîtront à la lecture de la description détaillée qui va suivre, au regard des figures annexées, données à titre d'exemples non limitatifs et sur lesquelles : Other features, objects and advantages of the present invention will appear on reading the detailed description which follows, with reference to the appended figures, given by way of non-limiting examples and in which:
La figure 1 représente schématiquement un exemple de composant électronique traitant une ou plusieurs données secrètes, FIG. 1 schematically represents an example of an electronic component processing one or more secret data,
La figure 2 représente les principales étapes d'un mode de mise en œuvre d'un procédé d'encodage. Figure 2 shows the main steps of an embodiment of an encoding method.
La figure 3 représente un exemple de mise en œuvre du procédé d'encodage. Figure 3 shows an example of implementation of the encoding method.
La figure 4 représente les principales étapes d'un exemple de mise en œuvre d'un procédé de traitement de données. Figure 4 shows the main steps of an exemplary implementation of a data processing method.
DESCRIPTION DETAILLEE D'AU MOINS UN MODE DE MISE EN ŒUVRE DETAILED DESCRIPTION OF AT LEAST ONE MODE OF IMPLEMENTATION
Unité informatique d'encodage de données Data encoding computer unit
En référence à la figure 1 , on a représenté un exemple d'unité informatique pouvant encoder des données, dont notamment des données secrètes et réaliser des opérations à partir desdites données. Cette unité informatique est avantageusement une carte à puce 1 , qui comprend un circuit électronique comportant un module d'encodage 10 et un module de décodage 20. Alternativement, le module d'encodage et le module de décodage peuvent appartenir à deux unités informatiques distinctes connectées entre elle pour autoriser une communication de données. Referring to Figure 1, there is shown an example of a computer unit that can encode data, including secret data and perform operations from said data. This computer unit is advantageously a smart card 1, which comprises an electronic circuit comprising an encoding module 10 and a decoding module 20. Alternatively, the encoding module and the decoding module can belong to two separate computer units connected. between her to authorize a data communication.
Le module d'encodage 10 est avantageusement intégré à un processeur de la carte à puce, et le module de décodage peut être intégré à un périphérique tel qu'une mémoire ou un coprocesseur de la carte à puce. The encoding module 10 is advantageously integrated with a processor of the smart card, and the decoding module can be integrated with a peripheral such as a memory or a coprocessor of the smart card.
Le module d'encodage 10 comporte des moyens de transmission de données, par exemple un bus 1 1 de communication de données, et une unité de traitement 12, adaptée pour mettre en œuvre des opérations d'encodage et de chiffrement sur des données, ladite unité étant avantageusement une unité arithmétique et logique (ALU). Une unité arithmétique et logique est un circuit intégré dans un processeur permettant la mise en œuvre des calculs sur les données.
Le module 20 comporte des moyens de réception de données 21 comme un bus de réception de données, ainsi qu'une unité de traitement 22, configurée pour décoder des données reçues du module d'encodage, l'unité étant avantageusement une unité arithmétique et logique 22. The encoding module 10 comprises data transmission means, for example a data communication bus 1 1, and a processing unit 12, adapted to implement encryption and encryption operations on data, said unit being advantageously an arithmetic and logical unit (ALU). An arithmetic and logic unit is an integrated circuit in a processor allowing the implementation of calculations on the data. The module 20 comprises data receiving means 21 such as a data receiving bus, as well as a processing unit 22, configured to decode data received from the encoding module, the unit being advantageously an arithmetic and logical unit. 22.
Procédé d'encodage de données Data encoding method
En référence à la figure 2, l'unité de traitement 12 du module d'encodage 10 est adaptée pour encoder une pluralité de données, dont notamment des données secrètes, afin que ces données ne soient pas obtenues au cours de leur utilisation par une attaque par canaux cachées. With reference to FIG. 2, the processing unit 12 of the encoding module 10 is adapted to encode a plurality of data, in particular secret data, so that these data are not obtained during their use by an attack. by hidden channels.
Pour une donnée D de taille égale à n bits, ou n est une puissance de 2, le procédé d'encodage 1000 comporte une étape 100 consistant à scinder la donnée en plusieurs séquences de bits de taille inférieure à n, avantageusement en m séquences de bits di,..., dm, m étant strictement inférieur à n. Il existe donc au moins une séquence de bits comprenant au moins deux bits. Cette décomposition de la donnée est une partition, c'est-à-dire qu'aucun bit de la donnée n'est présent dans deux séquences de bits. For a data D of size equal to n bits, where n is a power of 2, the encoding method 1000 comprises a step 100 of splitting the data into several sequences of bits of size less than n, advantageously in m sequences of bits di, ..., d m , m being strictly less than n. There is therefore at least one sequence of bits comprising at least two bits. This decomposition of the data is a partition, that is to say that no bit of the data is present in two sequences of bits.
Cette décomposition permet de réduire la taille de chaque séquence de bits pour le calcul ultérieur d'opérations binaires à deux opérandes comme par exemple le ou exclusif. This decomposition makes it possible to reduce the size of each bit sequence for the subsequent calculation of binary operations with two operands, such as for example the exclusive or.
Les séquences de bits obtenus présentent une taille égale à une puissance de deux bits. Ceci permet d'obtenir un bon compromis entre la capacité de détection de fautes et la mémoire occupée par le procédé. Par exemple, dans la figure 3, on a représenté une donnée D d'une longueur de n = 8 bits, scindée en deux séquences de bits di, d2 de 4 bits chacune. The bit sequences obtained have a size equal to a power of two bits. This makes it possible to obtain a good compromise between the fault detection capability and the memory occupied by the method. For example, in Figure 3, there is shown a data D of a length of n = 8 bits, divided into two bit sequences di, d 2 of 4 bits each.
Selon un autre exemple, une donnée d'une longueur de n=4 bits est scindée en deux séquences de 2 bits chacune. In another example, a data length of n = 4 bits is split into two sequences of 2 bits each.
Au cours d'une étape 200, l'unité de traitement encode la donnée au moyen d'un code de poids constant pour obtenir un mot de code correspondant M, présentant un poids de Hamming ω constant et déterminé.
Dans toute la suite, on note x,y-code la fonction qui transforme une donnée en une donnée de poids de Hamming « x » sur « y » bits. L'ensemble image de
During a step 200, the processing unit encodes the data by means of a constant weight code to obtain a corresponding code word M, having a constant and determined Hamming weight ω. In the following, we denote by x, y-code the function that transforms a data into a Hamming weight data "x" on "y" bits. The picture set of
note également "x\, y\ - x2, y2 - code" le codage d'une première partie d'une donnée par un x , y - code et de sa seconde partie par un x2, y2 also note "x \ , y \ - x 2 , y 2 - code" the coding of a first part of a data by an x, y - code and its second part by an x 2 , y 2
L'ensemble image de cette fonction contient donc ( ) x ( ) éléments. The image set of this function therefore contains () x () elements.
Selon la notation précédente, l'unité de traitement met en œuvre, pour réaliser l'encodage de la donnée, un encodage de type x0, y0 - x\, y\ xm> ym — code, où m>0 est le nombre de séquence de bits en lesquelles la donnée a été décomposée. En d'autres termes, l'unité de traitement encode au cours de l'étape 200, au moyen d'un codage de poids constant, chaque séquence de bits di,...,dm de la donnée pour former un mot de code partiel correspondant mi,...mm. According to the preceding notation, the processing unit implements, to carry out the encoding of the data, an encoding of the type x 0 , y 0 - x \ , y \ x m > ym - code, where m> 0 is the number of bits in which the data has been decomposed. In other words, the processing unit encodes in step 200, by means of a constant weight coding, each bit sequence di, ..., d m of the data to form a word of partial code corresponding mi, ... m m .
De retour à l'exemple de la figure 3, les séquences de bits di, d2 sont encodées chacune au moyen d'un 3,6-code pour obtenir des mots de codes respectifs m-i, m2. Returning to the example of FIG. 3, the bit sequences di, d 2 are each encoded by means of a 3.6-code to obtain respective code words mi, m 2 .
Le mot de code M correspondant à la donnée totale D est la concaténation des mots de code partiels mi,...mm! réalisée par l'unité de traitement au cours d'une étape 300. The code word M corresponding to the total datum D is the concatenation of the partial code words mi, ... m m! performed by the processing unit during a step 300.
Très avantageusement, la somme des ym, c' est-à-dire des longueurs (en bits) des mots de code partiels, qui correspond à la longueur totale en bits du mot de code obtenu, est strictement inférieure à 2n. Ceci permet d'obtenir un mot de code plus cours que notamment dans le procédé Dual Rail, qui le rend plus simple à mettre en œuvre dans un système informatique à faible mémoire tel qu'une carte à puce. Very advantageously, the sum of y m, that is to say, the lengths (in bits) of the partial codewords, corresponding to the total bit length of the received codeword, is strictly less than 2n. This makes it possible to obtain a code word that is more accurate than in particular in the Dual Rail process, which makes it easier to implement in a low-memory computer system such as a smart card.
On donne également des exemples de codes préférés pour la mise en œuvre du procédé ; dans le cas où la taille des données D à encoder est de 4 bits, on emploie de préférence un 3,5-1 ,2-code ou un 2,5-1, 2-code, à permutation du premier et du deuxième codes près, c'est-à-dire que la donnée D est décomposée en une séquence de 3 bits, puis un bit. La première séquence étant codée en un mot de code partiel de taille 5 bits et de poids de Hamming égal à 2 ou 3, et le bit restant étant codé en un mot de code partiel de taille 2 bits et de poids de Hamming égal à 1 .
Dans le cas où la taille des données D à encoder est de 8 bits, on emploie de préférence un 3,6-3,6-code, la donnée D est décomposée en deux séquences de bits de 4 bits, chacune étant codée en un mot de code partiel de 6 bits et de poids de Hamming égal à 3, comme dans l'exemple de la figure 3. Examples of preferred codes for the implementation of the method are also given; in the case where the size of the data D to be encoded is 4 bits, a 3.5-1, 2-code or a 2.5-1, 2-code, permutation of the first and second codes is preferably used. close, that is to say that the data D is decomposed into a sequence of 3 bits, then a bit. The first sequence being encoded into a 5-bit size partial codeword and a Hamming weight of 2 or 3, and the remaining bit being encoded into a 2-bit size partial codeword and a Hamming weight equal to 1 . In the case where the size of the data D to be encoded is 8 bits, a 3.6-3.6-code is preferably used, the data D is decomposed into two 4-bit bit sequences, each coded as one 6-bit partial code word and Hamming weight equal to 3, as in the example of Figure 3.
Procédé de traitement de données Data processing method
Le procédé d'encodage de données 1000 décrit ci-avant permet la transmission sécurisée de données secrètes d'un module à un autre, pour leur utilisation ultérieure, par exemple au cours d'opérations de chiffrement. The data encoding method 1000 described above allows the secure transmission of secret data from one module to another, for their subsequent use, for example during encryption operations.
II permet également la mise en œuvre d'opérations de chiffrement et/ou d'opérations arithmétiques sur les données encodées, par des unités de traitement à faibles capacités de calcul telles que des cartes à puce. It also allows the implementation of encryption operations and / or arithmetic operations on the encoded data by processing units with low computing capacity such as smart cards.
On a représenté en figure 4 un procédé de traitement de données comprenant l'encodage, la transmission, et l'exploitation ultérieure des données transmises. FIG. 4 shows a data processing method comprising the encoding, the transmission and the subsequent exploitation of the transmitted data.
Dans l'exemple d'une carte à puce comprenant un module d'encodage 10 et un module de décodage 20 comme illustré en figure 1 , une première étape de transmission de données comprenant l'encodage 1000 desdites données par l'unité de traitement 12 du module d'encodage 20. In the example of a smart card comprising an encoding module 10 and a decoding module 20 as illustrated in FIG. 1, a first data transmission step comprising encoding 1000 of said data by the processing unit 12 encoding module 20.
Au cours d'une étape 2000, le bus de communication de données 1 1 transfère au bus de réception 21 du module de décodage 20 les mots de code obtenus par l'encodage des données. During a step 2000, the data communication bus 11 transfers to the reception bus 21 of the decoding module 20 the code words obtained by the encoding of the data.
Avantageusement, la carte à puce peut également comprendre un module 30 de génération de signal d'erreur, qui peut être intégré au module de décodage (comme illustré sur la figure 1 ) ou connecté à celui-ci. Avantageusement, mais facultativement, ce module 30 vérifie au cours d'une étape 3000 que le poids de Hamming des mots de code transmis par le module d'encodage est égal au poids de Hamming constant ω qui est convenu avant la mise en œuvre du procédé de transmission. Advantageously, the smart card may also include an error signal generating module 30, which may be integrated with or connected to the decoding module (as illustrated in FIG. 1). Advantageously, but optionally, this module 30 verifies during a step 3000 that the Hamming weight of the codewords transmitted by the encoding module is equal to the constant Hamming weight ω which is agreed before the implementation of the method. of transmission.
Si le poids de Hamming d'un mot de code diffère du poids de Hamming ω, ou si le mot de code reçu n'est pas conforme au mot attendu (bien que présentant le poids de Hamming ω) le module 30 détecte un signal d'erreur au cours d'une étape 3100. L'étape de vérification du poids de Hamming permet notamment de détecter
une attaque par injection de faute, qui aurait pour conséquence de modifier le poids de Hamming des données transmises. If the Hamming weight of a code word differs from the Hamming weight ω, or if the received code word does not conform to the expected word (although having the Hamming weight ω) the module 30 detects a signal of error during a step 3100. The step of checking the Hamming weight makes it possible in particular to detect an attack by fault injection, which would have the effect of modifying the Hamming weight of the transmitted data.
Si le poids de Hamming est conforme au poids attendu, l'unité de traitement If the Hamming weight is within the expected weight, the processing unit
22 décode les mots de code et/ou les exploite pour mettre en œuvre une opération de chiffrement ou une opération arithmétique, par exemple de type booléenne, au cours d'une étape 4000. 22 decodes the codewords and / or exploits them to implement an encryption operation or an arithmetic operation, for example of Boolean type, during a step 4000.
Les résultats des opérations arithmétiques ou de chiffrement appliqués aux données non codées peuvent être obtenus à partir des mots de codes générés à partir desdites données, comme décrit ci-après. The results of the arithmetic or encryption operations applied to the uncoded data can be obtained from the code words generated from said data, as described hereinafter.
Alternativement, le décodage et/ou l'exploitation 4000 des mots de code pour mettre en œuvre une opération de chiffrement est réalisé sans vérifier au préalable l'exactitude des mots de code. Alternatively, the decoding and / or exploitation 4000 of the code words to implement an encryption operation is performed without first checking the accuracy of the codewords.
Alternativement les opérations 4000 de chiffrement et/ou les opérations arithmétiques peuvent être réalisées par la première unité de traitement sans ou avant qu'une étape 2000 de transmission des données à la deuxième unité de traitement soit mise en œuvre. Alternatively, the encryption operations 4000 and / or the arithmetic operations can be performed by the first processing unit without or before a data transmission step 2000 to the second processing unit is implemented.
Par exemple, une opération de chiffrement peut être une étape d'un algorithme cryptographique tel que l'AES (pour « Advanced Encryption Standard » ou « standard de chiffrement avancé ») ou le LED, d'un algorithme de calcul d'une fonction de hachage tel que par exemple SHA-1 ,SHA-2 ou le futur SHA-3, ou encore un algorithme de calcul d'intégrité tel que de contrôle de redondance cyclique (connu sous l'acronyme « CRC ») ou le LRC (acronyme anglais de For example, an encryption operation may be a step of a cryptographic algorithm such as AES (for "Advanced Encryption Standard" or "Advanced Encryption Standard") or LED, an algorithm for calculating a function such as for example SHA-1, SHA-2 or the future SHA-3, or an integrity calculation algorithm such as cyclic redundancy check (known by the acronym "CRC") or the LRC ( acronym of
« longitudinal redundancy check »), un tel algorithme ayant été préalablement adapté pour recevoir en entrée les mots de code obtenus par le procédé décrit ci- avant. "Longitudinal redundancy check"), such an algorithm having been previously adapted to receive as input the codewords obtained by the method described above.
Plusieurs types d'adaptations peuvent être réalisés en fonction de la nature des opérations mises en œuvre dans les algorithmes. Several types of adaptations can be made depending on the nature of the operations implemented in the algorithms.
Dans de nombreux algorithmes, des opérations arithmétiques sont pré calculées sous forme de tableaux ou tables de vérité. In many algorithms, arithmetic operations are pre computed as tables or truth tables.
Dans le cas où les fonctions de chiffrement sont des fonctions non linéaires, l'adaptation de la fonction aux mots de code consiste à reprendre les tableaux pré calculés et de les adapter au calcul en prenant pour entrées et sorties les valeurs correspondant aux mots de code sur lesquels on réalise le calcul. En d'autres termes, on génère au moins une table ayant pour entrées les mots de code partiels
sur la base desquels on réalise le calcul ou le mot de code complet, et fournissant en sortie le résultat codé de l'opération appliquée à la donnée complète non codée, qui est la concaténation des séquences de bits dont sont tirés les mots de code partiels. L'opération est donc appliquée à l'ensemble des mots de code partiels. In the case where the encryption functions are non-linear functions, the adaptation of the function to the codewords consists in taking up the pre-calculated tables and adapting them to the calculation by taking as inputs and outputs the values corresponding to the codewords. on which the calculation is made. In other words, at least one table is generated having as inputs the partial codewords on the basis of which the calculation or the complete code word is performed, and outputting the coded result of the operation applied to the non-coded complete data, which is the concatenation of the bit sequences from which the partial codewords are derived . The operation is therefore applied to all the partial codewords.
Ainsi par exemple, on note A une donnée comprenant la concaténation de deux séquences de bits a0, ai de tailles respectives L0 et Li. B est une donnée comprenant la concaténation de deux séquences de bits b0, bi, de tailles respectives L0 et Li. For example, A is a datum comprising the concatenation of two sequences of bits of 0 , ai of respective sizes L 0 and Li. B is a datum comprising the concatenation of two sequences of bits b 0 , b 1 , of respective sizes L 0 and Li.
On note A = ai||a0, et B = bi || b0, où « || » est le symbole de concaténation. We denote A = ai || a 0 , and B = bi || b 0 , where "|| Is the concatenation symbol.
Soit K0 un code prenant L0 bits en entrée fournissant en sortie un mot de code de taille lk0 bits, et K-i un code prenant L-ι bits en entrée, et fournissant en sortie un mot de code de taille lk-ι bits. Let K 0 be a code taking L 0 input bits outputting a codeword of size lk 0 bits, and Ki a code taking L-ι bits as input, and outputting a codeword of size lk-ι bits .
On note
|| K0(a0), et CW(B) = K-i (bi) || K0(b0), qui sont de taille Iko+lki bits. We notice || K 0 (a 0 ), and CW (B) = K i (bi) || K 0 (b 0 ), which are of size Iko + lki bits.
Un premier exemple de calcul d'une opération non-linéaire est donné pour une fonction à un seul opérande. En appelant cette fonction « NLF », on pré-calcule une table T_NLF donnant : A first example of calculating a nonlinear operation is given for a single operand function. By calling this function "NLF", one pre-calculates a table T_NLF giving:
T_NLF [CW(A)] = CW (NLF (A)). T_NLF [CW (A)] = CW (NLF (A)).
En d'autres termes, T_NLF est une table prenant en entrée un mot de code complet CW(A) et fournissant en sortie le mot de code obtenu par un encodage identique de l'image de A par la fonction NLF. In other words, T_NLF is a table taking as input a complete code word CW (A) and outputting the codeword obtained by an identical encoding of the image of A by the NLF function.
Un deuxième exemple est donné pour le calcul d'une fonction à deux opérandes, par exemple l'addition modulo 2L0+L1. A second example is given for the computation of a function with two operands, for example the addition modulo 2 L0 + L1 .
On génère trois tables définies comme suit : We generate three tables defined as follows:
- ADD-K0[ K0( a ), K0( b ) ] = K0[ (a+b) modulo 2L0 ] - ADD-K 0 [K 0 (a), K 0 (b)] = K 0 [(a + b) modulo 2 L0 ]
Cette table prend en entrées deux données codées par K0, et produit en sortie le reste de la division euclidienne de la somme des deux données par 2L0, codé par K0. This table takes as inputs two data coded by K 0 , and outputs the remainder of the Euclidean division of the sum of the two data by 2 L0 , encoded by K 0 .
- REM-K0[ K0( a ), K0( b ) ] = K,[ (a+b) / 2L0 ]
Cette table prend en entrées deux données codées par K0, et produit le quotient de la division euclidienne de la somme des deux données par 2L0, codé par REM-K 0 [K 0 (a), K 0 (b)] = K, [(a + b) / 2 L0 ] This table takes as input two data coded by K 0 , and produces the quotient of the Euclidean division of the sum of the two data by 2 L0 , coded by
- ADD-Ki[ Ki( a ) H Ki( b ) ] = Ki[ (a+b) modulo 2L1 ] - ADD-Ki [Ki (a) H Ki (b)] = Ki [(a + b) modulo 2 L1 ]
Cette table prend en entrées deux données codées par K1 , et produit le reste de la division euclidienne de la somme des deux données par 2L1, codé par K1 . This table takes as input two data encoded by K1, and produces the rest of the Euclidean division of the sum of the two data by 2 L1 , encoded by K1.
On va maintenant décrire l'obtention de CW( A+B modulo 2 L0+L1) en partant de CW(A) et CW(B). We will now describe obtaining CW (A + B modulo 2 L0 + L1 ) starting from CW (A) and CW (B).
CW(A+B modulo 2L0+L1) est l'encodage de A+B modulo 2L0+L1. En reprenant les mêmes notations que précédemment : CW (A + B modulo 2 L0 + L1 ) is the encoding of A + B modulo 2 L0 + L1 . By repeating the same notations as before:
A+B = ai||a0 + bi||b0 = (ai+bi). 2L0 + a0 +b0 A + B = ai || a 0 + bi || b 0 = (ai + bi). 2 L0 + a 0 + b 0
Que l'on peut noter : X. 2L0+L1 +Y. 2L0+ R0, d'où A+B mod 2L0+L1 : Y. 2L0+ R0. That we can note: X. 2 L0 + L1 + Y. 2 L0 + R 0 , hence A + B mod 2 L0 + L1 : Y. 2 L0 + R 0 .
Où : Or :
R0 est le résultat de a0+b0 modulo 2L0, c'est-à-dire le reste de la division euclidienne de a0+b0 par 2L0 R 0 is the result of a 0 + b 0 modulo 2 L0 , that is the remainder of the Euclidean division of a 0 + b 0 by 2 L0
X est le quotient de la division euclidienne de a+b par 2 L0+L1 X is the quotient of the Euclidean division of a + b by 2 L0 + L1
Y est le résultat de a+b modulo 2L0+L1, c'est-à-dire le reste de le division euclidienne de a+b par 2L0+L1 , qui se décompose en C0+Ri, où C0 est le quotient de la division euclidienne de a-i+bi par 2L1, et R-ι est la retenue de l'addition a0+b0 modulo 2L0. Y is the result of a + b modulo 2 L0 + L1 , that is to say the rest of the Euclidean division of a + b by 2 L0 + L1, which decomposes into C 0 + Ri, where C 0 is the quotient of the Euclidean division of a-i + bi by 2 L1 , and R-ι is the retention of the addition to 0 + b 0 modulo 2 L0 .
CW(A+B modulo 2 L0+L1) est donc égal à K1(Y)+K0(R0). Pour l'obtenir à partir de CW(A) et CW(B), on calcule, avec les tables introduites ci-avant : CW (A + B modulo 2 L0 + L1 ) is therefore equal to K 1 (Y) + K 0 (R 0 ). To obtain it from CW (A) and CW (B), one calculates, with the tables introduced above:
Ko(Ro) = ADD-K0[ Ko( a0 ) , b„) ] Ko (Ro) = ADD-K 0 [KB (a 0 ), b ")]
Ki(Co) = REM-K0[ K0( a0 ) , K0( b0 ) ] Ki (Co) = REM-K 0 [K 0 (a 0 ), K 0 (b 0 )]
K1(R1) = ADD-K1[ K1( ai ) , K,( bi ) ]K 1 (R 1 ) = ADD-K 1 [K 1 (a 1 ), K, (b)]
On a alors CW( (A+B) modulo 2 L0+L1 ) = K1(Y)||K0(R0). We then have CW ((A + B) modulo 2 L0 + L1 ) = K 1 (Y) || K 0 (R 0 ).
Dans le cas où les fonctions de chiffrement sont des fonctions linéaires, cette étape d'adaptation pour l'exploitation ou le décodage des mots de code peut par
exemple être réalisée en décomposant le mot de code M en les mots de code partiels m-i , . . . , mm qui le composent, et en réalisant l'opération sur chacun des mots de code partiels avant de concaténer les résultats obtenus. In the case where the encryption functions are linear functions, this adaptation step for the operation or the decoding of the codewords can for This can be done by decomposing the code word M into the partial code words mi,. . . , m m that compose it, and performing the operation on each of the partial codewords before concatenating the results obtained.
Dans le cas d'une fonction à plusieurs opérandes, chaque mot de code sur lequel l'opération est mise en œuvre est décomposé en ses mots de codes partiels, et l'opération est appliquée de façon séparée sur les mots de codes partiels correspondants de chaque mot de code. In the case of a multi-operand function, each code word on which the operation is implemented is decomposed into its partial code words, and the operation is applied separately to the corresponding partial code words of each code word.
Ainsi par exemple, la mise en œuvre d'une opération de type « ou exclusif » (XOR) sur deux données codées comprend la mise en œuvre d'opérations « ou exclusifs » sur chaque mot de code partiel. For example, the implementation of an "exclusive" (XOR) type operation on two coded data includes the implementation of "or exclusive" operations on each partial code word.
Avec la même notation que précédemment, on note XOR-K0 la fonction ou exclusif appliquée à deux données concaténées, codés par K0, et qui renvoie leur XOR en représentation codée par K0. De même avec XOR-^ qui s'applique à des données codées par K-i et renvoie leur XOR en représentation codée par Ki. With the same notation as above, XOR-K 0 denotes the function or exclusive applied to two concatenated data, encoded by K 0 , and which returns their XOR in representation coded by K 0 . Likewise with XOR- ^ which applies to data coded by Ki and returns their XOR in representation coded by Ki.
XOR-K0[Ko(a),K0(b)] = K0 [a XOR b] XOR-K 0 [KB (a), K 0 (b)] = K 0 [a XOR b]
Le résultat de A XOR B sous forme codée est donc calculé de la manière suivante : The result of A XOR B in coded form is thus calculated as follows:
R0= XOR-Ko [Ko (a„) , Ko (b„)] R 0 = XOR-KB [KB (a "), KB (b")]
Ri = XOR-Ki [Ki (a1 ) , Ki (bi)] Ri = XOR-Ki [Ki (a1), Ki (bi)]
R est bien de la même forme que CW(A) et CW(B), c'est-à-dire la concaténation de deux mots de code codés respectivement par K-i et K0. R is of the same form as CW (A) and CW (B), that is to say the concatenation of two codewords coded respectively by Ki and K 0 .
Dans le cas présent, les tableaux pré calculés présentent des tailles adaptées à celles des mots de code partiels utilisés pour les opérations arithmétiques. A titre d'exemple non limitatif, pour des mots de code M de type 2,5- 1 ,3-2,5-code, sur lesquels on souhaite réaliser une opération « ou exclusif », on précalcule deux tables de type « A XOR B », une pour A et B de poids de Hamming In the present case, the pre-calculated tables have sizes adapted to those of the partial codewords used for the arithmetic operations. By way of nonlimiting example, for code words M of type 2.5-1, 3-2, 5-code, on which it is desired to carry out an "exclusive" operation, two tables of type "A" are precalculated. XOR B ", one for A and B of Hamming weights
2 sur une taille de 5 bits, et une pour A et B de poids de Hamming 1 sur une taille de2 on a size of 5 bits, and one for A and B of Hamming weight 1 on a size of
3 bits. 3 bits.
De la même manière, si l'unité de traitement veut décoder les mots de code, elle sépare chaque mot de code M en les mots de code partiels m, mm, et met en œuvre sur chaque mot de code partiel un décodage correspondant à l'encodage mis en œuvre pour les obtenir. L'algorithme de décodage dépend bien entendu de l'algorithme d'encodage utilisé au préalable.
A titre d'exemples non limitatifs, on décrit ci-après d'autres possibilités d'encodage et de décodage dans le cadre du procédé décrit ci-avant. In the same way, if the processing unit wants to decode the code words, it separates each code word M into the partial code words m, m m , and implements on each partial code word a decoding corresponding to the encoding implemented to obtain them. The decoding algorithm depends of course on the encoding algorithm used beforehand. By way of non-limiting examples, other possibilities of encoding and decoding are described below in the context of the method described above.
Selon un premier exemple, on cherche à coder des données d'un ensemble de départ E contenant les entiers de 0 à 15, c'est-à-dire les entiers binaires représentés sur 4 bits. According to a first example, it is sought to encode data of a starting set E containing the integers from 0 to 15, that is to say the binary integers represented on 4 bits.
On choisit comme code d'arrivée l'ensemble des mots de poids 3 parmi 6 bits, qui est le suivant : {7, 1 1 , 13, 14, 19, 21 , 22, 25, 26, 28, 35, 37, 38, 41 , 42, 44, 49, 50, 52, 56}. Cet ensemble comporte 20 éléments ; il est donc adapté pour coder l'ensemble E qui en contient 16. On note J l'ensemble des 16 premiers éléments du code précédent. En binaire J= [1 1 1 , 101 1 , 1 101 , 1 1 10, 1001 1 , 10101 , 101 10,1 1001 , 1 1010, 1 1 100, 10001 1 , 100101 , 1001 10, 101001 , 101010, 101 100]. The set of words of weight 3 among 6 bits is chosen as the arrival code, which is the following: {7, 1 1, 13, 14, 19, 21, 22, 25, 26, 28, 35, 37, 38, 41, 42, 44, 49, 50, 52, 56). This set has 20 elements; it is therefore adapted to encode the set E which contains 16. We denote by J the set of the first 16 elements of the preceding code. In binary J = [1 1 1, 101 1, 1 101, 1 1 10, 1001 1, 10101, 101 10.1 1001, 1 1010, 1 100, 10001 1, 100101, 1001 10, 101001, 101010, 101 100].
A l'élément E[a] (« a-ième » élément de E) est associé l'élément J[a]. At the element E [a] ("a-th" element of E) is associated the element J [a].
Si la table J est conservée en mémoire, alors on obtient le procédé de codage, qui est un simple accès à un tableau. Un mot « a » se code en accédant en mémoire à la valeur J[a]. If the table J is kept in memory, then we obtain the coding process, which is a simple access to a table. A word "a" is coded by accessing in memory the value J [a].
Pour décoder, on crée la table K, de taille 26 éléments (=64), qui à l'emplacement J[i], i allant de 0 à 15, prendra la valeur de i. To decode, we create the table K, of size 2 6 elements (= 64), which at the location J [i], i ranging from 0 to 15, will take the value of i.
On a alors K[J[i]]=i, donc le décodage du mot de code de « i » permet bien d'obtenir « i » lui-même. We then have K [J [i]] = i, so the decoding of the code word of "i" makes it possible to obtain "i" itself.
La table K s'écrit alors [X, X, X, X, X, X, X, 0, X, X, X, 1 , X, 2, 3, X, X, X, X, 4, The table K is then written [X, X, X, X, X, X, X, O, X, X, X, 1, X, 2, 3, X, X, X, X, 4,
X, 5, 6, X, X, 7, 8, X, 9, X, X, X, X, X, X, 10, X, 1 1 , 12, X, X, 13, 14, X, 15, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X], où X est une valeur qui n'est pas dans l'ensemble E de départ. X, 5, 6, X, X, 7, 8, X, 9, X, X, X, X, X, X, 10, X, 1, 12, X, X, 13, 14, X, 15 , X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X], where X is a value that is not in the starting set E.
Pour un mot de 8 bits M que l'on souhaite coder, ce mot est scindé en deux séquences de 4 bits chacune, codées chacune sur 6 bits comme décrit précédemment, puis on concatène les mots de code partiels obtenus. For an 8-bit word M that it is desired to code, this word is split into two sequences of 4 bits each, each encoded on 6 bits as described above, then the partial codewords obtained are concatenated.
Pour les opérations sur le mot de code, on prépare une table qui reçoit en entrée les mots de code partiels et fournit en sortie le résultat de l'opération appliquée à la concaténation des mots de code partiels. For operations on the codeword, a table is prepared which receives the partial codewords as input and outputs the result of the operation applied to the concatenation of the partial codewords.
D'autres possibilités d'encodage et de décodage des données applicables dans le cadre de la présente invention sont connues et à la portée de l'Homme du Métier.
Other possibilities of encoding and decoding data applicable in the context of the present invention are known and within the scope of the skilled person.