Brevet FR3004036A1 — publié le 20141003

Domaine de l'invention La présente invention se rapporte à un dispositif pour traiter des données, le dispositif comportant une interface d'entrée pour recevoir des données d'entrée et une unité de traitement pour traiter les données. L'invention se rapporte également à un procédé de gestion d'un tel dispositif. But de l'invention La présente invention a pour but de perfectionner un dispositif et un procédé du type défini ci-dessus pour augmenter la sé- curité vis-à-vis des attaques, notamment des attaques par canal latéral. Exposé et avantages de l'invention A cet effet, l'invention a pour objet un dispositif du type défini ci-dessus caractérisé par une unité de codage pour coder les mots de données reçus comme données d'entrée à l'interface et obtenir des mots de données codés, l'unité de codage codant les mots de données, une partie prédéfinie de tous les mots de données codés, de préférence au moins environ 50 % de tous les mots de données codés ayant entre eux une distance de Hamming et/ou un poids de Hamming prédéfinis, et l'unité de traitement traite les mots de données codés. Selon l'invention, la transformation du mot de données en entrée par le codage proposé qui définit les critères de la distance ou du poids de Hamming assure une moindre fuite d'informations relatives aux données traitées dans l'unité de traitement d'informations. Selon la présente description, l'expression « tous les mots de données codés » désigne l'ensemble de tous les mots de données codés se présentant théoriquement. Par exemple, s'il existe (j) mots de données reçus en entrée, on pourra associer à cet ensemble de petits (j) mots de données d'entrée par l'unité de codage, (j) mots de données co- dés. De façon préférentielle, le codage se fait selon un mode de réalisa- tion tel qu'au moins environ 50 % de l'ensemble (j) des mots de données codés présentent entre eux une distance de Hamming prédéfinie. En variante ou en complément, le codage se fera de préférence pour qu'au moins environ 50 % des grands (j) mots de données codés présentent un poids de Hamming prédéfini. En particulier, ainsi on complique considérablement les attaques par analyse différentielle de puissance (attaques DPA) du dispositif selon l'invention. Par exemple, selon un mode de réalisation préférentiel, la partie prédéfinie représente environ 100 % ce qui signifie que tous les mots de données (un ensemble j) seront codés pour avoir entre eux une distance de Hamming et/ou un poids de Hamming prédéfinis. Dans ce cas, par exemple par une attaque par analyse différentielle de puissance (DPA), on ne pourra obtenir qu'une fraction extraordinairement faible ou très petite d'informations par une exploita- tion correspondante du fonctionnement du dispositif de l'invention car par exemple dans le cas d'un poids de Hamming constant de tous les mots de données codés, chaque mot de données a exactement autant de bits de valeur 1 que les autres mots de données. On évite ainsi que les passages des bits (passages entre les états 1 et 0 ou inversement) tels qu'ils se produisent pour le traitement de mots de données codés ne puissent fournir des informations relatives à la teneur proprement dite d'informations du mot de données non codé. Selon un autre développement avantageux, l'unité de traitement comporte au moins un registre pour mémoriser au moins provisoirement un mot de données codé. Cela signifie qu'un mode de réalisation simple de l'invention concerne un dispositif ayant une interface d'entrée et une unité de codage selon l'invention et qui prévoit un traitement selon l'invention, par exemple un enregistrement au moins de temps en temps en mémoire dans le registre. Ce mode de réalisation enregistre selon l'invention un mot de données codé (ou aussi plusieurs mots de données codés) au moins provisoirement dans un registre ou autre mémoire et cela sous forme codée de sorte que la lecture consécutive du mot de données codé et son traitement sont possibles. Par exemple, le procédé cryptographique fait ensuite permettra de lire le registre correspondant et de traiter ensuite les données. En variante ou en complément, l'unité de traitement se- lon l'invention comporte au moins une unité cryptographique pour la mise en oeuvre d'au moins une partie du procédé cryptographique. L'unité de traitement comporte par exemple une unité cryptographique pour exécuter l'algorithme complet AES (algorithme de cryptage standard avancé). Selon un autre développement, l'unité de traitement a une unité cryptographique pour exécuter une partie d'un procédé cryp- tographique, par exemple pour exécuter une opération de substitution non linéaire comme celle qui fait l'objet de la fonction sous octets (sous bytes) de la norme cryptographique AES (voir http: / / csrc.nist.gov/ publications/ fips/ fips197/ fips-197.pdf, chapitre 5.1.1). Selon un autre développement avantageux, le codage as- sure le codage des mots de données en ajoutant à chaque mot de données un nombre prédéfini de bits. Pour cela, la valeur des bits correspondants ajoutés sera choisie selon le codage de l'invention. En d'autres termes, par l'adjonction selon l'invention d'un nombre prédéfini de bits (et le choix de leur valeur respective) crée un certain nombre de degrés de liberté pour le codage selon l'invention qui permet de régler un poids de Hamming et/ou une distance de Hamming souhaités pour un ou plusieurs mots de données codés. L'information proprement dite du mot de données non codé n'est pas perdue car l'invention n'ajoute que de nouveaux bits. Selon un autre développement avantageux, l'unité de codage sélectionne le nombre prédéfini de bits à ajouter ou leur valeur pour que la fraction prédéfinie de tous les mots de données codés présente entre eux la distance de Hamming et/ou le poids de Hamming prédéfinis. La distance de Hamming, encore appelée écart de Hamming, représente le nombre de positions différentes de deux mots de code comparés. Dans le cas d'un code binaire et de deux mots de code correspondants, la distance ou l'écart de Hamming représente ainsi le nombre de positions de bits différents pour les mots de code comparés. Le poids de Hamming représente la distance de Hamming par rapport au vecteur nul. Dans un code binaire, le poids de Hamming correspond ainsi au nombre de positions différentes de 0 dans le mot de code observé, c'est-à-dire le nombre de bits de valeur 1. Selon un autre développement avantageux, l'unité de codage associe au mot de données de la colonne S2 du tableau ci-après le mot de données codé de la ligne correspondante de la colonne S3 du tableau. Les différentes positions de bits des mots de données sont sé- parées les unes des autres par une virgule et un mot de données est mis entre les parenthèses. S2 S3 (0,0,0,0) (0,0,0,0,0,1,1) (0,0,0,1) (0,0,0,1,0,0,1) (0,0,1,0) (0,0,1,0,0,0,1) (0,0,1,1) (0,0,1,1,0,0,0) (0,1,0,0) (0,1,0,0,0,0,1) (0,1,0,1) (0,1,0,1,0,0,0) (0,1,1,0) (0,1,1,0,0,0,0) (0,1,1,1) (1,0,0,0,1,0,0) (1,0,0,0) (1,0,0,0,0,0,1) (1,0,0,1) (1,0,0,1,0,0,0) (1,0,1,0) (1,0,1,0,0,0,0) (1,0,1,1) (0, 1,0,0, 1,0,0) (1,1,0,0) (1,1,0,0,0,0,0) (1,1,0,1) (0,0, 1,0, 1,0,0) (1,1,1,0) (0,0,0, 1, 1,0,0) (1,1,1,1) (0,0,0,0,1,1,0) Selon un autre développement avantageux, le dispositif est réalisé au moins en partie sous forme de circuit intégré IC, de préfé- rence en technique CMOS (semi-conducteur métal-oxyde complémentaire). La fonctionnalité selon l'invention peut s'implémenter également, par exemple dans un circuit ASIC ou un circuit FPGA. L'invention a également pour objet un procédé de gestion d'un dispositif de traitement de données, le dispositif ayant une inter- face d'entrée pour recevoir des données d'entrée et une unité de traitement pour traiter les données, caractérisé en ce qu' à l'aide d'une unité de codage, on code les mots de données reçus comme données d'entrée par l'interface d'entrée pour obtenir des mots de données codés, l'unité de codage codant les mots de données de façon qu'une par- tie prédéfinie de tous les mots de données codés, de préférence au moins environ 50 `)/0 de tous les mots de données codés présentent entre eux une distance de Hamming et/ou un poids de Hamming prédéfinis, et l'unité de traitement traite les mots de données codé. Dessins La présente invention sera décrite ci-après de manière plus détaillée à l'aide d'un dispositif et d'un procédé de traitement de données représentés dans les dessins annexés dans lesquels : la figure 1 est un schéma d'un mode de réalisation d'un dispositif selon l'invention, les figures 2a, 2b sont des schémas d'un mode de réalisation d'une unité de traitement selon l'invention, les figures 3a, 3b sont des schémas d'appareils équipés d'un dispositif selon l'invention, la figure 4 est un schéma d'un exemple de réalisation d'un codage selon l'invention, la figure 5 est un tableau schématique explicitant un codage selon un mode de réalisation de l'invention, la figure 6 est un schéma d'un autre mode de réalisation d'un dispositif selon l'invention, la figure 7 est un ordinogramme très simplifié du procédé de l'invention. Description de modes de réalisation de l'invention La figure 1 montre schématiquement un mode de réalisa- tion d'un dispositif 100 selon l'invention pour le traitement de données. Le dispositif 100 a une interface d'entrée 110 recevant des données d'entrée X. Les données d'entrée X sont par exemple des mots de données numériques qui se suivent dans le temps, par exemple des mots de données Xn d'une largeur de données de par exemple 4 bits. D'autres largeurs de données sont possibles. L'interface d'entrée 110 fournit les données d'entrée X sous la forme de mots de données Xn à sa sortie. Le dispositif 100 comporte en outre une unité de traite- ment 120 pour traiter les données, par exemple les données déduites des données d'entrée X. Selon l'invention, il est prévu une unité de codage 130 pour coder les mots de données Xn reçus par l'interface d'entrée 110 sous la forme de données d'entrée X et fournir des mots de données codés Xn'. Les mots de données codés Xn' sont, selon l'invention, fournis à la sortie de l'unité de codage 130 pour être transmis à l'unité de traitement 120. L'unité de traitement 120 fournit à sa sortie les mots de données codés et traités Yn'. Selon l'invention, l'unité de codage 130 assure le codage des mots de données Xn en ce qu'une fraction prédéfinie de tous les mots de données codés Xn', de préférence au moins 50 `)/0 de tous les mots de données codés Xn' présentent entre eux une distance de Ham- ming et/ou un poids de Hamming prédéfinis. Cela permet avantageu- sement que le traitement consécutif des mots de données codés Xn' et/ou l'enregistrement et/ou leur accès dans l'unité de traitement 120 conditionnent un moindre degré de fuite d'informations concernant les données X, ce qui complique significativement les attaques DPA sur le dispositif 100. Selon l'invention, l'unité de traitement 120 traite les mots de données codés Xn' et non directement les données d'entrée X non codées, c'est-à-dire les mots de données correspondants Xn. Selon un exemple de réalisation préférentiel, l'unité de codage 130 assure le codage des mots de données Xn pour que tous les mots de données codés présentent entre eux la distance de Hamming prédéfinie. En variante ou en complément, le codage fait que tous les mots de données codés Xn' présentent un poids de Hamming prédéfini. D'autres variantes du codage par l'unité de codage 130 sont également envisageables, ce qui signifie que l'invention n'est pas limitée au codage des mots de données d'entrée Xn avec pour objectif d'atteindre une distance de Hamming prédéfinie ou un poids de Hamming prédéfini. Selon un mode de réalisation préférentiel, l'unité de traitement 120 est par exemple un registre. La figure 2a montre un autre mode de réalisation d'une variante 120a de l'unité de traitement 120 de la figure 1. L'unité de traitement 120a dispose de deux registres R1, R2 qui servent au moins périodiquement à l'enregistrement en mémoire des mots de données codés Xn' qu'ils reçoivent en entrée tels qu'ils sont reçus par l'unité de codage 130. L'unité de traitement 120a fournit les mots de données codés enregistrés dans les registres R1, R2, à des instants donnés pour la suite du traitement par la sortie comme données codées Yn', « traitées ». Dans le cas présent, la particularité est que du fait de la réalisation de l'unité de traitement 120a comme simple mémoire, les mots de données de sortie Yn' de l'unité 120a correspondent aux mots de données d'entrée Xn'. La figure 2b montre un premier mode de réalisation 120b d'une unité de traitement selon l'invention. L'unité de traitement 120b comporte une unité cryptographique 124 qui est par exemple une unité pour appliquer une partie d'un algorithme d'un procédé de cryptage. L'unité cryptographique 124 exécute par exemple une opération de substitution non linéaire sur les données d'entrée Xn' qu'elle reçoit pour obtenir des données de sortie correspondantes Yn'. Une telle opération de substitution non linéaire est par exemple prévue dans la fonction SubBytes du standard de cryptage avancé AES. La variante selon l'invention à la figure 2b peut ainsi exécuter la partie correspondante de l'algorithme AES. Selon un autre mode de réalisation, l'unité de traitement est un bus de données (bus série ou bus parallèle) ou de manière générale un composant de circuit qui reçoit les mots de données codés. Selon un autre développement, les composants 120 et 130 peuvent également être combinés fonctionnellement. La figure 3a montre un autre domaine d'application de l'invention. La figure montre une carte à puce 2000 munie d'un dispositif 100 selon l'invention. Le dispositif 100 est en liaison de transmission de données avec une interface 2002 par laquelle la carte à puce 2000 ou le dispositif 100 de la carte permet d'échanger de manière connue en soi avec des appareils externes tels que par exemple un lecteur de carte à puce (non représenté) ou un moyen analogue. Le dispositif 100 selon la figure 3a a avantageusement au moins la structure de la figure 1 mais on peut également envisager plusieurs unités de codage 130 ou plusieurs unités de traitement identiques ou différentes 120 dans le dispositif 100, ce qui permet d'utiliser les étapes de procédé de traite- ment de données implémentées par le dispositif 100 avec les avantages de l'invention. La figure 3b montre une autre application de l'invention. La figure montre une clé USB sous forme de support de mémoire de données 3000 comportant un dispositif 100 selon l'invention et un moyen de branchement USB 3002. La figure 4 montre un exemple d'un codage selon l'invention à l'aide de 4 bits (ce qui correspond à un demi-octet) formant un mot de données Xn. Le premier bit du mot de données Xn porte la référence X1 à la figure 4 ; le second bit porte la référence X2 et le troi- sième bit porte la référence X3, le quatrième bit portant la référence X4. Pour représenter le mot de données Xl, on utilise dans la suite la notation appropriée suivante : (x 1, x2, x3, x4) ce qui correspond à la succession des différents bits x 1, x2, x3, x4 du mot de données Xn. En codant à l'aide de l'unité de codage 130 (figure 1), on transforme le mot de données Xn selon la figure 4 en un mot de données Xn' (voir la flèche (a) de la figure 4). Comme le montre la figure 4, le mot de données codé Xn' se compose toujours des 4 bits x 1, x2, x3, x4 du mot de données d'origine Xn et de 3 autres bits x5, x6, x7. Le co- dage (a) est ainsi effectué ici par l'adjonction d'une succession de bits Rn qui présentent ici la longueur de 3 bits. Les valeurs des différents bits x5, x6, x7 de la suite de bits Rn accrochés dans le cadre du codage selon l'invention peuvent être avantageusement choisies par exemple pour que la distance de Hamming souhaitée pour le mot de données codé Xn' par rapport aux autres mots de données, codés ou encore un poids de Hamming souhaité pour le mot de données codé Xn'. La figure 5 donne un exemple d'un tableau de codage à trois colonnes Si, S2, S3 utilisé par exemple dans l'unité de codage 130 (figure 1) selon un mode de réalisation. La colonne Si contient les nu- méros d'un total de 16 lignes du tableau de la figure 5. La seconde colonne S2 contient les mots de données d'entrée Xn à 4 bits selon la notation expliquée précédemment ; les différentes positions de bits sont respectivement séparées par une virgule et le mot de données est entou- ré par des parenthèses. La colonne S3 du tableau de la figure 5 contient les mots de données codés Xn' associés par l'unité de codage 130 selon l'invention (figure 1) aux mots de données respectifs Xn de la colonne S2 sur la même ligne. Le tableau de la figure 5 s'obtient à partir des 16 mots de données Xn, par exemple selon les équations ou les règles de formation suivantes : Xj' = (x 1, x2, x3, x4, 0, 0, [1-HW(x II 1)]), falls HW(Xj) 2", ou Xj' = (x 1, x2, x3, x4, 1, [2-HW(x II 1)], [1-HW(x II 1)]), falls HW(Xj) >2" Dans ces formules : HW(.) représente le poids de Hamming d'un mot de données, Il représente une concaténation de bits, Xj représente le mot de données non codé d'ordre j, et Xj' représente le mot de données codé d'ordre j. Le codage selon l'invention représenté par le tableau de la figure 5 a l'effet avantageux que tous les mots de données codés (les éléments de la colonne S3 du tableau) ont un poids de Hamming cons- tant, ce qui complique les attaques DPA sur le dispositif 100 car dans le cadre du traitement des mots de données codés Xn' selon l'invention (figure 1) dans l'unité de traitement 120, pour chaque mot de code, on a le même nombre de variations d'état des différents bits des mots de données codés Xn' de sorte que des combinaisons spéciales de varia- tions d'état ne peuvent plus être associées directement à des mots de code spéciaux qui ont précisément été traités par l'unité 120. Pour réaliser l'implémentation à 8 bits fondée sur le prin- cipe de l'invention, on peut appliquer les étapes décrites ci-dessus et le codage du tableau de la figure 5 chaque fois à deux demi-octets qui cor- respondent chaque fois à un mot de données de 8 bits. Ainsi, on réalise par exemple une implémentation à 8 bits de la fonction sous-octet (SubBytes) de la norme AES. La solution selon l'invention peut très bien se mettre à l'échelle de sorte que par exemple pour une implémentation à 32 bits, on décompose tout d'abord le mot de données d'une largeur de 32 bits en 8 demi-octets, de préférence au cours d'un cycle de tra- vail, c'est-à-dire en parallèle pour ensuite coder selon l'invention les 8 demi-octets résultants. La figure 6 montre un autre mode de réalisation de l'invention avec un dispositif 100a pour le traitement de données. En entrée, le dispositif 100a reçoit les données d'entrée X qui se présentent par exemple sous la forme de mots de données d'entrée Xn à 4 bits arrivant sur l'interface d'entrée 110 pour être transmis à l'unité de codage 130 en aval. L'unité de codage 130 effectue un codage pour obtenir les données d'entrée codées Xn'. Les mots de données d'entrée codés Xn' sont travaillés dans l'unité de traitement 120 en aval fournissant en sortie des mots de données codés et traités Yn'. Ensuite, l'unité de données 140 qui représente une unité de décodage assure le décodage des mots de données Yn' pour obtenir les mots de données Y travaillés, décodés. Ces mots de données sont fournis par l'interface de sortie 150 à d'autres unités externes au dispositif 100. Selon un autre mode de réalisation, les composants 120 et 140 de la figure 6 sont combinés fonctionnellement. De façon générale, le principe de l'invention n'est pas li- mité à un codage tel que les mots de données codés présentent comme décrits ci-dessus une distance de Hamming et/ou un poids de Ham- ming prédéfinis. Bien plus, d'autres formes de réalisation peuvent être envisagées pour l'unité de codage 130 (figure 1, figure 6) de façon à transformer les mots de données d'entrée Xn en utilisant un code dit de « préservation de fuite » pour avoir un mot de données codé Xn'. De fa- çon très générale, l'utilisation du code de « conservation de fuite » a l'avantage qu'un tel mot de données codé minimise la fuite d'informations qui se ferait par exemple par l'observation physique ou avec des grandeurs mesurables (par exemple la mesure des champs électromagnétiques, la mesure de la consommation d'énergie électrique du dispositif 100 ou de l'unité 120) pour les données traitées dans l'unité 120. La figure 7 montre schématiquement un ordinogramme d'un mode de réalisation du procédé de l'invention. Dans l'étape 200, on effectue le codage d'un ou plusieurs mots de données d'entrée Xn à l'aide de l'unité de codage 130 (figure 1). Dans l'étape 210, on traite les mots de données codés Xn' résultant de l'étape 200 à l'aide de l'unité de traitement 120. En option, dans l'étape 220 suivante, on effectue le décodage des mots de données Yn', traités. Le principe selon l'invention consistant à prévoir des mots de données codés Xn' qui sont soumis à un autre traitement au lieu de traiter les données d'entrée non codées Xn a l'avantage de ne pas nécessiter de procédé fondé sur les techniques aléatoires ou des procédés pseudo-aléatoires pour se protéger contre une attaque DPA (protection du dispositif 100 contre les attaques DPA), ce qui réduit les moyens à mettre en oeuvre vis-à-vis des moyens mis en oeuvre par les procédés connus. De plus, le dispositif 100 selon l'invention peut se réaliser par exemple en utilisant des cellules CMOS usuelles ; le dispositif 100 est prévu sous la forme d'un circuit monolithique intégré ou encore comme composant de circuit intégré dans d'autres unités de cir- cuit. Un autre avantage de l'invention est que le fonctionnement correct du dispositif 100 se contrôle relativement simplement car l'invention n'est pas fondée sur l'utilisation de nombres aléatoires ou de nombres pseudo-aléatoires. En outre, l'implémentation du dispositif 100 se fait sur une surface de puce relativement réduite. Comme les moyens de l'invention qui assurent un durcissement aux attaques DPA se font au niveau de l'architecture, on peut simplement réutiliser des conceptions de puce différentes ou des conceptions générales de dispositif qui utili- sent la fonctionnalité de l'invention. L'invention peut s'implémenter avantageusement sous forme de programme ou de circuit ou d'une combinaison de ces deux solutions. De façon générale, le principe de l'invention qui consiste à prévoir l'unité de codage 130 (figure 1) permet une transformation des données d'entrée Xn en données codées Xn' qui représente un code de conservation de fuite, moins sensible aux attaques DPA. En d'autres termes, le code contenu dans le mot de données codé Xn' ne présente pratiquement pas de fuite au sens cryptographique. Cela est synonyme de ce qu'aucune information de canal latéral ou seulement peu de telles informations sont contenues dans les mots de données codés. C'est pourquoi un attaquant du dispositif 100 selon l'invention ne pourra pas atteindre les données traitées dans l'unité 120 par des moyens connus tels que par exemple la saisie du rayonnement électromagnétique du dispositif 100 ou celle de la consommation d'énergie électrique ou analogue car il ne pourra obtenir que relativement peu, voire pas d'information concernant les données traitées dans l'unité 120. Comme indiqué ci-dessus, l'unité de traitement 120 exé- cute par exemple une partie d'un procédé cryptographique ou algo- rithme ou encore un procédé cryptographique complet, par exemple un codage ou un décodage, par exemple selon la norme cryptographique AES. Cela permet une mise à l'échelle simple du principe de l'invention. Pour faire des économies selon un autre développement de l'invention, les composants 110, 120, 130 ne sont prévus que pour des unités de traitement concernant tout particulièrement la sécurité pour un algorithme cryptographique. En variante, toutes les étapes de traitement d'un dispositif de traitement de données peuvent être durcies par le principe de l'invention. Par comparaison aux contre-mesures usuelles contre les étapes de canal latéral, les contre-mesures proposées par l'invention et qui reposent sur le codage ont différents avantages : 1. les contre-mesures reposant sur un codage sont de nature déter- ministique de sorte qu'elles nécessitent des moyens de calcul relativement réduits et notamment pas l'existence de générateur aléatoire ou de générateur pseudo-aléatoire, 2. l'implémentation sous la forme d'un circuit intégré en utilisant des cellules CMOS usuelles est simplement possible, 3. grâce à l'indépendance vis-à-vis des nombres aléatoires, un test du dispositif selon l'invention 100 est beaucoup plus simple que les tests de dispositif et de procédé utilisant des nombres aléatoires, 4. les contre-mesures reposant sur le procédé de l'invention nécessi- tent pour leur implémentation relativement peu de surfaces de puce, c'est-à-dire peu de codes complexes à réaliser par l'unité de codage 130, 5. le principe selon l'invention s'applique avantageusement à des composants séparés d'un dispositif à protéger ou à l'ensemble du dispositif, 6. l'invention s'utilise de manière modulaire. On peut avoir par exemple un registre de mémoire durci vis-à-vis d'une attaque DPA sous la forme du dispositif 100 selon l'invention si l'unité de traitement 120 est par exemple un registre de mémoire R1, simple, c'est-à-dire usuel. Dans ce cas, la configuration 100 selon la figure 1 sera modulaire et pourra s'utiliser en très grand nombre pour un dispositif à protéger. Les moyens de l'invention reposant sur le codage élimi- nent ou évitent dans une très large mesure les fuites d'informations par les canaux latéraux. Selon un autre développement avantageux, le code est réalisé pour permettre une correction partielle ou totale d'erreur dans les mots de données codés et qui sont faussés, par exemple au cours d'une attaque par défaut. Cela peut se faire par exemple par l'adjonction d'autres bits qui augmentent la redondance. Selon un autre développement avantageux, l'unité de traitement 120 contrôle un ou plusieurs mots de données codés Xn' pour voir si des mots de données valables ont été utilisés dans le sens du code appliqué par l'unité de codage. Un tel contrôle peut se faire dans la configuration de la figure 6 à côté de l'unité 120 également dans l'unité 140. Par exemple dans le cas d'un codage par l'unité de codage 130 qui vérifie un poids constant de Hamming par rapport à un objet (par exemple tous les mots de données codés Xn' ont un poids de Hamming constant) pour vérifier l'unité de traitement 120, pour déter- miner si le mot de données codé Xn' fourni présente effectivement le poids de Hamming concerné. Dans la négative, on peut en conclure que par exemple une attaque par injection de défaut a été appliquée au dispositif 100 et dans le cadre de cette attaque, des mots de code intentionnellement faux de l'attaquant ont été injectés par exemple dans la liaison entre les composants 130 et 120 pour permettre une attaque DPA la plus efficace. Le contrôle selon l'invention des mots de données codés Xn', par exemple dans l'unité 120 ou 160, permet d'éviter cette situation. Selon un développement avantageux, le contrôle décrit ci-dessus peut se faire par exemple par un test d'apparentement des mots de données codés.15 NOMENCLATURE 100 Dispositif de traitement de données 100a Dispositif de traitement de données 110 Interface d'entrée 120 Unité de traitement 120a Variante de l'unité de traitement 120b Variante de l'unité de traitement 130 Unité de codage 140 Unité de décodage 150 Interface de sortie 200, 210, 220 Etapes d'un ordinogramme 2000 Carte à puce 2002 Interface 3000 Support de données/clé USB 3002 Moyen de raccordement de la clé USB a Mode de codage Rn Fuite de bits 51, S2, S3 Colonnes d'un tableau de codage x 1, x2, x3, x4 Bits d'un mot de données X Données d'entrée Xn Mot de données Xri' Mot de données codé Yn Mot de données codé et traité30 REVENDICATIONS1°) Dispositif (100) pour traiter des données, le dispositif (100) comportant une interface d'entrée (110) pour recevoir des données d'entrée (X) et une unité de traitement (120) pour traiter les données, dispositif (100) caractérisé par - une unité de codage (130) pour coder les mots de données (Xn) re- çus comme données d'entrée (X) à l'interface (110) et obtenir des mots de données codés (Xn'), l'unité de codage (130) codant les mots de données (Xn), une partie prédéfinie de tous les mots de données codés (Xn'), de préférence au moins environ 50 `)/0 de tous les mots de données codés (Xn') ayant entre eux une distance de Hamming et/ou un poids de Hamming prédéfinis, et l'unité de traitement (120) traite les mots de données codés (Xn'). 2°) Dispositif (100) selon la revendication 1, caractérisé en ce que l'unité de traitement (120) comporte au moins un registre (R1, R2) qui, au moins de temps en temps, mémorise au moins un mot de données codé (Xn') et/ou une unité cryptographique (124) pour exécuter au moins une partie d'un procédé cryptographique. 3°) Dispositif (100) selon la revendication 1, caractérisé en ce que l'unité de codage (130) code les mots de données (Xn) en ajoutant un nombre prédéterminé de bits (Rn) à chaque mot de données (Xn). 4°) Dispositif (100) selon la revendication 3, caractérisé en ce que l'unité de codage (130) sélectionne le nombre prédéfini de bits à ajouter (Rn) pour que la partie prédéfinie de tous les mots de données codés (Xn') présente entre eux la distance de Hamming prédéfinie et/ou le poids de Hamming prédéfinis.355°) Dispositif (100) selon la revendication 1, caractérisé en ce que l'unité de codage (130) associe dans la colonne S2 du tableau ci-après les mots de données indiqués (Xn) de façon que dans la ligne corres- pondante de la colonne S3 du tableau, soient associés les mots de don- nées codés (Xn') indiqués : S2 S3 (0,0,0,0) (0,0,0,0,0,1,1) (0,0,0,1) (0,0,0,1,0,0,1) (0,0,1,0) (0,0,1,0,0,0,1) (0,0,1,1) (0,0,1,1,0,0,0) (0,1,0,0) (0,1,0,0,0,0,1) (0,1,0,1) (0,1,0,1,0,0,0) (0,1,1,0) (0,1,1,0,0,0,0) (0,1,1,1) (1,0,0,0,1,0,0) (1,0,0,0) (1,0,0,0,0,0,1) (1,0,0,1) (1,0,0,1,0,0,0) (1,0,1,0) (1,0,1,0,0,0,0) (1,0,1,1) (0,1,0,0,1,0,0) (1,1,0,0) (1,1,0,0,0,0,0) (1,1,0,1) (0,0,1,0,1,0,0) (1,1,1,0) (0,0,0,1,1,0,0) (1,1,1,1) (0,0,0,0,1,1,0) 6°) Dispositif (100) selon la revendication 1, caractérisé en ce qu' il est au moins en partie sous la forme d'un circuit intégré, de préférence en technique CMOS. 7°) Procédé de gestion d'un dispositif (100) de traitement de données, le dispositif (100) ayant une interface d'entrée (110) pour recevoir des données d'entrée (X) et une unité de traitement (120) pour traiter les données, procédé caractérisé en ce qu'- à l'aide d'une unité de codage (130), on code (200) les mots de données (Xn) reçus comme données d'entrée (X) par l'interface d'entrée (110) pour obtenir des mots de données codés (Xn'), - l'unité de codage (130) codant les mots de données (Xn) de façon, * qu'une partie prédéfinie de tous les mots de données codés (Xn'), de préférence au moins environ 50 % de tous les mots de données codés (Xn') présentent entre eux une distance de Hamming et/ou un poids de Hamming prédéfinis, et * l'unité de traitement (120) traite les mots de données codés (Xn'). 8°) Procédé selon la revendication 7, caractérisé en ce que l'unité de traitement (120) a au moins un registre (R1, R2) qui enregistre au moins périodiquement un mot de données codé (Xn') et/ou une unité cryptographique (124) qui exécute au moins une partie d'un procédé cryptographique. 9°) Procédé selon la revendication 7, caractérisé en ce que l'unité de codage (130) code les mots de données (Xn) en ajoutant un nombre prédéfini de bits (Rn) à chaque mot de données (Xn). 10°) Procédé selon la revendication 9, caractérisé en ce que l'unité de codage (130) sélectionne le nombre prédéfini de bits à ajouter (Rn) pour que la partie prédéfinie de tous les mots de données codés (Xn') présente entre eux une distance de Hammings et/ou un poids de Hamming prédéfinis. 11°) Procédé selon la revendication 7, caractérisé en ce que l'unité de codage (130) associe aux mots de données (Xn) de la colonne S2 du tableau ci-après le mot de données codé (Xn') indiqué dans la ligne correspondante de la colonne S3 du tableau :35S2 S3 (0,0,0,0) (0,0,0,0,0,1,1) (0,0,0,1) (0,0,0,1,0,0,1) (0,0,1,0) (0,0,1,0,0,0,1) (0,0,1,1) (0,0,1,1,0,0,0) (0,1,0,0) (0,1,0,0,0,0,1) (0,1,0,1) (0,1,0,1,0,0,0) (0,1,1,0) (0,1,1,0,0,0,0) (0,1,1,1) (1,0,0,0,1,0,0) (1,0,0,0) (1,0,0,0,0,0,1) (1,0,0,1) (1,0,0,1,0,0,0) (1,0,1,0) (1,0,1,0,0,0,0) (1,0,1,1) (0,1,0,0,1,0,0) (1,1,0,0) (1,1,0,0,0,0,0) (1,1,0,1) (0,0,1,0,1,0,0) (1,1,1,0) (0,0,0,1,1,0,0) (1,1,1,1) (0,0,0,0,1,1,0)