• Aucun résultat trouvé

LES CHIFFREMENTS PAR BLOCS 23 Aujourd’hui il existe deux grandes familles de chiffrement it´eratifs par blocs : les r´eseaux

Dans le document The DART-Europe E-theses Portal (Page 40-46)

de substitution-permutation et les r´eseaux de Feistel.

1.4.2 R´eseaux de substitution-permutation

Un algorithme de substitution-permutation ou SPN (Substitution Permutation Network en anglais) est constitu´e d’une succession de tours de la formeL◦S◦C, o`uCest une op´eration de m´elange de cl´e (souvent on ajoute simplement la cl´e avec un OU exclusif), S une fonction non-lin´eaire assurant la confusion et Lune fonction lin´eaire assurant la diffusion (figure1.9).

Ajout de clé

Substitution

Permutation

Figure 1.9 – Fonction de tour d’un r´eseau substitution-permutation

Cette construction ne garantit pas en elle-mˆeme l’inversibilit´e du chiffrement. Pour cette raison il est n´ecessaire que chacune des composantes soit inversible.

Le standard actuel de chiffrement par blocs, AES, suit ce principe de conception. Les r´eseaux SPN sont aussi utilis´es `a grande ´echelle pour la construction des fonctions de hachage.

Pour cet usage, l’´etape de m´elange de cl´e est ´evidemment ignor´ee.

