• Aucun résultat trouvé

3.3 Prouver l’absence d’invariants sur des SPN

3.3.3 Le cas g´en´eral

Dans cette partie, nous nous int´eressons au cas o`u la dimension de WL(D) est strictement inf´erieure `a (n − 1) o`u n est la taille des blocs. Dans ces conditions, nous ne pouvons plus prouver l’absence d’invariants non-triviaux en exploitant uniquement la couche lin´eaire et son interaction avec les constantes de tour. Il convient donc de consid´erer les propri´et´es des boˆıtes-S utilis´ees. Plus pr´ecis´ement, quand n − dim WL(D) est “suffisamment petit”, il est possible de regarder les invariants g ∈ Bn non-triviaux potentiels pour la couche de substitution qui admettent certaines structures lin´eaires particuli`eres appel´ees structures lin´eaires invariantes ou structures lin´eaires 0.

D´efinition 3.16 (Structures lin´eaires invariantes). Soit f ∈ Bn etα une struc-ture lin´eaire de f , alors α est une structure lin´eaire invariante (ou structure lin´eaire0) si la fonction d´eriv´ee ∆αf est la fonction bool´eenne nulle. L’ensemble des structures lin´eaires 0 de f forme un sous-espace vectoriel de LS(f ) et est not´eLS0(f ). Les ´el´ements β ∈ LS(f ) tels que ∆β(f ) = 1 sont appel´es structures lin´eaires1 de f .

Il est ´evident et bien connu [DW97] que dim LS0(f ) ≥ dim LS(f ) − 1. 3.3.3.1 Utilisation des structures lin´eaires invariantes

L’id´ee principale ici est de consid´erer un sous-espace not´e Z, donn´e de l’espace des structures lin´eaires 0 des invariants potentiels, et d’appliquer la couche de substitution afin d’augmenter la dimension de ce sous-espace.

Proposition 3.17. Soit S une permutation de Fn

2, g un invariant pour S et Z ⊂ Fn

2 tels queLS0(g) ⊇ Z. Alors

— g est constante sur chaque translat´e de Z ; — g est constante sur S(Z).

D´emonstration. Comme Z ⊆ LS0(g), pour tout a ∈ Fn

2 et pour tout z ∈ LS0(g), on a g(a + z) = g(a), c’est-`a-dire que g est constante sur tous les ensembles

(a + Z), a ∈ Fn2. De plus, g ´etant un invariant pour S, il existe c ∈ F2 tel que g ◦ S(x) = g(x) + c. Comme g est constante sur Z, on en d´eduit que g est constante sur S(Z).

`

A l’aide de ces observations nous construisons un algorithme qui v´erifie si les invariants `a la fois pour la couche de substitution et la couche lin´eaire de chaque tour sont n´ecessairement triviaux. L’id´ee principale de l’algorithme d´ecrit par l’algorithme 1 est d’´evaluer la couche de substitution S sur certaines valeurs prises al´eatoirement dans un sous-espace Z. En appliquant S, on augmente la taille de l’ensemble R qui doit ˆetre inclus dans l’espace des structures lin´eaires invariantes. Si la dimension de l’espace Z de d´epart est suffisamment proche de n, alors nous pouvons esp´erer toucher tous les translat´es de Z en appliquant S. Si ce ph´enom`ene apparaˆıt, alors on en d´eduit l’absence d’invariants non-triviaux.

Algorithme 1V´erifier que U(S) ∩ {g ∈ Bn| Z ⊆ LS0(g)} est trivial.

1: R = {}

2: R´ep´eter

3: z← Z$

4: Calculer S(z)

5: Ajouter `a R un repr´esentant du translat´e de Z d´efini par S(z)

6: tant que |R| < 2n−dim Z

Plus pr´ecis´ement, cet algorithme calcule les diff´erents translat´es sur lesquels g doit ˆetre invariant. Finalement, lorsque le nombre de translat´es est suffisamment grand, il en d´ecoule que g doit n´ecessairement ˆetre constante.

3.3.3.2 D´eterminerZ

Jusqu’`a maintenant, nous avons suppos´e la connaissance pr´ealable d’un sous-espace Z qui puisse servir de point de d´epart `a l’algorithme 1. Or, Z doit ˆetre un sous-espace de LS0(g) qui d´epend (´evidemment) d’un invariant potentiel d´ej`a connu. On pourrait donc penser que le serpent se mord la queue, mais c’est sans compter sur les observations faites au d´ebut de cette section sur l’espace WL(D). En revanche, nous nous restreignons aux structures lin´eaires invariantes et non `a toutes les structures lin´eaires. Or, chaque ´el´ement de l’espace WL(D) peut tout aussi bien ˆetre une structure lin´eaire 0 ou une structure lin´eaire 1. Cependant certaines structures lin´eaires invariantes peuvent ˆetre obtenues en utilisant les deux approches suivantes.

Premi`ere approche. D’apr`es l’´equation (3.3) de la preuve de la proposi-tion 3.13, on obtient le lemme qui suit.

Lemme 3.18. Soitg ∈ Bn un invariant pour Addki◦ L pour une clef de tour ki et soit V un sous-espace de LS(g) qui est invariant par L. Alors, pour tout v ∈ V , (v + L(v)) est une structure lin´eaire invariante de g.

D´emonstration. Soit v ∈ V . De la mˆeme mani`ere qu’`a la preuve de la proposi-tion 3.13 `a la page 27, nous consid´erons un invariant g pour Addki◦ L. Alors, comme V ⊂ LS(g), il existe une constante c ∈ F2telle que pour tout x ∈ Fn

