• Aucun résultat trouvé

3.5 Protections contre les attaques par perturbation

3.5.4 Politique d’action en cas de détection de fautes

La détection de fautes permet d’envisager différentes politiques d’action qui dépendent de l’application et des menaces associées. Une première politique d’action est de continuer l’exé- cution du système en retournant le résultat erroné. À cause de cette non-réaction, l’attaquant est capable de réaliser des attaques DFA ou SEA. Une deuxième politique d’action est de stopper, puis de recommencer le calcul pour ne pas renvoyer un résultat faux. Par conséquent, le résultat est retourné avec un délai supplémentaire lorsqu’une faute est détectée par le sys- tème. Avec cette politique d’action, le système peut être vulnérable aux attaques du type SEA et DBA. L’arrêt de l’exécution est une autre réaction possible ayant les mêmes inconvénients que la politique d’action précédente. Toutes ces réactions sont susceptibles de fragiliser le cryptosystème.

Une autre réaction consiste à continuer le calcul sans retourner le résultat erroné et à rendre le cryptosystème inutilisable temporairement ou définitivement. Cette inhibition du sys- tème peut permettre d’éviter ou de compliquer les attaques DFA et DBA. Puisqu’une attaque DFA a besoin du résultat corrompu, si le résultat n’est pas renvoyé ces attaques sont évitées. Une attaque DBA nécessite plusieurs traces d’acquisition. Ainsi, si le système est inutilisable temporairement ou définitivement, l’adversaire ne pourra pas obtenir ces traces. L’effacement des données secrètes, aura le même impact que précédemment. La poursuite des calculs avec une clé aléatoire est également une possibilité envisageable.

3.5.5 Conclusion

Les protections contre les FA sont basées sur la détection et sur la correction de l’erreur pro- voquée. Le calcul redondant est l’une des méthodes principales pour détecter ou corriger une (ou des) faute(s). Dans le cadre d’ECC, la vérification de l’appartenance du point à la courbe est une solution efficace, et peu coûteuse, contre les attaques sur les points intermédiaires et sur les paramètres de la courbe. Cependant, l’ajout de calculs qui n’existeraient pas dans un système régulier peut compromettre sa résistance aux SCA par une dissymétrie n’existant pas sans la protection ajoutée.

ARITHMÉTIQUE DES ORDINATEURS POUR

MICROCONTRÔLEURS

Les systèmes embarqués sont omniprésents dans notre société. Ils doivent être perfor- mants tout en ayant une forte contrainte de consommation énergétique, de taille et de coût. Ils sont souvent construits autour d’un microcontrôleur, schématisé à la figure 4.1. Un micro- contrôleur est un circuit intégré composé principalement d’un petit processeur (typiquement de 8 à 32 bits de données), de petites mémoires ROM et RAM (internes ou externes), de périphériques d’entrée/sortie et d’une horloge interne.

Le processeur est l’élément central d’un microcontrôleur. Il interprète le programme contenu dans la mémoire ROM et traite les données contenues dans la mémoire RAM. Des unités arith- métiques et logiques (UAL) sont utilisées par le processeur afin de faire les calculs demandés par le programme. Les données manipulées sont placées dans des registres dont la taille dépend du type d’architecture du microcontrôleur (p. ex. 8, 16 ou 32 bits). De nombreuses familles de microcontrôleur existent, comme les microcontrôleurs PIC de Microchip, les micro- contrôleurs AVR et XMEGA d’Atmel ou encore les microcontrôleurs Cortex ARM de ARM Ltd.

Lors de calculs cryptographiques, les nombres manipulés sont très grands (plus d’une cen- taine de bits). Par conséquent, les UAL ne peuvent pas les réaliser directement. En effet, ces

Mémoire

ROM

Mémoire

RAM

Ports d'E/S

Processeur

donnée w bits contrôle

cellules ne traitent que des nombres de 8, 16 ou 32 bits et que pour des entiers assez simples (et des flottants si une unité flottante est présente).

Les grands nombres sont donc découpés en plusieurs mots machines ou chiffres (d’une

représentation en très grande base). Ainsi, un nombre A s’écrit : A = d−1

X

i=0

xi· 2i·w où d est le nombre de mots xi de taille w bits. Ces mots sont ensuite placés dans des registres, dont la taille dépend du type d’architecture. Les UAL sont alors appliquées sur ces mots. Les opéra- tions, réalisées sur des mots machines, sont notées wadd et wmul dans ce manuscrit (w est la taille des mots).

Les opérations sur les grands nombres sont réalisées grâce à des algorithmes qui ap- pliquent le principe de diviser pour régner. Ces algorithmes permettent d’exploiter les UAL, puisqu’elles ne savent réaliser que des opérations de mots de taille w bits.

Dans ce chapitre, différents algorithmes pour effectuer les opérations de corps tels que la réduction modulaire, la multiplication et l’addition sont décrits.

4.1

La réduction modulaire

Les calculs lors de la SM s’effectuent dans un corps fini (Fp dans cette thèse). Ce corps est défini par un nombre premier p de taille n bits. Si deux entiers de n bits sont multipliés, alors le résultat sera de taille 2n bits et sera, très souvent, plus grand que p. Par conséquent, une réduction modulaire est primordiale afin de garder les nombres dans le corps.

La réduction modulaire de a par p, notée a mod p, s’effectue en calculant le reste r de la division euclidienne (DE) de a par p, décrit par le calcul de l’équation 4.1. Dans cette équation, qest le quotient et r le reste de la division, tel que r < p et donc r = a mod p.

a = p × q + r (4.1)

Différents algorithmes de réduction modulaire existent. Certains sont spécifiques à des formes particulières de nombres premiers, d’autres fonctionnent pour des nombres premiers génériques.