La cryptographie - le chiffrement (1/2)

La cryptographie - le chiffrement (1/2)
Photo by Markus Winkler / Unsplash

La cryptographie, c'est quoi ?


La cryptologie, c'est la science du secret et de la confiance. Le mot cryptologie provient du du grec kryptos qui signifie caché ou secret.

Pour atteindre cet objectif, on peut utiliser le chiffrement (et non pas le cryptage comme on peut l'entendre parfois 🤮).

💡
"Crypter" se dit d'une chose qui ne peut être décodée et comprise. "Décrypter" est l'action qui consiste à décoder un message tel que les hiéroglyphes

Le chiffrement est un procédé de cryptographie grâce auquel on souhaite rendre la compréhension d'un document impossible à toute personne qui n'a pas la clé de (dé)chiffrement.


Prenons un exemple concret : imaginons que nous avons deux personnes nommées respectivement Mohamed et Alice. Mohamed souhaite envoyer un message à Alice sans qu'une autre personne soit en mesure de lire ce message. Mohamed va donc utiliser un algorithme de chiffrement afin de cacher aux yeux du monde son message tout en permettant à Alice de pouvoir déchiffrer ce message pour qu'elle le lise.


Les premières techniques de chiffrement remontent à l'Antiquité et datent du XVIème siècle av. J.-C. On a retrouvé une tablette d'argile en Irak appartenant à un potier qui y avait gravé sa recette secrète en supprimant des consonnes et en modifiant l'orthographe de certains mots.

Mais ce sont les Romains qui les premiers ont inventé les premiers véritables systèmes cryptographiques dont le chiffrement de césar qui est une méthode de chiffrement par substitution mono-alphabétique dont le principe consistait à décaler les lettres de l'alphabet.

Un exemple concret

Les quatre objectifs du chiffrement

Le chiffrement va permettre d'assurer de un à quatre objectifs : la confidentialité, l'authenticité, l'intégrité et la non répudiation en fonction de la technologie de chiffrement utilisée.

La confidentialité

Le premier objectif est la confidentialité, logique me direz-vous 😜. Et pour assurer la confidentialité, on passe par le chiffrement et il existe différents algorithmes qui peuvent être symétriques (DES, 3DES, AES, ...) ou asymétriques (RSA, ElGamal, Diffie-Hellman, ...) mais ne vous inquiétez pas, on verra ça juste après.

L’intégrité

L'objectif de l'intégrité, c'est de permettre à Alice de pouvoir s'assurer que le message reçu est le même que celui envoyé par Mohamed. Autrement dit, qu'aucune personne malveillante n'a modifié le message pendant l'envoi.

Et pour assurer l’intégrité d’une information, on passe par une signature, aussi appelé Hash ou CheckSum. Il existe là encore différents algorithmes de signature comme le MD5 (qui est obsolète), SHA-2, BCrypt, ...

L’authenticité

L'authenticité a pour but de prouver que la personne qui émet le message est bien celle qu'elle prétend être. En d’autres termes, permettre à Alice de pouvoir s'assurer que le message provient bien de Mohamed et pas d'une autre personne.

La non répudiation

Il faut enfin pouvoir prouver que l'émetteur a bien envoyé le message. Ou dit autrement que Alice puisse s'assurer que Mohamed ne peut nier avoir envoyé le message.

La confidentialité, l'authenticité et la non répudiation avec les algorithmes symétriques et asymétriques

Les algorithmes de chiffrement permettent de prendre en entrée un texte en clair, et à l'aide d'une clé de chiffrement, de pouvoir générer en sortie, un texte chiffré. Ce texte chiffré ne pourra alors plus être déchiffré qu'à l'aide de la bonne clé.

Il existe deux types d'algorithmes de chiffrement : symétrique et asymétrique.

Les algorithmes symétriques

Aussi appelés algorithmes de cryptographie à clé secrète.

Les différents acteurs se mettent d’accord au préalable et définissent une clé secrète identique qui leur permettra de coder et décoder des informations. Les algorithmes utilisés actuellement sont DES, Triple-DES, AES, BlowFish.

Ce système est rapide et sécurisé.


  1. Mohamed et Alice se mettent d'accord sur une clé secrète commune, disons jackalope
  2. Mohamed utilise un algorithme de chiffrement symétrique avec en clé secrète jackalope
  3. Mohamed envoie à Alice le message chiffré
  4. Alice reçoit le message chiffré
  5. Alice utilise la clé secrète jackalope pour déchiffrer le message de Mohamed

Et voilà !

Les algorithmes asymétriques

Aussi appelés algorithmes de cryptographie à clé publique.

Ce type de chiffrement est basé sur des couples clé privée / clé publique qui permettent de chiffrer avec la clé privée et de déchiffrer avec la clé publique ou inversement de chiffrer avec la clé publique et déchiffrer avec la clé privée. Donc une même clé ne peut pas chiffrer et déchiffrer le même message ! Les différents algorithmes utilisés actuellement sont RSA, El-gamal, Diffie-Hellman.

Ce système est plus robuste que la cryptographie symétrique mais reste aussi plus lent car plus lourd.


  1. Mohamed génère un couple de clés
  2. Mohamed partage la clé publique à Alice (ou au monde entier car je le rappelle le chiffrement asymétrique ne fonctionne que dans un sens ! chiffrement via clé privée → déchiffrement via clé publique OU chiffrement via clé publique → déchiffrement via clé privée)
  3. Mohamed utilise un algorithme de chiffrement asymétrique avec sa clé privée
  4. Mohamed envoie à Alice le message chiffré
  5. Alice reçoit le message chiffré
  6. Alice utilise la clé publique pour déchiffrer le message de Mohamed

Et voilà (bis) !

L'intégrité avec la signature (Hash)

La signature permet, à l’aide de procédés cryptographiques, de garantir l’intégrité de données. La signature est aussi appelée Hash ou CheckSum. Le principe d'une signature est qu'elle ne peut pas être déchiffrée.

Création d'un hash

La création d’un hash repose sur une fonction de hashage qui prendra en entrée un texte clair et génère en sortie un ensemble de caractères appelé hashé, empreinte, signature ou checksum.

Il existe différents algorithmes de hashage tels que SHA-2, SHA-3, BCrypt.

Ce système est rapide et efficace. La longueur du hashé est constante quelque soit la taille du texte en entrée. Une bonne fonction de hashage est résistante aux collisions.

Un problème de collision

Un algorithme de hashage parfait vise à n’avoir aucune collision. Le principe d’une collision est que pour deux données à priori différentes, on aura un même hashé.

L’impact d’une collision se situe par exemple au niveau de la gestion des mots de passe d'une base utilisateurs : imaginez si le hashé du mot de passe de Mohamed est le même que le hashé du mot de passe de Alice...

Gérer les collisions

Il est important pour éviter les collisions, d’utiliser les dernières fonctions de hachage disponibles. Il faut par exemple éviter d’utiliser le SHA-1 qui est devient obsolète.

Une autre solution pour renforcer la sécurité est d’utiliser le salage. C'est-à-dire ajouter une chaîne de caractère pseudo-aléatoire à la donnée.

Tentons une expérience :

Je suis un utilisateur de caramail.com et j'ai un compte chez eux, je me suis inscrit et pour protéger mon mot de passe, ils utilisent MD5 pour stocker mon mot de passe en base de données. Le hash obtenu est le suivant :

8ca0389437eadd68c62d383e425e3e63

Maintenant, je vous invite à aller sur https://crackstation.net/ puis à rentrer mon mot de passe hashé. A priori, vous devriez avoir trouvé quel est le mot de passe. La raison à cela, c'est que le MD5 est obsolète et aujourd'hui il existe des dictionnaires complets rempli de hashé MD5 et de leur équivalent déchiffré.

Maintenant, caramail.com a décidé d'ajouté un salage avant mon mot de passe, et cela donne le hashé suivant :

d0cfbb49b10efed4102fc6cf7c020c2d

Si vous retournez sur https://crackstation.net/ vous ne devriez pas avoir de résultat. Et pour cause maintenant le mot de passe avant la fonction de hashage est apmdkfotpspvjackalope et le caractère aléatoire rend le hashé plus compliqué à trouver.

Attaques sur les algorithmes de chiffrement

Il est important de noter qu'aucun chiffrement n'est infaillible. La question n'est donc pas de savoir si un algorithme peut être cassé mais bien quand est-ce qu'il sera cassé.

La question n'est pas de savoir si un algorithme peut être cassé mais bien quand est-ce qu'il sera cassé

Et pour casser un algorithme, il existe plusieurs méthodes :

  • L'attaque par brute forcing qui consiste à essayer toutes les clés jusqu'à trouver la bonne clé. La longueur de la clé détermine donc directement le nombre de combinaisons possibles. Or la puissance de calcul de nos ordinateurs augmente sans cesse et il est de plus en plus facile de tester un nombre important de clés par seconde. Actuellement, la taille minimale d'une clé doit être de 280. Supposons que l'on puisse essayer 109 (un milliard) clés par seconde, soit environ 230, il y a 31 557 600 secondes par an, soit 225, en conséquence on peut tester 255 clés par an. Si on prend une clé de 80 bits, il faudrait 224 ans, plus de 16 millions d'années.
  • L'attaque par canal auxiliaire qui consiste à percer le code. On cherche ici à exploiter les défauts de conception ou d'exécution du système.
  • L'attaque par cryptanalyse qui consiste à détecter une faiblesse dans le chiffrement lui-même.

Conclusion

Voilà pour ce premier article sur la cryptographie ! Dans la suite, nous verrons les certificats !

La cryptographie - le certificat (2/2)
Découvrez les cinq objectifs d’un certificat, sa création, son fonctionnement et son utilisation notamment avec le procédé TLS

💌 Vous aimez l'article que vous avez lu ?

Pensez à vous inscrire et découvrez d'autres articles seulement visibles pour la communauté ! Et en bonus, un nouvel article chaque dimanche ! 😀