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 ⌉.