2, g(x) = g(x + v) + c .

Comme g est un invariant pour Addki◦ L, il existe une constante a ∈ F2 telle que pour tout x ∈ Fn

2,

g(L(x) + ki) + a = g(x) = g(x + v) + c = g(L(x + v) + ki) + a + c . En posant x0 = L(x) + ki, on obtient, pour tout y ∈ Fn

2, g(x0) = g(x0+ L(v)) + c . Donc, pour tout x ∈ Fn

2, on a

g(x + v) = g(x + L(v)) ,

ce qui implique, en posant y := x + v, que, pour tout y ∈ Fn 2, g(y) = g(y + v + L(v)) ,

ce qui signifie que (v + L(v)) ∈ LS0(g) et termine la preuve.

Pour utiliser ce lemme, une premi`ere fa¸con de faire est tout simplement d’appliquer l’algorithme 1 sur l’espace Z = WL(D0) o`u D0 = {d + L(d), d ∈ D}. Cependant, la dimension de Z peut ˆetre trop petite (et donc l’algorithme inefficace). Dans ce cas, il est n´ecessaire d’utiliser une approche diff´erente : faire tourner l’algorithme plusieurs fois, en consid´erant maintenant tous les choix possibles pour les structures lin´eaires invariantes parmi tous les ´el´ements de l’espace D. Plus pr´ecis´ement, soit D = {d1, d2, . . . , dm, . . . , dt} o`u les ´el´ements d1, . . . , dm sont tous des structures lin´eaires 1, et dm+1, . . . , dt des structures lin´eaires 0 pour un invariant g, avec la condition WL(D) ⊆ LS(g), alors la technique naturelle consiste `a s’int´eresser `a l’ensemble D0 d´efini par :

D0= {d1+ L(d1), d2+ L(d2), . . . , dm+ L(dm), dm+1, . . . , dt, d1+ d2, . . . , d1+ dm} Par construction de l’ensemble D0, nous augmentons significativement la dimension du sous-espace vectoriel WL(D0) en ajoutant la somme des structures lin´eaires 1. Les ´el´ements de D0sont donc (toujours par construction) des ´el´ements appartenant `a LS0(g). Ainsi WL(D0) ⊆ LS0(g) et nous pouvons alors appliquer l’algorithme 1 sur Z = WL(D0). Cependant, nous ne savons pas, au pr´ealable, quels ´el´ements de D sont des structures lin´eaires 0. Il convient donc de faire tourner l’algorithme 1 sur tous les choix possibles de structures lin´eaires 0 ou de structures lin´eaires 1, c’est-`a-dire 2tfois o`u t est la taille de l’ensemble D.

Deuxi`eme approche. Dans la premi`ere approche, nous utilisons plutˆot la partie lin´eaire, mais il est possible (sous certaines conditions) d’utiliser les propri´et´es d´eriv´ees de la repr´esentation en cycles de la boˆıte-S.

Proposition 3.19. Soitg ∈ U(S) o`uS est une permutation de n bits poss´edant un cycle de taille impaire. Alors toute structure lin´eaire deg qui appartient `a l’ensemble des images de l’application (S + Idn), i.e. `a {S(x) + x|x ∈ Fn

2}, est une structure lin´eaire invariante deg.

D´emonstration. Si la couche de substitution S poss`ede un cycle de longueur impaire, alors d’apr`es la proposition 3.11, n’importe quel g ∈ U(S) v´erifie n´ecessairement la propri´et´e g(x) = g(S(x)) pour tout x ∈ Fn

2. Soit g ∈ U(S) et a ∈ LS(g). Cette structure lin´eaire a appartient `a l’ensemble image de l’application (S + Idn) s’il existe x0∈ Fn

2 tel que S(x0) = x0+ a. On en d´eduit alors que g(x0) = g(S(x0)) = g(x0+ a) ,

ce qui implique que a est une structure lin´eaire invariante de g.

En utilisant cette propri´et´e particuli`ere, on se rend compte que si l’on trouve suffisamment d’´el´ements a ∈ WL(D) ∩ Im(S + Idn), alors il nous suffit d’appliquer l’algorithme 1 sur l’ensemble qui en d´ecoule. Nous utilisons cette approche sur le chiffrement Mantis7.