FR 3087022 A1 20200410 FR 1859337 A 20181009 SYSTÈMES ET PROCÉDÉS CRYPTOGRAPHIQUES RÉSISTANT À DES ATTAQUES PAR DÉFAUT La présente divulgation se rapporte, en règle générale, au domaine des systèmes et des procédés sécurisés. Plus particulièrement, la présente divulgation se rapporte à des systèmes sécurisés et à des procédés sécurisés pour protéger des systèmes cryptographiques contre des attaques par injection de défaut (« fault injection attack » en anglais) utilisées pour extraire des informations secrètes en surveillant, sondant et manipulant un ensemble de circuits électriques qui effectue des opérations liées à la sécurité. En cryptanalyse, une attaque par défaut ( ou à « des modes de réalisation » veut dire qu'une particularité, une structure, une caractéristique ou une fonction particulières en lien avec le mode de réalisation est incluse dans au moins un mode de réalisation de l'invention et peut l'être dans au moins deux modes de réalisation. De même, les apparitions des phrases mentionnées ci-dessus à divers endroits dans la spécification ne se réfèrent pas nécessairement toutes au même mode de réalisation ou aux mêmes modes de réalisation L'utilisation de certains termes à divers endroits dans la spécification est destinée à l'illustration et ne doit pas être interprétée comme étant limitative. Un service, une fonction ou une ressource n'est pas limité, ou n'est pas limitée, à un seul service, à une seule fonction ou à une seule ressource ; l'usage de ces termes peut se référer à un groupe de services, de fonctions ou de ressources associés, qui peuvent être répartis ou rassemblés. En outre, l'utilisation d'une mémoire, d'une base de données, d'une base d'informations, d'un magasin de données, de tables, d'un matériel, et analogue, peut être utilisée dans le présent document 7 pour se référer à un composant ou à des composants, du système dans lequel, ou dans lesquels des informations peuvent être entrées ou, par ailleurs, enregistrées. Il conviendra également de noter que des modes de réalisation décrits dans le présent document sont donnés dans le contexte d'algorithmes informatiques qui utilisent un langage de programmation pour exécuter des étapes mais une personne qualifiée dans la technique reconnaîtra que les enseignements de la présente divulgation ne sont pas limités à des applications logicielles et peuvent également être mis en oeuvre dans un matériel, par exemple à l'aide de machines étatiques. Dans ce document, le ternie « boucle » se réfère un quelconque type d'instruction de flux de commande qui définit une répétition ou une itération, tel que n'importe quel type de boucle FOR ou de boucle WHILE, y compris n'importe quel type de boucle de composé. Les procédés et systèmes présentés dans le présent document abordent un certain nombre de problèmes de sécurité dans des systèmes informatiques et assurent l'intégrité du système non seulement pour des calculs cryptographiques et des microcontrôleurs sécurisés mais également pour une grande variété de mises en oeuvre de logiciel et de matériel qui peuvent tirer parti des contre-mesures infectieuses résistant à une attaque par défaut divulguées dans le présent document. La FIG. 1 montre un fragment de code donné à titre d'exemple tel qu'il est utilisé dans des algorithmes communs qui effectuent des calculs cryptographiques d'un certain genre. La structure représentée sur la FIG. 1 peut être utilisée par un algorithme cryptographique, tel que le système RSA ou le code ECC, pour effectuer des itérations de la boucle dans une boucle pour effectuer des calculs cryptographiques. Comme une personne ayant des compétences dans la technique le reconnaîtra, un 1-rament de code 100 n'est pas nécessairement spécifique au domaine des calculs cryptographiques. Comme représenté sur la FIG. I. un fragment de code 100 contient, à la ligne 1, une étape d'initialisation qui initialise la variable g. Les lignes 2 à 9 sont dédiées à une boucle FOR dans laquelle plusieurs calculs sont effectués. Un premier calcul, représenté à la ligne 3, implique un calcul qui est toujours effectué par la boucle. Les lignes 4 à 9 contiennent une condition si-sinon qui effectue des fonctions en se basant sur certains paramètres et, à la fin de la boucle FOR, le résultat q est renvoyé. Toutefois, les itérations de la boucle dans un algorithme 100 peuvent être facilement manipulées par un attaquant sophistiqué. Par exemple, l'attaquant peut employer une attaque différentielle par analyse de défaut pour obtenir d'abord un résultat régulier (à savoir, authentique) q ; et, ensuite, l'attaquant peut injecter un défaut dans le microprocesseur qui exécute l'algorithme 100, par exemple, dans le cadre d'un algorithme cryptographique. L'attaquant peut le faire, par exemple, en entravant la tension du microprocesseur pour contraindre le microprocesseur à faire une erreur pendant l'exécution d'un algorithme 100. Ensuite, l'attaquant peut comparer la différence entre le résultat régulier et les résultats erronés et, en se basant sur cette différence, l'attaquant peut alors obtenir quelques informations utiles qui aident à récupérer un secret ou un secret partiel, tel qu'une clé privée. De plus, l'attaquant peut injecter un défaut pendant le calcul de la boucle tel qu'un défaut pour modifier le nombre d'itérations qu'il est prévu que la boucle FOR subisse afin de contraindre le microcontrôleur à divulguer des informations exploitables. Par exemple, pour une itération de la boucle, l'attaquant peut calculer un résultat, manipuler le compteur de boucle pour compter une itération en moins que celle proscrite par l'algorithme 100 et, ensuite, calculer la même boucle avec le nombre réduit d'itérations, à savoir, réduit d'une 9 itération. En comparant la manière avec laquelle les deux scénarios affectent le résultat de l'algorithme, l'attaquant peut alors être capable de déduire ce qui s'est produit à la dernière étape de l'itération, donc l'étape si de la condition si-sinon. Cette information peut alors permettre à l'attaquant d'obtenir quelques informations utiles concernant une clé secrète et analogue_ Par conséquent, il serait souhaitable de protéger le nombre d'itérations et les contenus d'une boucle utilisée dans un calcul cryptographique qui utilise un algorithme tel que l'algorithme 100 sur la FIG. 1. Des modes de réalisation divulgués dans le présent document utilisent une stratégie de calculs infectieux qui implique l'injection dans un calcul d'un défaut qui se propage à travers le calcul par le même trajet que pour des exécutions correctes et incorrectes pour modifier le texte chiffré de telle manière que la sortie erronée ne fournisse aucune information utile à un attaquant. La FIG. 2 est un organigramme donné à titre d'exemple qui illustre un processus pour protéger le nombre d'itérations et le contenu d'une boucle utilisée dans un calcul cryptographique, selon divers modes de réalisation de la présente divulgation de l'invention. Le processus 200 commence à l'étape 202 lorsqu'un secret est utilisé dans un calcul qui sort un nombre attendu, le secret contraint le calcul à sortir un résultat incorrect dans le cas où le calcul a été soumis à une ou plusieurs manipulations de telle sorte que, dans le cas d'une attaque, aucune information ne soit révélée à partir de laquelle des informations confidentielles peuvent être extraites. À l'étape 204, le nombre attendu est comparé à un nombre qui a été calculé par le calcul. En se basant sur le résultat du calcul, à l'étape 206, il est déterminé si le calcul est valide. 10 À l'étape 208, à la suite du calcul qui est invalide, une erreur est aénérée. L'erreur indique que le calcul a été soumis à une ou plusieurs manipulations. À l'étape 210, à la suite du calcul qui est valide, un effet du secret est supprimé du nombre attendu et un résultat correct est sorti 11 conviendra de noter pour tous les modes de réalisation divulgués dans le présent document (1) que certaines étapes peuvent facultativement être réalisées (2) que des étapes ne peuvent pas être limitées à l'ordre spécifique exposé dans le présent doument; (3) que certaines étapes peuvent être réalisées dans des ordres différents ; et (4) que certaines étapes peuvent être réalisées en même temps. La FIG. 3 illustre une mise en oeuvre de logiciel donnée à titre d'exemple d'un processus pour protéger le nombre d'itérations et le contenu d'une boucle utilisée dans un calcul cryptographique, selon divers modes de réalisation de la présente divulgation de l'invention. On comprendra que le processus 300 sur la FIG. 3 est un fragment de code qui peut être utilisé dans de nombreux types d'algorithmes cryptographiques. Dans des modes de réalisation, le processus 300 peut être utilisé pour effectuer des calculs cryptographiques dans un algorithme cryptographique qui effectue des itérations de la boucle. À la ligne 1, un fragment de code 300 comprend une étape d'initialisation qui attribue un nombre aléatoire à une variable, r, pour initialiser une boucle itérative. Dans des modes de réalisation, le nombre aléatoire peut être généré en utilisant n'importe quel type de générateur de nombres aléatoires connu dans la technique. Dans des modes de réalisation, tels que représentés à la ligne 2, une valeur u peut être dérivée de la variable r et utilisée pour des calculs dans la boucle au lieu d'utiliser la variable r elle-même. 11 À la ligne 3, une variable q est initialisée en fonction de la valeur u de telle sorte que les lignes 1 à 3 sur la FIG. 3 puissent être vues comme étant une procédure d'initialisation qui utilise le nombre aléatoire. Les lignes 4 à 12 définissent une boucle FOR qui effectue plusieurs calculs qui comprennent la valeur aléatoire u. On comprendra que les fonctions dans la boucle FOR, et donc u, évoluent au fil du temps, à savoir que u peut être manipulé dans la boucle FOR et peut être différent à chaque itération de la boucle. Il convient de comprendre qu'une fonction représentée avec une apostrophe 0 sur la FIG. 3 peut, ou peut ne pas, être la même fonction que celle sur la FIG. I, Dans certains modes de réalisation, l'utilisation d'une fonction représentée avec une apostrophe provoque la modification du résultat attendu q par u. De manière similaire, la fonction h1 peut, ou peut ne pas, modifier la variable u. Dans certains modes de réalisation, la variable u est utilisée dans toutes les fonctions représentées avec une apostrophe afin de fournir le plus grand nombre de calculs infectieux et de détecter des erreurs dans des calculs impliquant la variable u. Dans des modes de réalisation, lorsqu'une fonction cryptographique est lourde d'un point de vue computationnel de telle sorte qu'il n'existe pas de manière aisée d'insérer la variable u dans la fonction, u peut être utilisée à la lig.ne 5 (et la comparaison à la ligne 14 pour garantir, au moins, que le nombre d'itérations de la boucle est correct), niais pas aux lignes 6, 8 et 10. Comme cela, est représenté sur la FIG. 3, dans la boucle FOR, les lignes 5 et 6 peuvent toujours être calculées. Comme cela est montré en commençant avec la ligne 5, dans des modes de réalisation, la variable u peut être utilisée dans tous les calculs dans la boucle FOR, par exemple dans les fonctions hi et - g 12 Dans des modes de réalisation, la fonction g'2 comprend une construction qui peut être exprimée sous la forme d'une addition, par exemple A + B, et g13 est une construction qui peut être exprimée sous la forme d'une soustraction, par exemple A - B, la valeur q finale ou correcte, de telle sorte que le résultat sera modifié de la même manière Les lignes 7 à 11 comprennent une condition si-sinon qui effectue des fonctions en se basant sur certains paramètres. À la fin de la boucle FOR, le résultat q est évalué À la ligne 13, la valeur correcte q, à savoir le résultat attendu, peut être récupérée, par exemple en supprimant, le cas échéant, du résultat attendu q l'élément aléatoire, à savoir le composant u, de sorte à éviter un résultat erroné. Dans des modes de réalisation, indépendamment de la. condition si-sinon à la ligne 14, le même calcul est effectué avec u. En d'autres termes, la variable u peut modifier q de la même manière. Il convient de noter que, si des fonctions avec apostrophe ne sont pas utilisées ou, comme cela est mentionné auparavant, sont les mêmes que des fonctions sans apostrophe, il peut ne pas être nécessaire de supprimer le nombre aléatoire de q parce que q ne sera pas un élément de u. Il s'ensuit, par exemple, que la ligne 13 ne peut pas être utilisée. À la ligne 14, une fois que le composant u a été supprimé, les deux fonctions h7(r) et h3(u) sont comparées l'une à l'autre pour déterminer si elles donnent le même résultat. Comme cela a été mentionné, la valeur u attendue peut être calculée à partir de la valeur r et une incohérence peut être détectée. Si le nombre d'itérations calculées est incorrect, g'4 ne peut pas supprimer correctement u de q de telle sorte que /73(u) ne correspond pas à h2(i) et, donc, l'erreur peut être facilement détectée. Dans certains modes de réalisation, h, et 113 dépendent des types de calculs qui sont effectués sur la valeur u pendant les itérations dans la boucle FOR. Dans des modes de réalisation, 13 étant donné la valeur r. la nouvelle valeur u qui devrait être Obtenue à la fin de la boucle FOR peut être calculée. Il s'ensuit que, si h2(r) et h3(u) sont différents, cela peut indiquer que la valeur u n'a pas correctement évolué pendant l'itération de la boucle. En d'autres termes, on peut détecter si la valeur u a été correctement calculée par l'itération de la boucle ou si u a évolué selon une certaine manière arithmétique lors de l'itération de la boucle qui ne correspond pas à. un résultat attendu. En effet, la comparaison à la ligne 14 peut déterminer si un nombre attendu est égal au nombre calculé pour indiquer si les calculs dans la boucle sont valides. Dans des modes de réalisation, s'il est déterminé que le secret connu u est incorrect (à savoir à la. ligne 13 et des calculs dans la boucle sont également incorrects), une erreur peut être renvoyée, comme cela est illustré à la lime 17. Si, par exemple, le nombre d'itérations de la boucle a été manipulé par un attaquant, la valeur attendue du secret qui subit un traitement cryptographique serait également incorrecte et pourrait donc être détectée. De manière avantageuse, les résultats erronés ne peuvent pas être utilisés par un attaquant qui cherche à récupérer des secrets. Dans des modes de réalisation, cela est dû au fait que l'erreur se propage tellement dans la boucle que la valeur erronée ne fournira aucune information utile à l'attaquant et ne fournira aucune information à partir de laquelle des informations utiles peuvent être extraites, selon les principes d'un calcul infectieux évoqué ci-dessus. Il s'ensuit que, à cause d'un calcul infectieux, les défauts seraient si importants qu'un nombre relativement important de bits changera de telle sorte que pratiquement aucune information secrète ne puisse être extraite en restaurant des bits à l'aide d'une attaque par défaut. 14 Dans des modes de réalisation, par ailleurs, si aucune erreur n'a été détectée, de telle sorte que l'algorithme produise un résultat correct, la valeur q finale est renvoyée comme étant valide à la ligne 15. Dans des modes de réalisation, à cause d'un calcul infectieux si le nombre d'itérations a été manipulé, par exemple si une étape a été sautée, la valeur u ne serait pas la valeur attendue et le résultat q serait être incorrect à cause du caractère aléatoire de /./. II s'ensuit que, si le q incorrect est exposé à un attaquant, l'attaquant ne serait pas capable d'utiliser cette valeur q modifiée pour récupérer de quelconques informations utiles. En résumé, avant d'entrer dans une boucle, une valeur secrète et aléatoire peut être initialisée et, dans la boucle, la valeur secrète et aléatoire peut être traitée à l'aide d'équations pour évoluer au fil du temps et modifier des résultats intermédiaires dans la boucle. À la fin de la boucle. les valeurs résultantes peuvent être utilisées pour détecter une possible altération non souhaitée. Une valeur attendue peut être corrigée en fonction de la valeur aléatoire et elle peut être vérifiée si la valeur aléatoire a évolué correctement Dans le cas d'un défaut, des résultats dépendraient du nombre aléatoire et, donc, un résultat erroné ne pourrait pas être utilisé par l'attaquant. De manière avantageuse, le coût des calculs supplémentaires pour mettre en oeuvre des éléments des contre-mesures, telles que de simples ajouts ou soustractions, est beaucoup plus faible par comparaison à des éléments des calculs cryptographiques assez complexes et, donc, lourds d'un point de vue cornputationnel qui impliquent des boucles, etc. Il s'ensuit que la charge opérationnelle pour obtenir une intégrité de données accrue, une sécurité pour une itération de la boucle et un flux de données protégé est limitée. En effet, des données expérimentales ont montré que, telle qu'appliquée à une cryptographie sur les 15 courbes elliptiques, la charge opérationnelle attendue pour les contre-mesures divulguées s'élève à environ 13 % du coût temporel et moins de 20 % du coût d'usage de mémoire (en considérant seulement des registres de travail). Il convient de noter que, dans des modes de réalisation, les enseignements de la présente divulgation peuvent être combinés à un quelconque calcul en cours, par exemple tel que celui pour une boucle existante. Des aspects du présent document de brevet ont pour objet des systèmes de gestion d'informations Pour les besoins de cette divulgation, un système de traitement d'informations peut comprendre n'importe quelle instrumentalité ou groupes d'instrumental nés destinés à compter, calculer, déterminer, classer, traiter, transmettre, recevoir, récupérer, trouver l'origine de, acheminer, commuter, stocker, afficher, comrnurnquer. manifester, détecter, enregistrer, reproduire, traiter ou utiliser n'importe quelle forme d'informations, d'intelligence ou de données à des fuis commerciales, scientifiques, pour commander ou pour d'autres buts. Par exemple, un système de traitement d'informations peut être un ordinateur personnel (par exemple, un ordinateur de bureau ou un ordinateur portable), une tablette électronique, un dispositif mobile (par exemple, un assistant numérique personnel (PDA) ou un téléphone intelligent), un serveur (par exemple, un serveur lame ou un serveur rack), un dispositif de stockage de réseau ou n'importe quel autre dispositif approprié et dont la taille, la forme, les performances, la fonctionnalité et le prix peuvent varier. Le système de traitement d'informations peut comprendre une mémoire vive (RAM), une ou plusieurs ressources de traitement telles qu'une unité centrale de traitement (CPU) ou une logique de commande de matériel ou de logiciel, une mémoire morte (ROM) et/ou d'autres types de mémoire non volatile. Des composants supplémentaires du système de traitement d'informations peuvent comprendre un ou plusieurs lecteurs de disque, un ou 16 plusieurs ports de réseau pour communiquer avec des dispositifs externes ainsi que divers dispositifs d'entrée et de sortie (I/O). tels qu'un clavier, une souris, un écran tactile et/ou un dispositif d'affichage vidéo. Le système de traitement d'informations peut également comprendre un ou plusieurs bus destinés à transmettre des communications entre les divers composants matériels. La FIG. 4 représente un diagramme simplifié sous forme de blocs d'un dispositif informatique/système de traitement d'informations (ou d'un système informatique) selon des modes de réalisation de la présente divulgation.. On comprendra que les fonctionnalités montrées pour le système 400 peuvent fonctionner pour prendre en charge divers modes de réalisation d'un système informatique - bien qu'il faille comprendre qu'un système informatique peut être configure de manière différente et comprendre différents composants, y compris le fait d'avoir moins, ou davantage, de composants que ceux représentés sur la FIG. 4. Comme cela est illustré sur la FIG. 4, le système informatique 400 comprend une ou plusieurs unités centrales de traitement (CPLT) 410 qui fournissent des ressources informatiques et commandent l'ordinateur. L'unité CPU 410 peut être mise en oeuvre avec un microprocesseur ou analogue et peut également comprendre une ou plusieurs unités de traitement graphique (GPU) 417 et/ou un coprocesseur à virgule flottante pour des calculs mathématiques. Le système 400 peut également comprendre une mémoire système 412, qui peut être sous la forme d'une mémoire vive (RAM), d'une mémoire morte (ROM), ou de l'une et de l'autre. Un certain nombre de dispositifs de commande et de dispositifs périphériques peuvent également être fournis, comme cela est montré sur la FIG. 4. Un dispositif de commande 17 d'entrée 403 représente une interface avec un ou plusieurs divers dispositifs d'entrée 404, tels qu'un clavier, une souris, un écran tactile et/ou un stylet. Le système informatique 400 peut également comprendre un dispositif de commande de stockage 407 pour avoir une interface avec un ou plusieurs dispositifs de stockage 408 qui comprennent chacun un support de stockage, tel qu'une bande magnétique ou un disque magnétique, ou un support optique qui pourrait être utilisé pour enregistrer des programmes d'instructions pour faire fonctionner des systèmes, des logiciels utilitaires et des applications, qui peuvent comprendre des modes de réalisation de programmes qui mettent en oeuvre divers aspects de la présente invention. Un ou plusieurs dispositifs de stockage 408 peuvent également être utilisés pour stocker des données traitées ou des données qui doivent être traitées selon l'invention. Le système 400 peut également comprendre un dispositif de commande d'affichage 409 pour fournir une interface avec un dispositif d'affichage 411, qui peut être un tube cathodique (CRT), un dispositif d'affichage à transistor à couches minces (TFT), une diode électroluminescente organique, un panneau électroluminescent, un écran à plasma ou un autre type de dispositif d'affichage Le système informatique 400 peut également comprendre un ou plusieurs dispositifs de commande de périphérique ou une ou plusieurs interfaces pour un ou plusieurs périphériques, par exemple un contrôleur de scanneur 405 et un contrôleur d'imprimante 412'. Un exemple de périphérique peut comprendre une ou plusieurs imprimantes 413, un ou plusieurs scanneurs 406, un ou plusieurs dispositifs d'entrée, un ou plusieurs dispositifs de sortie, un ou plusieurs capteurs et analogues. Un dispositif de commande de communication 414 peut avoir une interface avec un ou plusieurs dispositifs de communication 415, ce qui permet au système 400 de se connecter à 18 des dispositifs distants par le biais d'un réseau quelconque parmi divers réseaux comprenant Internet, une ressource en nuage (par exemple, un nuage Ethernet, un nuage de canal de fibre sur Ethernet (FCoE)/pontage de centre de données (DCB), etc.), un réseau local (LAN), un réseau étendu (NAN) un réseau de stockage (SAN) ou par de quelconques signaux de porteuse électromagnétiques appropriés, y compris des signaux infrarouges. Tous les principaux composants du système peuvent être raccordés à un bus 416, qui peut représenter plus d'un bus physique. Toutefois, divers composants du système peuvent, ou peuvent ne pas, se trouver à proximité physique les uns des autres. Par exemple, des données d'entrée et/ou des données de sortie peuvent être transmises à distance depuis un emplacement physique à un autre. De plus, des programmes qui mettent en oeuvre divers aspects de l'invention, peuvent être accessibles à partir d'un emplacement distant (par exemple, un serveur) sur un réseau. De telles données et/ou de tels programmes peuvent être transmis au moyen d'un quelconque support lisible par une machine de divers supports lisibles par une machine qui comprennent, mais qui ne sont pas limités à : des supports magnétiques, tels que des disques durs, des disquettes et une bande magnétique ; des supports optiques tels que des CD-ROM et des dispositifs holographiques des supports magnéto-optiques ; et des dispositifs matériels qui sont spécialement configurés pour stocker ou pour stocker et exécuter un code de programme, tels que des circuits intégrés propres à une application (ASIC), des réseaux logiques programmables (PLD), des dispositifs à mémoire flash et des dispositifs à mémoire morte (ROM) et à mémoire vive (RAM). Des aspects de la présente invention peuvent être codés sur un ou plusieurs supports non transitoires lisibles par ordinateur avec des instructions pour un ou plusieurs processeurs ou une ou plusieurs unités de traitement pour provoquer la réalisation d'étapes. Il conviendra de 19 noter que le ou les supports non transitoires lisibles par ordinateur comprendront une mémoire volatile et une mémoire non volatile. Il conviendra de noter que des mises en oeuvre alternatives sont possibles, y compris une mise en oeuvre de matériel ou une mise en oeuvre de logiciel/matériel. Des fonctions mises en oeuvre par un matériel peuvent être réalisées à l'aide d'un ou de plusieurs circuits ASIC, d'un ou de plusieurs réseaux programmables, d'un ou de plusieurs ensembles de circuits de traitement de signal numérique ou analogues. Par conséquent, les ternies « moyens » dans l'une quelconque des revendications sont prévus pour couvrir à la fois une mise en oeuvre de logiciel et une mise en oeuvre de matériel. De manière similaire, le ternie « support ou supports lisibles par ordinateur » tel qu'utilisé dans le présent document, comprend un logiciel et/ou un matériel sur lequel est intégré un programme d'instructions, ou une combinaison de ces derniers, Avec ces mises en oeuvre alternatives à l'esprit, on comprendra que les figures et la description jointe fournissent les informations fonctionnelles dont une personne qualifiée dans la technique aurait besoin pour écrire un code de programme (à savoir, un logiciel) et/ou pour fabriquer des circuits (à savoir, un matériel) pour effectuer le traitement requis. Il conviendra de noter que des modes de réalisation de la présente invention peuvent en outre se rapporter à des produits d'ordinateur ayant un support non transitoire tangible lisible par ordinateur sur lesquels il y a un code d'ordinateur pour effectuer diverses opérations mises en oeuvre par ordinateur_ Les supports et le code d'ordinateur peuvent être ceux spécialement conçus et construits dans les buts de la présente invention ou ils peuvent être du genre connu des personnes ayant des compétences dans les techniques appropriées ou disponible auprès de celles-ci Des exemples de supports tangibles lisibles par ordinateur comprennent, mais ne sont pas limités à : des supports magnétiques, tels que des disques durs, des disquettes et une 20 bande magnétique ; des supports optiques tels que des CD-ROM et des dispositifs holographiques ; des supports magnéto-optiques et des dispositifs matériels qui sont spécialement configurés pour stocker ou pour stocker et exécuter un code de programme, tels que des circuits intégrés propres à une application (ASIC), des réseaux logiques programmables (PLD), des dispositifs à mémoire flash et des dispositifs à mémoire morte (ROM) et à mémoire vive (RAM). Des exemples de code d'ordinateur comprennent un code machine, tel que produit par un compilateur, et des fichiers contenant un code de niveau supérieur qui sont exécutés par un ordinateur à l'aide d'un interpréteur. Des modes de réalisation de la présente invention peuvent être mis en oeuvre totalement ou en partie en tant qu'instructions exécutables par une machine qui peuvent se trouver dans des modules de programme qui sont exécutés par un dispositif de traitement. Des exemples de modules de programme comprennent des bibliothèques, des programmes, des routines, des objets, des composants et des structures de données. Dans des environnements informatiques distribués, des modules de programme peuvent être physiquement situés dans des réglages qui sont locaux distants, ou les deux. Une personne qualifiée dans la technique reconnaîtra qu'aucun système informatique ou aucun langage de programmation n'est essentiel pour la pratique de la présente invention. Une personne qualifiée dans la technique reconnaîtra également qu'un certain nombre d'éléments décrits ci-dessus peuvent être physiquement etiou fonctionnellement séparés dans des sous-modules ou combinés ensemble. Les personnes qualifiées dans la technique comprendront que les précédents exemples et modes de réalisation sont donnés à titre d'exemple et ne se limitent pas à la portée de la présente divulgation. Il est prévu que toutes les permutations, toutes les améliorations, tous 21 les équivalents, toutes les combinaisons et tous les progrès apportés à cette dernière qui sont apparents pour les personnes qualifiées dans la technique lors d'une lecture de la spécification et d'une étude des dessins, sont inclus dans le véritable esprit et la véritable portée de la présente divulgation li comiendra également de noter que des éléments selon l'une quelconque des revendications peuvent être conçus différemment, y compris avoir de multiples dépendances, REVENDICATIONS1. Appareil (400) pour effectuer des calculs, l'appareil comprenant : un processeur (410); et un support non transitoire lisible par ordinateur (412) couplé au processeur, le support non transitoire lisible par ordinateur comprenant des instructions qui, lorsqu'elles sont exécutées par le processeur, provoquent la réalisation d'étapes, les étapes comprenant : utiliser un secret dans un calcul qui produit en sortie un nombre attendu, le secret contraignant le calcul à. sortir un résultat incorrect dans le cas où le calcul a été soumis à une ou plusieurs manipulations de telle sorte que, dans le cas d'une attaque, aucune information ne soit révélée à partir de laquelle des informations confidentielles peuvent être extraites ; comparer le nombre attendu à un nombre calculé par le calcul ; en se basant sur le calcul, déterminer si le calcul est valide si le calcul qui déterminé comme invalide, générer une erreur indiquant que le calcul a été soumis à la ou aux manipulations ; et si le calcul qui déterminé comme valide, supprimer un effet du secret du nombre attendu pour sortir un résultat correct. 2. Appareil selon la revendication 1. dans lequel le secret est dérivé d'un nombre aléatoire. 23 3. Appareil selon la revendication 2, dans lequel le nombre aléatoire est généré par un générateur de nombres aléatoires. 4. Appareil selon l'une quelconque des revendications 1 à 3, dans lequel le calcul comprend une itération de boucle. 5. Appareil selon la revendication 4 lorsqu'elle dépend de la 2 ou la 3, dans lequel le nombre aléatoire est traité par une ou plusieurs étapes dans la boucle. 6. Appareil selon la revendication 5, or selon la revendication 4 lorsqu'elle dépend de la 2 ou la 3, dans lequel le nombre aléatoire est injecté à une étape d'initialisation à l'extérieur de la boucle. 7. Appareil selon l'une quelconque des revendications 2,3, 5, 6, ou 4 lorsqu'elle dépend e la 2 ou la 3, dans lequel le nombre aléatoire est injecté dans un calcul en cours pour faciliter un calcul infectieux. 8 Appareil selon la revendication 7 dans lequel le calcul infectieux fait que le résultat incorrect est supérieur à celui qui serait obtenu si le calcul infectieux n'avait pas été utilisé. 9. Appareil selon l'une quelconque des revendications 4, 5, 6, ou 7-8 lorsqu'elles dépendent de la 4, 5 ou 6, dans lequel la boucle est une boucle FOR. 24 10. Appareil selon l'une quelconque des revendications 4, 5, 6, 9 ou 7-8 lorsqu'elles dépendent de la 4, 5 ou 6, dans lequel la ou les manipulations comprennent la réduction du nombre d'itérations de la boucle. 11. Appareil selon l'une quelconque des revendications 4, 5, 6, 9, 10 ou 7-8 lorsqu'elles dépendent de la 4, 5 ou 6, dans lequel la boucle manipule des valeurs associées au secret. 12. Appareil selon l'une quelconque des revendications I à 11, dans lequel le nombre calculé par le calcul est calculé avant le calcul du nombre attendu. 13. Procédé comprenant utiliser (202) un secret dans un calcul qui produit en sortie un nombre attendu, le secret contraignant le calcul à sortir un résultat incorrect dans le cas où le calcul a été soumis à mie ou plusieurs manipulations de telle sorte que, dans le cas d'une attaque, aucune information ne soit révélée à partir de laquelle des informations confidentielles peuvent être extraites ; comparer (204) le nombre attendu à un nombre calculé par le calcul ; en se basant sur le calcul, déterminer (206) si le calcul est valide ; si le calcul qui déterminé comme invalide, générer (208) une erreur indiquant que le calcul a été soumis à la ou aux manipulations et si le calcul qui déterminé comme valide, supprimer (210) un effet du secret du nombre attendu pour sortir un résultat correct. 25