Vous êtes sur la page 1sur 8

Algorithmes de chiffrement

Introduction
Lorsque deux personnes veulent échanger des messages confidentiels au
travers de canaux peu sûrs (Internet par exemple), elles ont recours à des
techniques cryptographiques qui vont leur permettre de chiffrer un message
avant son envoi et de le déchiffrer après sa réception. On distingue deux
techniques:

 à clé symétrique, où la même clé (qui doit impérativement rester


secrète) est utilisée lors du chiffrement et du déchiffrement.
Exemples: DES (Data Encryption Standard), 3DES (Triple DES),
IDEA, RC2, RC4.
 à clé asymétrique, où chaque utilisateur possède une clé publique et
une clé privée, également connue sous le nom de cryptographie à clé
publique.
Exemple: RSA inventé par Rivest, Shamir et Adleman.

Les applications réelles nécessitent toutefois des outils complémentaires


comme la méthode de Diffie-Hellman pour l'établissement de la clé de session
et les fonctions de hachage ("Message Digests") pour la génération de chaînes
de contrôle ("Message Authentication Code").

Cryptographie à clé symétrique

Figure 1 La même clé est utilisée pour le chiffrement et le déchiffrement.

Les algorithmes à clé symétrique sont utilisés depuis plusieurs millénaires;


Jules César utilisait un système basé sur la technique du décalage. Le secret
qu'il partageait avec ses généraux était la taille du décalage, 3 dans son cas,
ainsi, la lettre "A" était codée par "D", la lettre "B" par "E" etc. Cette méthode
n'admet que 26 clés différentes (décalages) et autorise donc une recherche
exhaustive à partir du message codé. La taille de l'ensemble des clés possibles
est donc un facteur déterminant quant à la sécurité d'une méthode de
chiffrement. Remarquons que la seule méthode de chiffrement absolument sûre
implique l'utilisation unique d'une clé dont la longueur est égale à celle du
message à chiffrer, connue sous le nom de "One-Time Pad".
Le problème principal de la cryptographie à clé secrète réside dans la
transmission de la clé par un canal sûr mais son efficacité calculatoire fait
qu'elle est généralement beaucoup plus rapide que la cryptographie à clé
publique.

DES

Le "Data Encryption Standard" est dérivé d'un code appelé "Lucifer"


développé par IBM. Sa clé de 56 bits est maintenant sensible aux
attaques utilisant la force de calcul brute. Le "DES Challenge III" a
ainsi été résolu en 22 heures et 15 minutes par une machine
spécialisée (Deep Crack) en janvier 1999 dans le but de démontrer
que les clés de 56 bits n'étaient plus aptes à protéger efficacement
contre ce type d'attaques. Un précédent "Challenge" avait été résolu
en 39 jours par un effort distribué sur plusieurs milliers de machines
connectées à Internet et coordonné par Distributed.net.

Triple-DES

On utilise ici trois fois l'algorithme du DES avec des variantes


comprenant soit une succession de trois chiffrements DES soit une
suite "chiffrement - déchiffrement - chiffrement" utilisant deux ou
trois clés distinctes de 56 bits. Il semble que le 3-DES ne puisse pas
assurer une sécurité équivalente à un code employant un clé de 168
bits vis-à-vis d'une recherche exhaustive (voir la réponse à la
question: "3.2.6 What is triple-DES?" de la "RSA Laboratories'
Frequently Asked Questions About Today's Cryptography").

IDEA

L' International Data Encryption Algorithm a été développé en Suisse


à l'ETHZ par Massey et Lai qui l'ont publié en 1990. Cet algorithme a
été rendu populaire par son utilisation dans le programme PGP (Pretty
Good Privacy). Il utilise une clé de 128 bits et l'on pense qu'il offre
une bonne robustesse aux attaques utilisant la force brute.

RC2

