Cet article à pour but de présenter les bases des technologies de chiffrement et d'en expliquer les principes de fonctionnement. Il s'agit d'un article de vulgarisation, sa lecture ne nécessite pas de connaissances en informatique ou en mathématiques pour être compris.
Le chiffrement, c'est quoi?
Le chiffrement est un procédé permettant de modifier un message (qu'il s'agisse de texte, d'image ou autre) afin de ne rendre sa compréhension possible que par une personne possédant un moyen d'inverser cette opération à l'aide d'une clé (le déchiffrement).
Petit point sur le vocabulaire! En cryptographie plusieurs termes sont à distinguer: le chiffrement désigne l'action de rendre secret le sens d'un document à l'aide d'une clé (aussi appelé secret). Le déchiffrement, lui, désigne l'opération inverse (récupérer le document d'origine à partir du document chiffré et de la clé de déchiffrement). Enfin le décryptage consiste à récupérer le document d'origine mais sans posséder sa clé de déchiffrement (on parle de casser le chiffrement). Le terme cryptage, souvent utilisé à tort pour parler du chiffrement, n'a donc pas vraiment de sens en cryptographie (il désignerait le fait de chiffrer un document sans posséder de clé, ce qui n'aurait pas de sens).
L'exemple le plus connu est sans doute le chiffre de César (aussi appelé chiffrement par décalage) qui consistait à substituer les lettres de l'alphabet par d'autres, situées à une autre position (fixe) de l'alphabet. Par exemple si on utilise un décalage de 6 caractères: A devient G, B devient H, C devient I... Et la phrase "Le code de César" devient "Rk iujk jk Ikygx". Ici l’algorithme de chiffrement consiste à décaler les lettres et la clé de chiffrement est le décalage (ici 6).
Illustration graphique du code de César (source: wikimedia.org):
Dans cet exemple, la sécurité n'est pas très élevée: il n'y a que 26 clés possibles (36 si l'on rajoute les chiffres de 0 a 9) et chaque lettre est toujours substitué par la même (avec un décalage de 6 un A sera toujours un G). A l'heure actuelle un chiffrement comme celui-ci ne résisterait pas plus de quelques millisecondes à un ordinateur pour être décrypté (ce qui, vous en conviendrez ne fait pas beaucoup), c'est pourquoi, de nouveaux algorithmes basés sur des propriétés mathématiques complexes ont vu le jour. Ces algorithmes sont classés en 2 catégories: les chiffrements dit symétriques et les chiffrement dit asymétriques.
Le chiffrement symétrique
Le chiffrement symétrique est le chiffrement le plus "basique": en effet il consiste à chiffrer un message à l'aide d'une clé et à le déchiffrer à l'aide de cette même clé, généralement en inversant les étapes du chiffrement.
Les premiers chiffrements (avant l'essor de l'informatique) reposaient sur des substitutions (remplacement d'une lettre par une autre) ou des transpositions (décalage des lettres les unes par rapport aux autres). Depuis l'arrivée de l'informatique, les caractères sont transformées en nombres (en binaire) et le chiffrement s'effectue en appliquant des calculs mathématiques sur ces nombres: un message n'est qu'une suite de nombres sur laquelle on fait des calculs définis par un algorithme. L'un des avantage des algorithmes de chiffrement symétrique est leur vitesse: un ordinateur moderne peut traiter une grande quantité d'information en un temps relativement réduit par rapport aux algorithmes asymétriques.
Utilisations du chiffrement symétrique:
- Chiffrement de disques durs/mémoire (BitLocker sur Windows par exemple)
- Chiffrement des mots de passe dans les gestionnaires de mots de passe (LastPass, Dashlane...)
- Protocole WiFi
- Données des pages web sécurisées via HTTPS
Pour information l'un des chiffrement symétrique les plus répandu est l'algorithme AES (Advanced Encryption Standard) qui est utilisé dans les protocoles WiFi afin de protéger les données transmises entre deux appareils connectés ensemble. La clé de chiffrement utilisé par le WiFi est tout simplement le mot de passe du réseau.
Le chiffrement asymétrique
Le chiffrement asymétrique, contrairement au chiffrement symétrique, ne déchiffre pas un message avec la clé qui a servi à le chiffrer: on dispose de deux clés, une clé dite publique (pour le chiffrement) et une clé dite privé (pour le déchiffrement). Ce chiffrement est principalement utilisé dans un but de communication entre deux personnes/appareils: chaque personne partage sa clé publique afin que l'autre puisse lui écrire un message chiffré et garde sa clé privée pour déchiffrer les messages reçus.
Les algorithmes de chiffrement asymétriques reposent quasi-exclusivement sur des propriétés et des outils mathématiques comme les nombres premiers (des nombres qui n'ont pour diviseur que 1 et eux-même), les puissances et les congruences.
Du fait de la complexité des calculs mis en jeu par ce type de chiffrement (et donc de leur lenteur), les algorithmes de chiffrement asymétriques sont principalement utilisés pour échanger de petits volumes d'information, notamment des clés de chiffrement symétrique (qui permettront d’échanger un plus gros volume d'informations chiffrées).
On peut retrouver l'utilisation du chiffrement asymétrique notamment dans le protocole HTTPS (qui permet de sécuriser les connexions aux pages web): le navigateur utilise la clé publique du serveur pour lui transmettre une clé de chiffrement. Cette clé est ensuite utilisée pour chiffrer le reste de leur communication (contenu de la page, identifiants) à l'aide d'un algorithme de chiffrement symétrique.
Conclusion
A l’ère de l'informatique le chiffrement est utilisé un peu partout, souvent sans que l'on en ai conscience, ces technologies sont primordiales pour protéger nos informations et notre vie privée.
J’espère que cet article vous aura appris des choses, si vous avez des questions/remarques/suggestions laissez un commentaire: tous les retours et upvotes seront appréciés ; )
Si vous avez envie de tester un algorithme de chiffrement asymétrique (on ne sait jamais : ) ), une implémentation de l’algorithme de chiffrement asymétrique RSA est disponible à cette adresse: https://projects.tomgouville.fr/CryptoLib/
Il y a un en petite confusion dans ton article.
Tu laisses penser que AES ne serait pas utilisé en HTTPS. Et que ce dernier utiliserait exclusivement le chiffrement asymétrique.
Le chiffrement asymétrique est utilisé pour authentifier des paires entre elles à l'aide de RSA par exemple. Donc à authentifier le serveur auprès du navigateur.
Mais une fois authentifiée, l'échange de données serait faite àl'aide du chiffrement symétrique (et notamment en AES256).
Ça vaudrait le coup de le préciser je pense.
Merci du retour, effectivement il y a un petit cafouillage dans mon article, je vais modifier ça
Proooooopre ! Je partage instantanément !
Bon article, mettre en lumière le procédé de chiffrement et ses différentes manières n'est pas chose aisée ! Upvoté à 100% ! C'est assez claire dans l’ensemble !
Merci de votre soutien!
Merci c'est intéressant !
En chiffrement asymétrique il y a notamment PGP qui est très réputé.
Très utile pour être certains que l'on discute avec la bonne personne et même intégrable à un client mail comme Thunderbird.
Très bon article en tout cas :)
A 00h42 pas une bonne idée de lire ton article, même après un dimanche bien reposant.
Bon j'ai du faire le parallèle avec l'article de @evildido sur le même sujet c'est peut être pour ça que j'ai galéré, donc je repasserai surement pour une lecture approfondie.
Enfin je dis ça mais trouverai je le temps :-( !!
@OriginalWorks