La cryptographie informatique présente plusieurs notions. Afin d'appréhender les différentes techniques, nous allons essayer de comprendre un peu ce qu'est l'encodage, le cryptage et le hachage.
L’encodage et le décodage ne sont qu’une question de représentation des données sous un format binaire capable d’être sauvegardé sur un support de stockage informatique. On dit encodage lorsqu'on traduit une donnée compréhensible par l’homme en une donnée de format numérique (un texte ou une image par exemple) et on dit décoder pour l'opération inverse.
Lorsqu’il s’agit des données de même nature, il est donc possible de choisir une norme ou une autre afin de les sauvegarder. Chaque norme possède ses propres caractéristiques : par exemple, lorsqu’on parle d’une vidéo, il est possible de l’encoder selon différents formats : Divx, MPEG-2 ou AVI, les formats BITMAP ou JPEG sont des formats images, les formats UTF-8 ou Latin-1 sont des formats textes.
Le chiffrement consiste à rendre un message incompréhensible, et ce, en le faisant passer dans une sorte de moulinette qui fonctionne grâce à une clé qu’on appelle clé de chiffrement. Cette moulinette se nomme « Algorithme de chiffrement » et qui ressort un autre message totalement incohérent et incompréhensible.
Ce procédé est réversible et le seul prérequis est d’avoir la clé pour le déchiffrer. Ce procédé est utile lorsque deux individus veulent communiquer en privé et que seules les deux parties doivent connaître le contenu du message. C’est en quelque sorte une version moderne et évoluée du message caché.
Par exemple, lorsque Alice veut envoyer un message à Bob, mais que Charlie risque de les entendre, alors Alice et Bob s’échangent leurs clés et à partir de ce moment, ils n’ont qu’à chiffrer leurs messages. Charlie ne pourra rien comprendre à ce qu’ils se transmettent puisqu'il ne possède pas la clé pour déchiffrer le message.
De manière générale, un algorithme de chiffrement doit respecter les conditions suivantes :
Exemple de chiffrement avec l’algorithme RSA :
salut c'est Samir GLT
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALOX+aZ++Q8zxElQ5kXYea+XQJEu9KrCDg9Q4FMTzDmTJNQX+qZqNU/ykDlhskxi0rJa9hBIMXUXO9ebFfaoEkUCAwEAAQ==
OKnumjPXTEi82/AM4GobPbCX3M6D4uO0uCKbHkrP7c3H49+VbODQEqq1kjbXlsYIW6y6qoMImC0xxvxzOz4Ngw==
Il faut savoir qu’il existe deux manières de faire du chiffrement :
Le chiffrement symétrique est un mode de chiffrement qui offre la possibilité de chiffrer et de déchiffrer par une seule et unique clé. Cette dernière peut donc servir à faire tourner l’algorithme dans les deux sens. Bien que ce mode soit séduisant par son nombre amoindri de clés à se partager, il présente plusieurs défauts et faiblesses au niveau sécuritaire.
Par exemple, comme Alice et Bob ont la même clé, Bob peut facilement se faire passer pour Alice pour envoyer un message à Charlie. Je vous invite à approfondir le sujet [REF].
Le chiffrement asymétrique consiste à séparer ce qui relève du privé - ce qu'Alice doit savoir pour qu’elle puisse déchiffrer un message - et ce qui est public - ce que Bob doit savoir pour chiffrer un message.
De cette manière comme Bob à la clé publique d’Alice, il pourra chiffrer de nouveaux messages, mais comme il n’y a qu'Alice qui possède sa clé privée, Charlie ne sera plus en mesure de déchiffrer les messages que Bob envoie à Alice.
Nous parlerons prochainement des algorithmes de cryptage, notamment du RSA (nommé par les initiales de ses trois inventeurs ; Ronald Rivest (2015), Adi Shamir (2013) et Leonard Adleman (2010)) et le principe des clés publiques et privées.
Le hachage présente d’autres caractéristiques qui peuvent servir dans d'autres domaines. Il consiste à faire passer un message dans une sorte de moulinette qui produit un autre message unique, généralement de longueur fixe, peu importe la taille du message, et qui sert d’empreinte. Cette méthode n’est pas réversible et il n’y a aucune manière de revenir au message d’origine. Cette empreinte est utilisée pour vérifier la fiabilité du message (des données en général) et il existe plusieurs algorithmes de hachage (MD5, MD4, SHA256, SHA512, GOST, WHIRLPOOL etc.)
Par exemple, lorsque vous vous enregistrez sur un site web, il est tout à fait possible d’enregistrer votre mot de passe en clair dans la base de données du site web. Si mon nom d’utilisateur est samir et mon mot de passe est samirglt123
, alors si jamais l’administrateur du site ou bien un hacker malveillant accède à la base de données, il peut facilement récupérer mon mot de passe et se faire passer pour moi afin de faire ce qu’il a en tête. Or, si on utilise un algorithme de hachage, alors le mot de passe ne sera pas stocké dans la base de données tel quel, mais ce sera son empreinte qui sera stocké, ici en l’occurrence samirglt123
devient :
e4973ddfe60018737c3596e4d9375dccc7a5367159ff888919c0ad67ee4dd262
sous l’algorithme de hashage: sha256 (256 bits) .
Aucune personne ne pourra plus récupérer mon mot de passe et à chaque connexion, lorsque je saisis mon mot de passe, ce sera son empreinte qui sera envoyée vers le serveur et le serveur compare les empreintes : si elles sont identiques alors le mot de passe est valide sinon le mot de passe n’est pas correct. Nous parlerons du hachage de manière approfondie lorsque nous parlerons d’internet et du transfert des données en matière de fiabilité.
4567