Boˆıtes-S La construction d’une fonction non-lin´eaire ayant de bonnes propri´et´es cryp-tographiques est un probl`eme tr`es important. Cependant, la mise en œuvre d’une telle fonction de grande taille est tr`es coˆuteuse tant en termes de temps qu’en termes de m´emoire. Pour cette raison il est courant de d´ecouper l’´etat interne en petits morceaux et d’appliquer une pe-tite fonction non-lin´eaire, appel´ee boˆıte-S, ou Sbox en anglais, sur chacun d’entre eux. Parmi les primitives sym´etriques connues, certaines utilisent des boˆıtes-S de 8 bits (AES) ou des boˆıtes-S de 4 bits, comme c’est le cas du chiffrement `a bas coˆut PRESENT et des fonctions du concours SHA-3 Hamsi et Luffa. Plus rarement, des boˆıtes-S de taille 3 (chiffrement `a bas coˆut PrintCipher) ou 5 (Keccak) sont utilis´ees. Il est aussi possible dans d’autres con-structions d’utiliser des boˆıtes-S non-inversibles, comme c’est le cas de DES. Les propri´et´es de cette primitive seront discut´ees et analys´ees dans les chapitres suivants.

Description de Rijndael

Rijndael est l’exemple le plus connu des chiffrements par blocs de type SPN. Il a ´et´e con¸cu par Joan Daemen et Vincent Rijmen [DR00b,DR00a] pour la comp´etition internationale AES du NIST qui a d´ebut´e en 1997. En octobre 2002, Rijndael a remport´e le concours et a ´et´e renomm´e en AES (acronyme de Advanced Encryption Standard). Il a ´et´e ensuite normalis´e (NIST FIPS 197 [FIP01]) et est devenu le nouveau standard de chiffrement par blocs en rempla¸cant d´efinitivement son pr´ed´ecesseur DES.

Il existe plusieurs instances de l’algorithme Rijndael, Rijndael-Nb, avec Nb ∈ {128,160, 192,224,256}, qui d´ependent de la taille de l’´etat interne et de la taille de la cl´e. De fa¸con g´en´erale, nous pouvons visualiser l’´etat comme une matrice d’octets 4×Nb/32A= (ai,j). Les

´etats respectifs de Rijndael-128 et Rijndael-256 sont repr´esent´es `a la figure 1.10.

a0,0 a0,0

Figure 1.10 – Les ´etats de Rijndael-256 et Rijndael-128 La taille de la cl´e secr`eteNk peut varier entre 128, 192 et 256 bits.

Le standard AES a ´et´e fix´e `a Rijndael-128. La taille de la cl´e secr`eteNk peut varier entre 128, 192 et 256 bits. Le nombre de tours r varie lui aussi en fonction des tailles de l’´etat et de la cl´e. Nous pouvons observer le nombre de tours pour chaque version dans la table1.3.

r Nb = 128 Nb = 160 Nb= 192 Nb = 224 Nb = 256

Nk= 128 10 11 12 13 14

Nk= 192 12 12 12 13 14

Nk= 256 14 14 14 14 14

Table 1.3 – Nombre de tours r pour Rijndael en fonction de la taille de l’´etat Nb et de la taille de la cl´e Nk.

La permutation de tour R, qui s’applique sur l’´etat A = (ai,j) est compos´ee de quatre fonctions :

– SubBytes: La seule transformation non-lin´eaire du chiffrement. Chaque octet de l’´etat est mis `a jour par une boˆıte-S, de degr´e alg´ebrique 7.

– ShiftRows : Transformation lin´eaire qui applique une rotation `a chaque ligne de l’´etat, avec un d´ecalage diff´erent par ligne.

– MixColumns : Transformation lin´eaire qui s’applique en parall`ele sur les colonnes de l’´etat.

– AddRoundKey: Addition de la sous-cl´e `a l’´etat.

La premi`ere it´eration est pr´ec´ed´ee d’une addition de la sous-cl´e d’indice 0. Ensuite, toutes les it´erations sont identiques, sauf la derni`ere, o`u l’op´erationMixColumn est omise.

1.4. LES CHIFFREMENTS PAR BLOCS 25 La transformation SubBytes La transformation SubBytes est la seule transformation non-lin´eaire de la fonction de tour. Elle consiste `a appliquer en parall`ele une boˆıte-S, not´eeS,

`a chaque octet de l’´etat.S est une permutation sur le corpsF28, dont toutes les coordonn´ees sont de degr´e 7. La permutation inverse est ´egalement de degr´e 7. Cette op´eration peut ˆetre visualis´ee `a la figure 1.11.S est construite `a partir de l’op´eration inverse dans le corps fini `a 256 ´el´ements :

S:F28 ← F28

x 7→ x254

c’est `a dire, x7→x1, o`u 01= 0, suivie ensuite d’une transformation affine sur F82.

S

SubBytes

Figure1.11 – La transformationSubBytespour Rijndael-128

La transformation ShiftRows Cette transformation consiste `a effectuer une rotation vers la gauche sur chaque ligne de l’´etat. Le d´ecalage est diff´erent pour chaque ligne de l’´etat et diff`ere selon l’instance de Rijndael.

Pour Rijndael-128 la ligne i (0 ≤ i ≤ 3) est d´ecal´ee de i octets vers la gauche, comme nous pouvons le voir `a la figure 1.12. Le d´ecalage de chaque ligne pour chaque version de l’algorithme est d´efini `a la table1.4.

Rijndael-128 Rijndael-160 Rijndael-192 Rijndael-224 Rijndael-256

ligne 0 0 0 0 0 0

ligne 1 1 1 1 1 1

ligne 2 2 2 2 2 3

ligne 3 3 3 3 4 4

Table1.4 – Longueur de d´ecalage pour chaque ligne en fonction de la taille de l’´etat interne.

La transformationMixColumns Cette fonction est une transformation lin´eaire, appliqu´ee en parall`ele sur les colonnes de l’´etat. Plus pr´ecis´ement, chaque colonne de l’´etat est multipli´ee par une matriceM de la fa¸con suivante :

ShiftRows

Figure 1.12 – La transformationShiftRows pour Rijndael-128

Figure 1.13 – La transformationMixColumnspour Rijndael-128

La matrice M a ´et´e choisie pour ses bonnes propri´et´es de diffusion. Elle fait partie des matrices appel´eesMDS, de l’acronyme anglais “Maximum Distance Separable”, qui assurent une diffusionparfaite. Pour une fonction de diffusionLagissant sur des octets, nous souhaitons de fa¸con g´en´erale que mˆeme si tr`es peu d’octets sont modifi´es en entr´ee, le nombre d’octets affect´es en sortie soit grand. Autrement dit, siwt(v), avecv un vecteur d’octets, symbolise le nombre d’octets non-nuls, nous voulons que la quantit´e suivante :

min

x∈F82

(wt(x) +wt(L(x))),

appel´ee en anglais “branch number”, soit la plus ´elev´ee possible. Les matrices repr´esentant une fonctionLpour laquelle la borne sup´erieure est atteinte sont appel´eesmatrices MDS. En effet, le branch number de L correspond `a la distance minimale du code correcteur lin´eaire compos´e des mots (x||L(x)). Si L est une fonction de Fnq vers Fnq, cette distance atteint son maximum, n+ 1, pour les codes dits MDS. Pour une fonction s’appliquant sur une colonne

1.4. LES CHIFFREMENTS PAR BLOCS 27 de 4 octets `a la fois, comme c’est le cas deMixColumns, ce nombre peut ˆetre au plus 5, car si un seul octet en entr´ee est modifi´e, il peut influencer au plus les 4 octets de sa colonne. La matriceM de MixColumnsest choisie de fa¸con que cette borne maximale soit atteinte.

La transformation AddRoundKey Il s’agit de l’addition de la sous-cl´e de tour, bit `a bit.

1.4.3 R´eseaux de Feistel

Un r´eseau de Feistel (figure1.14), qui port le nom du cryptologue d’IBM Hors Feistel, est une structure d´evelopp´ee dans les ann´ees 1970. Dans la version ´equilibr´ee de cette construc-tion, les donn´ees d’entr´ee sont divis´ees en deux parties de taille identique. Les deux parties sont ensuite trait´ees de fa¸con diff´erente :

FK :Fn2 ×Fn2 → Fn2 ×Fn2

(L, R) 7→ (R, L⊕f(K, R))

La fonction internef, de Fn2 dans Fn2 est une fonction compos´ee de fa¸con g´en´erale d’une fonction lin´eaire et d’une fonction de substitution. La structure g´en´erale d’un r´eseau de Feistel garantit l’inversibilit´e du chiffrement quelle que soit la fonction f employ´ee, puisque π◦FK

est une involution, o`u π d´esigne la permutation des deux entr´ees, π(L, R) = (R, L). Un des avantages principaux de ce syst`eme est que la fonction de d´echiffrement est identique `a celle de chiffrement ; il suffit juste d’inverser l’ordre des sous-cl´es.

f k(i)

Li1 Ri1

Li Ri

Figure 1.14 – Un tour d’un chiffrement d’un r´eseau de type Feistel

La fonction de chiffrement DES, standardis´ee en 1977, utilise cette m´ethode de construc-tion. Aujourd’hui, il existe des g´en´eralisations de cette construction, notamment des versions non-´equilibr´ees o`u les donn´ees sont d´ecoup´ees en deux parties de tailles diff´erentes [SK96] ou encore des versions o`u les donn´ees sont d´ecoup´ees en plus de deux parties [ZMI90].

Chapitre 2

Propri´ et´ es alg´ ebriques des

Dans le document The DART-Europe E-theses Portal (Page 40-46)