• Aucun résultat trouvé

Conception!d’un!processeur!sécurisé!

La même démarche statistique a été appliquée pour caractériser les performances de l’ap proche centralisée à base du lagrangien augmenté ainsi que l’optimisation par la théorie de

FPGA Oscilloscope

X- Y-Z Stage EM Sensor

3.4.3 Conception!d’un!processeur!sécurisé!

Notre objectif est de proposer une solution efficace en termes de sécurité, mais qui soit également peu coûteuse. La difficulté est de trouver le bon compromis, donc de tirer avantage des différents types de contremesures pour atteindre ce but. Notre approche repose sur une technique de « masking » dont le but est essentiellement de contenir les fuites du pipeline, et une autre de « hiding », dont l’objectif est de randomiser l’exécution des instructions, dans le temps, et en amplitude.

La première méthode repose sur le masquage, dont l’efficacité a été démontrée à plusieurs reprises. En revanche, aucune implémentation n’avait été proposée pour les processeurs génériques au moment de cette étude. Cette technique s’applique ici au niveau de la description RTL du processeur SecretBlaze et consiste à mettre en œuvre un double pipeline de traitement.

L'idée est d'introduire un chemin de données dédié au masque lui-même, couplé au chemin de données classique du processeur RISC. Au lieu de traiter directement les données brutes, le processeur fonctionne sur un double chemin de données avec des données masquées. Le rôle principal du deuxième chemin de données est de garder le masque correspondant pour chaque donnée masquée le long de la structure pipeline du processeur et d’assurer la correction de masque pour une exécution correcte des opérations. Des générateurs de nombres pseudo aléatoires (PRNG) sont également introduits pour générer des masques mis à jour à chaque étage. Le modèle simplifié de notre approche pour les instructions de registre à registre est illustré sur la Figure 70. Le deuxième chemin de données dispose d’une banque de registres pour le stockage des masques associés aux données masquées, ainsi que des registres du pipeline pour les masques.

La mise en œuvre du processus de correction du masque est un peu plus complexe suivant le type d’instruction. Pour les instructions arithmétiques et logiques, les données masquées sont d’abord transférées d’étage en étage sans perte d'intégrité des données et ce jusqu'à la phase exécution, où toutes les opérations mathématiques sont mises en œuvre. La technique de « masking » implique la mise en œuvre de tables de correspondances pré-calculées spécifiques pour chaque opération. Compte- tenu du nombre important d'instructions et de leur relative complexité, la mise en œuvre du masking au niveau de l’ALU serait trop coûteuse, raison pour laquelle les données sont démasquées avant, puis re-masquées après le calcul avec un nouveau nombre pseudo-aléatoire. Ce choix est également motivé par le fait que, même si les attaques fonctionnent sur la logique combinatoire, les résultats expérimentaux montrent que les fuites au niveau des registres sont plus importantes. Bien que cette solution ne soit pas parfaite, elle a l'avantage de protéger les parties les plus sensibles du chemin de données, tout en réalisant un compromis intéressant entre performance et sécurité.

Figure 70. Masquage du pipeline

Pour la deuxième contremesure, notre idée repose essentiellement sur le concept de processeur non- déterministe [50], dans lequel le logiciel est exécuté avec insertion aléatoire d’opérations supplémentaires, qui sont générées directement par l'architecture matérielle du processeur. Il s’agit d’une part de cycles factices qui changent le temps d'exécution, mais aussi d’une randomisation de l'utilisation des ressources matérielles disponibles, afin d'accroître le "bruit". La contre-mesure affecte donc à la fois les dimensions temporelles et spatiales des fuites physiques.

Pour sa mise en œuvre, une solution consiste à randomiser le contrôle du pipeline RISC par des signaux de commande et de données factices. Dans cette structure, un PRNG génère un nombre aléatoire utilisé pour prendre une décision pour chaque instruction en cours de traitement, qui consiste soit à conserver une exécution normale, soit effectuer un cycle factice. Des PRNG supplémentaires sont également mis en œuvre pour générer des nombres aléatoires à l’entrée des opérateurs de l’ALU au cours des cycles factices, ce qui augmente l'activité aléatoire du circuit. La plupart des architectures RISC de processeurs embarqués (tels que ARM, MIPS et PowerPC), disposent d’un mécanisme de verrouillage du pipeline, dont le rôle est de détecter et résoudre les aléas de contrôle et de données. Ce contrôleur d’aléas gère ainsi l'état de chaque étage du pipeline à travers l'ensemble de l'architecture. Les techniques courantes pour résoudre ces aléas consistent à suspendre l’exécution pipelinée (stall et insertion de bulles) ou vider le pipeline (flush). Pour réaliser une exécution non-déterministe, nous pouvons profiter des fonctionnalités matérielles du contrôleur d’aléas (signaux de stall et flush) pour insérer les cycles factices le long du chemin de données. Ce choix de conception réduit considérablement les coûts de la contre-mesure (en termes de surface, de consommation et de performances). En ajoutant des aléas factices, le pipeline fonctionne alors de manière inattendue que l'on peut efficacement exploiter pour insérer des cycles de calculs supplémentaires. Nous l'avons appelé : génération d’aléas fantômes.

