FR 2952735 A1 20110520 FR 0958141 A 20091118 B9934 - 09-RO-252 1 PROCÉDÉ ET DISPOSITIF DE DÉTECTION D'ATTAQUES PAR INJECTION DE FAUTES Domaine La présente invention concerne un procédé et un dispositif de détection d'attaques par injection de fautes, et en particulier un procédé et un dispositif pour assurer une détection sur la base de signatures. Etat de l'art antérieur Les circuits intégrés peuvent comprendre des circuits qui sont considérés comme sensibles du point de vue de la sécurité des données qu'ils manipulent, comme des clés d'authen- tification, des signatures, etc., ou du point de vue des algorithmes qu'ils utilisent, comme des algorithmes de chiffrement ou de déchiffrement. On souhaite que de telles informations restent secrètes ce qui signifie qu'elles ne doivent pas être communiquées ou être détectables par des tiers ou par des circuits non autorisés. Un procédé courant de piratage d'informations mani- pulées par un circuit intégré consiste à détecter les zones du circuit qui sont utilisées pendant le traitement de ces informations. Pour cela, le circuit est activé ou placé dans un environnement fonctionnel et des paquets de données à coder sont introduits en entrée. Pendant le traitement des données, la B9934 - 09-RO-252 2 surface du circuit intégré est balayée par un laser pour injecter des fautes dans le fonctionnement du circuit. En analysant en parallèle les sorties du circuit, on peut déterminer les zones du circuit qui traitent les données. Après avoir localisé ces zones, le pirate peut concentrer des attaques sur ces zones afin de déterminer les données secrètes qui sont traitées. Les signatures assurent un moyen de protection d'un circuit contre des attaques par injection de fautes. Une signature est générée sur la base d'une ou plusieurs valeurs de données qui vont être utilisées par un algorithme. Une signature est ensuite générée sur la base des mêmes valeurs de données après leur utilisation par l'algorithme. Une différence entre les deux signatures va indiquer la présence d'une attaque. Une fois que le circuit de détection a détecté une telle attaque, il peut déclencher une contre-mesure, comme par exemple la remise à zéro du circuit et/ou l'incrémentation d'un compteur, ce qui rend le circuit intégré inactif en permanence une fois qu'un certain nombre de fautes ont été détectées. Des attaques par canaux cachés sont un type différent d'attaques mettant en oeuvre par exemple une mesure de consommation d'énergie d'un circuit. Un brouillage assure un moyen de protection d'un circuit contre des attaques par canaux cachés. Le brouillage implique l'altération, de façon non destructive, des entrées d'un algorithme en utilisant une variable pseudo-aléatoire. Il serait souhaitable de prévoir des circuits dans lesquels un même groupe de valeurs de données peut être utilisé pour générer des signatures pour détecter des attaques par injection de fautes et être brouillé pour rendre plus difficile des attaques par canaux cachés. Cependant, on rencontre des difficultés pour mettre en oeuvre des circuits qui combinent effectivement ces fonctions. B9934 - 09-RO-252 Résumé Un objet de la présente invention est de traiter au moins partiellement un ou plusieurs problèmes de l'art antérieur. Selon un aspect de la présente invention, on prévoit un procédé de détection d'une attaque par injection de fautes, comprenant : fournir une pluralité de valeurs de brouillage ; générer un premier ensemble d'éléments de données comprenant un premier groupe d'éléments de données et au moins un élément de données supplémentaire généré en appliquant une fonction OU-Exclusif entre au moins un élément de données du premier groupe et au moins une des valeurs de brouillage ; générer un deuxième ensemble d'éléments de données correspondant à la fonction OU-Exclusif entre chaque élément de données du premier ensemble et l'une sélectionnée de la pluralité de valeurs de brouillage ; générer une première signature en réalisant une opération commutative entre chacun des éléments de données du premier ensemble ; générer une deuxième signature en réalisant ladite opération commutative entre chacun des éléments de données du deuxième ensemble ; et comparer les première et deuxième signatures pour détecter une attaque par injection de fautes. Selon un mode de réalisation, la génération dudit au moins un élément de données supplémentaire comprend la génération d'une pluralité de groupes supplémentaires d'éléments de données en effectuant une opération OU-Exclusif entre chaque élément de données du premier groupe d'éléments de données et chacune de la pluralité de valeurs de brouillage, et la sélection d'au moins une valeur de données d'au moins un groupe supplémentaire pour former ledit au moins un élément de données supplémentaire. Selon un autre mode de réalisation, la génération dudit au moins un groupe supplémentaire d'éléments de données comprend en outre la réalisation d'une fonction OU-Exclusif entre chaque élément de données du premier groupe d'éléments de données et chaque combinaison de deux des valeurs de brouillage. 3 B9934 - 09-RO-252 4 Selon un autre mode de réalisation, le deuxième ensemble d'éléments de données est généré en brouillant chaque élément de données du premier ensemble en réalisant une fonction OU-Exclusif entre chaque élément de données du premier ensemble et ladite une sélectionnée de la pluralité de valeurs de brouillage. Selon un autre mode de réalisation, le deuxième ensemble d'éléments de données est généré en brouillant le premier groupe de valeurs de données pour générer un groupe brouillé d'éléments de données en réalisant une fonction OU-Exclusif entre chaque élément de données du premier groupe et ladite une sélectionnée de la pluralité de valeurs de brouillage, et en réalisant une fonction OU-Exclusif entre au moins un élément de données et ladite au moins une des valeurs de brouillage. Selon un autre mode de réalisation, la sélection dudit au moins un élément de données supplémentaire comprend, pour chaque valeur de données de chaque groupe brouillé : déterminer si la valeur de données est déjà présente dans le deuxième ensemble ; et si la valeur de données n'est pas déjà présente dans le deuxième ensemble, ajouter la valeur de données au deuxième ensemble. Selon un autre mode de réalisation, la sélection dudit au moins un élément de données supplémentaire comprend en outre : marquer chaque valeur de données ajoutée au deuxième ensemble comme non disponible ; et si la valeur de données est déjà présente dans le deuxième ensemble, déterminer si la valeur de données est marquée comme non disponible, et sinon, marquer la valeur de données comme non disponible, et si oui, ajouter la valeur de données au deuxième ensemble. Selon un autre mode de réalisation, la génération des première et deuxième signatures comprend la réalisation d'une fonction OU-Exclusif entre chaque élément de données de l'ensemble correspondant d'éléments de données. B9934 - 09-RO-252 Selon un autre mode de réalisation, la génération des première et deuxième signatures comprend l'addition entre eux de chacun des élément de données de l'ensemble correspondant d'éléments de données. 5 Selon un autre mode de réalisation, la génération des première et deuxième signatures comprend la multiplication entre eux de chacun des éléments de données de l'ensemble correspondant d'éléments de données. Selon un autre aspect de la présente invention, on prévoit un circuit de détection d'attaques par injection de fautes, comprenant : une mémoire mémorisant une pluralité de valeurs de brouillage ; un bloc de calcul agencé pour : générer un premier ensemble d'éléments de données comprenant un premier groupe d'éléments de données et au moins un élément de données supplémentaire généré en réalisant une fonction OU-Exclusif entre au moins un élément de données du premier groupe et au moins une des valeurs de brouillage ; générer un deuxième ensemble d'éléments de données correspondant à une fonction OU-Exclusif réalisée entre chaque élément de données du premier ensemble et l'une sélectionnée de la pluralité de valeurs de brouillage ; un bloc de signature agencé pour générer une première signature en réalisant une opération commutative entre chacun des éléments de données du premier ensemble, et une deuxième signature en réalisant ladite opération commutative entre chacun des éléments de données du deuxième ensemble ; et un comparateur agencé pour comparer les première et deuxième signatures pour détecter une attaque par injection de fautes. Selon un mode de réalisation, le circuit comprend en outre une unité fonctionnelle agencée pour réaliser une opération sur la base d'au moins une valeur de données du premier ensemble, le bloc fonctionnel étant agencé pour réaliser une opération de chiffrement ou de déchiffrement sur la base d'une clé secrète. B9934 - 09-RO-252 6 Selon un autre aspect de la présente invention, on prévoit un circuit intégré, une carte à puce ou un lecteur de cartes à puce comprenant le circuit susmentionné. Brève description des dessins Les objets, caractéristiques, aspects et avantages susmentionnés de l'invention, et d'autres encore, apparaîtront clairement à la lecture de la description détaillée de modes de réalisation, donnée à titre d'illustration et non de limitation, en faisant référence aux dessins joints, dans lesquels : la figure 1 illustre un circuit de détection d'attaques par injection de fautes et de protection contre des attaques par canaux cachés selon un mode de réalisation ; la figure 2 illustre des valeurs de données utilisées par le circuit de la figure 1 ; la figure 3 illustre un circuit de détection d'attaques par injection de fautes et de protection contre des attaques par canaux cachés selon un mode de réalisation de la présente invention ; la figure 4 illustre un exemple de données utilisées 20 par le circuit de la figure 3 ; la figure 5 illustre un circuit de détection d'une attaque par injection de fautes et de protection contre des attaques par canaux cachés selon un autre mode de réalisation de la présente invention ; la figure 6 illustre un exemple de données utilisées par le circuit de la figure 5 ; la figure 7 illustre des étapes d'un procédé de génération d'un ensemble de données selon un mode de réalisation de la présente invention ; et la figure 8 illustre un dispositif électronique comprenant un circuit de détection d'attaques par injection de fautes selon un mode de réalisation de la présente invention. Description détaillée Dans un but de clarté, seules les étapes et éléments 35 utiles à la compréhension de l'invention ont été représentés 10 15 25 30 B9934 - 09-RO-252 7 dans les figures et vont être décrits en détail. En particulier, le circuit destiné à remettre à zéro un circuit intégré ou à le rendre inactif à la détection d'une ou plusieurs injections de fautes n'a pas été détaillé, l'invention pouvant s'appliquer à tout circuit de la sorte. En outre, les fonctions principales du circuit intégré qui sont protégées n'ont pas été décrites en détail, l'invention étant compatible avec des circuits intégrés mettant en oeuvre toutes sortes de fonctions sensibles, comme des fonctions de chiffrement ou de déchiffrement, ou d'autres fonctions impliquant des données sensibles. La figure 1 illustre un circuit 100 comprenant un module fonctionnel (FUNCTION) 102 qui, par exemple, met en oeuvre un algorithme impliquant des données sensibles, comme une clé de chiffrement ou similaire. Dans le présent exemple, le module 102 reçoit une clé K sur une ligne d'entrée 104. Un groupe de valeurs de données DI à DN est fourni sur une ligne 106 à un bloc de brouillage (BLINDING) 108, qui applique un algorithme de brouillage à ces valeurs sur la base d'une valeur de brouillage R fournie sur une ligne d'entrée 110 au bloc de brouillage 108. La valeur de brouillage R est par exemple une valeur pseudo-aléatoire. Les valeurs de données brouillées DI' à DN' sont ensuite fournies sur une ligne 112 au module fonctionnel 102. Le module fonctionnel 102 met en oeuvre un algorithme qui utilise les valeurs de données brouillées DI' à DN', et fournit en sortie un résultat C, qui pourrait être un bloc de données crypté ou décrypté, ou une autre valeur. Pendant qu'elles sont utilisées par le module fonctionnel 102, les valeurs de données brouillées DI' à DN' sont par exemple mémorisées dans un registre (non représenté en figure 1). A divers stades, pendant l'exécution de l'algorithme par le bloc fonctionnel 102, et/ou à la fin de cette exécution, les valeurs brouillées DI' à DN' sont fournies sur une ligne 114 à un bloc de signature (SIG) 116. Les valeurs de données d'origine DI à DN sont aussi fournies au bloc de signature 116 sur une ligne 118. B9934 - 09-RO-252 8 Le bloc de signature 116 génère une signature S1 sur la base des valeurs de données d'origine D1 à DN, et une signature S2 sur la base des valeurs de données brouillées D1' à DN'. Les signatures S1 et S2 sont ensuite comparées par un comparateur (COMP) 120 qui fournit une sortie sur une ligne de sortie 122 indiquant si les signatures concordent ou non. L'algorithme de brouillage appliqué par le bloc 108 est par exemple la fonction OU-Exclusif (XOR), appliquée entre la valeur de brouillage R et chacune des valeurs de données D1 à DN. Cependant, on rencontre un problème pour choisir une fonction de signature à appliquer aux deux groupes de valeurs de données pour obtenir le même résultat lorsqu'aucune attaque par injection de fautes n'est présente. Par exemple, la figure 2 illustre un exemple de ce problème. La figure 2 illustre, dans une première rangée 200, un exemple de valeurs de données D1 à DN pour le cas où N est égal à 9, et les valeurs D1 à D9 sont égales à 12, 1, 0, 128, 245, 0, 1, 2 et 8 respectivement. En supposant que la fonction de détermination de la signature est une addition de toutes les valeurs de données, la signature de D1 à D9 va être égale à 397. Une deuxième rangée 202 en figure 2 illustre les valeurs de données brouillées D1' à D9', qui, dans cet exemple, sont obtenues en appliquant une opération XOR entre chacune des valeurs de données D1 à D9 et la valeur 01. Ainsi, les valeurs D1' à D9' sont égales à 13, 2, 1, 129, 244, 1, 0, 3 et 9 respectivement. Cependant, la somme des valeurs de données D1' à D9', et donc la signature S2 , est égale à 402, en supposant qu'il n'y a pas de fautes. Ainsi, le processus de signature ne fonctionne pas puisqu'il y a une discordance entre les signatures S1 et S2 bien qu'il n'y ait pas de fautes. La figure 3 illustre un circuit 300 de détection d'une attaque par injection de fautes et de protection contre des attaques par canaux cachés. Le circuit 300 comprend de nombreux éléments identiques à ceux du circuit de la figure 1, et ces éléments ne vont pas être décrits de nouveau en détail. En B9934 - 09-RO-252 9 particulier, ce circuit comprend le module fonctionnel 102, le bloc de brouillage 108, le bloc de signature 116, et le comparateur 120. Le circuit 300 comprend en outre un bloc de pré- brouillage (PRE-BLINDING) 302, qui reçoit sur des lignes d'entrée 304 les valeurs de données DI à DN et sur des lignes d'entrée 306 une pluralité de valeurs de brouillage RI à RL. Le bloc de pré-brouillage 302 génère un ensemble de données constitué de valeurs de données DI à DM. L'ensemble DI à DM comprend les valeurs de données DI à DN, et une valeur de données supplémentaire DM, ou une pluralité de valeurs de données supplémentaires DN+1 à Dm. Les valeurs de données DI à DM sont fournies au bloc de brouillage 108 sur des lignes 308, et au bloc de signature 116 sur des lignes 310. L'ensemble DI à DM est généré de telle sorte que lorsqu'une fonction de brouillage XOR est appliquée par le bloc 108, le résultat est une permutation des valeurs de données DI à DM, sans introduire de nouvelles valeurs, et donc le bloc de signature 116 est capable de générer une signature valide en utilisant toute fonction commutative. Cela est obtenu par exemple comme on va le décrire maintenant plus en détail en faisant référence à la figure 4. La figure 4 illustre une table contenant un exemple des valeurs de données de l'ensemble de données DI à DM. La rangée supérieure de la table représente les valeurs de données DI à DN, comprenant dans ce cas neuf valeurs DI à D9, égales à l'équivalent binaire des valeurs décimales 12, 1, 0, 128, 245, 0, 1, 2 et 8 respectivement. Ces valeurs de données vont être appelées groupe A. Dans cet exemple, on supposera que les valeurs de brouillage RI à RL comprennent deux valeurs RI et R2, égales à l'équivalent binaire des valeurs décimales 01 et 02 respectivement. Le bloc de pré-brouillage 302 génère un nouveau groupe de valeurs de données "A+1" égales au XOR entre chacune des valeurs du groupe de données A et la première valeur de B9934 - 09-RO-252 10 brouillage 01 (le symbole "+" représente dans la présente demande la fonction XOR). Cela est représenté dans la deuxième rangée de la table en figure 4, et les valeurs sont égales à 13, 0, 1, 129, 244, 1, 0, 3 et 9. Le bloc de pré-brouillage génère aussi un nouveau groupe de valeurs de données "A+2" égales au XOR entre chacune des valeurs du groupe de données A et la deuxième valeur de brouillage 02. Cela est représenté dans la troisième rangée de la table en figure 4, et les valeurs sont 14, 3, 2, 130, 247, 2, 3, 0 et 10. Dans l'exemple de la figure 4, un groupe supplémentaire de valeurs de données "(A+1)+2" est aussi généré. Cela est équivalent à "A+3", et est égal au XOR entre chacune des valeurs du groupe de données A et la valeur 03. Les valeurs, représentées dans la quatrième rangée de la figure 4 sont 15, 2, 3, 131, 246, 3, 2, 1 et 11. Ce groupe n'est pas toujours généré, puisque dans certains modes de réalisation, seul un ensemble de valeurs de données, correspondant à chacune des valeurs de brouillage R1 à RL, est généré. Par exemple, des rangées correspondant à chaque combinaison possible de deux des valeurs de brouillage R1 à RL sont aussi générées, sauf si cette combinaison est équivalente à une valeur de brouillage d'une rangée déjà présente. Dans l'exemple de la figure 4, (A+1)+2 = A+3 n'est équivalent à aucune des rangées précédemment générées. Par contre, si une valeur de brouillage supplémentaire R2 = 03 était aussi utilisée, seules les rangées A+1, A+2 et A+3 seraient générées, puisque (A+1)+3 est équivalent à A+2, (A+1)+2 est équivalent à (A+3), et (A+2)+3 est équivalent à A+1. La table de la figure 4 représente ainsi les valeurs D1 à DM, qui sont fournies sur les lignes 308 et 310 au bloc de brouillage 108 et au bloc de signature 116, respectivement. Lorsqu'un brouillage est appliqué à cette table, le résultat est simplement une permutation des rangées, sans ajout de nouvelles valeurs. En particulier, si la valeur de brouillage R, par exemple choisie de façon pseudoaléatoire parmi les valeurs R1 et B9934 - 09-RO-252 11 R2, est égale à 01, la première rangée devient A+1, tandis que la deuxième rangée devient (A+1)+1, qui est égal à A. De façon similaire, la troisième rangée devient (A+2)+1, qui est égal à A+3, et la quatrième rangée devient égale à (A+3)+1, qui est égal à A+2. Les versions brouillées des valeurs de données DI à DN sont utilisées par le module fonctionnel 102. Dans l'exemple de la figure 4, en fonction du fait que la valeur de brouillage est 0 ou 1, ces valeurs brouillées vont être celles de la deuxième ou de la troisième rangée. La figure 5 illustre un circuit 500 de détection d'une attaque par injection de fautes et de protection contre des attaques par canaux cachés. Le circuit 500 comprend de nombreux éléments identi- ques à ceux du circuit de la figure 1, et ces éléments ne seront pas décrits de nouveau en détail. Par rapport au mode de réalisation de la figure 1, le mode de réalisation de la figure 5 comprend en plus une ligne 502 destinée à fournir les valeurs de données DI à DN à un bloc supplémentaire de pré-signature (PRE-SIGN) 504, et un bloc supplémentaire de pré-signature (PRESIGN) 506 placé entre le module fonctionnel 102 et le bloc de signature 116, pour traiter les valeurs de données brouillées avant la génération de signature. Le fonctionnement du circuit de la figure 5 va maintenant être décrit en référence à la figure 6. La figure 6 illustre le même exemple numérique que la figure 4 dans une application au circuit de la figure 5. Le bloc de présignature 504 génère la même table de valeurs DI à DM que celle générée en figure 4 (pas illustrée de nouveau), ce qui ne va pas être décrit de nouveau en détail. Le bloc de présignature 506 génère par contre une nouvelle table sur la base des valeurs de brouillage DI' à DN'. Les rangées de la table sont générées de la même façon que pour la table de la figure 4, autrement dit en appliquant systématiquement chacune des valeurs de brouillage. On suppose dans cet exemple de la figure 6 que la B9934 - 09-RO-252 12 valeur de brouillage reçue sur la ligne 110 est égale à 02 et donc que les valeurs D1' à DN' correspondent au XOR de chacune des valeurs D1 à DN avec la valeur 02. Ainsi, la première rangée de la table de la figure 6, qui est notée A', est égale à A+2, ce qui est équivalent à la troisième rangée de la table de la figure 4. La deuxième rangée de la table de la figure 6 est égale à A'+1, qui est équivalent à A+3, autrement dit la quatrième rangée de la table de la figure 4. La troisième rangée de la table de la figure 6 est égale à A'+2, qui est équivalent à A, autrement dit la première rangée de la table de la figure 4. Finalement, la quatrième rangée de la table de la figure 6 est égale à (A'+1)+2, qui est équivalent à A+1, en d'autres termes la deuxième rangée de la table de la figure 4. Ainsi, on a montré que les valeurs de la table de la figure 6 sont une permutation des valeurs de la table de la figure 4, et donc que le bloc de signature 116 peut détecter valablement des fautes en appliquant un algorithme de signature commutatif aux deux ensembles de valeurs de données. Un avantage du mode de réalisation de la figure 5, par rapport au mode de réalisation de la figure 3, est qu'il rend plus difficile l'utilisation d'attaques par fautes multiples. En particulier, alors qu'une attaque par fautes multiples ciblant la figure 3 pourrait attaquer le bloc de pré-brouillage 302 et le bloc fonctionnel 102, en figure 4 une telle attaque devrait cibler les deux blocs de présignature 504 et 506 en plus du bloc fonctionnel 102. La signature appliquée par le bloc 116 de la figure 3 ou de la figure 5 est une fonction commutative de sorte que l'ordre des valeurs de données n'affecte pas le résultat. Des exemples de telles fonctions sont la fonction XOR appliquée entre chacune des valeurs D1' à DM', ou la somme de toutes les valeurs D1' à DM', ou la multiplication de toutes les valeurs D1' à DM'. A titre de variante, on pourrait utiliser une combinaison ou une variante d'une ou plusieurs de ces fonctions. B9934 - 09-RO-252 13 Le nombre de valeurs supplémentaires DN+1 à DM présentes dans l'ensemble DI à DM peut être réduit en supprimant des valeurs qui sont répétées. Par exemple, dans l'exemple de la figure 4, les valeurs "0" et "1" de la deuxième rangée pourraient être entièrement supprimée sans réduire l'efficacité de la comparaison de signature. Un exemple d'une technique pour déterminer quelles valeurs de données peuvent être ajoutées aux valeurs initiales DI à DN dans l'ensemble DI à DM va maintenant être décrit en référence à l'organigramme de la figure 7. La figure 7 représente un procédé de génération des valeurs de données DN+1 à D. Dans cet exemple, Dn représente la n-ième valeur du groupe DI à DN, tandis que Rp désigne la p-ième valeur de l'ensemble de valeurs RI à Rp, dans lequel L premières valeurs RI à RL constituent l'ensemble de valeurs de brouillage dans lequel R est sélectionné, et les valeurs RL+1 à Rp sont les combinaisons supplémentaires, égales aux résultats des calculs XOR suivants: RI+R(L+1), R1+R(L+2),..., RI+Rp, R2+R(L+1), R2+R(L+2),..., R2+Rp,... jusqu'à R(L-I)+RL. Toute valeur répétée dans l'ensemble RI à Rp peut être supprimée afin que chaque valeur n'apparaisse qu'une fois, ce qui permet de réduire le temps de traitement. La lettre S est utilisée pour désigner l'ensemble de valeurs DI à DM, qui comprend initialement seulement les valeurs DI à DN. A une première étape S1 du procédé, les variables n et 25 p sont toutes deux mises égales à un. Ensuite, à l'étape S2, une variable Q est mise égale à Dn XOR Rp. Initialement, cela sera égal au XOR de DI et de la première valeur de brouillage RI. Dans une étape suivante S3, on détermine si Q est un 30 élément de S, autrement dit si cette valeur est présente parmi les valeurs DI à DN. Si ce n'est pas le cas, l'étape suivante est S4, dans laquelle Q est ajoutée à l'ensemble S, et un marquage est associé à la valeur Q indiquant que cette valeur est non disponible. Le marquage pourrait être par exemple un B9934 - 09-RO-252 14 drapeau associé à cette valeur dans une mémoire, ou tout autre moyen indiquant que cette valeur est non disponible. Si on détermine à l'étape S3 que Q est un élément de S, on vérifie à une étape S5 si cette valeur de données dans S est disponible. Autrement dit, on vérifie si cette valeur a déjà été marquée comme non disponible. Si elle n'est pas disponible, l'étape suivante est l'étape S4, comme cela a été décrit précédemment, dans laquelle Q est ajoutée à l'ensemble S, et marquée comme non disponible. Cependant, si à l'étape S5, on détermine que la valeur de données dans S n'a pas été marquée comme non disponible, l'étape suivante est S6, dans laquelle la valeur de données Q n'est pas ajoutée à s, mais au lieu de cela, cette valeur dans S est marquée comme non disponible. Après les étapes S4 et S6, l'étape suivante est S7, dans laquelle on détermine si p est égal à P. Si ce n'est pas le cas, p est incrémenté à l'étape S8, et le procédé revient à l'étape S2. Cependant, si à l'étape S7, on détermine que p est égal à p, l'étape suivante est S9. A l'étape S9, on détermine si n est égal à N. Si ce n'est pas le cas, n est incrémenté à l'étape S10, et le procédé revient à l'étape S2. Cependant, si n est égal N, le processus se termine. La figure 8 illustre un dispositif électronique 800 contenant un microprocesseur 802, un bloc de mémoire 804, et une ligne d'entrée 806, qui fournit des valeurs d'entrée au micro- processeur 802. Le microprocesseur 802 fournit des valeurs de sortie sur une ligne de sortie 808. En outre, un circuit de détection de fautes 810, comprenant par exemple le bloc de pré- brouillage 302 ou les blocs de pré-signature 504 et 506, un bloc de signature 116 et un comparateur 120 comme décrits précédemment, est prévu couplé à une sortie du microprocesseur. Ce circuit 810 fournit un signal d'alarme sur une ligne de sortie 812 renvoyée vers le microprocesseur 802 si une attaque par injection de fautes est détectée en raison d'une discordance entre les signatures. Le signal d'alarme déclenche, par exemple, B9934 - 09-RO-252 15 la remise à zéro du microprocesseur 802 et/ou incrémente un compteur (non représenté en figure 8) qui va désactiver de façon permanente le microprocesseur une fois qu'une certaine valeur de comptage aura été atteinte. Le dispositif électronique 800 est par exemple une carte à circuit intégré, comme par exemple une carte à puce, un lecteur de carte à puce, comme par exemple un terminal de paiement par carte de crédit, ou un boîtier décodeur, un disque dur pour un ordinateur personnel ou un ordinateur portable, un ordinateur personnel ou un ordinateur portable, une machine de vente ou un autre dispositif manipulant des informations sensibles. Un avantage des modes de réalisation décrits ici est que, en générant un ensemble de valeurs de données D1 à DM de la façon décrite ici pour la génération de signature, le résultat du brouillage de ces valeurs en utilisant une opération XOR va entraîner une permutation de ces valeurs. Cela conduit à un vaste choix d'algorithmes de signature qui peuvent être utilisés pour produire des signatures comparables pour la détection d'attaques par injection de fautes. Bien qu'on ait décrit un certain nombre de modes de réalisation particuliers de la présente invention, l'homme de l'art remarquera que de nombreuses variantes et modifications peuvent être appliquées. Par exemple, l'homme de l'art remarquera que les modes de réalisation décrits ici pourraient être appliqués à une grande gamme de circuits dans lesquels on utilise une variation de signature pour détecter des fautes. En outre, l'homme remarquera que bien qu'on ait décrit 30 des modes de réalisation dans lesquels l'ensemble élargi D1'...DM' comprend de nombreuses valeurs supplémentaires DN+1' à DM', dans certains cas, une seule ou seulement quelques valeurs supplémentaires sont prévues. En outre, les modes de réalisation décrits ici pour-35 raient être mis en oeuvre par du logiciel, du matériel ou une B9934 - 09-RO-252 16 combinaison des deux. En outre, les caractéristiques décrites en relation avec les divers modes de réalisation pourraient être combinées de façon quelconque dans des variantes de réalisation. REVENDICATIONS1. Procédé de détection d'une attaque par injection de fautes, comprenant les étapes suivantes : fournir une pluralité de valeurs de brouillage (R1 à RL) ; générer un premier ensemble d'éléments de données (D1...DM) comprenant un premier groupe d'éléments de données (D1 à DN) et au moins un élément de données supplémentaire généré en réalisant une fonction OU-Exclusif entre au moins un élément de données du premier groupe et au moins une des valeurs de brouillage ; générer un deuxième ensemble d'éléments de données (D1'...DM') correspondant à la fonction OU-Exclusif entre chaque élément de données du premier ensemble et l'une sélectionnée (R) de la pluralité de valeurs de brouillage ; générer une première signature (S1) en réalisant une opération commutative entre chacun des éléments de données du premier ensemble ; générer une deuxième signature (S2) en réalisant ladite opération commutative entre chacun des éléments de 20 données du deuxième ensemble ; et comparer les première et deuxième signatures pour détecter une attaque par injection de fautes. 2. Procédé selon la revendication 1, dans lequel la génération dudit au moins un élément de données supplémentaires 25 comprend la génération d'une pluralité de groupes supplémentaires d'éléments de données en réalisant une fonction OU-Exclusif entre chaque élément de données du premier groupe d'éléments de données (A') et chacune de la pluralité de valeurs de brouillage, et la sélection d'au moins une valeur de données 30 d'au moins un groupe supplémentaire pour former ledit au moins un élément de données supplémentaire. 3. Procédé selon la revendication 2, dans lequel la génération dudit au moins un groupe supplémentaire d'éléments de données comprend en outre la réalisation d'un OU-Exclusif entreB9934 - 09-RO-252 18 chacun des éléments de données du premier groupe d'éléments de données et chaque combinaison de deux des valeurs de brouillage. 4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel le deuxième ensemble d'éléments de données (D1'...DM') est généré en brouillant chaque élément de données du premier ensemble en réalisant une fonction OU-Exclusif entre chaque élément de données du premier ensemble et ladite une sélectionnée (R) de la pluralité de valeurs de brouillage. 5. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel le deuxième ensemble d'éléments de données (D1'...DM') est généré en brouillant le premier groupe de valeurs de données (D1...DN) pour générer un groupe brouillé d'éléments de données (D1'...DN') en réalisant une fonction OU-Exclusif entre chaque élément de données du premier groupe et ladite une sélectionnée (R) de la pluralité de valeurs de brouillage, et en réalisant une fonction OU-Exclusif entre au moins un élément de données du groupe brouillé d'éléments de données et ladite au moins une des valeurs de brouillage. 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel la sélection dudit au moins un élément de données supplémentaire comprend, pour chaque valeur de données dans chaque groupe brouillé : déterminer si la valeur de données est déjà présente dans le deuxième ensemble ; et si la valeur de données n'est pas déjà présente dans le deuxième ensemble, ajouter la valeur de données au deuxième ensemble. 7. Procédé selon la revendication 6, dans lequel la sélection dudit au moins un élément de données supplémentaire 30 comprend en outre : marquer chaque valeur de données ajoutée au deuxième ensemble comme non disponible ; et si la valeur de données est déjà présente dans le deuxième ensemble, déterminer si la valeur de données est 35 marquée comme non disponible, et sinon, marquer la valeur deB9934 - 09-RO-252 19 données comme non disponible, et si oui, ajouter la valeur de données au deuxième ensemble. 8. Procédé selon l'une quelconque des revendications 1 à 7, dans lequel la génération des première et deuxième signa- tures comprend la réalisation d'une fonction OU-Exclusif entre chaque élément de données de l'ensemble correspondant d'éléments de données. 9. Procédé selon l'une quelconque des revendications 1 à 7, dans lequel la génération des première et deuxième signa- tures comprend l'addition entre eux de chacun des éléments de données de l'ensemble correspondant d'éléments de données. 10. Procédé selon l'une quelconque des revendications 1 à 9, dans lequel la génération des première et deuxième signatures comprend la multiplication entre eux de chacun des éléments de données de l'ensemble correspondant d'éléments de données. 11. Circuit de détection d'une attaque par injection de fautes, comprenant : une mémoire mémorisant une pluralité de valeurs de 20 brouillage (R1 à RL) ; un bloc de calcul (302, 108, 102) agencé pour : générer un premier ensemble d'éléments de données (D1...DM) comprenant un premier groupe d'éléments de données (D1 à DN) et au moins un élément de données supplémentaire généré en 25 réalisant une fonction OU-Exclusif entre au moins un élément de données du premier groupe et au moins une des valeurs de brouillage ; et générer un deuxième ensemble d'éléments de données (D1'...DM') correspondant au OU-Exclusif entre chacun 30 des éléments de données du premier ensemble et l'une sélectionnée (R) de la pluralité de valeurs de brouillage ; un bloc de signature (116) agencé pour générer une première signature (S1) en réalisant une opération commutative entre chacun des éléments de données du premier ensemble, et une 35 deuxième signature (S2) en réalisant ladite opération commu-B9934 - 09-RO-252 20 tative entre chacun des éléments de données du deuxième ensemble ; et un comparateur agencé pour comparer les première et deuxième signatures pour détecter une attaque par injection de 5 fautes. 12. Circuit selon la revendication 11, comprenant en outre un module fonctionnel (102) agencé pour réaliser une opération sur la base d'au moins une valeur de données du premier ensemble, dans lequel le bloc fonctionnel est agencé 10 pour réaliser une opération de chiffrement et ou déchiffrement basée sur une clé secrète (K). 13. Circuit intégré comprenant le circuit de la revendication 11 ou 12. 14. Carte à puce comprenant le circuit intégré de la 15 revendication 13. 15. Lecteur de cartes à puce comprenant le circuit intégré de la revendication 13.