• Aucun résultat trouvé

3.3 Prouver l’absence d’invariants sur des SPN

3.3.5 Les invariants de Midori

Pour ce chiffrement, WL(D) = {000, 0001}16 et est donc de dimension 16 seulement. Ainsi, les techniques utilis´ees ci-dessus ne fonctionnent pas, ce qui est normal puisqu’il existe des invariants `a la fois pour la couche de substitution et la couche lin´eaire. En revanche, nous pouvons d´ecrire les supports de tous les invariants pour Midori-64.

Afin de prouver les conditions n´ecessaires et suffisantes qui d´ecrivent les invariants de Midori, nous avons besoin au pr´ealable du lemme suivant : Lemme 3.20. Soit S une permutation de Fn

2 dans lui-mˆeme, et W un sous-espace de Fn2. Si g ∈ U(S) et W ⊆ LS(g), alors g est constante sur les ensembles

AS,W(x) = [ i∈N ˜ SWi ({x}), x ∈ Fn2 o`u ˜ SW : P(Fn 2) → P(Fn 2) X 7→ S w∈W{S(S(x) + w) + w, x ∈ X} . De plus, siS est une involution, alors il existe k ∈ N tel que AS,W(x) = ˜Sk

W({x}) pour toutx ∈ Fn

2.

D´emonstration. Soit g ∈ U(S). Alors il existe c1∈ F2tel que g(S(x)) = g(x) + c1

pour tout x ∈ Fn

2. Soit w ∈ W o`u W ⊆ LS(g). Alors w est une structure lin´eaire c2de g, pour c2∈ F2. Ainsi, nous avons que, pour tout x ∈ Fn

2, g(S(S(x) + w) + w) = g(S(S(x) + w)) + c2 = g(S(x) + w) + c1+ c2 = g(S(x)) + c2+ c1+ c2 = g(x) + c1+ c2+ c1+ c2 = g(x)

Ceci signifie que g est constante sur les ensembles AS,W(x). Si S est une involution, tout ensemble X satisfait X ⊆ ˜SW(X) pour tout ensemble X. En effet, comme 0 ∈ W , la propri´et´e suivante est v´erifi´ee :

˜

SW(X) ⊇ {S(S(x)), x ∈ X} = X . Ainsi, la suite d’ensembles ( ˜Si

W({x}))i∈N est croissante au sens de l’inclusion. Comme nous sommes en dimension finie, il existe n´ecessairement un entier kx

tel que AS,W(x) = ˜Skx

W({x}). On obtient alors le r´esultat voulu en choisissant k = maxxkx.

Ce qui nous simplifie grandement la tˆache pour Midori, c’est que les ensembles AS,W(x) sont assez simples `a d´ecrire, puisque la couche de substitution est l’application, en parall`ele, de 16 boˆıtes-S op´erant chacune sur 4 bits. On note Sb cette permutation sur 4 bits. Ainsi, notre espace W correspond alors `a V `a la puissance 16 (au sens du produit cart´esien) : W = V16, o`u V = {0000, 0001}, ce qui nous permet de d´ecrire compl`etement les invariants pour la couche lin´eaire et la couche de substitution de Midori.

Proposition 3.21. SoitS la couche de substitution utilis´ee dans Midori-64 et W = {0000, 0001}16. Soitg ∈ Bn. Alorsg ∈ U(S) et W ⊆ LS(g) si et seulement si le support de g est d´efini par

Supp(g) = [

b0,...,b31∈Supp(h)

Hb0b1× Hb2b3× · · · × Hb30b31

o`uh est une fonction bool´eenne `a 32 variables telle que {00, 10}16⊆LS(h) et les ensembles Hab sont d´efinis par

H00= {8}, H10= {9}, H01= {0, 3, 5, 6, b, c, f} and H11= {1, 2, 4, 7, a, d, e} . Par exemple, l’invariant g1utilis´e dans l’attaque par invariant dans [GJN+16] peut ˆetre d´efini par Supp(g1) = {8, 9}16et correspond alors `a la fonction bool´eenne h d´efinie par h(b0, . . . , b31) = 15 Y i=0 (1 + b2i+1) .

D´emonstration. Comme S consiste en l’application de 16 fois Sb et que W = V16, avec V = {0000, 0001}, il en d´ecoule que, pour tout x0, . . . , x15∈ F4

2, ˜

SW({(x0, . . . , x15)})

= {Sb(Sb(x0) + w0) + w0, . . . , Sb(Sb(x15) + w15) + w15, wi∈ V } = Sb˜V({x0}) × . . . × ˜SbV({x15}) .

Alors, pour tout k ∈ N, ˜

De plus, la boˆıte-S utilis´ee est une involution, donc on d´eduit du lemme pr´ec´edent que

AS,W(x0, . . . , x15) = ASb,V(x0) × . . . × ASb,V(x15) .

