• Aucun résultat trouvé

2.5 Évaluation de la sécurité des circuits

2.5.2 Circuit avec mécanisme de détection

Lorsque le circuit comporte des mécanismes de détection, d’autres métriques sont à prendre en considération pour caractériser leurs apports en terme de sécurité. Pour chacun des cas du circuit sans protection, on obtient une proportion d’exécution où le mécanisme de détection a été déclenché.

Tout d’abord, une faute qui n’a aucun effet ni sur le comportement ni sur le résultat du circuit ne devrait pas déclencher le mécanisme de détection. Sinon, cette détection sera considérée comme un faux-positif, ce qui peut être acceptable dans un cadre de sécurité. Ce comportement peut avoir lieu typiquement lorsque la faute touche le système de détection lui-même. Il faut cependant noter que si l’information de détection est transmise à l’extérieur du circuit, elle peut être considérée comme un changement de comportement et permettre l’élaboration d’attaques par faute, notamment avec le principe du safe error.

l’application visée.

En effet, le blocage d’un circuit peut être une protection efficace pour éviter de fournir un résultat faux : la simulation d’un circuit bloqué sera décompté comme s’il avait fournit un résultat correct.

À l’inverse, on peut vouloir aussi détecter les blocages, comme toutes les injec- tions de fautes qui changent le comportement du circuit, même si elles ne produisent pas d’erreur.

L’efficacité de détection pourra être évaluée grossièrement en calculant le rapport entre les résultats faux détectés et le total des résultats faux. Dans le cadre des attaques par faute, il est important de mesurer le taux de résultats faux qui ne sont pas détectés.

En effet, ils peuvent alors être utilisés pour cryptanalyser le circuit, surtout si ces résultats faux sont exploitables avec des attaques connues. Un niveau supplémentaire peut être envisagé pour dénombrer quelles sont les injections ayant produit une erreur et qui sont exploitables avec les attaques par faute actuelles.

La classification des réactions d’un circuit face à des fautes est schématisé par la figure 2.5.

Fig. 2.5 – Analyse de sécurité d’un circuit avec mécanisme de détection

2.6 Synthèse

Dans ce chapitre, nous avons décrit la méthodologie d’évaluation de la sécurité des circuits face aux fautes que nous avons retenue pour nos travaux.

Les objectifs et la problématique globale ont d’abord été expliqués pour justifier le besoin d’un modèle de faute réaliste pour l’estimation de la robustesse des circuits face aux attaques par faute. Le nombre de fautes possibles étant trop élevé pour une

simulation exhaustive, il faut en sélectionner une partie représentative en prenant en compte le modèle de faute.

Nous avons choisi de nous intéresser aux perturbations physiques d’inversion et d’ajout de délai, que nous avons modélisées par des mémorisations erronées à l’entrée des bascules, pour pouvoir les simuler numériquement. Ces modèles correspondent à plusieurs perturbations physiques, notamment les SEU ou les perturbations de la tension d’alimentation, ce qui rejoint notre préoccupation d’utiliser des modèles de fautes proche de fautes physiques.

Les critères de choix des fautes se manifestent à travers un poids qui permet de classer les injections de faute.

Enfin, pour évaluer la sécurité des circuits, des métriques de sécurité ont été définies en distinguant le cas des circuits protégés et sans mécanisme de protection. En effet, une faute peut être ignorée par le circuit, le bloquer ou conduire à un résultat incorrect. Dans ce dernier cas, il est intéressant d’analyser quelles sont les fautes qui peuvent être exploitées pour contourner les protections du circuit, et si elles sont détectées par le système de détection, quand celui-ci est disponible.

Ces critères serviront à caractériser le niveau de sécurité des circuits et pourront être utilisés pour comparer la sécurité de plusieurs implémentations du même algo- rithme.

Cette méthodologie, résolument orientée vers le rapprochement des probléma- tiques de sécurité et de conception des circuits, a été implémentée dans PAFI (Pro-

totype of Another Fault Injector), un outil d’injection de fautes combinant l’analyse

du circuit, l’automatisation de la campagne d’injections de faute et l’analyse des résultats, que nous présentons dans la section suivante.

Chapitre 3

PAFI : outil d’injection de fautes

et d’analyse de la sécurité des

circuits

Nous avons défini une méthodologie qui effectue une analyse préalable d’une modélisation du circuit en vue de fournir une évaluation de la sécurité des circuits. Cette méthodologie a été implémentée dans un outil appelé PAFI (Prototype of

Another Fault Injector).

Fig. 3.1 – Intégration de PAFI dans le flot de conception

PAFI [FTF+07] s’intègre dans le flot de conception (figure 3.1) au niveau de

