Brevet FR2948792A1 — publié le 20110204

La présente invention concerne un procédé de traitement cryptographique de données, en particulier protégé contre les attaques par génération de fautes, ainsi qu'un dispositif associé. Dans certains procédés de traitement de données, en particulier dans le cadre du traitement cryptographique de données, on utilise, au sein des algorithmes de traitement, des données qui doivent rester secrètes (telles que par exemple des clés cryptographiques) pour assurer le fonctionnement du système avec la sécurité requise. Ce type de procédé est dès lors la cible d'attaques de la part d'utilisateurs malveillants qui cherchent à déjouer la sécurité du système. Parmi ces attaques, on connaît les attaques du type par génération de fautes qui consistent à perturber tout ou partie de l'exécution normale du procédé de traitement de données (généralement mises en oeuvre par l'exécution d'un programme au sein d'un microprocesseur) afin d'obtenir, en sortie du procédé, des données différentes de celles normalement attendues mais révélatrices d'informations sur les données secrètes utilisées dans l'algorithme (au contraire de ce qui est prévu dans le déroulement sans faute du programme). Il a ainsi été prévu pour lutter contre ce type d'attaques d'ajouter des étapes complémentaires (tel que par exemple la réitération des calculs déjà effectués ou le calcul de la donnée décryptée) afin de vérifier l'exécution sans faute du procédé de traitement de données, comme décrit par exemple dans les demandes de brevet WO 2005/088895, WO 2006/103341 et FR 2 919 739. Dans cette dernière demande de brevet, une donnée découlant d'une première itération du calcul cryptographique est mémorisée pendant la durée de la seconde itération de ce même calcul. En variante, un calcul de décryptage de la donnée issue de la première itération est opéré pour récupérer, a priori, la donnée initiale. Une comparaison est alors menée soit entre les résultats des deux itérations, soit entre des versions compressées de la donnée initiale et de celle décryptée, pour détecter une éventuelle faute d'exécution. Toutefois, ces solutions présentent quelques inconvénients. Entre autres, cette duplication d'opérations (double itération ou cryptage/décryptage) entraîne un surcoût important en temps de calcul pouvant être préjudiciable pour des traitements en temps réel. Par ailleurs, ces solutions ne protègent pas les systèmes des attaques par faute réalisées de façon symétrique sur les deux itérations d'un même calcul. De telles attaques aboutissent à des résultats identiques pour les deux itérations, et donc à une comparaison positive. Enfin, ces techniques restent génériques car elles s'appliquent à l'ensemble d'un algorithme cryptographique, tel que le DES (Data Encryption Standard), sans tenir compte des transformations composant cet algorithme. Dans ce contexte, l'invention propose notamment un procédé de traitement cryptographique de données comprenant au moins une transformation d'une donnée d'entrée en une donnée de résultat, le procédé comprenant une étape de vérification de ladite transformation, dans lequel la vérification de la transformation comprend les étapes suivantes: - obtention d'une première donnée compressée par application d'une opération de compression sur ladite donnée de résultat; - obtention d'une deuxième donnée compressée par application de l'opération de compression sur ladite donnée d'entrée; - détermination d'une donnée de vérification par application de ladite transformation sur ladite deuxième donnée compressée et; - comparaison de ladite donnée de vérification et de ladite première donnée compressée. Les données compressées sont généralement des condensats ou empreintes ("digest value") issues d'une fonction de hachage. Selon l'invention, on opère la vérification des traitements à l'aide des condensats de données. Le condensat du résultat de la transformation est vérifié au regard du résultat de la transformation appliquée au condensat de la donnée initiale. Les ressources utilisées pour ces calculs de vérification manipulent des condensats et sont donc réduites: temps de calcul, espace mémoire 5 occupé. Par ailleurs, le procédé selon l'invention s'applique, au sein d'un algorithme cryptographique, transformation par transformation. On peut donc aisément adopter des opérations de compression spécifiques à chaque transformation. Le taux de détection des erreurs ainsi que le temps nécessaire 10 à cette détection pour chacune de ces opérations n'en est que meilleure. La présente invention s'applique en particulier au cryptage AES (Advanced Encryption Standard). En fonction du résultat de la comparaison, on peut donc détecter une faute dans l'exécution de la transformation et donc potentiellement une attaque 15 par faute sur le traitement cryptographique. Dans ce cas, au moins une erreur est générée lorsque ladite donnée de vérification et ladite première donnée compressée sont distinctes. Dans un mode de réalisation, ladite opération de compression comprend la multiplication de composantes de la donnée de résultat ou 20 d'entrée. La nature multiplicative de l'opération de compression est particulièrement bien adaptée à la vérification de transformations non linéaires de type multiplicatives, et notamment faisant intervenir des puissances, comme par exemple la transformation MIT (Multiplicative inverse Transformation) 25 composant l'opération SubByte d'AES. Selon une caractéristique particulière, la donnée compressée est le produit de toutes les composantes de la donnée de résultat ou d'entrée: DV= fJxi , où DV est la donnée compressée, (x;); sont les composantes de la donnée de résultat ou d'entrée. 30 En particulier, lesdites composantes nulles sont corrigées de sorte à prendre la valeur "1" dans ledit produit, par exemple en ajoutant une fonction dirac de la composante et valant 1 pour une composante nulle, et 0 autrement. Ainsi, on peut également détecter les fautes appliquées sur des composantes nulles ou générant des composantes nulles. On améliore donc la détection de fautes. Selon une caractéristique particulière, l'étape de vérification comprend la vérification qu'à une composante nulle de la donnée d'entrée ou de résultat correspond une composante nulle de la donnée de résultat ou d'entrée. On vérifie ici l'ensemble des cas non couverts par la nature multiplicative de l'opération de compression, en particulier lorsqu'une composante d'entrée ou de résultat est nulle. L'ensemble des fautes est ainsi détecté. Cette vérification peut avantageusement avoir lieu antérieurement auxdites obtentions, détermination et comparaison pour réduire les traitements en évitant ces étapes si une faute est déjà détectée. Un exemple de vérification pour la transformation MIT (qui laisse uniquement 0 invariant) consiste en l'utilisation d'une formule sommant (OU Exclusif), deux à deux, les diracs (valant 1) des composantes d'entrée et de résultat. Cette vérification parallèle permet de simplifier l'expression et le calcul de l'opération de compression. Notamment, on exclut, dudit produit, les composantes nulles. Dans un mode de réalisation, ladite opération de compression est de nature multiplicative ou additive sur des composantes de la donnée de résultat ou d'entrée, en fonction de la linéarité de ladite transformation. Par exemple, on choisit une opération de compression de nature multiplicative lorsque la transformation est non linéaire multiplicative, et une opération de compression de nature additive lorsque la transformation est linéaire. Dans un mode de réalisation de l'invention, on duplique lesdites étapes d'obtention, détermination et comparaison avec au moins un deuxième opération de compression. On rappelle que ces étapes opèrent sur les condensats. Leur duplication reste ainsi toujours favorable au regard de la double itération des techniques de l'art antérieur. Cette configuration permet d'améliorer la détection des fautes en cas de fautes multiples identiques, par exemple des fautes affectant deux octets du bloc AES. La deuxième opération est notamment différente de la première opération de compression. On voit qu'au travers de cette duplication, on utilise conjointement les deux types de condensats qui se complètent. En particulier, dans un mode de réalisation, ladite deuxième opération de compression est de la forme DV =fl(xl +8o(x,))z+1 où DV est la donnée compressée, (x;); sont les composantes de la donnée de résultat ou d'entrée. Cette configuration s'applique par exemple à la transformation MIT d'AES. On note ici que la mise en oeuvre de la vérification des composantes nulles telle que décrite ci-dessus, combinée à ces deux opérations de compression, permet d'améliorer sensiblement la détection des attaques par faute lors de la transformation MIT, et notamment celles affectant deux octets du blocs AES. En variante, ladite deuxième opération de compression est additive de la forme DV =Lf (xl), où DV est la donnée compressée, (x;); sont les composantes de la donnée de résultat ou d'entrée, et (F;); sont des fonctions bijectives, notamment utilisée pour des transformations linéaires. En particulier dans une mise en oeuvre simple, Fi(x) = X;.x, où (X;); sont des constantes. Notamment, les constantes sont non nulles et distinctes deux à deux. Cette configuration permet, par exemple lorsque la première opération est également de nature additive, de détecter toutes les fautes affectant deux octets d'un bloc pour les transformations AT de SubBytes, MixColumns et AddRoundKey d'AES. Egalement, Fi(x) = x3a, où a est un paramètre ajustable. On peut ainsi ajuster la détection des fautes aux ressources disponibles. Dans un mode de réalisation de l'invention, le traitement cryptographique comprend une pluralité de transformations consécutives pour générer des données cryptées, et le procédé comprend une dite vérification mettant en oeuvre une opération de compression pour vérifier conjointement au moins deux desdites transformations. On réduit ainsi le nombre d'opérations de vérification menées et donc les coûts de traitement de vérification de l'algorithme cryptographique. Dans un autre mode de réalisation de l'invention, le traitement cryptographique comprend une pluralité de transformations consécutives pour générer des données cryptées, et le procédé comprenant une dite vérification pour chacune de plusieurs desdites transformations. Grâce à l'invention, on réalise ici une vérification spécifique de chacune des transformations composant l'algorithme cryptographique. Cette vérification spécifique, au travers d'une opération de compression propre et adaptée, permet d'améliorer l'efficacité de cette détection et d'obtenir des informations plus précises sur l'instant où la faute est intervenue. Notamment, pour une première transformation et une deuxième transformation consécutives ladite obtention d'une première donnée compressée pour la première transformation est postérieure à l'application de la deuxième transformation sur la donnée de résultat de la première transformation et à l'étape d'obtention d'une deuxième donnée compressée pour ladite deuxième transformation. Cette disposition permet de garantir la détection de faute même lorsque cette dernière est réalisée entre l'exécution de deux transformations, alors qu'on procède à une vérification individualisée sur chacune des transformations. Egalement, on peut prévoir d'utiliser la même opération de compression pour au moins deux transformations. On réduit ainsi l'espace mémoire nécessaire au stockage des opérations de compression. Selon une caractéristique particulière de l'invention, le procédé comprend une dite vérification, éventuellement conjointe, pour chacune des transformations constituant ledit traitement cryptographique. Ainsi, toutes transformations composant le traitement cryptographique sont vérifiées. Dans un mode de réalisation, le traitement cryptographique est de type symétrique. En particulier, le traitement cryptographique est au moins une ronde du standard de chiffrement avancé (Advanced Encryption Standard ou AES). Toutefois, d'autres algorithmes cryptographiques, tels DES ou FOX, peuvent mettre en oeuvre la présente invention. Corrélativement, l'invention concerne également un dispositif de traitement cryptographique de données comprenant au moins une transformation d'une donnée d'entrée en une donnée de résultat, le dispositif comprenant: - un moyen d'obtention d'une première donnée compressée par application d'une opération de compression sur ladite donnée de résultat; - un moyen d'obtention d'une deuxième donnée compressée par application de l'opération de compression sur ladite donnée d'entrée; - un moyen de détermination d'une donnée de vérification par application de ladite transformation sur ladite deuxième donnée compressée et; - un moyen de comparaison de ladite donnée de vérification et de ladite première donnée compressée, de sorte à vérifier ladite transformation. Un tel dispositif peut être une entité électronique de poche, tel qu'une carte à microcircuit, par exemple conforme à la norme ISO7816 ; en variante, il peut s'agir d'un autre type d'entité électronique, comme par exemple un ordinateur (tel un ordinateur personnel) ou une clé USB. De façon optionnelle, le dispositif peut comprendre des moyens se rapportant aux caractéristiques du procédé de traitement exposé précédemment. Les procédés évoqués ci-dessus sont typiquement mis en oeuvre au moyen de l'exécution des instructions d'un programme d'ordinateur par un microprocesseur. L'exécution des instructions permet ainsi le traitement par le microprocesseur des données mémorisées dans le dispositif, par exemple au sein d'une mémoire vive de celui-ci. D'autres modes de réalisation pourront toutefois être envisagés, comme par exemple l'utilisation d'un circuit à application spécifique apte à mettre en oeuvre les étapes des procédés envisagés ci-dessus. Dans ces différents contextes, les données d'entrée peuvent être des données reçues par le dispositif de traitement d'un dispositif extérieur, par exemple au moyen d'une interface de communication du dispositif de traitement. Il peut toutefois s'agir également de données mémorisées dans le dispositif (par exemple en mémoire non-volatile) ou de données intermédiaires obtenues à partir des données de résultat d'une autre transformation. De même, au moins une des données de résultat peut être une donnée à émettre en sortie du dispositif, par exemple à destination du dispositif extérieur au moyen de l'interface de communication. Les données de résultat peuvent toutefois n'être que des données intermédiaires, éventuellement utilisées par le dispositif dans des processus (par exemple de calcul) ultérieurs. Chacun des algorithmes cryptographiques mentionnés ci-dessus permet par exemple de réaliser, au moins en partie, une opération de cryptage, de décryptage, de signature, d'échange de clé cryptographique ou de génération de clé cryptographique. Dans ce type d'application, les données d'entrée sont par exemple un message (ou une partie d'un message) reçu du dispositif extérieur et qui est crypté (ou décrypté) au sein dispositif de traitement au moyen du ou des algorithmes cryptographiques précités, puis ré-émis en sortie du dispositif de traitement à travers l'interface de communication. D'autres particularités et avantages de l'invention apparaîtront encore dans la description ci-après, illustrée par les dessins ci-joints, dans lesquels : - la figure 1 représente schématiquement les éléments principaux d'une forme de réalisation possible pour une carte à microcircuit ; - la figure 2 représente l'allure physique générale de la carte à microcircuit de la figure 1 ; - la figure 3 illustre schématiquement l'algorithme AES pour la mise en oeuvre du procédé selon l'invention ; - la figure 4 représente, de façon schématique, un exemple d'étapes pour la vérification d'une transformation selon l'invention ; - la figure 5 représente, sous forme de logigramme, un premier exemple d'étapes pour la vérification de la transformation MIT de la figure 3 ; - la figure 6 représente, sous forme de logigramme, un deuxième exemple d'étapes pour la vérification de la transformation MIT de la figure 3, principalement pour la détection d'erreurs multiples affectant la transformation; - la figure 7 représente, de façon schématique, un exemple d'étapes pour la vérification combinée de plusieurs transformations selon l'invention ; et - la figure 8 illustre, de façon schématique, un agencement des opérations de vérification pour deux transformations successives. La figure 1 représente schématiquement un dispositif de traitement de données 40 dans lequel la présente invention est mise en oeuvre. Ce dispositif 40 comprend un microprocesseur 10, auquel est associée d'une part une mémoire vive 60, par exemple au moyen d'un bus 70, et d'autre part une mémoire non volatile 20 (par exemple du type EEPROM), par exemple à travers un bus 50. Le dispositif de traitement de données 40, et précisément le microprocesseur 10 qu'il incorpore, peuvent échanger des données avec des dispositifs extérieurs au moyen d'une interface de communication 30. On a schématiquement représenté sur la figure 1 la transmission d'une donnée d'entrée X reçue d'un dispositif extérieur (non représenté) et transmise de l'interface de communication 30 au microprocesseur 10. De manière similaire, on a représenté la transmission d'une donnée de sortie S du microprocesseur 10 vers l'interface de communication 30 à destination d'un dispositif extérieur. Cette donnée de sortie Y est issue d'un traitement de données par le microprocesseur 10, généralement sur la donnée d'entrée X à l'aide d'une donnée secrète 80 interne au système, par exemple une clé privée. Bien que, pour l'illustration, les données d'entrée et les données de sortie figurent sur deux flèches différentes, les moyens physiques qui permettent la communication entre le microprocesseur 10 et l'interface 30 pourront être réalisés par des moyens uniques, par exemple un port de communication série ou un bus. Le microprocesseur 10 est apte à exécuter un logiciel (ou programme d'ordinateur) qui permet au dispositif de traitement de données 40 d'exécuter un procédé conforme à l'invention dont des exemples sont donnés dans la suite. Le logiciel est composé d'une série d'instructions de commande du microprocesseur 10 qui sont par exemple stockées dans la mémoire 20. En variante, l'ensemble microprocesseur 10 - mémoire non-volatile 20 - mémoire vive 60 peut être remplacé par un circuit à application spécifique qui comprend alors des moyens de mise en oeuvre des différentes étapes du procédé de traitement de données. La figure 2 représente une carte à microcircuit qui constitue un exemple de dispositif de traitement de données conforme à l'invention tel que représenté à la figure 1. L'interface de communication 30 est dans ce cas réalisée au moyen des contacts de la carte à microcircuit. La carte à microcircuit incorpore un microprocesseur 10, une mémoire vive 60 et une mémoire non volatile 20 comme cela est représenté sur la figure 1. Cette carte à microcircuit est par exemple conforme à la norme ISO 7816 et munie d'un microcontrôleur sécurisé qui regroupe le microprocesseur (ou CPU) 20 et la mémoire vive 60. En variante, le dispositif de traitement de données peut être une clef USB, un document ou un support d'informations papier comportant dans l'une de ses feuilles un microcircuit associé à des moyens de communication sans contact. Il s'agit de manière préférée d'une entité électronique portable ou de poche. En référence aux figures 3 à 6, on décrit maintenant un exemple de procédé selon l'invention appliqué à un traitement cryptographique symétrique de type AES, au cours duquel le microprocesseur 10 souhaite crypter un message X en un message crypté Y. La figure 3 illustre schématiquement l'algorithme AES qui prend en entrée un bloc de 16 octets du message à traiter: X = (xi)i=0...15E GF(28)16. L'encryptage AES exécute une séquence de rondes, généralement 10, 12 ou 14, comprenant les transformations individuelles représentées sur la figure. Les quatre étapes principales d'une ronde sont l'opération non linéaire (selon l'addition bit à bit) SubByte 1001 de substitution de chaque octet x; à l'aide d'une boîte S-Box, puis les opérations linéaires ShiftRows 1002 de transposition cyclique, MixColumns 1003 de produit matriciel et AddRoundKey 1004 de combinaison de chaque octet avec une clé de ronde. Les opérations SubByte et ShiftRows peuvent toutefois être inversées, par rapport à l'ordre de la figure, sans impacter l'algorithme. Ces différentes étapes sont définies dans la norme AES et ne seront par conséquent pas décrites en détail au-delà de ce qui intéresse la présente invention. Chaque étape est vue comme une transformation individuelle de l'algorithme, avec en outre l'étape SubByte qui peut être décomposée en deux autres transformations individuelles: une transformation, non linéaire, inverse multiplicative 1005 notée MIT (Multiplicative Inverse Transformation) et une transformation, linéaire, affine 1006 notée AT (Affine Transformation). Ainsi, S-Box(x;) = AT o M IT(x;). Comme illustré sur la figure 4, chaque transformation 100; reçoit une donnée d'entrée s=(so, ..., 615) E GF(28)16 et fournit en sortie, une donnée de résultat s'=(s'o, ..., 6'15)• Selon l'invention, on adjoint, à cette transformation, une étape de 20 vérification comprenant: - l'obtention d'une première donnée compressée DV(s') par application d'une opération de compression 110 sur ladite donnée de résultat s'; - l'obtention d'une deuxième donnée compressée DV(s) par application de l'opération de compression 110 sur ladite donnée d'entrée s; 25 - la détermination d'une donnée de vérification DV(s)' par application de la transformation 100 sur ladite deuxième donnée compressée DV(s) et; - la comparaison 120 de ladite donnée de vérification DV(s)' et de ladite première donnée compressée DV(s'). Cette comparaison permet de détecter une faute (égalité non 30 obtenue) auquel cas une erreur est retourné au logiciel dont l'exécution conduit l'algorithme, ou de confirmer que les calculs de la transformation se sont bien déroulés. On illustre maintenant, à l'aide de la figure 5, la vérification d'une transformation selon l'invention en référence à la transformation MIT 1005,. A l'étape E200, on dispose de la donnée d'entrée s. A l'étape E202, on applique la transformation MIT à cette donnée d'entrée pour obtenir la donnée de résultat s'. Ces étapes sont identiques à l'état de la technique. L'étape E204 consiste en la vérification selon l'invention. En détail, cette étape comprend tout d'abord une étape E206 au cours de laquelle on calcule une donnée compressée, également nommée empreinte, hash ou digest value, de la donnée de résultat à l'aide d'une fonction de hachage 110. La transformation MIT étant non linéaire pour l'addition binaire et de nature multiplicative, on prend une fonction de hachage 110 de nature également multiplicative. Dans un premier exemple simple, cette fonction, notée 15 MDV (multiplicative digest value), vaut: MDV(x) =11 xl , où x; sont les seize Z=o composantes de x. L'étape E206 calcule donc MDV(s'). A l'étape E208, on calcule MDV(s) à l'aide de la même fonction de hachage 110, puis à l'étape E210 on applique la transformation MIT à ce résultat. On obtient MIT(MDV(s)). 0 si x=0 Puisque MIT est la transformation inverse: x~ x autrement les deux valeurs calculés aux étapes E206 et E210 doivent être égales en l'absence de perturbations lors du calcul de la transformation E202. Ainsi, on procède, à l'étape E212, à la comparaison de ces deux valeurs. En cas d'inégalité, le logiciel de traitement émet (E214) une erreur à destination de l'utilisateur. Sinon, le traitement se poursuit avec la transformation suivante, ici AT, pour laquelle la donnée d'entrée est celle en sortie de la transformation MIT, donc �s'�. Cette fonction simple offre une probabilité de détection d'une unique erreur qui est raisonnable eu égard à la simplicité de mise en oeuvre. Toutefois, les erreurs de type mise à zéro d'une valeur, ou passage de 0 à une valeur non nulle ne sont pas détectées. Afin d'améliorer cette probabilité et donc l'efficacité de la détection, 15 l'invention propose la fonction modifiée: MDV1(x) = n(xi+80(xi�, où 80(x) est Z=o un dirac valant 1 si x=0, et 0 autrement. Cette fonction MDV1 modifiée permet d'éviter d'avoir des termes nuls dans le produit. On améliore ainsi la détection des fautes dans les cas où certaines composantes, soit de la donnée d'entrée s, soit de la donnée de résultat s', sont nuls. La probabilité de détection est ainsi améliorée. Toujours en référence à la figure 5, notamment aux blocs en traits discontinus, une version amélioré de la vérification E204 comprend, préalablement aux étapes E206 à E212, une première étape E205 au cours de laquelle on vérifie qu'il y a correspondance entre une composante si nulle d'entrée et une composante s'; nulle de sortie. En effet, la fonction MIT a pour élément invariant, l'élément neutre O. Cela permet de détecter aisément les mises à zéro d'une valeur ou les passages de 0 à une valeur non nulle. Cette vérification E205 préliminaire est menée par le calcul de: 15 15 ZTI(s) O ZTI(s') _ E2`bo(si)0 E2`bo(s'i), où éo(x) est le dirac défini Z=o Z=o précédemment. Puis, à l'étape E205', on vérifie que le résultat de ce calcul est nul, ce qui est le cas uniquement si, pour chaque indice i, si et s'; sont tous deux nuls ou tous deux non nuls. En cas de résultat non nul, une erreur est retournée à l'étape E214. Autrement, on poursuit à l'étape E206. Ces étapes E205, E205' permettent ainsi de vérifier qu'aucune perturbation ou erreur ne s'est produite lors des calculs MIT sur ou vers une coordonnée nulle. Combiné avec les étapes E206 et suivantes, cette vérification permet de détecter toutes les erreurs sur un seul octet (une composante) du bloc AES. En particulier, dans ce cas, on peut simplifier la fonction de hachage MDV puisque les termes nuls ne sont plus à prendre en compte (ils le sont par la vérification E205): par exemple, MDV2(x)= fxi où les termes nuls sont exclus. On note que si la comparaison E205' est vérifiée, ce sont les termes de mêmes indices qui sont exclus dans ce produit lors des étapes E206 et E208. Les étapes E205 et E205' sont de préférence réalisées antérieurement aux étapes E206-E212 afin d'éviter l'exécution de ces dernières si une erreur est déjà détectée au niveau des composantes nulles. Toutefois, les étapes E205/E205' peuvent être réalisées indépendamment, en parallèle et/ou postérieurement. La figure 6 illustre un exemple de vérification de la transformation MIT pour lutter contre les attaques par faute multiples affectant notamment deux octets/composantes dans le même bloc AES traité. On note toutefois que l'exemple de la figure 5 peut être utilisé dans un tel cas, avec une probabilité de détection réduite. Dans cet exemple, les étapes E202 à E204 sont similaires à celles de la figure 5, par exemple en utilisant la fonction de hachage MDV1 ou MDV2 définie précédemment. L'étape de vérification E204 se poursuit par une duplication E204' des étapes E206 à E212, utilisant une autre (deuxième) fonction de hachage. Toutefois, l'étape E204' peut être menée en parallèle de l'étape E204 si les ressources matérielles de dispositif de traitement le permettent. Un exemple de deuxième fonction de hachage est: 15 M D V 3 (x) = fi (xi + V 0 (xi ))i+1 111i=0111 L'utilisation conjointe de MDV1 (étape E204) et MDV3 (étape E204') permet de détecter une erreur sur deux octets du bloc AES traité (composantes d'entrée ou de résultat). Pour améliorer la détection des erreurs sur deux octets, notamment en ce qui concerne les composantes nulles, on met en oeuvre les étapes E205, E205' dans chacun des blocs E204 et E204'. Dans ce cas, on peut utiliser MDV2 et une version simplifiée de MDV3 définie par fJxl`+1 o Dans ce cas, on détecte toutes les fautes. Les inventeurs ont remarqué que cette mise en oeuvre conjointe de MDV1 (ou MDV2) et MDV3 permet également de détecter les erreurs dans les cas où une faute est injectée lors de la transformation surveillée et une autre faute est injectée lors des calculs des empreintes ou données compressées. A titre illustratif maintenant, on présente des fonctions de hachage utilisées pour la vérification des autres transformations 1002 (ShiftRows), 1003 (MixColumns), 1004 (AddRoundKey) et 1006 (AT). En ce qui concerne la transformation affine 1006, cette dernière est définie par AT : si - A.s; + c, où c est une constante dans GF(28) et A une matrice inversible dans GF(28) également. On note que, dans GF(28), AT(si+s2) = AT(si) + AT(s2) + c. De par la nature linéaire de AT, on prend une fonction de hachage 15 additive, par exemple ADV(x) = Lxi, pour l'exécution d'étapes similaires à i=o E206 et E208. 15 La comparaison entre les deux valeurs obtenues à ces étapes, Lsz i=o 15 et Ls'Z . , permet de détecter une erreur (comparaison négative) ou de Z=o poursuivre (comparaison positive). Notamment, on vérifie l'égalité suivante: ADV(s') = AT(ADV(s)) + c. Dans le cas de la transformation AT et de la fonction de hachage ADV, l'invention permet de détecter efficacement toutes les erreurs simples résultant des attaques par faute. Afin de permettre la détection de fautes sur deux octets/composantes lors du même traitement d'un blocs AES, on duplique les étapes de la vérification E204, similairement à ce qui a été exposé précédemment. Un exemple de deuxième fonction de hachage peut être: 15 ADV(x) _ LF(xi), où F; est une fonction bijective propre à chaque Z=o composante. On choisit notamment des fonctions (F;); telles que Fi(x;)≠Fk(x;) pour tout j≠k e {0...15} et x; E 28, c'est-à-dire qu'elles ne se coupent pas à un point ayant une abscisse dans 28. En particulier, on choisit, pour une mise en oeuvre simple, 15 ADV(x) = L XZ.xl , où les X; sont des constantes propres à chaque composante. i=o Les constantes X; sont choisies distinctes deux à deux pour garantir la détection de toutes les erreurs. En outre, on choisit ces constantes non nulles afin de détecter toutes les erreurs sur le calcul de l'empreinte ADV. Les inventeurs ont ainsi remarqué que cette mise en oeuvre conjointe de ADV et ADN/1 permet également de détecter les erreurs dans les cas où une faute est injectée lors de la transformation AT et une autre faute est injectée lors des calculs des empreintes ou données compressées. En ce qui concerne la transformation ShiftRows 1002, on rappelle qu'elle réalise une commutation cyclique des octets dans chaque ligne d'une matrice 4x4 stockant le bloc AES traité. Cette transformation ne modifiant pas le résultat d'opérations 20 commutatives sur chaque ligne de la matrice 4x4, des fonctions de hachage de type additive ADV et multiplicative MDV peuvent être alternativement utilisées. A titre d'exemple, pour détecter des fautes isolées (sur un octet 15 uniquement), on prend la fonction ADV(x) = Lxl , c'est-à-dire la même fonction Z=o que celle pour vérifier la transformation AT précédente. 15 15 25 Selon la présente invention, on vérifie donc que Esz = Es'z . Z=o Z=o Pour détecter des fautes multiples lors de la transformation ShiftRows, par exemple sur deux octets/composantes, on utilise F; (x) = x3a, où 15 a est un entier positif ajustable. Ainsi, ADV (x) = L x.3a Z=o Le choix de a est un compromis entre la probabilité de détection des erreurs et la complexité des calculs (grands nombres à manipuler). Le tableau ci-dessous liste diverses probabilités théoriques de détection de fautes multiples en fonction de la valeur de a, lorsque l'on utilise conjointement ADV et ADV. a Probabilité de détection 1 32639 32640 3 32639 32640 5 167424 25452 1_ 2552.2562 25453 7 179520 23737 1 2552.2562 23738 Tableau 1: probabilité de détection en fonction de a On a pu constater en outre que si une faute est injectée dans le calcul de la transformation (E202) et une autre dans le calcul des empreintes (E206, E208), la combinaison de ADV et ADN/1 permet de détecter toutes les erreurs/fautes dans l'opération de vérification de la transformation ShiftRows, lorsque c'est le calcul de ADN/1 qui est corrompu. Une troisième fonction de hachage peut être prévue pour une troisième itération des étapes E206-E212. Cette troisième itération est notée E204" et permet, en combinaison avec E204 (soit ADV) et E204' (soit ADV) de détecter les erreurs multiples affectant trois composantes/octets du bloc AES. 15 Un exemple de troisième fonction de hachage est ADV2(x) = L xz5 Z=o Dans ce cas (triple vérification avec ADV, ADN/1 et ADV2), la 166072320 88780747 probabilité théorique de détection est de 1û 2553.256' 88780800 En ce qui concerne maintenant la transformation MixColumns 1003, qui réalise une multiplication matricielle de chaque colonne de la matrice 4x4 résultant de ShiftRows, on choisit une fonction de hachage de type additive, par 15 exemple ADV(x) = Lxl , c'est-à-dire la même fonction que celles pour vérifier Z=o les transformations AT et ShiftRows précédentes. L'utilisation de cette fonction permet de détecter toutes les fautes simples de bloc AES. Pour contrer les fautes multiples, notamment deux octets erronés, on utilise conjointement cette fonction ADV avec une deuxième fonction additive ADN/1 du type celle définie précédemment: ADV(x)=L~Z.xl . Les constantes X; Z=o sont notamment choisies non nulles et distinctes deux à deux pour garantir la détection de toutes les erreurs. 15 On a pu constater que cette utilisation conjointe est efficace pour la détection d'erreurs multiples affectant trois octets/composantes. Dans ce cas, la probabilité théorique de détection est 1û 1 15 peut également utiliser isolément la fonction de hachage ADV(x) = Exl pour Z=o détecter de simples erreurs, ou en combinaison avec la fonction 15 ADV(x)=LXZ.xl pour détecter des erreurs multiples, notamment affectant i=o deux octets. La présente invention permet ainsi de vérifier individuellement chacune des transformations composant un algorithme cryptographique. Un meilleur diagnostic sur l'instant où a lieu une éventuelle attaque par faute est ainsi fourni. 2552 En ce qui concerne enfin la transformation AddRoundKey 1004, on En outre, l'invention réduit les calculs effectués comparativement aux solutions de l'art antérieur car elle évite la réitération de l'ensemble des calculs cryptographiques et se limite à la manipulation de condensats (ou empreintes). Une protection des transformations et de l'algorithme de cryptage est ainsi obtenue. Dans un mode de réalisation illustré par la figure 7, on peut prévoir d'appliquer une seule fonction de compression pour réaliser la vérification commune de plusieurs transformations successives. A titre illustratif uniquement, on peut utiliser une seule fonction de compression, par exemple 15 ADV(x) = Lxl , pour vérifier deux ou trois transformations consécutives parmi Z=o les transformations ShiftRows, MixColumns et AddRoundKey. Cette stratégie de regroupement permet de vérifier l'ensemble des transformations composant le traitement cryptographique général à coûts réduits, en évitant de recourir à une opération de compression (et donc une vérifications) spécifique à chacune des transformations. La figure 8 illustre un mode de réalisation de l'invention dans lequel deux vérifications sont successivement réalisées, chacune sur une ou plusieurs transformations. Pour des raisons de concision, on a représenté sur la figure des vérifications d'une seule transformation à chaque fois (respectivement transformation 1 et transformation 2), en fonction du temps. Le résultat s' de la première transformation est utilisé comme entrée de la seconde transformation. Et récursivement pour les transformations ultérieures (voir cadre en pointillés). Dans ce mode de réalisation, on prévoit que l'application de l'opération de compression Hash.1 sur le résultat s' de la première transformation (pour calculer DV1(s') en vue de la vérification de cette dernière) est réalisée postérieurement à l'exploitation de ce dit résultat s' par la deuxième transformation. Cette exploitation comprend l'application de la deuxième transformation Transfo.2 sur la valeur s' pour déterminer le résultat s" à fournir aux transformations ultérieures (cadre en pointillés) et le calcul de l'opération de compression Hash.2 en vue de la vérification de la deuxième transformation (calcul de DV2(s')). En respectant cet ordre pour ces trois opérations Transfo.2, Hash.2 et Hash.1 (peu important l'ordre des autres opérations), on s'assure que le système et le procédé selon l'invention sont résistant aux attaques portant sur la mémoire, type RAM, stockant les valeurs s, s', s" etc. ou portant sur les opérations de lecture de cette RAM, entre l'application à proprement parler de deux transformations consécutives. En effet, chaque opérations Transfo.2, Hash.2 et Hash.1 accédant à la mémoire pour récupérer s', l'ordre décrit ci-dessus permet d'éviter le scénario selon lequel la première vérification est déclarée valide par le calcul de DV1(s'), la valeur s' est modifiée par une attaque, puis la deuxième transformation est réalisée sur cette valeur s' modifiée, sa vérification correspondante la déclarant valide par le calcul de DV2(s'). Les exemples qui précèdent ne sont que des modes de réalisation de l'invention qui ne s'y limite pas. Bien que dans la description ci-dessus, on réalise une vérification pour chacune des transformations 1002 à 1006, il peut être prévu de mener de telles vérifications pour une partie uniquement de ces transformations. En outre, on peut regrouper les vérifications des transformations MIT 1005 et AT 1006 en une seule vérification portant sur la transformation SubByte 1001. Egalement, l'invention ne s'applique pas uniquement aux traitements de cryptage tels que décrits ci-dessus. On peut par exemple vérifier chacune 25 des transformations composant le traitement de décryptage AES. Par ailleurs, la présente invention ne se limite pas aux transformations de l'algorithme cryptographique symétrique AES, mais peut être appliquée à tout type d'algorithme, incluant DES et IDEA NXT (également connu sous l'appellation FOX). 30 De façon similaire à AES, FOX réalise plusieurs rondes d'opérations, incluant une opération non linéaire muX et une opération linéaire sigmaX. Par analogie, l'opération sigmaX est similaire à la transformation MixColumns. Ainsi les fonctions de hachage additive ADV présentées ci-dessus peuvent être utilisées de façon semblable. Egalement, l'opération muX se décompose en additions binaires pour lesquelles une vérification à base de fonctions de hachage additives ADV peut être mise en oeuvre, et en fonctions non linéaires. Pour protéger ces dernières, on peut alors utiliser les fonctions de hachage prévues pour la boîte S-Box de AES, c'est-à-dire les vérifications des transformations MIT et AT. REVENDICATIONS1. Procédé de traitement cryptographique de données (X) comprenant au moins une transformation (100, 1001-1006) d'une donnée d'entrée (s) en une donnée de résultat (s'), le procédé comprenant une étape de vérification (E204) de ladite transformation, caractérisé en ce que la vérification de la transformation comprend les étapes suivantes: - obtention (E206) d'une première donnée compressée (DV(s')) par application d'une opération de compression (110, MDV, ADV) sur ladite donnée de résultat (s'); - obtention (E208) d'une deuxième donnée compressée (DV(s)) par application de l'opération de compression (110, MDV, ADV) sur ladite donnée d'entrée (s); - détermination (E210) d'une donnée de vérification (DV(s)') par application de ladite transformation (100, 1001-1006) sur ladite deuxième donnée compressée (DV(s)) et; - comparaison (E212) de ladite donnée de vérification et de ladite première donnée compressée. 2. Procédé selon la revendication 1, dans lequel au moins une erreur est générée (E214) lorsque ladite donnée de vérification et ladite première donnée compressée sont distinctes. 3. Procédé selon la revendication 1 ou 2, dans lequel ladite opération de compression (110) comprend la multiplication (MDV) de composantes (s;, s';) de la donnée de résultat (s') ou d'entrée (s). 4. Procédé selon la revendication 3, dans lequel la donnée compressée (DV(s), DV(s)') est le produit de toutes les composantes de la donnée de résultat (s') ou d'entrée (s): DV= fJxi , où DV est la donnée compressée, (x;); sont les composantes de la donnée de résultat ou d'entrée, et les composantes (x;); nulles sont corrigées de sorte à prendre la valeur "1" dans ledit produit. 5. Procédé selon l'une des revendications 3 et 4, dans lequel l'étape de vérification (E204) comprend la vérification (E205, E205') qu'à unecomposante nulle de la donnée d'entrée (s) ou de résultat (s') correspond une composante nulle de la donnée de résultat (s') ou d'entrée (s). 6. Procédé selon l'une des revendications précédentes, dans lequel on duplique (E204') lesdites étapes d'obtention, détermination et comparaison avec au moins un deuxième opération de compression (MDV3, ADV1). 7. Procédé selon la revendication 6, dans lequel ladite deuxième opération de compression (MDV3) est de la forme DV = fl(xl +8o(xz ))z+1 où DV est la donnée compressée, (x;); sont les composantes de la donnée de résultat 10 (s') ou d'entrée (s). 8. Procédé selon la revendication 6, dans lequel ladite deuxième opération de compression (ADV1) est additive de la forme DV =LP (xl), où DV est la donnée compressée, (x;); sont les composantes de la donnée de résultat (s') ou d'entrée (s), et (F;); sont des fonctions bijectives. 15 9. Procédé selon la revendication 8, dans lequel Fi(x) = X;.x, où (Xi); sont des constantes non nulles et distinctes deux à deux. 10. Procédé selon l'une quelconque des revendications précédentes, dans lequel le traitement cryptographique comprend une pluralité de transformations (1001-1006) consécutives pour générer des données 20 cryptées (Y), et le procédé comprenant une dite vérification (E204) mettant en oeuvre une opération de compression pour vérifier conjointement au moins deux desdites transformations. 11. Procédé selon l'une quelconque des revendications précédentes, dans lequel le traitement cryptographique comprend une pluralité 25 de transformations (1001-1006) consécutives pour générer des données cryptées (Y), et le procédé comprenant une dite vérification (E204) pour chacune de plusieurs desdites transformations. 12. Procédé selon la revendication précédente, dans lequel, pour une première transformation et une deuxième transformation consécutives 30 ladite obtention (E206) d'une première donnée compressée (DV1(s')) pour la première transformation (Transfo.1) est postérieure à l'application de ladeuxième transformation (Transfo.2) sur la donnée de résultat (s') de la première transformation et à l'étape d'obtention (E208) d'une deuxième donnée compressée (DV2(s')) pour ladite deuxième transformation. 13. Procédé selon l'une des revendications 10 à 12, comprenant une dite vérification (E204), éventuellement conjointe, pour chacune des transformations constituant ledit traitement cryptographique. 14. Procédé selon l'une quelconque des revendications précédentes, dans lequel le traitement cryptographique est de type symétrique. 15. Procédé selon la revendication précédente, dans lequel le traitement cryptographique est au moins une ronde du standard de chiffrement avancé (Advanced Encryption Standard ou AES). 16. Dispositif de traitement cryptographique de données (X) comprenant au moins une transformation (100, 1001-1006) d'une donnée d'entrée (s) en une donnée de résultat (s'), caractérisé en ce qu'il comprend: - un moyen d'obtention d'une première donnée compressée (DV(s')) par application d'une opération de compression (110, MDV, ADV) sur ladite donnée de résultat (s'); - un moyen d'obtention d'une deuxième donnée compressée (DV(s)) par application de l'opération de compression (110, MDV, ADV) sur ladite donnée d'entrée (s); - un moyen de détermination d'une donnée de vérification (DV(s)') par application de ladite transformation (100, 1001-1006) sur ladite deuxième donnée compressée (DV(s)) et; - un moyen de comparaison (120) de ladite donnée de vérification et de ladite première donnée compressée, de sorte à vérifier ladite transformation. 17. Dispositif selon la revendication 16, caractérisé en ce que le dispositif est une entité électronique de poche.