Pour que cette technique soit efficace, les aléas fantômes doivent être générés de façon aléatoire. En outre, plus le nombre de cycles factices est grand, plus la contre-mesure est efficace. Néanmoins, une utilisation excessive de cycles aléatoires peut sérieusement diminuer le débit de l'architecture. Dans la pratique, un compromis acceptable doit être trouvé. Pour répondre aux exigences de l'application de l'utilisateur, la probabilité des aléas fantômes doit être configurable. Notre solution consiste à mettre en œuvre un module qui compare une valeur de seuil définie dans un registre de commande avec un

4.2 investigation of a a masking countermeasure 53 and Logic Unit (ALU) operations with unmasked data and, in a second step, to mask the result of theALUwith a new Pseudo Random Number (PRN). This crucial design choice is also motivated by the fact that, even if Side-Channel Attacks (SCAs) are still effective on combinational logic, experimental results suggest that the leakage at the register stages is predominant [58] [71]. Hence, although this solution is not perfect, it has the advantage to protect most critical parts of the datapath while achieving an attractive trade-off between perfor- mance and security.

In case of control flow instructions, the mask correction is straightforward. Since they are not the target of statistical power and electromagnetic-based at- tacks, it is therefore allowed to unmask the masked data for all related processes (computations, address assignments, branch evaluations, etc.) without breaking the efficiency of the masking scheme.

Figure20illustrates the proposed masked datapath for register-to-register ins- tructions. The direction of the data flow is indicated by arrowheads while the op- tional hardware used to update the mask is depicted with black dash lines. Un- mask and mask modules are also included in the execute phase of the pipeline. Note that, if the execute phase requires more stages, the same approach should be adopted. Finally, filled circle arrows are used to denote other steps of the mask correction that are used for control flow instructions and do not provide useful information for side-channel analysis.

R0 R1 R31 ... MR0 MR1 MR31 ... ... Core Masked Datapath Register File of Masked Data

Register File of Masks Unmasked Datapath ... Masked Datapath PRN PRN ALU U M Unmask Mask Update Mask Update Mask

PRN généré à chaque cycle d'horloge. Le résultat détermine s’il y a génération d’aléa fantôme ou pas. L'architecture de notre dispositif de commande des aléas fantômes est illustrée sur la Figure 71.

Figure 71. Randomisation du pipeline

3.4.4 Résultats!

Comme nous pouvons l’observer sur la Figure 72, la stratégie de masquage réduit l'efficacité de l'attaque, puisqu’au lieu d’une propagation le long des étages du pipeline, seule la fuite de l'ALU reste exploitable. D'autre part, la contremesure de hiding configurée avec un faible tirage aléatoire fournit un certain niveau de protection, mais le grand nombre d'opérations critiques liées à l'architecture du pipeline permet à l’attaque de fonctionner néanmoins. Alors que 1000 traces sont suffisantes pour retrouver la clé de chiffrement pour la version non protégée du SecretBlaze, notre évaluation expérimentale montre que 200.000 traces ne permettent pas de mettre en péril le SecretBlaze SCR combinant les contremesures de masking et de hiding.

Les deux contremesures ont été implémentées au sein du processeur SecretBlaze et leur impact a été évalué afin de pouvoir comparer notamment le coût en surface et en performance par rapport aux techniques référencées dans la littérature. Les résultats correspondent à une technologie Spartan-3 de Xilinx. Comme le résume le Tableau 10, la technique de masking est celle dont le coût en ressources est le plus élevé et qui de plus diminue assez significativement la fréquence maximale (de manière équivalente aux travaux cités). Mais par rapport à l’état de l’art, la pénalité en surface est cependant beaucoup plus limitée, compte-tenu du fait que le masquage n’affecte pas l’ALU (ce qui aurait nécessitait beaucoup plus de ressources). En ce qui concerne la gestion des aléas fantômes, le coût est presque négligeable, tant au niveau des LUT et des Flip-flops que pour la fréquence maximale. Cela nous permet de conclure que cette combinaison de contremesures permet d’obtenir un niveau de sécurité démontré par nos expériences et ce qui est tout à fait remarquable, avec un très faible coût matériel.

68 towards a secure embedded processor

The challenge of this method lies in the difficulty to randomise both the exe- cution of instructions and the content of registers in an efficient manner without altering the behaviour of the application.

insert dummy cycle? PRNG ... Pipeline Pipeline randomiser PRNG insert dummy cycle? PRNG

Figure 27: The simplified model of the pipeline randomiser.