la validation sécuritaire, c’est-à-dire après la validation fonctionnelle mais avant la validation paramétrique, conformément au modèle de circuit utilisé.

Cela permet notamment de garantir le comportement et les fonctionnalités du système avant de prendre en compte les caractéristiques de sécurité. En effet, la garantie de respecter le cahier des charges fonctionnel prime sur les contraintes de sécurité.

À l’inverse, notre analyse de la sécurité se situe en amont du placement-routage. Ce choix a été fait pour ne pas pénaliser le temps d’analyse et de simulation, mais cette analyse aurait pu être faite après placement-routage, pour obtenir des résultats encore plus pertinents, au prix d’un temps de simulation important.

Comme défini dans notre méthodologie, PAFI utilise une modélisation logique sans hierarchie du circuit pour prendre en compte les détails précis sur le circuits (portes, délais).

Comme le nombre de fautes à simuler est grand, il est nécessaire de sélectionner les fautes les plus pertinentes pour l’analyse souhaitée.

L’aspect novateur de ce travail est de définir les critères de sélection des injections de fautes au regard d’un modèle de faute. Notre approche est d’aider l’utilisateur à sélectionner les fautes les plus significatives pour réduire le temps d’injection, ainsi que d’automatiser les campagnes de simulation.

L’objectif est de guider, a priori, la campagne d’injection vers des fautes qui ont une grande probabilité d’avoir un impact sur le comportement du circuit.

3.1 Flot de conception général

PAFI est un outil d’analyse de la fiabilité et de la sécurité des circuits par in- jection de fautes en simulation. Pour injecter les fautes, il utilise les commandes du simulateur et donc ne modifie pas la description du circuit. Son architecture générale est représentée sur la figure 3.2.

Comme PAFI est le résultat d’un travail de recherche, il a été conçu pour être modulaire. En effet, comme il est difficile de prédire en début de thèse le résultat final et que le sujet peut être réorienté, il est prudent de prévoir de changer certaines parties de l’outil.

De plus, cette séparation en plusieurs modules rentre dans le cadre des bonnes pratiques du développement logiciel : chaque module peut être testé, remplacé et optimisé indépendamment, la réutilisation est facilitée.

Par contre, cela implique de définir correctement le format des fichiers d’échange entre les modules. Si un nouveau modèle de faute nécessite un nouveau type d’in- jection de fautes, le format des fichiers de sortie doit être adapté en conséquence et cela à un impact sur le module d’injection. Pour cela, nous avons utilisé des formats XML : ils sont extensibles et peuvent être complétés au fur et à mesure. Ils ont

Netlist mise à plat

(Verilog)

Triplets : {bascule, moment, délai}

Fichier de commande

pour le simulateur

Fichiers de résultat

Taux de tolérance, etc.

Informations Circuit

(SDF, résultat attendu)

Délai des

cônes logiques

Simulation

Choix des fautes et

génération des simulations

Analyse

PAFI

l’avantage d’être lisibles par l’utilisateur (format texte) et facilement analysables par la plupart des langages modernes.

Chaque étape est effectuée par un programme indépendant en Perl dont les résul- tats sont stockés dans des fichiers. Cela permet de remplacer facilement un module, par exemple pour l’adapter à un autre simulateur ou pour accélérer les calculs, en utilisant un langage compilé.

Le circuit est modélisé dans une netlist Verilog. La première étape est d’analyser la netlist pour extraire la liste des bascules et leurs cônes logiques. Ensuite, un poids pour chaque bascule et chaque moment est calculé en prenant en compte divers paramètres, comme les caractéristiques du cône logique associé. Un poids élevé représente une injection de faute ayant une forte probabilité d’apparaître dans le modèle de faute considéré.

Ensuite, les fautes possibles et leurs poids sont présentés à l’utilisateur qui peut choisir la quantité d’injections à effectuer, suivant le temps dont il dispose et la précision dont il a besoin.

À partir de la liste des fautes choisies, notre outil génère un fichier de commande pour le simulateur utilisé (Cadence NCSim). Ce fichier de commandes décrit les simulations et les injections de fautes à effectuer. Comme nous ne modifions pas le circuit, la seule possibilité d’injection de faute est l’utilisation des commandes du simulateur. Cette partie de l’outil est spécifique au simulateur.

Pendant chaque simulation, le circuit à tester est manipulé par un environnement de test (benchmark) qui lui fournit les signaux d’entrée, vérifie les signaux de sortie et écrit les résultats dans des fichiers. L’environnement de test est écrit en VHDL et utilise la bibliothèque textio pour écrire les fichiers.

Un analyseur lit ces fichiers de sortie et calcule les métriques de sécurité ainsi que d’autres analyses définies par l’utilisateur et spécifiques au circuit. Les sorties peuvent être visualisées graphiquement.