Licence Info
Cryptologie
Feuille d'exercices n ◦ 4.
Chirements symétriques (suite)
1 Modes de chirement
Soit eK :Fn2 →Fn2 une fonction de chirement symétrique. SoitdK sa fonction de déchire- ment
(a) Mode ECB (electronic code book) : on découpe le message en blocs de taille n P =P1P2. . . Pk
puis on chire Ci =eK(Pi) et le chiré de P est C =C1C2. . . Ck
Dans ce mode de chirement, un même bloc est toujours chiré de la même façon. Pour- quoi est-ce un problème ? Explicitez le mode de déchirement.
(b) Mode CBC (cipher block chaining mod) : On choisit un vecteur d'initialisation C0 =IV. Puis on chire C1 = eK(C0+P1),. . ., Ci = eK(Ci−1 +Pi), . . ., Ck = eK(Ck−1+Pk). Le chiré de P est
C =C0C1C2. . . Ck.
Pourquoi ce mode de chirement n'a pas le défaut du précédent ? Explicitez le mode de dé- chirement. Montrez qu'il a l'inconvénient de propager une erreur éventuelle apparaissant dans un bloc de clair (eet d'avalanche).
(c) Modes CFB (cipher feedback mode) et OFB (output feedback mode) : ils ont en commun de construire un masqueZ0Z1Z2. . . Zk et de chirer par Ci =Pi+Zi. Le chiré de P est
C =C0C1C2. . . Ck.
Le déchirement est donc réalisé par la même procédure que le chirement. Ils se para- métrisent par un entier 1≤s≤n.
(c1) CFB avec s=n : C0 =IV, Z0 = 0,Zi =eK(Ci−1) pouri≥1. (c2) OFB avec s=n : C0 = 0, Z0 =IV,Zi =eK(Zi−1)pour i≥1.
(c3) CFB avecs < n :C0 =IV de taillen,P est découpé en blocsPi de tailles,Z0 = 0, Z1 =MSBs(eK(C0)), et pour i≥2,
Zi =MSBs(eK(LSBn−s(Ci−2)||Ci−1)
(c4) OFB avec s < n : C0 = 0, Y0 =IV de taille n, Y1 =eK(Y0)), et pour i≥2, Yi =eK(LSBn−s(Yi−2)||MSBs(Yi−1)),
Zi =MSBs(Yi)
(d) Mode CTR (counter mode) : encore un masque. On initialise un compteur c puis on calculeZi =eK(c)et on incrémentec=c+ 1, oùc+ 1est l'addition d'entiers modulo2n. Le chiré est C0 =c, Ci =Pi+Zi et toujours
C =C0C1C2. . . Ck.
2 AES Chirement
Le principe d'AES a été vu en cours et une feuille complémentaire a été donnée qui résume les diérentes étapes du chirement.
(a) Appliquer SubBytes à l'octet (01010011). (b) Appliquer MixColumns au tableau
(11000001) (00000111) (00000000) (11111111) (11000000) (00001000) (00011110) (11111100) (11000011) (00000100) (00000001) (11100000) (10001001) (00000110) (11000000) (00010111)
.
On se contentera de calculer quelques nouveaux octets.
3 AES Déchirement
On s'intéresse ici au déchirement d'AES.
(a) Dénir la procédure inverse de chacune des procédures SubBytes, ShiftRows, MixColumns et AddRoundKey.
(b) Montrer que l'on peut permuter InvshiftRows et InvSubBytes.
(c) Indiquer comment modier la clé de tour correspondante pour pouvoir permuter les pro- cédures AddRoundKey et InvMixColumns.
(d) Donner un découpage en tours pour le déchirement qui applique à chaque tour les pro- cédures inverses des procédures de chirement dans le même ordre que les procédures initiales, en indiquant comment modier l'expansion de clé (concaténation des clés de tour).
4 Chirement de PohligHellman, Log discret
SoitP l'ensemble des symboles (lettres, blocs) à chirer que l'on a par commodité identiés à des entiers inférieurs ou égaux à un entier donnén. On identie doncP avec un sous-ensemble de {0,1, . . . , n}. Par exemple si les symboles sont les blocs de deux lettres AB, ZC, ... codés 0001, 2502, ... on peut prendre n= 2525.
Soit pun premier impair > n et soite une clé secrète où e est un entier vériant 2≤e≤p−1 et pgcd(p−1, e) = 1.
Soit m∈ P. La clé de chirement est dénie par
m 7−→me modp∈Z/pZ.
(a) Rappeler pourquoi e est inversible modulo p−1. On note d un entier qui représente e−1 modulo p−1. Monter que la clé de déchirement est dénie par
c7−→cdmodp.
(b) Soit p= 11. On a chiré 2 en 7. Quelles sont les clés de chirement et de déchirement ?
(c) Soit p= 31. On sait que l'on a chiré 2 en 4. Peut-on trouver la clé de chirement ? Soit p un nombre premier, soit α un générateur de (Z/pZ)∗ et soit β ∈ (Z/pZ)∗. Le problème qui consiste à résoudre l'équation
αa =β modp d'inconnue a est appelé problème du logarithme discret.
(d) Montrer que ce problème a une solution dénie de façon unique modulo p−1. On note alors
a= logαβ (modp).
En général, le problème du logarithme discret est dicile à résoudre, mais il existe des algorithmes qui peuvent s'avérer performants quand p−1 est friable, en particulier l'al- gorithme de Pohlig-Hellman qui fait l'objet de la question suivante.
(e) On suppose que l'on connaît la décomposition de p−1 en produit de facteurs premiers :
p−1 =
r
Y
i=1
pcii.
La première idée consiste à calculera modpcii pour chaque ipuis à se servir du théorème chinois pour déterminer a.
(1) Pour simplier on pose pi = q, ci = c et l'on cherche donc x = amodqc (avec 0≤x≤qc−1). On décompose x sous la forme
x=
c−1
X
i=0
aiqi (0≤ai ≤q−1)
et on se propose de calculer les ai. Montrer qu'il existe un entiers tel que
a=
c−1
X
i=0
aiqi+sqc.
(2) Montrer que β(p−1)/q =αa0(p−1)/q modp. (3) En déduire une procédure de calcul de a0.
(4) Si c= 1 c'est terminé. On suppose donc maintenant que c >1 et que l'on a calculé a0, a1, . . . , aj−1 où1≤j ≤c−1. On désire calculer aj. On pose
βj =βα−(a0+a1q+···+aj−1qj−1)modp.
Montrer queβj(p−1)/qj+1 =αaj(p−1)/q modpet en déduire une procédure pour calculer aj.
(5) En déduire un algorithme de calcul de x qui s'appuie sur les calculs successifs de a0, β1, a1, . . . , βc−1, ac−1.
(f) Se servir de cet algorithme pour trouver les clés de chirement et de déchirement sachant que p= 37 et que 2 se code 19.
(g) Même question avec p= 3001, sachant que 14 se code 1873.