Principes de base de la cryptographie

Rubrique : cryptographie, PKI, OpenSSL, certificat, X.509, SSL, sécurité informatique.

Le but est de rendre inintelligible un message codé pour quelqu’un qui n’a pas la clé. Pour cela il existe deux grands types d’algorithmes de chiffrement : les algorithmes à clés secrètes et les algorithmes à clés publiques. Mais tout d’abord faisont le point sur la terminologie utilisée.

La terminologie de la cryptographie

Voici quelques définitions :

  • la cryptographie est l’art de chiffrer un message en clair avec une clé ;
  • la cryptologie est la branche des mathématiques conprenant la cryptographie et la cryptanalyse ;
  • le chiffrement, noté Ek, est l’action de chiffrer un message en clair, noté M, en un message chiffré, noté C, et cela de façon à ce qu’il soit impossible de retrouver le message en clair à partir du message chiffré sans la clé ;
  • cette clé s’appelle la clé secrète et elle est unique ;
  • l’action inverse du chiffrement est le déchiffrement. Cette action s’effectue uniquement en possession de la clé secrète ;
  • le déchiffrement d’un message chiffré sans la clé secrète s’appelle le décryptage ;
  • l’art de décrypter s’appelle la cryptanalyse ;
  • un système de chiffrement s’appelle un cryptosystème ;
  • un cryptographe est une personne qui conçoit des cryptosystèmes ;
  • un cryptanaliste est une personne qui tente de casser les cryptosystèmes.

Toutes ces précisions peuvent vous sembler astreignantes, et même certaines peuvent vous paraître évidentes, mais la cryptographie est un art où rien n’est laissé dans l’ombre, et où tout est explicité. Autrement dit, il faut de la rigueur et de la précision. Un algorithme très robuste peut être anéantit à cause d’une petite erreur de réalisation.

Chiffrement symétrique

Pour cette technique, l’émetteur et le destinataire du message disposent de la même clé secrète k. L’émetteur va utiliser cette clé secrète k pour chiffrer le message M. Le message chiffré est C. Le récepteur utilisera cette même clé secrète k pour déchiffrer le message chiffré C, et retrouver ainsi le message en clair M d’origine.

Chiffrement et déchiffrement symétrique

Ce graphique vient du document « Introduction à la cryptographie » provenant du site de PGP.

Quelques noms d’algorithmes symétriques :

  • AES,
  • Serpent,
  • Twofish,
  • RC6,
  • RC4,
  • CAST,
  • IDEA,
  • DES,
  • TripleDES,
  • REDOC 3.

Chiffrement asymétrique

Cette technique repose sur le fait que la clé de chiffrement soit différente de la clé de déchiffrement. De plus, la clé de déchiffrement ne peut pas être calculée à partir de la clé de chiffrement et réciproquement. La clé de chiffrement appelée clé publique est destinée à être divulguée, tandis que la clé de déchiffrement appelée clé privée est gardée secrète.

Dans ce cas, la procédure à suivre est la suivante :

  • l’émetteur doit récupérer la clé publique k1 du destinataire avec laquelle il va chiffrer le message en clair M. Puis il va envoyer le message chiffré résultant C au destinataire ;
  • ainsi le destinataire peut déchiffrer ce message chiffré C avec sa clé privée k2 et retrouver le message en clair M d’origine.

Chiffrement et déchiffrement asymétrique

Ce graphique vient du document « Introduction à la cryptographie » provenant du site de PGP.

Quelques noms d’algorithmes asymétriques :

  • RSA,
  • Diffie-Hellman,
  • DSA (DSS),
  • ECDSA,
  • ECDH.

Modes de chiffrement

Ce paragraphe décrit la mise en œuvre des algorithmes de chiffrement par blocs (type d’algorithmes symétriques le plus répendu).

Il ne suffit pas de découper un message en blocs de même taille et de chiffrer chacun de ces blocs avec un algorithme de chiffrement par bloc, puis de mettre tous ces blocs chiffrés côte à côte pour former le message chiffré. La sécurité en serait très faible, car un bloc identique serait toujours chiffré de la même manière. Et, donc il suffirait de cryptanalyser les blocs un à un indépendamment les uns des autres, et de se faire une base de données de couples (bloc en clair, bloc chiffré). C’est pour répondre à ce problème que les modes de chiffrement ont été inventés.

Les quatre principaux modes de chiffrement