Développé par Ronald Rivest, RC2 (Ron's Code 2 ou Rivest's Cipher


2) utilise une longueur de clé variable pouvant aller jusqu'à 2048 bits
bien qu'elle soit souvent limitée à 40, 56 ou 128 bits dans les versions
exportées hors des Etats-Unis. Cet algorithme est deux à trois fois
plus rapide (en logiciel) que DES et est considéré comme étant
raisonnablement sûr. Comme RC4, cet algorithme a été publié sur
Usenet en 1996 (rc2.txt) bien que la société RSA Data Security le
considère comme un "trade secret".

RC4

Comme RC2, bien que complètement différent, cet algorithme utilise


une longueur de clé variable pouvant aller jusqu'à 2048 bits. Basé sur
l'utilisation de permutations pseudo-aléatoires dont la période serait
supérieure à 10100, il est notamment utilisé dans le protocole SSL en
raison de son efficacité. Egalement considéré comme un "trade
secret" par RSA Data Security, il a néanmoins été publié (rc4.txt) sur
Usenet en 1994.

Cryptographie à clé publique


Les systèmes de cryptographie à clé publique résolvent élégamment le difficile
problème de la transmission de la clé secrète d'un algorithme symétrique; ils ne
nécessitent pas la connaissance d'une information secrète pour déchiffrer un
message codé. Un utilisateur possèdera donc une paire de clés, l'une privée
qu'il conserve en lieu sûr, et l'autre publique qui sera accessible à quiconque
devra l'utiliser. Ces deux clés sont liées mathématiquement de telle sorte qu'il
soit calculatoirement difficile de retrouver la clé privée à partir de la clé
publique.

Confidentialité

On obtiendra la confidentialité d'un message en utilisant la clé


publique du destinataire comme clé de chiffrement. En effet, seul le
destinataire possède la clé privée correspondante autorisant le
déchiffrement du message.

Figure 2 Le chiffrement du message ne nécessite que la


connaissance de la clé publique du destinataire qui pourra
décoder le message chiffré à l'aide de sa clé privée.

Authentification

L' authentification d'un message est également possible dès lors que
l'expéditeur utilise sa clé privée pour chiffrer le message qu'il désire
envoyer. Le destinataire utilisera la clé publique correspondante pour
déchiffrer le message qui sera ainsi authentifié. Remarquons que bien
que le message soit chiffré, il n'est pas confidentiel car n'importe qui
peut utiliser la clé publique de l'expéditeur pour en prendre
connaissance; il n'est donc que signé par le propriétaire de la clé
privée.
Le destinataire est alors confronté au problème qui consiste à se
convaincre de l'identité de l'utilisateur de la clé privée qui a servi à
signer le message. Les certificats numériques qui font l'objet de cette
étude y apportent une réponse acceptable en juxtaposant une clé
publique et des informations permettant de déterminer l'identité d'une
personne.

Figure 3 Une signature réalisée en chiffrant le message à


l'aide de la clé privée de l'expéditeur pourra être vérifiée par le
destinataire en employant la clé publique de l'expéditeur.

Notons que l'expéditeur d'un message signé de la sorte peut le


rendre confidentiel en chiffrant le résultat une seconde fois à
l'aide de la clé publique du destinataire. Celui-ci le déchiffrera
en deux temps: en utilisant d'abord sa clé privée, puis en
utilisant la clé publique de l'expéditeur.

Le cryptosystème RSA

Ce système à clés publiques a été développé en 1977 par Ron Rivest,


Adi Shamir et Leonard Adleman (Clifford Cocks avait découvert une
méthode analogue en 1973 au GCHQ (Governement Communications
Headquarters), c.f. "The Code Book" de Simon Singh).
Il est aujourd'hui très largement répandu car utilisé par le protocole
SSL, lui-même supporté par la majorité des butineurs existants.
Les étapes de la génération d'une paire de clés sont les suivantes:

1. Prendre deux grands nombres premiers p et q


2. Calculer le "modulus" n=p·q et phi(n)=(p-1)·(q-1)
3. Choisir un e aléatoire (1<e<phi(n)) tel que
pgcd(e,phi(n))=1
4. Calculer d=e-1mod phi(n) l'inverse de e en utilisant
l'algorithme d'Euclide.
5. Publier {e,n} qui fera office de clé publique, conserver la
clé privée {d,n} en lieu sûr et détruire p, q, phi(n)

