Standard de Chiffrement de Données : DES

DES : Data Encryption Standard

- 1973 : appel d’offre du National Bureau of Standards ;

- 1975 : publication du DES (modification de LUCIFER d’IBM) ;

- 1977 : adoption comme standard.

- révisé tous les 5 ans.

- fin probable : 1998

Algorithme du DES L’algorithme du DES prend en entrée un texte clair de 64 bits, une clé de 64 bits (dont les bits terminaux de chaques octets sont des bits de parité pour le contrôle des erreurs) et calcule un texte crypté sur 64 bits.

Algorithme général du DES

DES(x : texte 64bits, K : clé 64bits) : 64bits L_{0}R_{0} = IP (x), (|L_{0}|=|R_{0}|= 32) Pour i = 1 à 16 L_{i} = R_{i−1} R_{i} = L_{i−1} ⊕ f(R_{i−1}, T_{i}(K)) finPour résultat IP^{−1}(R_{16} L_{16} )

f(r : 32bits, k : 48bits) : 32bits B = Exp(r) ⊕ k = B_{1} … B_{8}, (|B_{i}|= 6) Pour i = 1 à 8 B_{i} = b_{1} … b_{6} C_{i} = S_{i}(b_{1}b_{6}, b_{2}b_{3}b_{4}b_{5}) finPour résultat P (C_{1} … C_{8})

Diversification de la clé

Principe : la clé subit une permutation, une série de rotations circulaires “par partie” puis une permutation inverse.

Algo. de diversification de la clé Les fonctions LS_{j}, 1 ≤ j ≤ 16 sont des rotations circulaires vers la gauche d’un bit pour les indices 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14 et 15, et de deux bits pour les indices 1, 2, 9 et 16.

T_{i}(k : 64bits) : 48bits k′ = ote bits de parite(k) C_{0}D_{0} = P C−1(k′), (|C_{0}|=|D_{0}|= 28) Pour j = 1 à i C_{j} = LS_{j}(C_{j−1}) D_{j} = LS_{j}(D_{j−1}) finPour résultat P C−2(C_{i}, D_{i})

rem.: Les fonctions de permutation T_{i}(K), 1 ≤ i ≤ 16 sont calculables à l’avance.

Modes d’utilisation du DES

ECB (electronic codebook mode) : mode courant ;

IV : une valeur initiale arbitraire.

CBC (cipher block chaining mode) :

CBC(x_{1}, x_{2}, …: 64bits) bloc initial y_{0} = IV Tantqu’il y a des blocs de texte clair x_{i} y_{i} = DES(y_{i−1} ⊕ x_{i}) finTantque

CBC^{−1}(y_{1}, y_{2}, …: 64bits) bloc initial y_{0} = IV Tantqu’il y a des blocs de texte chiffré y_{i} x_{i} = y_{i−1} ⊕ DES^{−1}(y_{i}) finTantque

Modes d’utilisation du DES (suite)

OFB (output feedback mode) : Chiffrement en chaîne synchrone

OF B = (x_{1}, x_{2}, …: 64bits) bloc initial z_{0} = IV Tantqu’il y a des blocs de texte clair x_{i} z_{i} = DES(z_{i−1}) y_{i} = z_{i} ⊕ x_{i} finTantque

OF B^{−1}(y_{1}, y_{2}, …: 64bits) bloc initial z_{0} = IV Tantqu’il y a des blocs de texte chiffré y_{i} z_{i} = DES(z_{i−1}) x_{i} = z_{i} ⊕ y_{i} finTantque

Modes d’utilisation du DES (suite)

CFB (cipher feedback mode) :

CF B = (x_{1}, x_{2}, …: 64bits) initial bloc y_{0} = IV Tantqu’il y a des blocs de texte clair x_{i} z_{i} = DES(y_{i−1}) y_{i} = z_{i} ⊕ x_{i} finTantque

CF B^{−1}(y_{1}, y_{2}, …: 64bits) bloc initial y_{0} = IV Tantqu’il y a des blocs de texte chiffré y_{i} z_{i} = DES(y_{i−1}) x_{i} = z_{i} ⊕ y_{i} finTantque