Brevet FR2985337A1 — publié le 20130705

Procédé de calcul cryptographique résilient aux attaques par injection de fautes, produit programme d'ordinateur et composant électronique correspondant. 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui de la cryptographie. Plus précisément, l'invention concerne une technique de sécurisation d'un composant électronique contre des attaques par injection de fautes. L'invention a de nombreuses applications, telles que par exemple, dans le domaine des cartes à puces où de nombreuses autorités de certification exigent que les cartes à puces incorporent des techniques de protection contre les attaques par injection de fautes. Plus généralement, elle peut s'appliquer dans un contexte où un attaquant est en mesure de perturber le déroulement d'un calcul utilisant des données sensibles (comme des clés cryptographiques). 2. ARRIÈRE-PLAN TECHNOLOGIQUE Dans le domaine de la cryptographie, les attaques par injection de fautes sont des attaques visant à perturber l'exécution d'un calcul cryptographique exécuté par un composant électronique compris, par exemple, dans un dispositif afin d'obtenir un résultat erroné dont l'exploitation par l'attaquant permet de révéler des informations secrètes initialement stockée dans ledit composant électronique. Un attaquant peut produire, en fonction du matériel utilisé, soit une modification aléatoire d'une variable au sein du composant électronique, soit forcer une valeur utilisée par le composant électronique à une valeur fixe. Il peut aussi modifier le chemin d'exécution d'un programme, tout en restant au sein du graphe de flot de contrôle dudit programme, soit en ne restant pas au sein du graphe de flot de contrôle dudit programme. Il existe différentes techniques de perturbation d'un dispositif, plus ou moins invasives, et plus ou moins précise dans le choix de la zone du dispositif à perturber. Par exemple, l'utilisation d'un laser est une technique semi-invasive mais précise. Elle permet de modifier le contenu d'un registre, d'une mémoire ou d'un bus. Elle permet aussi d'empêcher un processeur d'exécuter certaines instructions nécessaires à la réalisation du calcul cryptographique. En revanche, la modification de l'horloge d'un dispositif n'est pas invasive, mais il est plus difficile de choisir l'endroit du dispositif où l'on souhaite réaliser une perturbation. On distingue généralement plusieurs catégories d'attaques exploitant un résultat erroné : les attaques dites DFA (acronyme de l'expression anglaise : « Differential Fault Analysis ») qui consistent à extraire de l'information à partir de la différence observée entre un chiffré de référence et une version obtenue à l'aide d'une faute provoquée ; les attaques dites IFA (acronyme de l'expression anglaise : « Ineffective Fault Analysis ») qui consistent à extraire de l'information à partir d'une faute provoquée n'ayant pas d'effet sur le résultat d'une opération arithmétique ou logique ; les attaques dites CFA (acronyme de l'expression anglaise : « Collision Fault Analysis ») qui consistent à extraire de l'information à partir d'une collision obtenue à l'aide d'une faute provoquée ; les attaques dites FSA (acronyme de l'expression anglaise : « Fault Sensitivity Attack ») qui consistent à corréler le niveau de stress où une faute apparaît avec la donnée sensible traitée ; et enfin les attaques consistant à analyser des erreurs sûres (appelées en anglais « Safe-Error Analysis »). Toutes ces attaques supposent que l'attaquant ait accès au composant électronique et qu'il utilise des moyens physiques afin de générer des perturbations. Remarquons qu'il existe un autre cas de figure, où l'attaquant n'a pas accès au composant électronique, et dès lors, il n'utilise pas de tels moyens physiques. Cependant, en choisissant certaines valeurs, il peut récupérer des informations secrètes, du fait que le composant électronique comprend des erreurs de conception. Cette classe d'attaque est appelée « Bug Attack ». Traditionnellement, différentes techniques permettant de protéger un composant électronique contre la mise en oeuvre des attaques par injection de fautes ont été développées. Une première technique consiste à employer des mécanismes de désynchronisation, matériel ou logiciel, afin de rendre plus difficile une injection de faute réussie. Ceci est particulièrement vrai pour les attaques nécessitant de cibler une instruction particulière. Une deuxième technique consiste à dupliquer les calculs, à l'identique et en parallèle, et à ne retourner le résultat que lorsque les exécutions parallèles ont produit la même valeur. Une troisième technique consiste à vérifier un invariant. Par exemple, la vérification peut consister à effectuer les opérations cryptographiques dans un sens (par exemple un chiffrement) suivi de l'opération cryptographique inverse, lorsqu'elle existe, et à ne retourner le résultat de l'opération cryptographique que lorsque l'on réobtient bien la valeur initiale. Cependant toutes les techniques mentionnées précédemment, cherchent finalement à détecter l'occurrence d'une erreur au sein d'un calcul, ce qui induit un surcoût (en ressource et en temps) non négligeable. Afin de s'affranchir de cette étape de détection, une technique alternative a été proposée dans le document Al intitulé « Fault Injection Resilience » de S. Guilley et al., publié dans les annales de la conférence FDTC 2010 (pour « Fat& Diagnosis and Tolerance in Cryptography » ). Cette technique consiste à renvoyer un message erroné, sans avoir à réaliser une étape de détection d'erreur. Ainsi, le concept de résilience qui définit la capacité d'un système ou d'une architecture réseau à continuer de fonctionner en cas de panne, a été adapté au contexte des attaques par injection de faute. Plusieurs implémentations ont été proposées dans le document Al (cf §III « Some Practical Implementations of TIR », par exemple l'algorithme 1 (« Probabilistic Encryption Algorithm built on top of AES »), visant à empêcher qu'un attaquant ne puisse réaliser un chiffrement en utilisant deux fois un même message. Cette condition est vérifiée en rendant l'entrée d'un bloc de chiffrement aléatoire (il convient de noter que le déchiffrement n'est cependant pas protégé via cette technique, l'attaquant pouvant choisir l'aléa à utiliser pour réaliser l'opération de déchiffrement). Ainsi, afin de rendre un bloc de chiffrement (et non de déchiffrement) intrinsèquement résistant aux attaques par faute, il suffit d'utiliser un bloc de chiffrement / déchiffrement probabiliste (tel que décrit dans le document A2 intitulé « Probabilistic Encryption » (de Shafi Goldwasser et Silvio Micali). Enfin, seule l'opération de chiffrement est protégée. Ainsi, il n'existe pas de technique permettant de protéger à la fois une opération de chiffrement et une opération de déchiffrement, ou tout un protocole cryptographique. De plus, la solution du document Al induit un doublement de la bande passante de communication, ce qui est particulièrement peu efficace. 3. EXPOSÉ DE L'INVENTION Dans un mode de réalisation particulier de l'invention, il est proposé un procédé de sécurisation d'une suite de calculs cryptographiques contre des attaques par injection de fautes, lesdits calculs comprenant une mise en oeuvre, par au moins une unité matérielle, d'une pluralité de blocs de traitements, un bloc de traitement de ladite pluralité de blocs de traitement comprenant au moins une valeur d'entrée et au moins une valeur de sortie. Selon l'invention, un tel procédé comprend : une étape d'initialisation d'au moins un vecteur d'initialisation par au moins un aléa, ledit vecteur étant utilisé comme valeur d'entrée d'au moins un bloc de traitement de ladite pluralité de blocs de traitement ; puis une étape de chaînage, selon un premier ordonnancement, entre des valeurs de sorties et des valeurs d'entrées de ladite pluralité des blocs de traitements, lesdites valeurs étant non tronquées ; et ledit procédé comprend, pour au moins une valeur de sortie d'un bloc de traitement de ladite pluralité de blocs de traitement, une étape de traitement discrétionnaire de ladite valeur de sortie par ladite unité de traitement. Plus précisément, dans au moins un mode de réalisation de l'invention, un objectif est de fournir une technique permettant à un composant électronique de ne pas divulguer d'informations secrètes lorsque des attaques par injection de fautes sont réalisées. Au moins un mode de réalisation de l'invention fournit une telle technique qui ne nécessite pas de mettre en oeuvre des contre-mesures coûteuses d'un point de vue d'utilisation de ressources matérielles et/ou temporelles. L'étape d'initialisation permet de générer des vecteurs d'initialisation aléatoire, qui, lorsqu'ils sont utilisés comme paramètre d'entrée d'un bloc de traitement empêche un attaquant de choisir l'entrée du bloc de traitement, et dès lors qu'une attaque par injection de fautes nécessite de pouvoir choisir des entrées, cette caractéristique technique permet de se prémunir contre ce type d'attaque. En outre, l'étape de chaînage étant dépendante du résultat, rendu aléatoire, d'un bloc de traitement, la caractéristique technique relative au chaînage entre les blocs confère une protection intrinsèque aux attaques par injection de fautes. De plus, du fait que chaque sortie d'un bloc de traitement, dans l'étape de chaînage, est soit stocké pour un usage interne audit composant électronique, soit destinée à être transmise à un autre composant électronique sous la forme d'un haché, soit destinée à être transmis à l'autre composant électronique en suivant un ordonnancement différent de celui découlant de l'étape de chaînage. Ainsi, ces caractéristiques techniques permettent de conférer une résilience à des attaques par injection de faute. En effet, qu'une erreur soit ou non produite au cours de l'exécution du procédé, un attaquant n'obtiendra aucune information sur des données confidentielles stockées sur ledit composant. Ainsi, il n'y a pas de divulgation de données sensibles. Les entrées d'un bloc de traitement peuvent être une ou plusieurs clés, ainsi qu'un message d'une taille donnée. Selon une caractéristique particulière, ladite étape de traitement discrétionnaire appartient au groupe comprenant : - une étape de stockage de ladite valeur de sortie pour un usage interne à ladite unité de traitement - une étape de transmission de ladite valeur de sortie, à une autre unité de traitement sous une forme d'un haché ; une étape de transmission de ladite valeur de sortie, à une autre unité de traitement en suivant un deuxième ordonnancement différent dudit premier ordonnancement. Selon une caractéristique particulière, un vecteur d'initialisation préalablement initialisé est transmis concomitamment à une première valeur de sortie d'un bloc de traitement de ladite pluralité de blocs de traitement. Selon une caractéristique particulière, ladite suite de calculs cryptographiques correspond aux calculs d'un mode opératoire de chiffrement. Selon une caractéristique particulière, ladite suite de calculs cryptographique correspond à un protocole cryptographique, et ladite pluralité de blocs de traitement correspond à une pluralité de blocs de chiffrement cryptographique. Selon une caractéristique particulière, ledit aléa est obtenu par une technique appartenant au groupe comprenant : une utilisation d'un générateur matériel d'aléa ; une réception d'une donnée par une autre unité matérielle ; une lecture d'une donnée stockée dans une zone de mémoire. Dans un autre mode de réalisation, l'invention concerne également un dispositif de sécurisation d'une suite de calculs cryptographiques contre des attaques par injection de fautes, lesdits calculs comprenant une mise en oeuvre, par au moins une unité matérielle, d'une pluralité de blocs de traitements, un bloc de traitement de ladite pluralité de blocs de traitement comprenant au moins une valeur d'entrée et au moins une valeur de sortie. Selon l'invention, un tel dispositif comprend : des moyens d'initialisation d'au moins un vecteur d'initialisation par au moins un aléa, ledit vecteur étant utilisé comme valeur d'entrée d'au moins un bloc de traitement de ladite pluralité de blocs de traitement ; des moyens de chaînage, selon un premier ordonnancement, entre des valeurs de sorties et des valeurs d'entrées de ladite pluralité des blocs de traitements, lesdites valeurs étant non tronquées ; pour au moins une valeur de sortie d'un bloc de traitement de ladite pluralité de blocs de traitement, des moyens de traitement discrétionnaires de ladite valeur de sortie par ladite unité de traitement. Dans une variante, le vecteur d'initialisation est préétabli, ou bien échangé de façon confidentielle. Dans la suite de ce document, nous inclurons ces deux établissements du vecteur d'initialisation dans la catégorie des tirages aléatoires : effectivement, ces secrets partagés ou échangés ont également été obtenus ab initio à partir d'un générateur de nombres aléatoires. Selon une implémentation préférée, les différentes étapes du procédé selon l'invention sont mises en oeuvre par un logiciel ou programme d'ordinateur, ce logiciel comprenant des instructions logicielles destinées à être exécutées par un processeur de données d'un module relais selon l'invention et étant conçu pour commander l'exécution des différentes étapes de ce procédé. En conséquence, l'invention vise aussi un programme, susceptible d'être exécuté par un ordinateur ou par un processeur de données, ce programme comportant des instructions pour commander l'exécution des étapes d'un procédé tel que mentionné ci-dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble de composants matériels et logiciels. Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, etc) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc). De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), etc. 4. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels : la figure la) présente l'utilisation d'un mode d'opération particulier, le mode CBC (pour « Cipher Block Chaining »), adapté au contexte où une première unité matérielle transmet des messages à chiffrer à une deuxième unité matérielle utilisant un algorithme de chiffrement par blocs E et une clé secrète k, en mode CBC à « la volée », tel que connu dans l'état de la technique ; la figure lb) présente l'utilisation d'un mode d'opération particulier, le CBC, adapté au contexte où une première unité matérielle transmet des messages à chiffrer à une deuxième unité matérielle utilisant un algorithme de chiffrement par blocs E et une clé secrète k, en mode CBC à « la volée », selon un mode de réalisation particulier de l'invention ; la figure 2 présente un protocole entre une carte à puce et un terminal non-résistants aux attaques par fautes, sur lequel un procédé de sécurisation selon un mode de réalisation de l'invention peut-être appliqué en lien avec la figure 3; - la figure 3 présente un protocole résultant de l'application du procédé de sécurisation appliqué au protocole décrit en relation avec la figure 2, selon un mode de réalisation particulier de l'invention ; - la figure 4 présente la structure d'un composant électronique selon un mode de réalisation particulier de l'invention. 5. DESCRIPTION DÉTAILLÉE Sur toutes les figures du présent document, les éléments et étapes identiques sont désignés par une même référence numérique. Comme préalablement explicité, la méthode de l'invention rend aléatoire le flot de sortie des données lors de la mise en oeuvre de l'enchaînement des calculs cryptographiques. Cet aléa ne peut pas être anticipé par l'attaquant de sorte que celui-ci ne peut pas savoir si les résultats qu'il intercepte lors de ses attaques sont corrects ou non. Plus particulièrement, comme cela est décrit par la suite en relation avec la figure la, les procédés de l'art antérieur comprennent des suites de calculs cryptographiques qui sont réalisés par au moins une unité matérielle qui exécute des blocs de traitements. Un bloc de traitement comprend au moins une valeur d'entrée et au moins une valeur de sortie et une valeur de sortie sert de valeur d'entrée pour le bloc suivant un ordonnancement prédéfini. Au contraire, le procédé de sécurisation de la suite de calculs cryptographiques contre des attaques par injection de fautes de l'invention comprend : une étape d'initialisation d'au moins un vecteur d'initialisation par au moins un aléa, ledit vecteur étant utilisé comme valeur d'entrée d'au moins un bloc de traitement de ladite pluralité de blocs de traitement ; puis une étape de chaînage, selon un premier ordonnancement, entre des valeurs de sorties et des valeurs d'entrées de ladite pluralité des blocs de traitements, lesdites valeurs étant non tronquées ; Le procédé de l'invention comprend en outre, pour au moins une valeur de sortie d'un bloc de traitement de ladite pluralité de blocs de traitement, une étape de traitement discrétionnaire de ladite valeur de sortie par ladite unité de traitement. Ce traitement discrétionnaire est important : il empêche l'attaquant de savoir si la sortie qui est fournie est le résultat du calcul qui vient d'être réalisé ou le résultat d'un calcul réalisé antérieurement ou encore un résultat ne correspondant à aucun calcul. La figure la présente l'utilisation d'un mode d'opération particulier, le CBC (pour « Cipher Block Chaining »), adapté au contexte où une première unité matérielle transmet des messages à chiffrer à une deuxième unité matérielle utilisant un algorithme de chiffrement par blocs E et une clé secrète k, en mode CBC à « la volée », tel que connu dans l'état de la technique. La figure la permet d'expliciter l'ordonnancement des calculs. Nous considérons dans la suite que les messages clairs/chiffrés appartiennent à un ensemble de messages donné M. Par exemple, si l'algorithme de chiffrement par blocs E est l'AES (pour « Advanced Encryption Standard »), on a M = {0,1} 128, et si l'algorithme de chiffrement par blocs E est le 3-DES (pour « Data Encryption Standard», en version triple), on a M = {0,1}64. Nous noterons par la suite /Vo, 114-1 des messages clairs appartenant à l'ensemble M, et Co, CI, Co_i les messages chiffrés correspondants appartenant aussi à l'ensemble M. La première unité matérielle 101 souhaitant réaliser le chiffrement des messages clairs MO, MI, Mn_Ipeut réaliser cela en utilisant une deuxième unité matérielle 102 de la manière suivante : dans une étape 103, la première unité matérielle 101 transmet une requête à la deuxième unité matérielle 102 (par exemple une requête du type SOT (pour « Start Of Transmission »); suite à la réception d'une telle requête, la deuxième unité matérielle 102 instancie un vecteur d'initialisation (IV pour «Initializatioil Vector ») avec un aléa obtenu à partir d'un générateur matériel d'aléas sûr, et non biaisé. Ensuite, la deuxième unité matérielle 102 transmet 104 le vecteur d'initialisation /V à la première unité matérielle 101 ; - dans une étape 105, la première unité matérielle 101 transmet un premier message Mo à chiffrer à la deuxième unité matérielle 102 ; la deuxième unité matérielle 102 procède alors à la détermination de Co = Ek(IV 1 Mo) où l'opérateur 1 correspond à l'opération « ou exclusif »; - dans une étape 106, la deuxième unité matérielle transmet le message chiffré Co vers la première unité matérielle 101 ; dans une étape 107, la première unité matérielle 101 transmet un deuxième message MI à chiffrer à la deuxième unité matérielle 102 ; la deuxième unité matérielle 102 procède alors à la détermination de C1 = Ek(Co 1 A4-/) ; dans une étape 108, la deuxième unité matérielle transmet le message chiffré CI vers la première unité matérielle 101 ; Le processus de transmission de messages à chiffrer, de chiffrement et de transmission des messages chiffrés est ainsi itéré jusqu'à la réception par la première unité matérielle 101 du message chiffré Cn_i correspondant au chiffrement du dernier message clair envoyé par la première unité matérielle 101. La première unité matérielle 101 clôt à son initiative la communication avec la deuxième unité matérielle 102 en transmettant un signal en ce sens (par exemple un signal dit de EOT (pour « End Of Transmission»)). Il convient de noter que le procédé de l'art antérieur qui vient d'être décrit en relation avec la figure la n'est pas résistant aux attaques par injection de fautes. En effet, un attaquant souhaitant obtenir la clé secrète k utilisée par la deuxième unité matérielle peut procéder de la manière suivante pour arriver à ces fins : En choisissant un message Mo = IV, l'attaquant sait que la détermination de Co consiste à déterminer Ek(0); Une fois le message chiffré Co obtenu, l'attaquant sélectionne comme message à chiffrer MI = Co. En transmettant un tel message, l'attaquant sachant que la détermination de Ci consiste à déterminer à nouveau Ek(0), il peut réaliser une attaque par injection de fautes afin d'obtenir un résultat erroné du calcul de Ek(0). Remarquons que l'attaquant pourrait réaliser le même scénario d'attaque en utilisant Mo = IV 1 i où la valeur de l'entier i est choisie par l'attaquant. Dans ce cas, la deuxième unité matérielle réalisera à plusieurs reprises l'opération suivante Ek(1), et l'attaquant pourra mettre en oeuvre une attaque par injection de fautes. La figure lb présente l'utilisation d'un mode d'opération particulier, le mode CBC, adapté au contexte où une première unité matérielle transmet des messages à chiffrer à une deuxième unité matérielle utilisant un algorithme de chiffrement par blocs E et une clé secrète k, en mode CBC à « la volée », selon un mode de réalisation particulier de l'invention. En appliquant le procédé de sécurisation selon un mode de réalisation de l'invention, aux calculs cryptographiques décrits en lien avec la figure 1 a), afin d'empêcher la réalisation d'une attaque par injection de fautes fructueuse, la séquence desdits calculs doit être modifiée de sorte qu'elle mette en oeuvre les étapes du procédé de sécurisation. La suite de calculs dans le mode CBC correspond à une suite d'appel à un bloc de traitement correspond à un bloc de chiffrement E dont les entrées sont la clé utilisée, et le message à chiffrer, et une sortie est ressortie par un tel bloc. Dans ce mode de réalisation, les étapes d'initialisation et de chaînage sont réalisées de manière native, mais les sorties des blocs de traitements sont transmises selon un ordonnancement différent de celui utilisé pour réaliser le chaînage mis en oeuvre dans le mode CBC. Il s'agit de la caractéristique discrétionnaire du traitement des sorties. Le premier composant électronique 101 souhaitant réaliser le chiffrement des messages clairs Mo, , selon un tel mode de réalisation, peut atteindre ce résultat en utilisant une deuxième unité matérielle 102 de la manière suivante : dans une étape 109, la première unité matérielle 101 transmet une requête à la deuxième unité matérielle 102 (par exemple une requête du type SOT (pour « Start Of Transmission ») ; suite à la réception d'une telle requête, la deuxième unité matérielle 102 instancie un vecteur d'initialisation (IV pour « Initial Vector ») avec un aléa obtenu à partir d'un générateur matériel d'aléas sûr, et non biaisé. Cependant, la deuxième unité matérielle 102 ne transmet pas immédiatement le vecteur d'initialisation IV à la première unité matérielle 101 ; - dans une étape 110, la première unité matérielle 101 transmet un premier message Mo à chiffrer à la deuxième unité matérielle 102 ; la deuxième unité matérielle 102 procède alors à la détermination de Co = Ek(IV I Mo) ; puis - dans une étape 111, la deuxième unité matérielle transmet le vecteur d'initialisation IV vers la première unité matérielle 101 ; - dans une étape 112, la première unité matérielle 101 transmet un deuxième message /V1 à chiffrer à la deuxième unité matérielle 102 ; la deuxième unité matérielle 102 procède alors à la détermination de C1 = Ek(Co I A4-/) ; - dans une étape 113, la deuxième unité matérielle 102 transmet le message chiffré Co vers la première unité matérielle 101. Le processus de transmission de messages à chiffrer, de chiffrement et de transmission des messages chiffrés ainsi décalé d'un point de vue temporel, comparé à la technique décrite en relation avec la figure la, est ainsi itéré jusqu'à la réception par la première unité matérielle 101 du message chiffré Cn_i correspondant au chiffrement du dernier message clair envoyé par la première unité matérielle 101, faisant suite à l'émission d'un signal de fin de transmission (E01). Ainsi, la version de ce mode CBC selon un mode de réalisation de l'invention permet de résister aux attaques par injection de fautes. En effet, les sorties étant traitées discrétionnairement par l'unité matérielle 102, l'attaquant ne dispose pas de l'information lui permettant d'interpréter les résultats des attaques qu'il peut mener. Le traitement discrétionnaire peut ainsi comprendre : - une étape de stockage de la valeur de sortie pour un usage interne à l'unité de traitement ; - une étape de transmission de la valeur de sortie à une autre unité de traitement sous une forme d'un haché ; - une étape de transmission de la valeur de sortie, à une autre unité de traitement en suivant un deuxième ordonnancement différent du premier ordonnancement. D'autres types de traitement discrétionnaires peuvent également être mis en oeuvre. La figure 2 présente un protocole entre une carte à puce et un terminal non- résistants aux attaques par fautes, sur lequel un procédé de sécurisation selon un mode de réalisation de l'invention peut être appliqué en lien avec la figure 3. Le présent protocole est un protocole mettant en oeuvre des échanges entre une carte à puce 202 et un lecteur de cartes 201 pour, par exemple, l'établissement d'une messagerie sécurisée. Le protocole 200 met en oeuvre l'utilisation d'un bloc de chiffrement symétrique E qui est par exemple l'algorithme AES, et fait appel à des clés partagées If] (dite clé d'authentification externe), k2 (dite clé d'authentification interne) et k3 (dite clé de chiffrement sur un canal sécurisé). Dans une étape 203, une carte à puce transmet une donnée cl = valeur fixe (par exemple, cl = 0x0000...00) au moins pendant un certain temps ou un certain nombre d'utilisation. Cette valeur étant par exemple lue dans une table stockée dans une mémoire de la carte. La carte à puce 201 détermine la valeur de el = E ki(c1) et le lecteur de carte 202 détermine la valeur de e'l-E ki(c1) suite à la réception de la donnée ci. Le lecteur transmet 204 à destination de la carte à puce la valeur e'j qui est comparée avec la valeur de el. En cas de succès de cette comparaison, la carte est prête à recevoir un message c2 généré par le lecteur de carte, de manière similaire à la génération de la donnée ci. Le lecteur de carte transmet 205 la donnée c2 qui réalise alors le calcul de e2 = E k2(c2). Cette valeur e2 est alors transmise 206 au lecteur qui compare cette donnée e2 avec la valeur de e = E k2(c2). En cas de comparaison réussie, le lecteur est prêt à recevoir de la part de la carte à puce le résultat du calcul e3 = E k3(c3), où c3 est une donnée particulière. La donnée e3 est transmise au cours d'une étape 207. L'ensemble des calculs réalisés par la carte à puce ainsi que par le terminal correspond à une suite de calculs cryptographiques que l'on cherche à protéger contre les attaques par injection de fautes. En effet, il est clair que si l'implémentation du bloc de chiffrement symétrique E n'est pas résistante aux attaques par injection de fautes, ce protocole n'est pas résistant aux attaques par injections de fautes. De plus, quand bien même l'implémentation du bloc de chiffrement symétrique E serait résistante aux attaques par injection de fautes, le protocole serait vulnérable aux attaques consistant à sauter des portions de code. La figure 3 présente un protocole résultant de l'application du procédé de sécurisation appliqué au protocole décrit en relation avec la figure 2, selon un mode de réalisation particulier de l'invention. Ainsi, en appliquant le procédé de sécurisation selon un mode de réalisation de l'invention, ladite suite de calculs cryptographiques correspondant à l'ensemble des calculs réalisés par la carte à puce ainsi que par le terminal, en relation avec la figure 2, on obtient un protocole résistant aux attaques par injection de fautes, que l'implémentation du bloc de chiffrement symétrique E soit ou non résistant aux attaques par injection de fautes. Le protocole 300 met en oeuvre l'utilisation d'un bloc de chiffrement symétrique E qui est par exemple l'algorithme AES, et fait appel à des clés partagées k, (dite clé d'authentification externe), k2 (dite clé d'authentification interne) et k3 (dite clé de chiffrement sur un canal sécurisé). Dans une étape 303, une carte à puce transmet une donnée ci = IV (obtenue via un générateur d'aléa matériel), la donnée ci étant modifiée après chaque utilisation. La carte à puce 201 transmet dans une étape 303 un nombre aléatoire ci, puis le terminal détermine un nombre aléatoire r et détermine la valeur de e'1 = E r) et transmet la valeur de e'1 ainsi que celle de r à la carte à puce dans une étape 304. La carte peut alors déterminer la valeur de el = E ki(c r) puis, la valeur de e'1 est comparée avec la valeur de el. En cas de succès de cette comparaison, la carte est prête à recevoir un message c2 généré par le lecteur de carte, de manière similaire à la génération de la donnée ci. Le lecteur de carte transmet 305 la donnée c2. La carte à puce procède alors à la génération d'une donnée aléatoire c3 puis réalise alors le calcul de e2 = E (k21 el) (c21 c3). La valeur de e2 ainsi que celle de c3 sont alors transmises 306 au lecteur qui compare la valeur de e2 à celle de e '2 avec e = E (k21 el) (c21 c3). En cas de comparaison réussie, le lecteur est prêt à recevoir de la part de la carte à puce le résultat du calcul e3 où e3 = E (k31 e2) (di), où d1 est une donnée particulière. La donnée e3 est transmise au cours d'une étape 307. Ainsi, l'ensemble des calculs réalisés par la carte à puce ainsi que par le terminal correspond à une suite de calculs cryptographiques qui est désormais protégée contre les attaques par injection de fautes. Enfin, il convient de remarquer que la présente technique de sécurisation peut être adaptée à de nombreux protocoles. La figure 4 présente la structure d'un composant électronique selon un mode de réalisation particulier de l'invention. Le dispositif 400 comprend également une mémoire vive 402 (ou RAM, pour « Random Access Memory » en anglais), qui fonctionne comme une mémoire principale d'une unité de calcul 401 (ou CPU, pour « Central Processing Unit » en anglais). La capacité de cette mémoire vive 402 peut être étendue par une mémoire vive optionnelle, connectée à un port d'expansion (non illustré sur la figure 4). Le dispositif 400 comprend également une mémoire morte 403 (ou ROM, pour « Read Only Memory » en anglais). Après la mise sous tension, l'unité de calcul 401 est capable d'exécuter des instructions contenues dans la mémoire vive 402 et relatives à un programme d'ordinateur, une fois ces instructions chargées à partir de la mémoire morte 403 ou d'une mémoire externe (non illustrée sur la présente figure). Un tel programme d'ordinateur, s'il est exécuté par l'unité de calcul 401, permet l'exécution d'une partie ou la totalité des étapes décrites en relation avec les figures lb et 3. Dans une variante de réalisation, ces étapes peuvent également être implémentées sous la forme d'un matériel dans un composant programmable de type FPGA (« Field Programmable Gate Array » en anglais) ou de type ASIC (« Application-Specific Integrated Circuit » en anglais).25 REVENDICATIONS1. Procédé de sécurisation d'une suite de calculs cryptographiques contre des attaques par injection de fautes, lesdits calculs comprenant une mise en oeuvre, par au moins une unité matérielle, d'une pluralité de blocs de traitements, un bloc de traitement de ladite pluralité de blocs de traitement comprenant au moins une valeur d'entrée et au moins une valeur de sortie, ledit procédé étant caractérisé en ce qu'il comprend : une étape d'initialisation d'au moins un vecteur d'initialisation par au moins un aléa, ledit vecteur étant utilisé comme valeur d'entrée d'au moins un bloc de traitement de ladite pluralité de blocs de traitement ; puis une étape de chaînage, selon un premier ordonnancement, entre des valeurs de sorties et des valeurs d'entrées de ladite pluralité des blocs de traitements, lesdites valeurs étant non tronquées ; et en ce que ledit procédé comprend, pour au moins une valeur de sortie d'un bloc de traitement de ladite pluralité de blocs de traitement, une étape de traitement discrétionnaire de ladite valeur de sortie par ladite unité de traitement. 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape de traitement discrétionnaire appartient au groupe comprenant : - une étape de stockage de ladite valeur de sortie pour un usage interne à ladite unité de traitement ; - une étape de transmission de ladite valeur de sortie, à une autre unité de traitement sous une forme d'un haché ; - une étape de transmission de ladite valeur de sortie, à une autre unité de traitement en suivant un deuxième ordonnancement différent dudit premier ordonnancement. 3. Procédé selon l'une quelconque des revendications 1 et 2, caractérisé en ce qu'un vecteur d'initialisation préalablement initialisé est transmis concomitamment àune première valeur de sortie d'un bloc de traitement de ladite pluralité de blocs de traitement. 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ladite suite de calculs cryptographiques correspond aux calculs d'un mode opératoire de chiffrement. 5. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ladite suite de calculs cryptographique correspond à un protocole cryptographique, et ladite pluralité de blocs de traitement correspond à une pluralité de blocs de chiffrement cryptographique. 6. Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce que ledit aléa est obtenu par une technique appartenant au groupe comprenant : une utilisation d'un générateur matériel d'aléa ; une réception d'une donnée par une autre unité matérielle ; une lecture d'une donnée stockée dans une zone de mémoire. 7. Produit programme d'ordinateur, comprenant des instructions de code de programme pour la mise en oeuvre du procédé selon au moins une des revendications 1 à 6, lorsque ledit programme est exécuté sur un ordinateur. 8. Médium de stockage lisible par ordinateur et non transitoire, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur ou un processeur pour mettre en oeuvre le procédé selon au moins une des revendications 1 à 6. 9. Dispositif de sécurisation d'une suite de calculs cryptographiques contre des attaques par injection de fautes, lesdits calculs comprenant une mise en oeuvre, par au moins une unité matérielle, d'une pluralité de blocs de traitements, un bloc de traitement de ladite pluralité de blocs de traitement comprenant au moins une valeur d'entrée et au moins une valeur de sortie, ledit dispositif étant caractérisé en ce qu'il comprend : des moyens d'initialisation d'au moins un vecteur d'initialisation par au moins un aléa, ledit vecteur étant utilisé comme valeur d'entrée d'au moins un bloc de traitement de ladite pluralité de blocs de traitement ; des moyens de chaînage, selon un premier ordonnancement, entre des valeurs de sorties et des valeurs d'entrées de ladite pluralité des blocs de traitements, lesdites valeurs étant non tronquées ; pour au moins une valeur de sortie d'un bloc de traitement de ladite pluralité de blocs de traitement, des moyens de traitement discrétionnaires de ladite valeur de sortie par ladite unité de traitement.15