• Aucun résultat trouvé

Chapitre 5 Pourquoi doit-on s´ ecuriser ´ egalement les ´ el´ ements publics d’une

5.2 Pr´ eliminaires

5.2.1 Mod` eles de fautes

5.3 Cadre de nos extensions `a l’attaque de Seifert . . . 63

5.3.1 Description g´en´erale et contraintes de notre attaque. . . 63 5.3.2 Dictionnaire de modules . . . 64

5.4 Retrouver l’exposant priv´e sans dictionnaire . . . 64

5.4.1 Description g´en´erale de l’attaque . . . 64 5.4.2 Une proposition utile . . . 65 5.4.3 La phase “off-line”. . . 66 5.4.4 R´esultats . . . 66

5.5 Retrouver l’exposant priv´e avec un dictionnaire . . . 67

5.5.1 M´ethodologie g´en´erale . . . 67 5.5.2 Identification de touches par la m´ethode des collisions. . . 68 5.5.3 Exploitation bay´esienne des fautes. . . 70

5.6 Conclusion . . . 77

Ce chapitre d´ecrit plusieurs id´ees d’attaques par fautes sur le

RSA

, bas´ees sur une

expo-nentiation modulaire calcul´ee avec une valeur erron´ee du module. Ce travail, r´ealis´e

conjoin-tement avec Eric Brier´ , Benoˆıt Chevallier-Mames et Mathieu Ciet, a ´et´e publi´e `a

Ches ’06[BCCC06].

Il est bien connu qu’un adversaire malicieux peut essayer de retrouver de l’information secr`ete

en provoquant une faute durant des op´erations cryptographiques. `A la suite du travail de

Jean-Pierre Seifert[Sei05] sur les injections de fautes durant la v´erification de signature

RSA

, nous

consid´erons ici son ´equivalent pour la signature.

Chapitre 5. Pourquoi doit-on s´ecuriser ´egalement les ´el´ements publics d’une cl´e RSA

Nous pr´esentons la premi`ere attaque par fautes qui s’applique au

RSA

en mode standard et

qui permet de retrouver l’exposant priv´e en ne corrompant qu’un ´el´ement public de la cl´e. En

effet, de mani`ere similaire `a l’attaque de Jean-Pierre Seifert, notre attaque est r´ealis´ee en

ne modifiant que le module.

Un des points forts de notre attaque est que les hypoth`eses faites sur les effets de la faute

provoqu´ee sont assouplies. Dans un certain mode,absolument aucune connaissancesur l’effet de

la faute n’est requise pour parvenir `a une r´ev´elation compl`ete de l’exposant priv´e. Dans un autre

mode, bas´e sur un mod`ele de faute d´efinissant ce que nous appelons undictionnaire, l’efficacit´e

de l’attaque est accrue et le nombre de fautes est consid´erablement r´eduit.

Notons que ces attaques fonctionnent mˆeme contre des impl´ementations avec des paddings

d´eterministes (i.e.

RSA-FDH

) ou al´eatoires (i.e.

RSA-PFDH

), `a l’exception des cas o`u les signatures

pr´evoient une r´ecup´eration de l’al´ea (comme dans

RSA-PSS

).

En fin de compte, les r´esultats pr´esent´es ici nous am`enent `a conclure qu’il est tout aussi

imp´eratif de prot´eger les param`etres

RSA

publics que les param`etres priv´es contre les attaques

par fautes. C’est la raison pour laquelle nous mentionnons, apr`es la description de nos attaques,

quelques id´ees de contre-mesures permettant de s’en prot´eger.

5.1 Introduction

5.1.1 Rudiments

RSA

[RSA78] est aujourd’hui le crypto-syst`eme `a cl´e publique le plus largement utilis´e. Soit

n = pq le produit de deux grands entiers premiers typiquement de 512 ou 1024 bits. Soit e

l’exposant public, premier avecϕ(n) = (p−1)(q−1), o`uϕ(·) est la fonction indicatrice d’Euler.

L’exposant public est li´e `a ce qui est appel´e l’exposant priv´edpar l’´equationed≡1 (modϕ(n)).

`

A la base, dans le crypto-syst`eme

RSA

[BR93,BR96,PKCS-1], les op´erations publiques

(c’est-`

a-dire, la v´erification de signature ou le chiffrement) sont r´ealis´ees en calculant une puissance

e

`eme

, alors que les op´erations priv´ees (c’est-`a-dire, la g´en´eration de signature ou le d´echiffrement)

sont r´ealis´ees en calculant une puissanced

`eme

. Pour acc´el´erer les op´erations priv´ees, une technique

efficace bas´ee sur leth´eor`eme chinois des restes a ´et´e propos´ee [QC82] : cela est appel´e le mode

CRT, par opposition au mode standard.