ECB
Electronic CodeBook
CBC
Cipher Block Chaining
CFB
Cipher FeedBack
OFB
Output FeedBack
Diagrammes synoptiques des modes de chiffrement
ECB : Electronic CodeBook Mode ECB : Electronic CodeBook
Ci = Ek(Mi)
CBC : Cipher Block Chaining Mode CBC : Cipher Block Chaining
C0 = IV
Ci = Ek(Mi ^ Ci-1)
CFB : Cipher FeedBack Mode CFB : Cipher FeedBack
C0 = IV
Ci = Mi ^ Ek(Ci-1)
OFB : Output FeedBack Mode OFB : Output FeedBack
Z0 = IV
Zi = Ek(Zi-1)
Ci = Mi ^ Zi

Légende

Mi
ie bloc du message en clair
Ci
ie bloc du message chiffré
Ek
algorithme de chiffrement utilisant la clé k
^
ou exclusif
IV
Initialization Vector (vecteur d’initialisation)

Commentaires

Le mode ECB n’assure aucune sécurité : ne pas l’utiliser. Le mode CBC est très bien, mais il faut écrire la fonction Dk = Ek-1 inverse de la fonction Ek pour déchiffrer le message. Alors qu’avec les modes CFB et OFB l’algorithme de chiffrement Ek n’est utilisé que dans un seul sens (le sens du chiffrement). Le déchiffrement se fait au niveau du ou exclusif. Le mode OFB est symétrique : c’est-à-dire que le chiffrement et le déchiffrement sont parfaitement identiques. Mais, le mode CFB est peut être préférable, car il dépend plus fortement du message à chiffrer. Donc, si l’on veut chiffrer des messages qui ont tous un entête identique, il vaut mieux utiliser le mode CFB que le mode OFB.

Récapitulatif

Modes de chiffrement et programmation
Mode de chiffrement Sécurité Réalisation
ECB : Electronic CodeBook la pire la plus simple
CBC : Cipher Block Chaining très bonne la plus lourde
CFB : Cipher FeedBack très bonne difficulté moyenne +
OFB : Output FeedBack assez bonne difficulté moyenne -

L’utilisation d’un mode de chiffrement est indispensable. De plus, cela ne rajoute qu’une petite difficulté de programmation devant celle de réalisation de l’algorithme de chiffrement par bloc. Autrement dit, la sécurité du chiffrement est grandement amméliorée avec l’un des trois derniers modes de chiffrement : CBC, CFB et OFB.

Autres modes d’opération

Il existe des modes d’opération avec authentification :

  • OCB,
  • CCM,
  • GCM,
  • EAX,
  • SIV.

Il existe des modes d’opération spécifiques pour le chiffrement de disque :

  • LRW,
  • XEX,
  • XTS.

Fonctions de hachage à sens unique

En cryptographie, une fonction de hachage à sens unique est une fonction qui permet de calculer facilement une empreinte numérique de taille fixe à partir d’une suite de bits de taille quelconque et dont l’inverse est très difficile à calculer. C’est-à-dire, étant données une suite de bits et son empreinte numérique, il est difficile de trouver une autre suite de bits différente donnant la même empreinte numérique. En termes mathématiques, cela s’écrit ainsi : étant donné un x1, il est facile de calculer f(x1), mais il est difficile de calculer x2 tel que x2 ≠ x1 et f(x2) = f(x1).

Les fonctions de hachage (à sens unique) utilisées en cryptographie ont la particularité suivante : si l’on modifie un seul bit du message d’origine, alors la fonction de hachage produit une empreinte numérique complètement différente.

Fonctions de hachage à sens unique

Ce graphique a été adapté du document « Introduction à la cryptographie » provenant du site de PGP.

Quelques noms de fonctions de hachage à sens unique :

  • MD5 : ne pas l’utiliser, MD5 a été cassé, par exemple pour créer un faux certificat d’AC,
  • SHA-1 : à éviter, cet algorithme a des faiblesses et la taille de son empreinte est trop petite,
  • SHA-2 : famille d’algorithmes regroupant SHA-224, SHA-256, SHA-384, SHA-512,
  • SHA-3 : famille regroupant SHA3-224, SHA3-256, SHA3-384, SHA3-512 [NIST FIPS 202],
  • Whirlpool : empreintes de 512 bits, adoptée comme norme ISO en 2004.