• Aucun résultat trouvé

Recherche exhaustive et compromis temps-m´emoire

temps-m´emoire

La mani`ere la plus brutale mais souvent aussi la plus efficace pour re- trouver la clef secr`ete d’un syst`eme de chiffrement est ce que l’on appelle la recherche exhaustive. Elle est applicable sur tous les chiffrements et consiste simplement `a essayer toutes les clefs secr`etes possibles jusqu’`a ce que l’on retrouve la suite chiffrante observ´ee. Pour une clef secr`ete de k bits, sa com- plexit´e est donc en O(2k) et correspond `a la limite que l’on va essayer de

battre en consid´erant des attaques plus ´evolu´ees. La complexit´e est en fait l´eg`erement sup´erieure car, pour g´en´erer les premiers bits de suite chiffrante `

a partir de la clef, on doit souvent appliquer un processus d’initialisation assez long.

Dans les chiffrements `a flot la longueur de clef est presque tout le temps plus petite que la taille de l’´etat interne, donc une recherche exhaustive sur ce dernier en O(2l) est moins efficace. En revanche, elle pr´esente certains

avantages car elle va nous permettre de d´evelopper des algorithmes du type compromis “temps-m´emoire-longueur de suite chiffrante disponible”. Cette approche n’est pas possible en raisonnant directement sur la clef car l’IV est inconnue pendant la phase de pr´ecalcul. Remarquons qu’il est n´enmoins pos- sible d’utiliser un compromis temps-m´emoire sur le couple (IV, clef) comme indiqu´e dans l’article [HS05]. Dans la suite nous noterons T pour la com- plexit´e de l’attaque, M pour la m´emoire qu’elle utilise et B pour le nombre de bits de suite chiffrante requis.

Premi`erement, comme l’ont fait remarquer ind´ependamment Babbage [Bab95] et Golic [Gol97], on peut am´eliorer la complexit´e de la recherche exhaustive sur l’´etat interne si l’on dispose de beaucoup de bits de suite chiffrante (ici B). En arrangeant les B − l vecteurs de l bits cons´ecutifs pouvant ˆetre construits `a partir des B bits de suite chiffrante dans une table de hachage, il est possible de tester si un ´etat initial est un ant´ec´edent d’un de ces vecteurs en O(1). La probabilit´e pour un ´etat pris au hasard d’ˆetre un tel ant´ec´edent est de O(B/2l). Il faut donc en tester de l’ordre de

T = O(2l/B) en moyenne avant d’en trouver un et donc de retrouver la clef du syst`eme.

Comme ici M = B, on obtient ainsi un compromis qui suit la courbe T M = 2l et pas de pr´ecalcul. Un point int´eressant sur cette courbe est obtenu pour un B de l’ordre de 2l/2 ce qui nous donne une attaque de complexit´e 2l/2aussi bien en temps qu’en m´emoire. C’est d’ailleurs pourquoi

en pratique l est choisi deux fois plus grand que la longueur de la clef, mˆeme si obtenir autant de bits de suite chiffrante n’est pas vraiment envisageable car il y a souvent des limites sur le nombre de bits qu’un syst`eme est cens´e produire.

Hellman a montr´e qu’il est possible d’am´eliorer la complexit´e d’une re- cherche exhaustive sans avoir beaucoup de suite chiffrante. Dans [Hel80] Il obtient un compromis temps-m´emoire pour seulement l bits de suite chif- frante qui suit la courbe T M2= 22l. En revanche, son attaque n´ecessite un pr´ecalcul de l’ordre de 2l.

L’id´ee est de voir le syst`eme comme une fonction al´eatoire F de Fl2 dans

Fl2 qu’il est facile de calculer, mais bien sˆur difficile d’inverser. Pour cela on associe `a un ´etat interne les l premiers bits de suite chiffrante produits `

a partir de cet ´etat. L’algorithme va g´en´erer dans une phase de pr´ecalcul de nombreuses chaˆınes d’it´er´es de longueur t de cette fonction et stocker les paires (point de d´epart, point d’arriv´ee). Pour cela, on part d’un point al´eatoire de Fl2, on it`ere t fois la fonction F et l’on arrive `a un point final que l’on stocke. Si maintenant on cherche `a inverser la fonction sur une valeur couverte par l’une de ces chaˆınes, en it´erant successivement la fonction sur cette valeur, on va tomber sur l’un des points d’arriv´ee stock´es. Il sera alors possible de repartir du point de d´epart associ´e pour inverser la fonction.

Pour que cela marche, il convient de prendre un nombre de chaˆınes suffi- samment grand pour couvrir tout l’espace Fl

la situation est plus compliqu´ee que cela car pour une fonction al´eatoire, une fraction constante de points n’ont pas d’ant´ec´edent et il sera impossible d’in- verser leur image sauf si ces points ont ´et´e choisis comme points de d´epart. En plus, si l’on prend de plus en plus de chaˆınes, la probabilit´e qu’elles couvrent les mˆemes points de l’espace devient importante. La solution rete- nue est d’utiliser des versions l´eg`erement modifi´ees de la fonction F, les Fi

de la forme F ◦Lio`u les Li sont des fonctions lin´eaires. Comme une fonction

lin´eaire est facile `a inverser, on peut r´esoudre les difficult´es mentionn´ees plus haut en construisant un certain nombre de chaˆınes par fonction Fi. On peut

ainsi obtenir le compromis de [Hel80] qui, si l’on prend T = M , nous donne une attaque en temps et en m´emoire de l’ordre de O(22l/3) pour un B tr`es faible. Il existe plusieurs variantes de cet algorithme qui conduisent `a des impl´ementations efficace, citons notamment l’utilisation de points distingu´es due a Rivest [Den82] et l’utilisation des “rainbow tables” [Oec03].

Sur le registre filtr´e, Biryukov et Shamir ont am´elior´e cette attaque dans [BS00] en montrant qu’il est possible d’exploiter un grand nombre de bits de suite chiffrante. Ils obtiennent un compromis qui suit la courbe T M2B2 = 22l. Pour le mˆeme temps de calcul que l’attaque de Hellman, on arrive alors

`

a s’en sortir avec M = B = O(2l/3). Le pr´ecalcul de leur attaque est quant `

a lui en O(2l/B), ce qui nous donne O(22l/3) avec nos choix de T, M et B. Cette attaque semble plus ou moins r´ealisable jusqu’`a des l de l’ordre de 100, pour plus de d´etails voir [BS00].