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
RSAen 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
RSApublics 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
RSAest 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
RSAstandard, 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
16de 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.
17Une 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
RSAlui-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
RSAen 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
RSAdoivent 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
RSAstandard 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
17Provoquer 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].