Tutoriel de cryptographie Tutoriel de cryptographie

Simon Guillem-Lessard
Projet de fin d'étude 2001-2002
Département des mathématiques et de l'informatique
Université du Québec à Trois-Rivières


Table Des Matières
 Chiffrements par blocs
 Modes d'opération

Introduction

Il y a différentes méthodes d'utiliser les chiffrements par blocs, elles sont appelées « modes d'opération » (Anglais : modes of operation). Quatre modes sont définis dans FIPS 81 (2 décembre 1980) et aussi dans ANSI X3.106-1983.

Les quatre standards sont :
Electronic Code Book (ECB),
Cipher Block Chaining (CBC),
Cipher FeedBack (CFB) et
Output FeedBack (OFB).
Le chiffrement par blocs DES par exemple s'utilise avec ces modes d'opération. À noter qu'il y a d'autres modes d'opération existants.

ECB : Electronic Codebook

C'est la façon la plus évidente des modes d'opération, il applique simplement l'algorithme au texte clair en transformant normalement chaque bloc de texte clair.

Représentation :

T[n] = nième bloc de texte clair.
C[n] = nième bloc de texte chiffré.
E(m) = fonction de chiffrement du bloc m.
D(m) = fonction de déchiffrement du bloc m.

Chiffrement : C[n] = E(T[n])
Déchiffrement : T[n] = D(C[n])

Note : Ici T et C sont d'une longueur fixe.

Il y a deux problèmes relatifs à ce mode.
Le premier est que si on utilise deux fois le même texte clair et la même clé de chiffrement, le résultat du chiffrement sera identique.
Le deuxième est qu'il faut un nombre d'octets de texte clair disponible (relatif à l'algorithme, huit octets pour le DES par exemple) avant de commencer le chiffrement.

CBC : Cipher Block Chaining

C'est un des modes les plus populaires. Il est une solution au premier problème du mode ECB. Avant d'être chiffré, l'opération binaire XOR est appliquée entre le bloc actuel de texte clair et le bloc précédent de texte chiffré. Pour le tout premier bloc, un bloc ayant un contenu aléatoire est généré et utilisé pour l'application de l'opération XOR, appelé « vecteur d'initialisation » (initialization vector). Ce premier bloc est envoyé tel quel avec le message chiffré.

Représentation

T[n] = nième bloc de texte clair.
C[n] = nième bloc de texte chiffré.
E(m) = fonction de chiffrement du bloc m.
D(m) = fonction de déchiffrement du bloc m.
VI = vecteur d'initialisation
^ = OU-Exclusif

Chiffrement : C[0] = E(T[0] ^ VI)
C[n] = E(T[n] ^ C[n-1]) , si (n > 0)
Déchiffrement : T[0] = D(C[n]) ^ VI
T[n] = D[C[n]) ^ C[n-1] , si (n > 0)

Note : Ici T et C sont d'une longueur fixe.

CFB : Cipher Feedback

Le mode qui semble éviter tous les problèmes vus récemment est le CFB. L'opération XOR est appliquée entre le bloc de texte clair et le résultat précédent chiffré à nouveau par la fonction de chiffrement.
Pour le premier bloc de texte clair, on génère un vecteur d'initialisation.

Représentation

T[n] = nième bloc de texte clair.
C[n] = nième bloc de texte chiffré.
I[n] = nième bloc temporaire
E(m) = fonction de chiffrement et de déchiffrement du bloc m
VI = vecteur d'initialisation
^ = OU-Exclusif

Chiffrement : I[0] = VI
I[n] = C[n-1] , si (n > 0)
C[n] = T[n] ^ E(I[n])
Déchiffrement : I[0] = VI
I[n] = C[n-1], si (n > 0)
T[n] = C[n] ^ E(I[n])

Note : Ici T et C sont d'une longueur fixe. La fonction de chiffrement et de déchiffrement est la même.

Le mode CFB offre une grande sécurité.

OFB : Output Feedback

Le mode OFB est une solution aux deux problèmes relatifs au mode ECB. Au départ un vecteur d'initialisation est généré. Ce bloc est chiffré à plusieurs reprises et chacun des résultats est utilisé successivement dans l'application de l'opération XOR avec un bloc de texte clair. Le vecteur d'initialisation est envoyé tel quel avec le message chiffré.

Représentation

T[n] = nième bloc de texte clair.
C[n] = nième bloc de texte chiffré.
I[n] = nième bloc temporaire
R[n] = nième bloc temporaire second
E(m) = fonction de chiffrement et de déchiffrement du bloc m
VI = vecteur d'initialisation
^ = OU-Exclusif

Chiffrement : I[0] = VI
I[n] = R[n-1] , si (n > 0)
R[n] = E(I[n])
C[n] = T[n] ^ R[n]
Déchiffrement : I[0] = VI
I[n] = R[n-1] , si (n > 0)
R[n] = E(I[n])
T[n] = C[n] ^ R[n]

Note : Ici T et C sont d'une longueur fixe.

Ce mode a lui-même deux autres problèmes. Le texte clair est seulement soumis à un XOR. Si le texte clair est connu, un tout autre texte clair peut être substitué en inversant les bits du texte chiffré de la même manière qu'inverser les bits du texte clair (bit-flipping attack). De plus il y a une mince possibilité qu'une clé et un vecteur d'initialisation soient choisis tels que les blocs successifs générés puissent se répéter sur une courte boucle.

Le mode OFB est souvent utilisé comme générateur de nombre aléatoire.

Conlusion

On remarque que les modes CFB et OFB (feedback) utilisent la fonction de chiffrement E( ) pour l'algorithme de chiffrement et l'algorithme de déchiffrement. Un algorithme de chiffrement par blocs ne disposant pas de fonction de déchiffrement peut être utilisé pour la confidentialité de données et est même un avantage d'implantation.



Pour en savoir plus
· Modes of operation
http://csrc.nist.gov/encryption/modes/proposedmodes/index.html


.Sources.
.Haut de page.


Algorithmes Importants

  Systèmes à clé privée

     Blowfish

     DES

     IDEA

     RC2, RC5, RC6

     RC4

     Rijndael

     SEAL

     TripleDES

  Systèmes à clé publique

     Diffie-Hellman

     DSA

     PGP

     RSA

  Fonctions de hachage

     MD2, MD4, MD5

     RIPEMD-128, RIPEMD-160

     SHA0, SHA1

     Tiger

  Protocoles Web

     SSL

     SHTTP