La sécurité du système repose donc sur la difficulté de factoriser


le nombre n. Un "modulus" de 512 bits (RSA-155) a été
factorisé en un peu moins de 4 mois par 290 machines à la fin
de l'été 1999, cette taille de "modulus" doit par conséquent être
considérée comme inadaptée pour les besoins du commerce
électronique.
Une fois la clé publique {e,n} transmise au partenaire, celui
pourra chiffrer des messages à destination du détenteur de la clé
privée {d,n} en calculant:

C = Me mod n

où M est le message en clair et C le message chiffré. Le


déchiffrage de C se fera en calculant:

M = Cd mod n

Voyons par un exemple concret que cette méthode fonctionne:


choisissons 2 nombres premiers

p=7 et q=13

calculons

n = p·q = 7·13 = 91 et
phi(n)=(p-1)·(q-1)= 6·12 = 72

choisissons

e=5 qui satisfait à: 1<e<72 et pgcd(72,5)=1

calculons

d = e-1 mod 72 = 29 car 29·5 =145=


2·72+1
{5,91} est la clé publique et
{29,91} est la clé privée

essayons maintenant de chiffrer le message M=17 à l'aide de la


clé publique

C = Me mod n = 175 mod 91 = 75

que nous pouvons déchiffrer à l'aide de la clé privée

M = Cd mod n = 7529 mod 91 = 17

Méthode de Diffie-Hellman
Cette méthode publiée en 1976 par Diffie et Hellman permet à deux utilisateurs
d'établir une clé secrète sans connaissance préalable d'informations secrètes (Malcolm
Williamson avait découvert une méthode analogue en 1974 au GCHQ (Governement
Communications Headquarters)).
En voici le principe:

1. Les deux utilisateurs Alice et Bob partagent deux paramètres


non-secrets:
p un nombre premier et g < p, un générateur tel que pour
tout n, 1<= n <=p-1, il existe une puissance x de g telle
que n = gx mod p
2. Alice et Bob vont chacun choisir une valeur aléatoire privée
dans l'intervalle [1,..,p-2], Alice aura une valeur a et
Bob une valeur b.
3. Ils calculent alors chacun une valeur publique qu'ils
s'échangent: Alice envoie (ga mod p) à Bob qui lui envoie
(gb mod p)
4. Finalement Alice calcule k=(gb mod p)a mod p et Bob
calcule k=(ga mod p)b mod p, ils ont maintenant tous
les deux une valeur k qui fait office de secret partagé.
On démontre que k = (gb mod p)a mod p = (gb)a mod
p de la façon suivante:
Soit x=u·p+v avec v<p alors
xk=(u·p+v)k=(ck·pk+ck-1·pk-1+...+c1·p)+vk
et donc xk mod p = vk = (x mod p)k

Exemple:

g=3 p=31 Alice Bob


choix valeur privée a=11 b=20
1<= i <=p-2
calcul valeur publique
gi mod p 311 mod 31 = 13 320 mod 31 = 5
et transmission
calcul du secret partagé 511 mod 31 = 25 1320 mod 31 = 25

La sécurité de la méthode repose sur la difficulté de calcul de k=gab mod p à


partir de ga mod p et gb mod p pour p grand.
Cette méthode est vulnérable à l'attaque d'Ingrid qui s'interpose au moment de
la transmission des valeurs publiques entre Alice et Bob et qui y substitue sa
propre valeur publique. Il y aura donc 2 secrets partagés, un entre Alice et
Ingrid et un autre entre Ingrid et Bob. Ce problème est résolu en signant le
message contenant la valeur publique et en utilisant des certificats numériques
contenant de quoi vérifier la signature.

Fonctions de hachage

Les fonctions de hachage transforment un message de longueur arbitraire en une


empreinte numérique de taille fixe (128 bits dans le cas de MD5). Elles doivent
posséder les propriétés suivantes pour un usage "cryptographique":

 rendre impossible ou très difficile la recherche de 2 messages produisant la


