• Aucun résultat trouvé

Il existe bien sˆur de nombreuses autres approches pour attaquer un re- gistre filtr´e. Les principales autres familles sont list´ees ci-dessous avec une rapide description et les principales r´ef´erences. Nous verrons ´egalement dans cette th`ese plusieurs attaques en d´etail aux chapitres 6, 7 er 8.

Attaques Alg´ebriques Ce sont les attaques qui vont nous int´eresser le plus dans cette th`ese. Elles sont essentiellement de nature alg´ebrique contrai- rement aux attaques par corr´elation par exemple, o`u les outils utilis´es sont

plus de nature statistique. Par attaques alg´ebriques, on d´esigne la plupart du temps les attaques d´ecrites au chapitre 8, mais l’attaque bas´ee sur la complexit´e lin´eaire du chapitre 7 rentre aussi dans la famille des attaques alg´ebriques.

Attaques par inversion Ces attaques ont ´et´e initialement introduites par Golic [Gol96] et g´en´eralis´ees dans [GCD00], elles exploitent la position des entr´ees de la fonction de filtrage dans le registre. Rappelons que ces positions sont donn´ees par les variables t1 jusqu’`a tm. En substance, la complexit´e de

l’attaque va alors se ramener `a une recherche exhaustive sur ce que l’on appelle la m´emoire effective du registre qui vaut

tm− t1

PGCDi(ti− ti+1)

.

Si le PGCD entre l’´ecart des entr´ees vaut 1 et que tm− t1 est de l’ordre de

l, ces attaques peuvent ˆetre facilement ´evit´ees. Il existe ´egalement une autre technique de complexit´e similaire fond´ee sur une repr´esentation en treillis et sur l’algorithme de Viterbi, voir [LBGZ01].

Distingueur Mentionnons enfin les attaques qui ne visent pas directement `

a retrouver l’´etat initial du LFSR mais juste `a distinguer la suite chiffrante d’une suite al´eatoire. Ces attaques peuvent permettre de v´erifier que l’on a correctement retrouv´e la suite chiffrante ou nous aider `a retrouver la struc- ture du chiffrement dans le cas o`u elle est inconnue. Notez ´egalement que cette approche peut aussi conduire `a des attaques de “type diviser pour r´egner” s’il est possible de faire une recherche exhaustive sur une sous partie de la clef comme dans [CF01].

L’id´ee est ici de trouver des ´equations qui pr´esentent un biais sur la suite chiffrante. La plupart des techniques pour faire cela reposent, de la mˆeme mani`ere que les attaques par corr´elation rapides, sur les ´equations lin´eaires induites par les multiples de poids faible des polynˆomes g´en´erateurs des LFSR qui interviennent dans le syst`eme. On en verra un exemple au chapitre 6 qui reprend l’attaque pr´esent´ee dans [CF01]. Pour des chiffrements `a flot plus ´evolu´es, des techniques efficaces sont donn´ees dans [Gol94] et [CHJ02].

Chapitre 5

Calcul des multiples de poids

faible

Beaucoup d’attaques par corr´elation et l’attaque dont nous parlerons dans le prochain chapitre utilisent des relations de parit´e de poids faible v´erifi´ees par les bits de sortie d’une s´equence produite par un LFSR. Au chapitre 2 on a vu que ces relations sont en fait donn´ees par les multiples de poids faible du polynˆome g´en´erateur du LFSR. Nous nous int´eressons ici `

a plusieurs algorithmes pour calculer ces relations.

Nous commencerons par les algorithmes classiques qui reposent tous sur des compromis temps-m´emoire et dont le plus efficace est certainement celui de [CJM02] que nous pr´esenterons dans la deuxi`eme section. Nous pr´esenterons ensuite une autre approche bas´ee sur le calcul de logarithmes discrets qui a donn´e lieu, avec la collaboration de Yann Laigle-Chapuy, `a la publication [DLC07]. Cette approche s’av`ere utile pour calculer les mul- tiples de poids 4 qui jouent un rˆole essentiel dans certaines attaques ([CT00], chapitre 6).

5.1

Pr´esentation du probl`eme