RSA

et les attaques physiques.

La s´ecurit´e du crypto-syst`eme `a cl´e publique

RSA

est li´ee `a la difficult´e de la factorisation. De

plus, quand on impl´emente les crypto-syst`emes, on doit ˆetre tr`es attentif aux fuites d’information

qui prˆetent le flanc auxanalyses de canaux auxiliaires [KJJ99].

En 1996, Dan Boneh,Richard DeMillo etRichard Lipton[BDL97] ont introduit un

nouveau type d’attaques, lesanalyses de fautes(en anglais,Fault Analysis,

FA

). Leur id´ee, connue

sous le nom d’attaque Bellcore, s’applique `a l’impl´ementation CRT du

RSA

. La provocation d’une

seule faute sur une moiti´e du calcul suffit pour retrouver la factorisation du module `a partir d’une

signature correcte et d’une signature faut´ee, par un simple calcul de plus grand commun diviseur.

Notons cependant que l’attaque Bellcore ne s’applique pas dans le cas d’utilisation d’un padding

al´eatoire.

Aujourd’hui, dans le cas du

RSA

standard, on ne connaˆıt qu’une seule attaque par injection

de faute qui permette de retrouver l’exposant priv´e. Cette attaque repose sur le basculement

individuel des bits

16

de l’exposant priv´e.

16

Cette attaque peut ˆetre g´en´eralis´ee pour modifier de petits ensembles de bits, typiquement des octets.

5.1. Introduction

Les types de param`etres faut´es.

Toutes les m´ethodes pr´ec´edentes sont bas´ees sur l’injection de fautes contre des param`etres

priv´es.

17

Une exception est pr´esent´ee dans un article r´ecemment publi´e parJean-Pierre

Sei-fert[Sei05], dans lequel il propose pour la premi`ere fois d’attaquer la v´erification de signature

RSA

. Le sch´ema

RSA

lui-mˆeme n’est pas menac´e, car l’attaquant n’est pas capable de falsifier

de nouvelles signatures, mais l’attaque de Seifert lui permet de passer — avec une certaine

probabilit´e — l’´etape de v´erification de signature, pour un message de son choix, en corrompant

le module public. L’objectif de l’attaquant est atteint, mais l’attaque n´ecessite d’ˆetre reproduite

`

a chaque fois pour obtenir une nouvelle acceptation indue.

5.1.2 Notre contribution

Dans ce chapitre nous proposons la premi`ere attaque par fautes qui peut ˆetre utilis´ee contre la

signature

RSA

en mode standard, permettant de retrouver l’exposant priv´e en ne corrompant que

des ´el´ementspublics de la cl´e. Ce point est particuli`erement important, car les autres attaques

connues visent l’exposant priv´e, qui devrait donc, par essence, ˆetre prot´eg´e contre les fautes.

La n´ecessit´e de prot´eger les ´el´ements publics demeurait une question ouverte jusqu’`a pr´esent.

Notre contribution aboutit donc clairement `a la conclusion queles ´el´ements de cl´e publique

RSA

doivent aussi ˆetre prot´eg´es contre les attaques par fautes.

Notre attaque a le mˆeme point de d´epart que celle deSeifert : elle consiste `a corrompre le

module public. Cependant, l’attaque deSeifertpermet `a l’attaquant de passer une v´erification

de signature (avec une certaine probabilit´e), alors que la nˆotre permet une r´ev´elation compl`ete

de la cl´e. Une fois la cl´e connue, l’adversaire obtient les pleins pouvoirs, alors que l’attaque de

Seifertne permet qu’une unique acceptation indue.

Une autre propri´et´e essentielle de notre attaque est que, dans un de ses modes, l’attaquant

n’a besoin d’absolument aucune connaissance sur l’effet de la faute. Cela est une am´elioration

certaine de l’attaque de Seifert (dans laquelle l’attaquant doit supposer la valeur faut´ee du

module), ou sur les attaques par basculement de bit (qui exigent une pr´ecision irr´ealiste en

pratique).

Dans un autre mode, notre attaque peut ˆetre am´elior´ee. Grˆace `a un mod`ele de faute, nous

sommes capables de r´eduire consid´erablement le nombre de fautes n´ecessaires pour retrouver

compl`etement la cl´e priv´ee. Comme expliqu´e plus loin, la connaissance de la faute que produit

l’attaquant peut ˆetre probabiliste ou impr´ecise : certaines des phases de l’attaque permettent

d’accepter une certaine incertitude quant `a l’effet de la faute.

Les nouvelles attaques par fautes que nous pr´esentons ici s’appliquent au

RSA

standard pour

lequel il n’´etait pas connu d’attaque aussi efficace que pour le mode CRT. De plus, des paddings

