Ecole normale sup´ ´ erieure 2018-2019 D´ epartement d’informatique
Introduction ` a la cryptologie TD n ◦ 5 : Cryptanalyse sym´ etrique
Le syst` eme FEAL (pour Fast Data Encipherment Algorithm) est un algorithme de chiffrement par bloc qui utilise des cl´ es de 64 bits pour chiffrer des blocs de 64 bits. Il a ´ et´ e propos´ e par A. Shimizu et S. Miyaguchi en 1987 comme une alternative au syst` eme DES. Nous allons ´ etudier une attaque par cryptanalyse diff´ erentielle contre sa version originale (appel´ ee FEAL − 4) qui est un sch´ ema de Feistel ` a 4 tours avec pr´ e-blanchiment et post-blanchiment. Le syst` eme FEAL − 4 est d´ ecrit dans la figure 1.
F
K1F
K2F
K3F
K4K
L0K
0RK
L5K
5RS 0
S 1
S 0
S 1
K
1iK
0iFigure 1 – Description du syst` eme de chiffrement par bloc FEAL − 4
Apr` es une proc´ edure de diversification de cl´ e, la cl´ e K produit deux sous-cl´ es de 64 bits K 0 et K 5 et quatre sous-cl´ es de 16 bits K 1 , K 2 , K 3 et K 4 . La cl´ e K 0 est utilis´ ee pour le pr´ e-blanchiment (i.e. elle est ajout´ ee au texte clair avant d’appliquer le sch´ ema de Feistel) et la cl´ e K 5 est utilis´ ee pour le post-blanchiment (i.e. elle est ajout´ ee ` a la sortie du sch´ ema de Feistel pour produire le chiffr´ e).
La fonction de tour F utilise deux S-boˆıtes S 0 et S 1 d´ efinies par
S i (x, y) = (x + y + i mod 256) ≪ 2 pour i ∈ {0, 1}
o` u ≪ d´ enote une rotation circulaire sur 8 bits.
En utilisant une cl´ e de tour de 16 bits K i d´ ecompos´ ee en deux octets K i = (K i (0) , K i (1) ) pour i ∈ {1, 2, 3, 4}, la fonction F prenant en entr´ ee 32 bits d´ ecompos´ es en quatre octets X i = (x i 0 , x i 1 , x i 2 , x i 3 ) calcule
u i = S 1 (x i 0 ⊕ x i 1 ⊕ K i (0) , x i 2 ⊕ x i 3 ⊕ K i (1) ) et v i = S 0 (x i 2 ⊕ x i 3 ⊕ K i (1) , u i ) puis retourne
F K
i(X ) = (S 0 (x i 0 , u i ), u i , v i , S 1 (x i 3 , v i )).
Exercice 1 (Cryptanalyse diff´ erentielle de FEAL − 4).
1. Montrer que pour tout couple d’octets (x, y) ∈ {0, . . . , 255} 2 , nous avons S 0 (x ⊕ 80, y) = S 0 (x, y) ⊕ 02 o` u les constantes 80, 02 sont en notation hexad´ ecimale.
2. Soient X 0 ∈ {0, 1} 64 et Y 0 = X 0 ⊕ (80 80 00 00, 00 00 00 00). En notant X 2 et Y 2 leurs images apr` es application de deux tours du chiffrement FEAL avec une cl´ e arbitraire, montrer que
X 2 ⊕ Y 2 = (80 80 00 00, 02 00 00 00).
1
3. En d´ eduire une relation liant les chiffr´ es de deux messages dont la diff´ erence est ´ egale ` a (80 80 00 00, 00 00 00 00)
qui ne d´ epend que de la valeur K 5 R ⊕ (0, K 4 0 , K 4 1 , 0).
4. Proposer une attaque contre le chiffrement FEAL − 4 utilisant seulement deux clairs choisis permettant de retrouver la valeur K 5 R ⊕ (0, K 4 0 , K 4 1 , 0) en 2 33 ´ evaluations de la fonction F .
5. En supposant connu K 5 R ⊕ (0, K 4 0 , K 4 1 , 0) et en utilisant une propri´ et´ e diff´ erentielle sur un tour, propo- ser une attaque ` a deux clairs choisis permettant de retrouver la valeur de K 5 L ⊕ (0, K 3 0 , K 3 1 , 0) en 2 33
´ evaluations de la fonction F.
6. Proposer une attaque ` a huit clairs choisis permettant de trouver une cl´ e ´ equivalente de FEAL − 4 en 2 35
´ evaluations de la fonction F.
Exercice 2 (Chiffrement DES avec blanchiment). Nous consid´ erons une variante de DES (dite avec blanchiment ) qui utilise une cl´ e de 120 bits de la forme K = (K 1 , K 2 ) ∈ {0, 1} 56 × {0, 1} 64 et qui chiffre un bloc m de 64 bits sous la forme
c = DES K
1(m) ⊕ K 2 .
Montrer qu’il existe une attaque ` a deux clairs connus contre cette variante de DES qui demande 2 57 ´ evaluations de la fonction DES (i.e. que cette variante ne ralentit la recherche exhaustive que d’un facteur 2).
Exercice 3 (Multi-collisions pour les fonctions de hachage it´ er´ ees). Supposons que la fonction de hachage H : {0, 1} ∗ → {0, 1} n est construite ` a partir d’une fonction de compression f : {0, 1} n × {0, 1} ` → {0, 1} n par la m´ ethode de Merkle-Damg˚ ard (avec ` ≥ n/2). La construction de Merkle-Damg˚ ard est donn´ ee ci-dessous pour un message de longueur 4`. La valeur IV (initial vector) est fixe.
M = m 1 m 2 m 3 m 4
f
`
/h 0 = IV
n
/h 0 f
n
/h 1 h 2 f h 3 f h
4 = H(M )
On suppose pour simplifier qu’il n’y a pas de bourrage (padding), et que la fonction est utilis´ ee uniquement pour des messages de longueur ´ egale ` a un multiple de `.
1. Soit M un message quelconque. ´ Evaluer (grossi` erement) le nombre d’op´ erations n´ ecessaires pour trouver de mani` ere g´ en´ erique deux blocs de message distincts m 6= m 0 tels que H(M k m) = H(M k m 0 ). Comme