• Aucun résultat trouvé

Algorithme d’attaque

Chapitre 6 Analyse de la perturbation d’un module DSA

9.2 Description de l’attaque

9.2.3 Algorithme d’attaque

Algorithme. Notre attaque par perturbation contre les implantations de Rabbit peut ˆetre divis´ee en 5 ´etapes distinctes, allant de l’injection de fautes pendant diff´erentes ex´ecutions de Rabbitjusqu’`a l’extraction de la cl´e secr`ete. Ces diff´erentes ´etapes sont r´esum´ees et list´ees dans ce paragraphe.

´

Etape 1 : Perturber, une par une, chacune des seize additions de la fonction de mise `a jour de Rabbit pour les deux it´erations cons´ecutives i et i + 1. Il faut donc collecter les suites chiffrantes erron´ees correspondant `a 2× 16 = 32 ex´ecutions perturb´ees de Rabbit (avec le mˆeme vecteur d’initialisation),

´

Etape 2 : Comparer les morceaux de suites chiffrantes erron´ees ˆs[127..0]i et ˆs[127..0]i+1 avec les morceaux de suite chiffrante correcte correspondants si[127..0]et si+1[127..0]. Ensuite, v´erifier

que les fautes ont ´et´e correctement inject´ees (cf. Section 9.2.2), ´

Etape 3 : `A partir des comparaisons entre les diff´erentes sorties correcte/erron´ees r´ealis´ees dans l’´etape pr´ec´edente, construire deux syst`emes de 16 ´equations chacun (cf. Section 9.2.2) pour les perturbations r´ealis´ees aux it´erations i et i + 1 respectivement. Puis, en menant une analyse pr´eliminaire sur les vecteurs de retenue suivie de la r´esolution de sous-syst`emes d’inconnues de 8 bits, retrouver des valeurs probables pour les (gj,i−1)06j67 et (gj,i)06j67.

Enfin, on finit par calculer les valeurs probables pour les variables d’´etat interne (xj,i)06j67

et (xj,i+1)06j67,

´

Etape 4 : Calculer les valeurs probables des compteurs d’´etat interne (cj,i+1)06j67 et de la

retenue φ7,i+1 correspondants aux valeurs possibles des variables d’´etat interne retrouv´ees

`

Chapitre 9. Application `a l’algorithme Rabbit ´

Etape 5 : Enfin, pour chacune des valeurs possibles de l’´etat interne complet `a l’instant i + 1, comparer les bits de suite chiffrante correspondants `a ceux de la suite chiffrante correcte (pour 2 it´erations). En cas d’´egalit´e, la valeur possible d’´etat interne est alors identifi´ee comme la bonne et il est alors possible de pr´edire les futurs bits de suite chiffrante. Si i = 2, l’attaquant peut encore choisir de r´ealiser une analyse compl´ementaire pour extraire la cl´e de chiffrement.

Complexit´e. L’efficacit´e d’une attaque par perturbation ne se mesure pas seulement en fonc- tion du mod`ele de perturbation mais aussi par le nombre de perturbations `a provoquer pour pouvoir r´eussir `a extraire les informations secr`etes. En th´eorie, pour obtenir un nombre d’´equa- tions suffisant pour r´eussir notre analyse l’attaquant devra perturber 32 ex´ecutions diff´erentes de Rabbit. Ces 32 perturbations correspondent `a la modification de chacune des 16 additions de la fonction de mise `a jour de l’´etat interne sur deux it´erations cons´ecutives. En pratique, ce nombre de perturbations est plus important et, d´epend fortement des capacit´es de l’attaquant `

a reproduire finement les effets escompt´es sur le composant cibl´e (cf. Section 9.2.1.1).

En termes de temps de calcul, la complexit´e globale de notre attaque est domin´ee par la com- plexit´e de l’´etape 5, `a savoir tester toutes les solutions probables pour l’´etat interne (i.e. obtenus en r´esolvant les syst`emes d’´equations form´es par les morceaux de suites chiffrantes erron´ees) jusqu’`a identifier celle g´en´erant la suite chiffrante correcte. La complexit´e de notre attaque est donc domin´ee par la comparaison de O 234 possibilit´es pour l’´etat interne de Rabbit. Par

cons´equent, les performances de notre attaque par perturbation sont meilleures que pour celle propos´ee par A. Kirkanski et A. M. Youssef [KY09], que ce soit en termes de nombre de pertur- bations ou encore de complexit´e. En effet, l’attaque pr´ec´edente n´ecessitait d’analyser le r´esultat de 128 `a 256 perturbations de l’´etat interne au prix de 238comparaisons. N´eanmoins, le mod`ele de perturbation adopt´e dans [KY09] pourra ˆetre consid´er´e comme plus facile `a reproduire que celui que nous avons choisi.

9.3

Conclusion

Depuis sa pr´esentation `a FDTC 2003 [BVP+03], l’algorithme de chiffrement `a flot Rabbit est consid´er´e par la communaut´e comme un algorithme plutˆot sˆur d’un point de vue math´ematique. Mais curieusement, la question de la s´ecurit´e des implantations de Rabbit n’a ´et´e adress´ee que tr`es r´ecemment [KY09].

Dans ce chapitre, nous avons pr´esent´e une nouvelle attaque par perturbation visant les im- plantations logicielles de Rabbit. Notre analyse th´eorique combin´ee aux r´esultats obtenus avec notre implantation de l’attaque permet d’am´eliorer l’´etat de l’art des attaques par perturbation sur Rabbit, que ce soit d’un point de vue du nombre de fautes `a r´ealiser de la comlexit´e calcula- toire. Bien que le mod`ele que nous ayons consid´er´e soit assez original et relativement peu ´etudi´e dans la litt´erature, nous avons montr´e que la substitution d’une addition par un ”ou exclusif” pouvait se ramener `a forcer le basculement d’un bit du registre contenant les codes d’op´erations. Sous cette hypoth`ese, nous avons montr´e qu’il est possible de retrouver compl`etement l’´etat interne de Rabbit, `a un instant donn´e, `a partir de seulement 32 perturbations et au prix de 234

comparaisons.

D’autre part, les r´esultats obtenus par le biais de notre attaque nous ont permis de nuancer l’analyse initi´ee par les concepteurs de Rabbit. En effet, ceux-ci avaient conclu que le remplace- ment de toutes les additions par des ”ou exclusifs”, dans la fonction de mise `a jour, ne baisse pas le niveau de s´ecurit´e de Rabbit. En se r´ef´erant aux performances de notre attaque, nous

9.3. Conclusion pouvons affirmer que les mˆemes conclusions ne s’appliquent pas si ces additions sont temporaire- ment remplac´ees, une par une, par des ”ou exclusifs”.

Afin de colmater cette vuln´erabilit´e potentielle, nous proposons d’ajouter de la redondance, voire de doubler, le calcul des additions de fa¸con `a pouvoir comparer les r´esultats et d´etecter les ex´ecutions perturb´ees. Comme ces additions sont beaucoup moins coˆuteuses que le calcul d’im- ages par la fonction ”g” (i.e. une mise au carr´e d’une entr´ee de 32 bits), une telle contre-mesure ne devrait pas augmenter outre mesure la complexit´e globale de Rabbit.

Pour conclure, nous pouvons affirmer que les attaques par perturbations repr´esentent une menace r´eelle pour les implantations de Rabbit. Ainsi, par pr´ecaution, nous recommandons aux futurs d´eveloppeurs de porter une attention particuli`ere `a l’implantation de la fonction de mise `