Académique Documents
Professionnel Documents
Culture Documents
– Sécurité :
– Effacement des formats standards (ex. l’introduction d’un texte).
– Protection contre la modification de C.
– Chiffrement de plusieurs messages avec la même clé.
– Efficacité :
– L’utilisation d’un mode cryptographique ne doit pas pénaliser l’efficacité du cryptosystème.
– Limitation de la propagation des erreurs qui apparaissent dans M ou C.
5.6.1.1 Sécurité :
+/- indépendance des blocs
- conservation des formats m = m′ ⇒ c = c′
- clé non-réutilisable
5.6.1.2 Efficacité :
+ parallélisme possible
+ accès aléatoire possible
+ bonne vitesse de chiffrement
- pas de préprocessing
5.6.2.1 Sécurité :
+ IV unique et aléatoire
+ effacement des formats grâce à l’enchaînement (si IV différents)
+ il n’y a plus de risque de répétition de bloc
+ clé réutilisable (si IV différents)
+ si mi = m′i , alors ci 6= c′i (avec même K et IV différents)
5.6.2.2 Efficacité :
+ même vitesse de chiffrement que ECB
- pas de préprocessing
- pas de parallélisme
- IV connu des 2 cotés (problème pour sa communication)
Soit C1 perdu :
M1 = DK (C2 ) ⊕ IV
M2 = DK (C3 ) ⊕ C2
+ une erreur dans mi affecte tous les ci suivants mais ne se retrouve que dans le mi correspondant
- une erreur dans ci affecte un bloc entier de mi et le bit correspondant dans mi+1
- la perte ou l’ajout d’un bit de ci affecte tous les blocs mi , mi+1 , ... suivants (perte des limites de bloc)
5.6.3.1 Sécurité :
+ même fonction pour le chiffrement et le déchiffrement
+ pas de répétition de bloc si IV différents
+ effacement du format standard
5.6.3.2 Efficacité :
+ même vitesse de chiffrement que ECB
+ CFB peut débuter le chiffrement après réception de sous-blocs ⇒ utilisation réseaux
- pas de préprocessing
- pas de parallélisme
5.6.4.1 Sécurité :
+ IV unique et aléatoire
+ effacement du format de M
+ clé réutilisable
+ pas de répétition de blocs
- le chiffrement ne consiste qu’en un XOR
5.6.4.2 Efficacité :
+ même vitesse de chiffrement
+ préprocessing
- pas de parallélisme
5.6.5.1 Sécurité :
+ Sécurité démontrable
+/- non-réutilisation du compteur
5.6.5.2 Efficacité :
+ Parallélisme (architecture multi-coeur)
+ Accès aléatoire possible
+ Préprocessing possible
+ Simplicité du mode
Chiffrement de flux
– Le chiffrement par blocs : l’opération de chiffrement s’effectue sur des blocs de texte clair (ex : le
DES avec des blocs de 64 bits).
– Le chiffrement par flots (ou par stream ou de flux) : l’opération de chiffrement s’opère sur chaque
élément du texte clair (caractère, bits). On chiffre un bit/caractère à la fois. La structure d’un chif-
frement par stream repose sur un générateur de clés qui produit une séquence de clés k1 , k2 , ..., ki .
En termes de propagation d’erreur, une erreur dans Ci n’affecte qu’1 bit de Mi . La perte ou l’ajout
d’un bit de Ci affecte tous les bits suivants de M après déchiffrement.
Le générateur de clés peut être considéré comme une machine à états finis. Un exemple de ce type de
générateur est le FSR (Feedback Shift Register), illustré à la figure 6.2.
La clé notée sur les schémas 6.1 et 6.2 contient les valeurs d’initialisation et les coefficients (voir
ci-dessous) du FSR.
69
6. CHIFFREMENT DE FLUX
La fonction de retour qui donne la valeur au flip-flop en position m-1 est la suivante :
Les bits de sortie du LFSR constitue la suite pseudo-aléatoire. La qualité du générateur est définie
par sa période de retour, c’est-à-dire la période après laquelle la même série d’output est répétée.
L’initialisation du LFSR (le contenu des flip-flops) et les valeurs des coefficients constituent ce qu’on
nomme communément la clé courte.
Les coefficients ci ont pour valeur 0 ou 1 et définissent les sections qui seront prises en compte par la
fonction. Les valeurs de ces coefficients ainsi que la valeur initiale des éléments du registre sont fixées à
l’avance. Ces valeurs sont représentées par la clé K des schémas 6.1 et 6.2.
Les valeurs des coefficients doivent restés secrètes, tout comme l’initialisation des registres. Dans le
cas contraire, on pourrait observer M bits consécutifs et calculer les suivants. En effet, si ces ci sont
connus, il n’y a que 2M suites différentes associées aux 2M possibilités d’initialisation pour le registre.
Le générateur rétrécissant
Soient deux LFSR dont un est "arbitre" de l’autre. Ainsi, sur la figure 6.6, le LFSR S est responsable
de la sortie du système.
– Si S vaut 1, la valeur de sortie du système est donnée par la valeur du LFSR A.
– Si S vaut 0, la valeur du bit de A est supprimé, et aucune sortie n’est validée.
Ce type de système possède le désavantage d’avoir une flux de sortie assez irrégulier puisque tout
dépend de l’arbitrage de S. Lorsque S supprime la sortie, il faut attendre le coup d’horloge suivant pour
espérer trouver une valeur en sortie.
Une attaque très commune porte le nom d’attaque par corrélation. Le principe est de trouver un LFSR
dont la sortie est corrélée avec la sortie des LFSR utilisés.
f (x1 , x2 , x3 ) = x1 x2 ⊕ (1 + x2 )x3 = x1 x2 ⊕ x2 x3 ⊕ x3
Ce générateur n’est pas sûr car des informations au sujet des LFSR 1 et 3 peuvent être découvertes
à partir d’une étude probabiliste sur le flot de sortie.
Ainsi, notons x1 (t), x2 (t), x3 (t) et z(t) comme étant les sorties respectives du LFSR 1, 2, 3, et du
système. On remarque rapidement que selon la valeur de x2 (t), on peut déduire les valeurs de x1 (t) ou
de x3 (t) avec une probabilité de 3/4.
En effet, il vient
P (z(t) = x1 (t)) = P (x2 (t) = 1) + P (x2 (t) = 0).P (x3 (t) = x1 (t))
= 1/2 + 1/2 ∗ 1/2
= 3/4
et réciproquement
P (z(t) = x3 (t)) = P (x2 (t) = 0) + P (x2 (t) = 1).P (x3 (t) = x1 (t))
= 1/2 + 1/2 ∗ 1/2
= 3/4
L’attaque consiste alors à analyser les valeurs de la clé du LFSR 1 (ou du LFSR 3), et de vérifier que
sa sortie correspond à celle de la sortie du système dans 75% des cas. Si on crée la table d’états pour les
valeurs de bit x1 , x2 et x3 , on voit que c’est bien le cas.
6.3 RC4
Il s’agit d’un chiffrement par flux créé en 1987 par Ron Rivest1 . Diverses analyses ont démontré que
la période du générateur est supérieure à 10100 .
Il s’agit probablement du chiffrement par flots le plus utilisé actuellement. On le retrouve notamment
dans le standard SSL/TLS, dans Oracle Secure SQL, ou encore dans le protocole WEP (Wired Equiva-
lent Privacy, de la norme 802.11). Ce dernier fut remplacé par le WPA (Wi-Fi Protected Access), mais
celui-ci utilise toujours le RC4.
Initialement gardé secret par la RSA, cet algorithme a été publié anonymement en 1994 sur Internet.
Il existe une version allégée du chiffrement RC4, portant le nom de ARC4 (Alleged RC4), utilisable lé-
galement. Le RC4 reste la propriété de RSA Labs.
Un chiffrement par RC4 est très rapide, comme le montre le tableau 6.1
6.3.1.1 Initialisation
Initialement, les cellules de S reçoivent une valeur égale à leur position (i.e., S[0]=0, S[1]=1, ...) Un
vecteur temporaire de longueur T (de longueur égale à S) est également créé destiné à recevoir la clé. Si
la longueur de la clé K est égale à 256 octets, K est simplement transféré dans T. Si K est inférieur à
256 octets, il est recopié dans T jusqu’à atteindre la taille de T. Ce procédé est illustré au point (a). On
peut également le représenter algorithmiquement comme suit :
FOR i = 0 TO 255 DO
S[i] = i;
T[i] = K[i mod keylen];
Le vecteur temporaire T est ensuite utilisé pour produire la permutation initiale de S. Pour chaque
cellule S[i] de S, celle-ci sera échangée avec une autre cellule de S selon un calcul basé sur la valeur
comprise dans la cellule T[i] correspondante. Le point (b) illustre cette phase. Tout comme l’initialisation
des vecteurs, on peut représenter la permutation initiale de S par un algorithme :
j = 0;
FOR i = 0 TO 255 DO
j = (j + S[i] + T[i]) mod 256;
SWAP(S[i], S[j]);
Ces deux portions de code portent le nom de KSA (Key Schedule Algorithm).
i, j = 0;
WHILE (true)
i = (i + 1) mod 256;
j = (j + S[i]) mod 256;
SWAP (S[i], S[j]);
t = (S[i] + S[j]) mod 256;
k = S[t];
La valeur de k est alors utilisée pour le chiffrement (⊕ avec le prochain octet de texte clair), ou pour
le déchiffrement (⊕ avec le prochain octet de texte chiffré).
Il semblerait que le RC4 soit toujours sûre pour autant que certaines conditions soient remplies au
niveau de la clé d’initialisation :
On utilisera par exemple la construction HMAC pour réaliser une telle procédure.