Pour le cas de la boˆıte-S de Midori, on remarque rapidement que chaque ensemble ASb,V(x) correspond `a l’un des ensembles suivants :

H00= {8}, H10= {9}, H01= {0, 3, 5, 6, b, c, f} and H11= {1, 2, 4, 7, a, d, e} . Ainsi, pour tout x = (x0, . . . , x15) dans F64

2 , il existe b ∈ F32 2 tel que AS,W(x) = Hb0b1× Hb2b3× · · · × Hb30b31 .

Sans oublier le fait que chaque invariant g pour la couche de substitution avec W ⊆ LS(g) doit ˆetre n´ecessairement constant sur chaque ensemble AS,W(x), c’est-`a-dire que son support doit ˆetre une union de ces ensembles, i.e.

Supp(g) = [

b0...b31∈B

Hb0b1× Hb2b3× . . . × Hb30b31

o`u B est un sous-ensemble de F32

2 qu’il nous reste `a d´eterminer. Les ensembles Hab´etant disjoints, il en est de mˆeme pour le produit cart´esien, ce qui, de mani`ere ´equivalente signifie qu’un invariant g pour la couche de substitution de Midori est une combinaison lin´eaire des 232fonctions bool´eennes gb pour b ∈ F32

2 d´efinies par gb = 15 Y i=0

fb2ib2i+1 o`u Suppfb2ib2i+1 = Hb2ib2i+1 .

Afin de d´eterminer tous les invariants possibles (ou de mani`ere ´equivalente les ensembles B possibles), il faut prendre en compte les seuls qui nous assurent que W ⊆ LS(g).

Soit h une fonction bool´eenne `a 32 variables dont le support est B. On observe que, pour chaque b0b1 ∈ F2

2, on a Hb0b1 + 0001 = Hb0+1,b1. Ainsi, en notant Hb= Hb0b1× · · · × Hb30b31, on obtient que pour tout mot de 32 bits b, l’image de la translation de Hb par w ∈ W est ´egal `a Hb+π(w), o`u π(w) ∈ F32

2 d´efini par π(w)i= 00 si wi= 0000 et π(w)i= 10 si wi= 0001 pour tout 0 ≤ i ≤ 15. Donc, si w ∈ W est une structure lin´eaire invariante pour g, alors b ∈ F32

2 appartient au support de h si et seulement si b + π(w) appartient au support de h aussi. En d’autres termes : π(w) est une structure lin´eaire invariante pour h, et de mani`ere ´equivalente pour les structures lin´eaires-1. Ainsi, π(W ) = {00, 10}16 ⊆LS(h). R´eciproquement, soit g une fonction bool´eenne d´efinie par

Supp(g) = [

b∈Supp(h)

Hb0b1× · · · × Hb30b31

o`u π(W ) ⊆ LS(h). Chaque ensemble Hb2ib2i+1 est invariant par la boˆıte-S, cette propri´et´e ´etant pr´eserv´ee par l’addition implique que g est un invariant pour toute la couche de substitution de Midori. De plus, chaque w ∈ W16 est une structure lin´eaire pour g puisque π(w) est une structure lin´eaire pour h.

Comme d´ej`a dit avant la preuve, l’invariant g1 utilis´e dans l’attaque par invariant dans [GJN+16] est d´efini par Supp(g1) = {8, 9}16, ce qui correspond `a la fonction bool´eenne h d´efinie par

h(b0, . . . , b31) =

15

Y

i=0

(1 + b2i+1) .

Dans ce cas particulier, les ´el´ements dans π(W ) = {00, 10}16 sont des structures lin´eaires invariantes pour h, donc tous les ´el´ements de WL(D) sont eux aussi des structures lin´eaires invariantes pour l’invariant g1. Finalement, en notant les bits de la j-i`eme cellule de Midori-64 par xj,3, xj,2, xj,1 et xj,0 le bit de poids faible, on peut exprimer la forme alg´ebrique normale de l’invariant g1 :

g1(x) =

16

Y

j=1

(xj,1xj,2xj,3+ xj,1xj,3+ xj,2xj,3+ xj,3) .

Pour l’attaque par invariant non-lin´eaire d´ecrite dans [TLS16], Todo et ses coauteurs ont utilis´e l’invariant quadratique suivant :

g2(x) =

16

X

j=1

(xj,3xj,2+ xj,2+ xj,1+ xj,0) .

cet invariant correspond au choix de la fonction bool´eenne `a 32 variables h d´efinie par h(b) =P15

i=0b2i. Ici, seulement les ´el´ements dans WL(D) avec un nombre pair de quartets non-nuls sont des structures lin´eaires invariantes pour g2. La somme des ces deux fonctions bool´eennes (g1+ g2) nous donne alors un nouvel invariant de degr´e 48. Cependant, cet invariant n’admet pas de nouvelles clefs faibles, ce qui n’am´eliore pas l’attaque. En revanche, l’acc`es `a plusieurs invariants peut diminuer la quantit´e de donn´ees n´ecessaires pour mener `a bien une attaque par invariant comme nous le verrons `a la fin de ce chapitre.