• Aucun résultat trouvé

Pr´esentation de l’attaque

Nous pr´esentons ici le d´eroulement de l’attaque sur le registre filtr´e, nous montrerons en fin de section comment on peut l’adapter au cas de plusieurs LFSR filtr´es.

multiples de poids faible du polynˆome g´en´erateur du LFSR g(X). Comme on l’a vu dans le chapitre pr´ec´edent, chacun de ces multiples induit une ´equation de parit´e v´erifi´ee par les bits de la suite produite par le LFSR et donc par les entr´ees de la fonction de filtrage f . Ainsi pour un multiple p(X) = 1 +Pw−1i=1 Xδi de poids w on a :

xt+ xt+δ1 + · · · + xt+δw−1 = 0 ∀t ≥ 0 . (6.1)

Dans tout ce chapitre, nous allons supposer que pour un multiple donn´e et un point xt, les autres points xt+δ1 jusqu’`a xt+δw−1 prennent avec la mˆeme

probabilit´e toutes les valeurs qui satisfont l’´equation (6.1). C’est l’unique hypoth`ese sur laquelle est bas´ee toute notre analyse. Elle nous semble jus- tifi´ee par les bonnes propri´et´es statistiques d’un LFSR et surtout, comme on le verra plus loin, par le fait que les r´esultats exp´erimentaux sont tr`es proches de ce que la th´eorie pr´evoit. Avec cette hypoth`ese, on d´efinit :

Px def= Pr f (x1) + · · · + f(xw−1) = 0 | w−1X i=1 xi = x ! .

C’est la probabilit´e pour un multiple donn´e de poids w que zt+δ1 + · · · +

zt+δw−1 soit ´egal `a 0 sachant que xt= x. Pour simplifier les notations, on a

enlev´e les δiqui de toute mani`ere n’ont pas d’influence dans notre analyse. Le

cœur de notre attaque est bas´e sur ces probabilit´es. Elles peuvent s’exprimer simplement comme on le verra dans la section suivante, et pour un w impair elles vont satisfaire deux propri´et´es int´eressantes :

– P0 est la plus grande probabilit´e parmi les Px, elle est toujours plus

grande que 1/2.

– Si la fonction f a de bonnes propri´et´es d’autocorr´elation alors il y a toujours un ´ecart entre P0 et les autres Px.

´

Etant donn´ees ces propri´et´es, il devient facile de d´eduire ce que l’on va faire. En utilisant de nombreux multiples de g(X), on sera capable d’avoir une bonne approximation des probabilit´es Pxt associ´ees `a une position t. Si

l’´ecart entre P0 et les Px est assez grand (ce qui va d´ependre du nombre

de multiples `a notre disposition) on sera alors capable de distinguer quelles positions t sont associ´ees avec des xt qui valent 0.

Chaque xt ´egal `a 0 nous indique que les m bits de la s´equence (st)t≥0

qui composent xt sont ´egaux `a 0. On obtient alors m ´equations lin´eaires sur

l’´etat initial du LFSR qui sont donn´ees par les expressions lin´eaires des bits de xt en fonction de (s0, . . . , sl−1). En regroupant les ´equations de tous les

xt nuls ainsi d´etect´es on obtient un syst`eme lin´eaire de rang au plus l − 1

car `a la fois l’´etat nul et le vrai ´etat initial sont solutions. On esp`ere ainsi, avec ⌈l/m⌉ tels ´etats xt`a 0, obtenir un syst`eme de rang l − 1 dont l’unique

solution non triviale est l’´etat initial du LFSR.

Le d´eroulement de l’attaque est d´ecrit dans l’algorithme suivant qui uti- lise deux param`etres D et N dont on verra comment choisir la valeur plus loin :

Algorithme 6.1 (D´etection des entr´ees de f `a 0 [Did07]). ´Etant donn´es deux param`etres D et N ainsi que D + N bits de suite chiffrante produits par un LFSR filtr´e de polynˆome g´en´erateur g(X), cet algorithme essaie de retrouver l’´etat initial.

1. [Pr´ecalcul] Chercher tous les multiples de poids 2p + 1 de g(X) et de degr´e au plus D.

2. [Approximation] Calculer une estimation de Pxt pour les N premiers bits

de la suite chiffrante. Pour une position donn´ee, il suffit de compter com- bien d’´equations linaires associ´ees aux multiples de g(X) sont satisfaites par les bits de la suite chiffrante. Notons que parmi ces N bits, seuls ceux pour lesquels zt= f (0) sont `a consid´erer.

3. [Supposition] On va supposer que les ⌈l/m⌉ bits avec l’approximation de Pxt la plus haute correspondent `a des xt tout `a z´ero.

4. [Fin] R´esoudre le syst`eme lin´eaire induit par la connaissance de ces xt

en ces positions et retrouver l’´etat initial.

Une complexit´e d´etaill´ee sera donn´ee plus loin, mais en voici quand mˆeme une premi`ere id´ee. La meilleure complexit´e pour la premi`ere ´etape, qui est du pr´ecalcul, est donn´ee par l’algorithme de [CJM02] (voir le chapitre pr´ec´edent). Elle est de O(Dp) en temps et de O(Dp/2) en m´emoire. La com-

plexit´e de l’´etape 2 est en N fois le nombre de multiples et requiert comme indiqu´e dans le pr´eambule de l’algorithme N + D bits de suite chiffrante. Les deux derni`eres ´etapes sont quant `a elles n´egligeables dans la complexit´e finale. Il est possible dans l’´etape 3 d’´elargir le nombre de candidats et de r´esoudre plusieurs syst`emes lin´eaires diff´erents `a l’´etape 4 jusqu’`a ce que l’on retrouve l’´etat initial. Il est en effet tr`es facile de tester si l’on obtient le bon ´etat initial ou pas.

Cas de plusieurs LFSR filtr´es par une fonction bool´eenne Il existe dans ce cas une variante de cette attaque tr`es efficace et dont la complexit´e ne d´epend que du nombre de variables de la fonction de filtrage utilis´ee ! L’id´ee est de faire une recherche exhaustive sur un registre et d’utiliser des ´equations de parit´e de poids 4 satisfaites par tous les autres pour distinguer le bon ´etat des mauvais.

Pour distinguer la suite chiffrante d’une suite al´eatoire, on verra dans la section suivante que les ´equations de poids 4 sont un bon choix. En effet, sous notre hypoth`ese, elles sont toujours v´erifi´ees par la suite chiffrante avec un biais positif plus grand que 1/2m+1 pour une fonction de m variables.

Sans rentrer dans les d´etails, il est alors possible de ne consid´erer que les ´equations qui, ´etant donn´ee la valeur du registre test´e, sont telles que les 4 vecteurs d’entr´ee de la fonction de filtrage sont de somme nulle. Si l’´etat test´e n’est pas le bon, il n’y a pas de raison particuli`ere d’avoir un biais alors que dans le cas contraire, on est exactement dans le cas d’une ´equation lin´eaire de poids 4 avec des entr´ees al´eatoires de somme nulle.