4.3.2 Architecture

In this section, we introduce an efficient and cost-effective architecture to imple- ment the pipeline randomiser method within the datapath of embedded proces- sors. For that, we examine two key elements:

the mechanism that implements a non-deterministic execution, and the mechanism that increases the noise.

4.3.2.1 Non-Deterministic Execution

When considering most RISC architectures of embedded processors such as ARM, MIPS, and PowerPC, a pipeline interlock is usually implemented to detect and solve data dependencies or control flow conditions specified in a sequence of instructions, known as hazards. This mechanism is often called a hazard con- troller, and thus manages the state of each pipeline stage throughout the whole architecture. A common technique to solve hazards is to stall all registers related to a pipeline stage until the data dependency is cleared (also known as pipeline bubbling). Sometimes it is also necessary to flush the pipeline stage to remove the execution of an instruction. Note that in case of an out-of-order execution (typically superscalar architectures for high-end embedded systems), advanced methods such as scoreboarding [128] or Tomasulo algorithm [129] are implemented

Figure 72. Traces DEMA avec et sans contremesures Tableau 10. Evaluation du coût des contremesures

3.5 Bilan!

Dans cette dernière partie concernant la synthèse des travaux, nous avons exposé nos travaux relatifs à la conception de systèmes adaptatifs dits de confiance. Sur la base des travaux réalisés sur l’architecture HS-Scale, nous avons développé une approche originale permettant d’assurer la disponibilité des fonctionnalités du système en mode dégradé, garantissant ainsi une certaine tolérance aux pannes du système. Sur le thème de la fiabilité, nous nous sommes intéressés à des méthodes caractérisation des paramètres PVT dans les circuits FPGA. Nous avons pour cela développé des capteurs et une approche nouvelle assurant une extraction fiable des informations de performance, basée sur une analyse des émanations électromagnétiques : celle-ci a d’ailleurs été exploitée pour des expérimentations concernant l’étude du vieillissement de ces circuits. Afin de pouvoir gérer les mécanismes d’adaptation se basant sur une estimation réaliste de l’état du système, nous avons proposé plusieurs techniques de monitoring de la consommation. Enfin, le domaine de la sécurité a été adressé à travers la conception d’un processeur résistant aux attaques par canaux cachés. Le travail présenté dans cette section a été valorisé à travers plusieurs publications, dont :

- 3 revues, dont 3 RICL: [J1][J2][J3] (ces trois articles sont joints en annexe de ce document) - 3 chapitres d’ouvrage : [CO2] [CO3] [CO4]

- 19 CICL : [C2] [C3] [C4] [C5] [C7] [C8] [C9] [C10] [C12] [C14] [C15] [C17] [C20] [C21] [C22] [C27] [C28] [C31] [C43]

!

!

6

G E N E R A L C O N C L U S I O N S A N D P E R S P E C T I V E S

T

he research works presented in this dissertation have been conducted to ad- dress the threat of power and electromagnetic Side-Channel Attacks (SCAs) that predict intermediate values. They have been specifically focused on soft- ware cryptographic implementations running on embedded General Purpose Processors (GPPs).

As a first step, we have investigated the side-channel vulnerabilities of embed- ded processor architectures. Through a case study, we have provided evidence that several micro-architectural features of a processor design can leak sensitive information. In particular, the pipelining method, which is traditionally used to enhance the overall performance of processors, has been identified as a major issue by increasing the number of leaking operations. We have also pointed out that the depth and complexity of the memory hierarchy has an important influ- ence over the side-channel leakages. The most striking conclusion of this part is that every detail of a design — including the functional units, the register file, the pipeline structure, the cache memory sub-system, the bus structure, the main memory — can have a crucial role in the context ofSCAs.

Starting from a deeper knowledge of the origin of the leakages, several strate- gies for securing embedded processors at the Register Transfer Level (RTL) have been examined. We have first introduced the concept of the dual pipelined datapath masking scheme, which allows to conceal intermediate values of cryptographic algorithms within embedded processor architectures. Then, we have suggested the concept of the ghost hazard generation, a cost-effective hi- ding countermeasure that randomises the flow of instructions. Both solutions have been explored to efficiently balance the security needs with the perfor- mance and resource overhead. An experimental processor implementing the proposed countermeasures, the SecretBlaze-SCR, has been developed on Xilinx’s Spartan-3 FPGA technology. As summarised in Table 14, the performance evaluation of the resulting design has shown that the average overhead induced by the countermeasures is suitable for many embedded systems.

Table 14: Performance and resource overhead of the countermeasures.

Masked Datapath Ghost Hazard Mechanism Both

# Flip-Flops +37.6% +1.4% +39.0%

#LUTs +39.9% +9.5% +48.9%

#BRAMs +22.2% 0.0% +22.2%

fMAXin MHz -18.8% -2.9% -18.9%