FR3087022A1 - Systèmes et procédés cryptographiques résistant à des attaques par défaut - Google Patents

Systèmes et procédés cryptographiques résistant à des attaques par défaut Download PDF

Info

Publication number
FR3087022A1
FR3087022A1 FR1859337A FR1859337A FR3087022A1 FR 3087022 A1 FR3087022 A1 FR 3087022A1 FR 1859337 A FR1859337 A FR 1859337A FR 1859337 A FR1859337 A FR 1859337A FR 3087022 A1 FR3087022 A1 FR 3087022A1
Authority
FR
France
Prior art keywords
calculation
loop
secret
information
random number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1859337A
Other languages
English (en)
Other versions
FR3087022B1 (fr
Inventor
Jeremy Dubeuf
Frank Lhermet
Yves Rene Loisel Yann
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maxim Integrated Products Inc
Original Assignee
Maxim Integrated Products Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maxim Integrated Products Inc filed Critical Maxim Integrated Products Inc
Priority to FR1859337A priority Critical patent/FR3087022B1/fr
Priority to US16/596,590 priority patent/US11349635B2/en
Publication of FR3087022A1 publication Critical patent/FR3087022A1/fr
Application granted granted Critical
Publication of FR3087022B1 publication Critical patent/FR3087022B1/fr
Priority to US17/824,912 priority patent/US11902412B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Un procédé qui empêche des attaques par injection de défaut. Dans divers modes de réalisation, ceci est réalisé en profitant du fait qu'un attaquant ne peut pas utiliser un résultat qui a été erroné pour récupérer un secret. En utilisant un calcul infectieux, une erreur est propagée dans une boucle de telle sorte que la valeur erronée ne fournira à l'attaquant aucune information utile ou aucune information à partir de laquelle des informations utiles peuvent être extraites. Des défauts provenant d'une attaque par défaut seront si importants qu'un nombre relativement important de bits changera. Il s'ensuit que pratiquement aucune information secrète ne peut être extraite en restaurant des bits.

Description

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 (« fault attack » en anglais) est un type d’attaque par canal latéral prévu pour exploiter des faiblesses dans la mise en œuvre d’un système informatique pour avoir un accès à un contenu sensible. Une attaque active par injection de défaut est un type d’attaque de mise en œuvre qui implique la manipulation d’un système par ailleurs sécurisé pour divulguer des informations exploitables en injectant, pendant un calcul cryptographique, un défaut lors de la mise en œuvre du système informatique pour imposer un résultat erroné qui s’écarte d’opérations cryptographiques régulières de telle sorte que les états internes du système puissent être révélés.
Des attaques par analyse des défauts (« fault analysis attacks » en anglais) constituent une menace commune spécialement pour des systèmes sécurisés intégrés qui utilisent des algorithmes cryptographiques tels que le système RSA, le code ECC (« Elliptic Curve Cryptography » en anglais), etc., qui se fient fortement à des boucles. Un attaquant sophistiqué peut donc observer une réponse régulière du système pendant un calcul cryptographique et, ensuite, injecter dans un but précis un défaut dans un dispositif, tel qu’un microcontrôleur, en manipulant une condition environnementale du dispositif, par exemple.
pour manipuler un peu les nombreuses étapes pour une itération de la boucle de sorte à provoquer un résultat qui contient une erreur de calcul réalisée par l’algorifhme cryptographique. L’attaquant sophistiqué peut ensuite examiner les effets du défaut sur le dispositif et sur son comportement, par exemple, en comparant les différences dans les résultats erronés et réguliers afin de déduire des informations pratiques suffisantes pour vaincre la sécurité de l’algorithme et récupérer un contenu sensible, tel que des bits d’une clé secrète. Il s’ensuit que le système peut refuser une certification de sécurité en raison d’une non-conformité à des nonnes de sécurité relevées.
Une approche actuelle tente d’assurer une protection contre des attaques par défaut sur une boucle et consiste à utiliser deux compteurs de boucle distincts qui commandent des itérations de la boucle en comptant le nombre d’itérations et en évaluant les deux chiffres à la fin de la boucle pour déterminer si une incohérence entre les deux compteurs s’est produite. Si tel est le cas, le système interprète ce résultat comme étant une attaque potentielle et peut déclencher une alarme, etc. Toutefois, dans le cas d’une attaque par de multiples défauts, les deux compteurs peuvent être défaillants de telle sorte qu’à la fin, aucun code de traitement de défaut n’est exécuté et l’attaque par de multiples défauts n’est pas détectée. Ainsi, de telles approches ne garantissent pas que des calculs ont été effectués dans la boucle. En d’autres termes, de tels procédés sont incapables d’identifier correctement une attaque par de multiples défauts.
Par conséquent, pour garantir une conformité correcte et pour contrecarrer des attaques par défaut, il serait souhaitable d’avoir des systèmes et des procédés disponibles qui assurent une protection contre tous les types d’attaques par défaut qui visent à exposer le nombre d’itérations lors de la réalisation des étapes dans une boucle et d’autres détails pendant des calculs cryptographiques pour empêcher que des informations sensibles ne soient révélées par inadvertance à des attaquants potentiels.
Il est proposé un appareil pour effectuer des calculs, l’appareil comprenant :
un processeur ; et un support non transitoire lisible par ordinateur 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.
Il est en outre proposé un procédé 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.
Avantageusement, lequel le calcul peut comprendre une itération d’une boucle.
Avantageusement, le secret peut être dérivé d’un nombre aléatoire.
Avantageusement, le nombre aléatoire peut être généré par un générateur de nombres aléatoires.
Avantageusement, ie nombre aléatoire peut être traité par une ou plusieurs étapes dans la boucle.
Avantageusement, le nombre aléatoire peut être injecté à une étape d’initialisation à l’extérieur de la boucle.
Avantageusement, le nombre aléatoire peut être injecté dans un calcul en cours pour faciliter un calcul infectieux.
Avantageusement, le calcul infectieux peut faire que le résultat incorrect est supérieur à celui qui serait obtenu si le calcul infectieux n’avait pas été utilisé.
Avantageusement, la boucle peut être une boucle FOR.
Avantageusement, la ou les manipulations peuvent comprendre la réduction du nombre d’itérations de la boucle.Avantageusement, la boucle peut manipuler des valeurs associées au secret
Avantageusement, le nombre calculé par le calcul est calculé avant le calcul du nombre attendu.
Il est en outre proposé un produit programme d’ordinateur comprenant des instructions pour exécuter les étapes du procédé décrit ci-dessus lorsqu’exécuté par un processeur.
Des références seront faites à des modes de réalisation de l’invention, dont des exemples peuvent être illustrés sur les figures jointes. Ces figures sont destinées à être illustratives, non limitatives. Bien que l’invention soit, en régie générale, décrite dans le contexte de ces modes de réalisation, il faut comprendre qu’on n’a pas fintention de limiter la portée de l’invention à ces modes de réalisation particuliers. Des éléments sur les figures peuvent ne pas être à l’échelle.
La FIGURE (« FIG. ») 1 représente un fragment de code donné à titre d’exemple tel qu’il est utilisé dans des algorithmes communs qui effectuent des calculs cryptographiques.
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.
La FIG. 3 illustre une mise en œuvre 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.
La FIG. 4 représente un diagramme simplifié sous forme de blocs d’un dispositif informatique/système de traitement d’informations, selon des modes de réalisation de la présente divulgation.
Dans la description qui suit, à des fins d’explication, des détails spécifiques sont présentés afin de fournir une compréhension de l’invention. Il sera, toutefois, apparent aux personnes qualifiées dans la technique que l’invention peut être mise en pratique sans ces détails. En outre, une personne qualifiée dans la technique reconnaîtra que des modes de réalisation de la présente invention, décrits ci-dessous, peuvent être mis en œuvre de diverses manières, telles qu’un processus, un appareil, un système, un dispositif ou un procédé sur un support tangible lisible par ordinateur.
Des composants, ou des modules, présentés sur les diagrammes sont illustratifs des modes de réalisation donnés à titre d’exemple de l’invention et sont censés éviter de compliquer l’invention. Il faut également comprendre que, dans toute cette discussion, des composants peuvent être décrits en tant qu’unités fonctionnelles distinctes, qui peuvent comprendre des sous-unités. Ces personnes qualifiées dans la technique reconnaîtront que divers composants, ou parties de ces derniers, peuvent être divisés en composants distincts ou peuvent être intégrés ensemble, y compris être intégrés dans un seul système ou composant. Il convient de noter que des fonctions ou des opérations évoquées dans le présent document peuvent être mises en œuvre sous forme de composants. Des composants peuvent être mis en œuvre dans un logiciel, un matériel ou une combinaison de ces derniers.
En outre, des connexions entre des composants ou des systèmes sur les figures ne sont pas destinées à être limitées à des connexions directes. Plus exactement, des données entre ces composants peuvent être modifiées, reformatées ou, par ailleurs, changées par des composants intermédiaires. De même, des connexions supplémentaires ou moins de connexions peuvent être utilisées. Il convient également de noter que les termes « couplé », « raccordé » or « couplé en communication » devront être compris comme incluant des connexions directes, des connexions indirectes au moyen d’un ou de plusieurs dispositifs intermédiaires et des connexions sans fil.
Une référence dans la spécification à « l’un des modes de réalisation », à « un mode de réalisation préféré », à « un mode de réalisation » 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 ternes 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 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 œuvre dans un matériel, par exemple à l’aide de machines étatiques.
Dans ce document, le terme « 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 œuvre 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 fragment de code 100 n’est pas nécessairement spécifique au domaine des calculs cryptographiques. Comme représenté sur la FIG. 1, un fragment de code 100 contient, à la ligne 1, une étape d’initialisation qui initialise la variable q. 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 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.
A 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.
À l’étape 208, à la suite du calcul qui est invalide, une erreur est générée. L’erreur indique que le calcul a été soumis à une ou plusieurs manipulations.
A 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.
Il 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 œuvre de logiciel donnée à titre d’exemple d’un processus pour protéger le nombre d’itérations et ie 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. A 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.
À 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 (’) sur la FIG. 3 peut, ou peut ne pas, être la même fonction que celle sur la FIG. 1. Dans certains modes de réalisation, Lutilisation 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 h; 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 ligne 5 (et la comparaison à la ligne 14 pour garantir, au moins, que le nombre d’itérations de la boucle est correct), mais 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 h} et g 3 - g’3.
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 g '3 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. A la fin de la boucle FOR, le résultat q est évalué.
A 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.
A la ligne 14, une fois que le composant u a été supprimé, les deux fonctions h2(r) et h 3(11) 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, gL ne peut pas supprimer correctement u de q de telle sorte que 113(11) ne correspond pas à h2(r) et, donc, l’erreur peut être facilement détectée.
Dans certains modes de réalisation, h2 et h3 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, é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 û?(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 m 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 q à la ligne 13 et des calculs dans la boucle sont également incorrects), une erreur peut être renvoyée, comme cela est illustré à la ligne 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.
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 u. Il 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. A 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 œuvre 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 computationnel 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 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’instrumentalités destinés à compter, calculer, déterminer, classer, traiter, transmettre, recevoir, récupérer, trouver l’origine de, acheminer, commuter, stocker, afficher, communiquer, manifester, détecter, enregistrer, reproduire, traiter ou utiliser n’importe quelle forme d’informations, d’intelligence ou de données à des fins 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 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 ies 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 configuré 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 (CPU) 410 qui fournissent des ressources informatiques et commandent l’ordinateur. L’unité CPU 410 peut être mise en œuvre 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 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 œuvre 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 à 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)Zpontage de centre de données (DCB), etc.), un réseau local (LAN), un réseau étendu (WAN), 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 œuvre 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étooptiques ; 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 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 œuvre alternatives sont possibles, y compris une mise en œuvre de matériel ou une mise en œuvre de logiciel/matériel. Des fonctions mises en œuvre 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 termes « moyens » dans l’une quelconque des revendications sont prévus pour couvrir à la fois une mise en œuvre de logiciel et une mise en œuvre de matériel. De manière similaire, le terme « 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 œuvre 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 (a 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 œuvre 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 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 œuvre 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 et/ou 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 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. Il conviendra é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, configurations et combinaisons.

Claims (13)

  1. REVENDICATIONS
    1. 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. 2. Appareil selon la revendication 1, dans lequel le secret est dérivé d’un nombre aléatoire.
  3. 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. 4. Appareil selon l’une quelconque des revendications 1 à 3, dans lequel le calcul comprend une itération de boucle.
  5. 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. 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. 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. 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. 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.
  10. 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. 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. 12. Appareil selon l’une quelconque des revendications 1 à 11, dans lequel le nombre calculé par le calcul est calculé avant le calcul du nombre attendu.
  13. 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 à 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 (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.
FR1859337A 2018-10-09 2018-10-09 Systèmes et procédés cryptographiques résistant à des attaques par défaut Active FR3087022B1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1859337A FR3087022B1 (fr) 2018-10-09 2018-10-09 Systèmes et procédés cryptographiques résistant à des attaques par défaut
US16/596,590 US11349635B2 (en) 2018-10-09 2019-10-08 Fault attack resistant cryptographic systems and methods
US17/824,912 US11902412B2 (en) 2018-10-09 2022-05-26 Fault attack resistant cryptographic systems and methods

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1859337A FR3087022B1 (fr) 2018-10-09 2018-10-09 Systèmes et procédés cryptographiques résistant à des attaques par défaut

Publications (2)

Publication Number Publication Date
FR3087022A1 true FR3087022A1 (fr) 2020-04-10
FR3087022B1 FR3087022B1 (fr) 2022-04-15

Family

ID=65494337

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1859337A Active FR3087022B1 (fr) 2018-10-09 2018-10-09 Systèmes et procédés cryptographiques résistant à des attaques par défaut

Country Status (2)

Country Link
US (2) US11349635B2 (fr)
FR (1) FR3087022B1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114679251B (zh) * 2022-05-26 2022-10-18 广州万协通信息技术有限公司 一种可重构阵列抗功耗攻击方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2829331B1 (fr) * 2001-09-04 2004-09-10 St Microelectronics Sa Procede de securisation d'une quantite secrete
WO2008114315A1 (fr) * 2007-03-19 2008-09-25 Fujitsu Limited Dispositif intégré doté d'une fonction de protection contre les attaques en injection ('fa')
US8139763B2 (en) * 2007-10-10 2012-03-20 Spansion Llc Randomized RSA-based cryptographic exponentiation resistant to side channel and fault attacks

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
AKKAR M-L ET AL: "AN IMPLEMENTATION OF DES AND AES, SECURE AGAINST SOME ATTACKS", CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. 3RD INTERNATIONAL WORKSHOP, CHES 2001, PARIS, FRANCCE, MAY 14 - 16, 2001 PROCEEDIN; [LECTURE NOTES IN COMPUTER SCIENCE], BERLIN : SPRINGER, DE, vol. VOL. 2162, 2001, pages 309 - 318, XP008002641, ISBN: 978-3-540-42521-2 *
ALESSANDRO BARENGHI ET AL: "Fault Injection Attacks on Cryptographic Devices: Theory, Practice, and Countermeasures", PROCEEDINGS OF THE IEEE., vol. 100, no. 11, November 2012 (2012-11-01), US, pages 3056 - 3076, XP055535394, ISSN: 0018-9219, DOI: 10.1109/JPROC.2012.2188769 *
BORST J ET AL: "Cryptography on smart cards", COMPUTER NETW, ELSEVIER, AMSTERDAM, NL, vol. 36, no. 4, 16 July 2001 (2001-07-16), pages 423 - 435, XP004304907, ISSN: 1389-1286, DOI: 10.1016/S1389-1286(01)00164-5 *
PABLO RAUZY ET AL: "A Formal Proof of Countermeasures Against Fault Injection Attacks on CRT-RSA", INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH,, vol. 20140130:171541, 30 January 2014 (2014-01-30), pages 1 - 22, XP061015344, DOI: 10.1007/S13389-013-0065-3 *
VICTOR LOMNE ET AL: "On the Need of Randomness in Fault Attack Countermeasures - Application to AES", FAULT DIAGNOSIS AND TOLERANCE IN CRYPTOGRAPHY (FDTC), 2012 WORKSHOP ON, IEEE, 9 September 2012 (2012-09-09), pages 85 - 94, XP032240372, ISBN: 978-1-4673-2900-2, DOI: 10.1109/FDTC.2012.19 *

Also Published As

Publication number Publication date
US20220286270A1 (en) 2022-09-08
FR3087022B1 (fr) 2022-04-15
US11349635B2 (en) 2022-05-31
US11902412B2 (en) 2024-02-13
US20200112425A1 (en) 2020-04-09

Similar Documents

Publication Publication Date Title
Cohen et al. Trusted detection of ransomware in a private cloud using machine learning methods leveraging meta-features from volatile memory
Al-Rimy et al. Redundancy coefficient gradual up-weighting-based mutual information feature selection technique for crypto-ransomware early detection
US10050982B1 (en) Systems and methods for reverse-engineering malware protocols
EP2663948B1 (fr) Calculs sécurisés dans des centres de données multi-occupants
US9942032B1 (en) Systems and methods for securely detecting data similarities
CN109155774A (zh) 用于检测安全威胁的系统和方法
Zimba et al. Understanding the evolution of ransomware: paradigm shifts in attack structures
FR3033965A1 (fr)
Vehabovic et al. Ransomware detection and classification strategies
FR2984553A1 (fr) Procede et dispositif de detection de fautes
FR3055444A1 (fr) Dispositif et procedes de commande de dispositif de cryptage sur courbe elliptique securises
Chakraborti et al. Cloud computing security: foundations and research directions
US9323924B1 (en) Systems and methods for establishing reputations of files
Canzanese Jr Detection and classification of malicious processes using system call analysis
FR3087022A1 (fr) Systèmes et procédés cryptographiques résistant à des attaques par défaut
Mantri et al. Pre-encryption and identification (PEI): an anti-crypto ransomware technique
EP2336931B1 (fr) Procédé de vérification de signature
US9647846B1 (en) Systems and methods for verifying the authenticity of graphical images
US10887339B1 (en) Systems and methods for protecting a cloud storage against suspected malware
FR2979725A1 (fr) Procede de calculs cryptographique resistant aux defaillances materielles
EP4409450A1 (fr) Procédé d'analyse de la vulnérabilité d'un système d'information à une attaque informatique
EP4096144A1 (fr) Contremesures par infection améliorées
FR3107416A1 (fr) Tokenisation aléatoire efficace dans un environnement dématérialisé
FR3015079A1 (fr) Verification d'integrite de paire de cles cryptographiques
FR3015076A1 (fr) Generation de cles cryptographiques

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20200410

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7