même empreinte numérique.
 rendre impossible ou très difficile l'inversion de la fonction de hachage.

Voici quelques empreintes numériques obtenues en appliquant la fonction de


hachage MD5 aux messages suivants:
Message MD5(Message)
Virez 14000 francs sur le compte No
dca9aa6b21da7b390bb3343a4a47eb19
221-50843
Virez 24000 francs sur le compte No
6f336014cfa61c9913fb0a3020e230bf
221-50843
Virez 14000 francs sur le compte No
3614391df484cbe5234eb0cdb391d6d2
220-50843
Virez 14000 francs sur le compte No
b6c8a9c9ca896b043a3ba0b835057029
212-30001
Virez 14000 francs sur le compte No
857f70af531ca2d8f78114bd2dda676e
212-30001.
Virez 14000 francs sur le compte No
e7e88ace0c0e1fbd735eb43444fd16d7
212-3000.

Il est évident que des collisions existent dès lors que la taille de l'espace des
messages est supérieure à la taille de l'espace des empreintes numériques, qui
est fixe, 2128 dans le cas de MD5.
Le paradoxe des anniversaires donne une idée du nombre d'empreintes à
calculer pour obtenir une collision avec une probabilité de 50%. Rappelons que
dans une assemblée de 23 "personnes aléatoires", la probabilité que deux de
ces personnes partagent la même date anniversaire (jour et mois) est supérieure
à 50%. Il est possible de prouver que la taille de l'espace des messages
aléatoires à hacher pour obtenir une probabilité de collision de 50% est
proportionnelle à la racine carrée de la taille de l'espace des empreintes
numériques. Une empreinte de 16 bits (commande "sum" des systèmes UNIX)
est donc vulnérable à une attaque du type anniversaire en effectuant environ 28
opérations de hachage sur des messages "aléatoires".
Pour un emploi "cryptographique", on suggère des tailles d'empreintes
numériques supérieures ou égales à 128 bits qui demandent plus de 264 calculs
à une attaque de type anniversaire.

MD2

MD2 (Message Digest #2) est la plus sûre de la série de fonctions de


hachage développées par Ronald Rivest, mais fait une utilisation plus
intensive des ressources de calcul que les versions ultérieures. Elle est
décrite dans le RFC 1319 et produit des empreintes numériques de
128 bits.

MD4

MD4 (Message Digest #4) a été développée pour être une alternative
beaucoup plus rapide à MD2, elle est décrite dans le RFC 1320. Il a
été démontré qu'il est possible de trouver deux fichiers produisant la
même empreinte numérique MD4 sans avoir à faire de recherche
exhaustive (voir la réponse à la question "3.6.6 What are MD2, MD4,
and MD5?" de la "RSA Laboratories' Frequently Asked Questions
About Today's Cryptography"). En fait, il serait possible de trouver
des collisions en moins d'une minute sur un PC typique de 1998, cette
fonction doit donc être considérée comme caduque et ne plus être
employée pour un usage "cryptographique".

MD5

MD5 (Message Digest #5) est une version modifiée de MD4


comprenant une étape de calcul supplémentaire. Elle est ainsi plus
sûre mais un peu moins rapide que la précédente. Décrite dans le
RFC 1321 cette fonction est très largement utilisée bien que des
pseudo-collisions (collisions lors des étapes intermédiaires du calcul)
puissent être calculées. Elle produit des empreintes numériques de
128 bits.

SHA, SHA-1

La fonction de hachage SHA (Secure Hash Algorithm) ou SHA-1, sa


version corrigée par la NSA (National Security Agency), produit des
empreintes numériques de 160 bits pour des messages dont la taille
doit être inférieure à 264 bits (environ 2 millions de Téraoctets).
L'algorithme est un peu moins rapide que le MD5 mais sa plus grande
taille d'empreinte le rend plus résistant aux attaques utilisant la force
brute pour trouver des collisions ou à celles qui tentent de l'inverser.

Vous aimerez peut-être aussi