fixes (i.e.

RSA-FDH

[BR93]) ou des paddings al´eatoires avec al´ea joint (i.e.

RSA-PFDH

[Cor02])

n’influencent pas nos attaques. La seule limitation concerne le cas d’une signature avec r´ecup´

e-ration d’al´ea (i.e.

RSA-PSS

[BR96]) pour lequel le probl`eme reste ouvert.

5.1.3 Plan de l’expos´e

La description de notre travail est organis´ee de la mani`ere suivante. Nous rappelons dans

la Section 5.2 le contexte des attaques par fautes, et la nouveaut´e introduite par l’attaque de

Seifert. La partie principale de notre contribution commence `a la Section5.3o`u nous d´efinissons

17

Provoquer des fautes contre une m´ethode publique a n´eanmoins ´et´e d´ej`a consid´er´e dans le cas des courbes elliptiques [BMM00,CJ05].

Chapitre 5. Pourquoi doit-on s´ecuriser ´egalement les ´el´ements publics d’une cl´e RSA

le cadre g´en´eral de notre attaque. Nous introduisons alors `a la Section5.4 le premier mode de

notre attaque, dans lequel l’adversaire n’a besoin d’aucune connaissance particuli`ere sur l’effet

de la faute. La Section5.5d´ecrit une adaptation de notre attaque au cas o`u un mod`ele de faute

est accessible `a l’adversaire. Enfin, nous concluons `a la Section5.6.

5.2 Pr´eliminaires

Dans ce chapitre, la notationDL(µ, s, n) est utilis´ee pour exprimer le logarithme discret des

en baseµmodulonqui, soit est un entier d´efini modulo l’ordre multiplicatif deµmodulon, soit

n’existe pas dans le cas o`usn’est pas une puissance deµmodulo n. Clairement, cette notation

peut ˆetre g´en´eralis´ee `a toute puissance de premierp

a

divisantn, et `a tout entierrdivisant l’ordre

multiplicatif de µ modulo p

a

, par DL(µ, s, p

a

) modr (not´e DL(µ, s, p

a

, r) par la suite), qui est

un entier d´efini modulor ou n’existe pas.

Nous rappelons que pour des valeurs relativement petites der— disons de 15 `a 20 chiffres —,

le logarithme discret DL(µ, s, p

a

, r) peut ˆetre calcul´e efficacement par des m´ethodes de

com-plexit´e en racine carr´ee telles que les pas-de-b´eb´e/pas-de-g´eant ou la m´ethode rho de

Pol-lard [MOV97].

5.2.1 Mod`eles de fautes

Les attaques bas´ees sur les fautes peuvent ˆetre r´ealis´ees en pratique de diff´erentes fa¸cons.

Par le pass´e, il ´etait possible sur certains composants de produire des fautes par le biais de

d´efaillances subites de l’alimentation [ABF+02]. De nos jours les composants sont con¸cus pour

r´esister `a de tels moyens de provocation de fautes.

Le meilleur outil aujourd’hui pour injecter une faute est certainement le laser [BCN+06].

Les effets de la faute peuvent varier en fonction du composant, du type de laser utilis´e, ou des

diff´erents m´ecanismes de protection impl´ement´es par les concepteurs du composant. Divers

mo-d`eles de faute sont commun´ement consid´er´es en fonction des capacit´es suppos´ees de l’attaquant

en termes de positionnement et de pr´ecision temporelle de ses fautes.

D’un point de vue pratique, l’effet de la faute est tr`es d´ependant du composant. La faute la

plus simple a pour effet de changer la valeur d’un mot (dont la taille d´epend de l’architecture)

d’une mani`ere ind´etermin´ee. Cela peut ˆetre obtenu par exemple en provoquant une faute sur les

d´ecodeurs d’adresse, lorsque des param`etres stock´es en m´emoire non volatile (en anglais,

non-volatile memory, NVM) sont lus et transf´er´es en RAM. Si ce transfert se fait en ordre al´eatoire,

alors le positionnement en terme d’indice du mot est alors inconnu ´egalement.

Pour certains composants, l’effet de la faute peut ˆetre connu, ´eventuellement avec une

cer-taine probabilit´e. Dans la litt´erature, des mod`eles `a basculement individuel de bit sont parfois

consid´er´es. Ce n’est cependant pas si facile `a r´ealiser dans la pratique, alors que les mod`eles

de mots corrompus sont tr`es r´ealistes. ´Egalement, une distinction est faite entre les fautes

per-manentes (valeurs de bits “grav´ees” en NVM) et les fautes transitoires. Dans la suite nous ne

consid´erons que le cas des fautes transitoires. Nous ne faisons que peu d’hypoth`eses sur les

ca-pacit´es d’injection de l’attaquant, de sorte que nos attaques sont compatibles avec les mod`eles

de fautes les plus r´ealistes.