Notre but est de rechercher des multiples de poids w fix´e et de degr´e plus petit qu’une borne D d’un polynˆome g(X) `a coefficients dans F2. Pour des

applications pratiques, seuls les w tr`es petits nous int´eressent, typiquement 3, 4, 5, 6 ou 7. Avant de d´etailler les algorithmes, on rappelle deux r´esultats essentiels pour cette section que l’on a vus vers la fin du chapitre 2 et qui font le lien entre ´equations de parit´e pour le LFSR et multiples de g(X).

D´efinition 5.1 (´Equations de parit´e associ´ees `a un polynˆome). `A un po- lynˆome p(X) = Pni=1piXi de degr´e n `a coefficients dans F2 on associe

n’importe quel d´ecalage dans le temps par : X

i

pist+i= 0 pour un d´ecalage t ≥ 0 .

Proposition 5.2 (´Equations de parit´e pour un LFSR). Soit une s´equence (st)t≥0 non nulle produite par un LFSR de polynˆome g´en´erateur g(X) pri-

mitif, alors l’´equation de parit´e associ´ee `a un polynˆome p(X) `a coefficients dans F2 est v´erifi´ee pour tout d´ecalage du temps si et seulement si p(X) est

´egal `a 0 modulo g(X). C’est-`a-dire si et seulement si p(X) est un multiple de g(X).

Comme en g´en´eral les LFSR utilis´es ne sont pas d´eg´en´er´es, g(X) a un terme constant qui vaut 1 et nous nous int´eresserons uniquement aux mul- tiples p(X) de terme constant 1. Les autres, qui sont divisibles par une puissance de X, ne repr´esentent en effet que des ´equations de parit´e qui sont d´ecal´ees dans le temps.

En supposant que les Xi modulo g(X) sont al´eatoires, on a le r´esultat suivant qui nous donne une id´ee du nombre de multiples attendus de poids w et de degr´e au plus D. Cette “heuristique” nous permettra de choisir D en fonction de nos besoins en nombre de multiples. En pratique, l’ordre de grandeur est correct pour la plupart des cas int´eressants.

Heuristique 5.3 (Nombre de multiples). Une approximation du nombre de multiples de poids w et de degr´e au plus D d’un polynˆome g(X) de degr´e l est donn´ee par :

D w−1  2l ∼ Dw−1 (w − 1)!2l pour w = o(D) .

Justification. On fait ici l’hypoth`ese qu’un polynˆome de poids w pris au hasard parmi les Dw−1 possibles (car on suppose qu’il a toujours un terme

constant ´egal `a 1) a une chance sur 2l d’ˆetre ´egal `a 0 modulo g(X). Le comportement asymptotique s’en d´eduit directement du moment que w est un o(D).

L’algorithme standard pour trouver tous les multiples de poids w et de degr´e au plus D est d’utiliser un compromis temps-m´emoire :

Algorithme 5.4 (Compromis temps-m´emoire). L’algorithme prend en entr´ee un polynˆome g(X), un degr´e maximal D et un poids w = 1 + q1+ q2 avec

q1 ≤ q2. Il retourne tous les multiples de g(X) de poids w et de degr´e au

plus D.

1. [Pr´ecalcul] Calculer tout les Ximodulo g(X) pour i = 1..D et les stocker dans un tableau mod[i].

2. [Mise en table] Pour tous les q1-uplets Γ = (γ1, . . . , γq1) tel que 0 < γ1 <

· · · < γq1 ≤ D, calculer et stocker les paires (1 +

P

imod[γi], Γ) dans une

table de hachage index´ee par le premier ´el´ement.

3. [Recherche] Pour tous les q2-uplets ∆ = (δ1, . . . , δq2) tel que 0 < δ1 <

· · · < δq2 ≤ D, calculer

P

imod[δi] et regarder dans la table si un ´el´ement

est le mˆeme. Si c’est le cas, on trouve un multiple 1 +X

i

Xγi+X

i

Xδi .

La complexit´e en m´emoire de cet algorithme est en O(Dq1) et celle en

temps est en O(Dq2). Remarquons que dans le cas impair, la phase de re-

cherche est en fait inutile car tout le travail a d´ej`a ´et´e fait en calculant la table, il suffit juste de d´etecter les collisions lors de sa cr´eation. Le compromis usuel est de choisir q1= ⌊w−12 ⌋ et q2 = ⌈w−12 ⌉.