On distingue généralement le chiffrement
symétrique et le chiffrement asymétrique. Le
modèle du chiffrement symétrique nécessite la
connaissance de la même information pour le chiffrement et le
déchiffrement. Dans le cas du modèle de chiffrement
asymétrique, l'information pour le chiffrement et celle pour le
déchiffrement sont distinctes et non-liée. L'
information en question est
appellée clef dans la plupart des cas.
Il existe 2 types de chiffrement symétriques :
- le chiffrement par bloc : DES (Digital Encryption Standard) (56
bits), 3DES (168 bits), AES (Advanced Encryption Standard) (128 bits),
CAST (64 bits), Blowfish (64 bits).
- le chiffrement des flux : RC2, RC4.
Chiffrer en mode feedback :
Ce mode chaîne les blocs les uns aux autres en
insérant les résultats des opérations
antérieures dans l'opération en cours.
Chiffrer en mode CBC :
Cipher Block Chaining
Prend le bloc de texte brouillé précédent et lui
applique un XOR avec le prochain bloc de texte clair, avant de
procéder à son chiffrement. Étant donné que
pour le tout premier bloc il n'y a pas de "bloc
précédent", on utilise un IV (Initialization Vector) ou
VI (Vecteur d'Initialisation).
Chiffrer en mode OFB :
Output Feedback Block
Nous maintenons ici un état de chiffrement qui est
"rechiffré" de manière répétée et
auquel on applique un XOR avec les blocs de texte clair pour produire
le texte brouillé (un VI réprésentant
l'état de chiffrement initial).
Clef symétriques :
RSA : Ron Rivest, Adi
Shamir, Leonard Adleman. Répose sur la difficulté de
factoriser le produit de 2 modules premiers de valeur
élevée. Avec RSA, nous pouvons chiffrer soit avec sa propre clef privée, soit
avec la clef publique du destinataire.
RSA est très souvent utilisé dans le échanges de
clef et les signatures numériques. Inadapté pour les gros
volumes.
Inconvénient : lent et possible sur seulement les données
de la taille du modulo de la clef (ex
: une clef de 1024 bits (1023 + 11) permettra de coder des
données de tailles inférieures ou égales à
1023 bits.
El-Gamal : Taher
El-Gamal. Repose sur le problème du logarithme discret qui est
une fonction à sens unique.
Inconvénient : Le texte brouillé est deux fois plus
volumineux que le texte clair original.
Authentification :
signature à la main (auth) + garantie de
l'intégrité des données signées = signature
numérique
RSA :
- chiffrer = créer une signature
- déchiffrer = vérifier la signature
DSS : Digital
Signature Standard
Fonctionnement différent de la signature avec RSA, mais
utilise l'algorithme de RSA.
La signature ne correspond pas normalement au chiffrement de
tout le message, mais seulement de
son empreinte. L'empreinte est créée à partir de
fonctions de hachage.
Collision :
L'empreinte de 2 (ou plus) textes clairs est la même. C'est un
indicacteur de la qualité d'un algorithme, car s'il y a trop de
collision, l'algorithme est inutilisable pour l'authentification ou
pour garantir l'intégrité de données.
Fonctionnement de la
signature :
{même entrée à chaque fois} -->
{algorithme de génération de l'empreinte} ==>
{même sortie à chaque fois}
Avec tout cela, on atteint les objectifs
suivants :
- difficilement falsifiable : seul le détenteur de la clef
privée peut chiffrer l'empreinte (génération de la
signature),
- non-dénégation ou non-répudiation : un
document signé ne peut pas être ultérieurement
répudié car il est difficile à falsifier.
- inaltérable : une fois signé, une modification du
document ne pourra pas passer inaperçue.
- non transférable : la signature ne peut pas être
otée (ou copiée) pour être ensuite apposée
à un autre document.
DSA :
Comparable à El-Gamal car repose sur le principe de
logarithme discret. La clef privée est utilisée pour
générer deux valeurs de 160 bits qui représentent
la signature; la vérification est une démonstration
mathématique, utilisant la clef publique, que les deux valeurs
n'auraient pu être générées qu'avec la clef
privée et le document signé. Il n'y a pas de
déchiffrement à proprement parler.
DSA utilise la fonction de hachage SHA pour les signatures.
De même qu'il existe le chiffrement symétrique et le
chiffrement asymétrique, il existe des méthodes
symétriques et des méthodes asymétriques pour
garantir l'intégrité des données.
MAC : Message
Authentication Code
Fait appel à une seule clef (comme le chiffrement
symétrique) pour générer et vérifier les
infos d'authentifications.
MAC n'est pas une signature; c'est en fait une technique de hachage de
clef.
{Message + Clef_secrète} --> {Fonction de hachage de MAC}
==> {empreinte à ajouter au message}
Le "déchiffrement" est le fait de générer
l'empreinte de la même façon que lors du "chiffrement",
pour ensuite les résultats.
Avantages : La
génération d'une empreinte hachés est plus rapide
que la génération d'une signature numérique.
HMAC : Les auteurs
sont Hugo Krawczyk, Ran Canetti et Mihir Bellare.
La spécification de HMAC est un type de hachage de clef
spécial qui peut être utilisé avec n'importe quelle
fonction de hachage existante. Donc SHA peut devenir HMAC-SHA, MD5 peut
devenir HMAC-MD5, ect.
HMAC est plus puissant que l'algorithme de hachage qu'il abrite. Pas
exemple, une attaque par collision sur MD5 n'est pas possible sous
HMAC-MD5.
HMAC a la particularité d'intervenir sur des clef ayant
déjà subi un hachage.
Diffie-Hellman :
Repose sur le problème du logarithme discret.
Exemple d'utilisation :
Alice et Bob se mettent d'accord sur un groupe (= un nombre premier p et un générateur g). Chacun choisit ensuite un nombre
aléatoire : a pour
Alice, et b pour Bob.
D'où A=(ga mod p) pour Alice, et B=(gb mod p) pour Bob.
A et B sont échangés.
Chacun refait une exponentiation en utilisant la valeur publique (A et B) que vient de lui fournir l'autre
partie. On a alors :
Ba = gab mod p
, pour Alice.
Ab = gab mod p
, pour Bob.
Donc, Ba = Ab
.
Un intru interceptant g, p, A
et B ne pourra pas en
déduire a et b, et donc encore moins gab mod p .
Inconvénient :
Diffie-Hellman est sensible à l'attaque
man-in-the-middle. La signature avec clef asymétrique permet de
résoudre ce problème (apport de l'authentification).
PFS : Perfect Forward
Secrecy
Un système est dit PFS s'il garantit qu'une clef
spécifique ne sert à générer qu'une clef
secrète spécifique. Il sera impossible de déduire
une clef avec la connaissance d'une autre clef
générée par le même système.