Le hachage et le cryptage expliqués simplement

Différence fondamentale entre hachage et cryptage

La différence fondamentale entre hachage et cryptage est la suivante :
Le hachage va retourner une « empreinte » ou « signature » des données fournies en entrée alors que la fonction de cryptage va retournée un texte différent de celui fourni en entrée, texte qui pourra être reconstitué par celui qui possède la clé de cryptage.
Un cryptage peut donc permettre de retrouver le texte original alors qu'un hachage, ne permet pas de reconstituer le texte d’origine.
Les deux fonctions ont leur utilité mais le but de leur utilisation est totalement différent.

 

Qu’est-ce que le hachage

Le hachage ou fonction de hachage en anglais hash function, est une fonction  Qu’est-ce qu’une fonction Exemple d’une fonction : Lorsque vous additionnez 2 nombres, par exemple 5 + 2 et vous retournez 7.
Vous venez d’utiliser une fonction qui à partir de 2 nombres fournis en entrée retourne la somme de ces 2 nombres. Addition (a, b) => a + b
qui, à partir d'une donnée fournie en entrée, calcule une empreinte numérique.
L’empreinte numérique est une suite de caractères de taille limitée et souvent fixe qui dépend de la fonction mais est totalement indépendante du texte fourni en entrée.
Ainsi, si on fait le hachage d’un fichier texte de 300 pages, la fonction de hachage pourra retourner une suite de 32 caractères par exemple. De même si on hache un seul caractère, on obtiendra également une suite de 32 caractères. La longueur des données passées en entrée et qui vont être hachées n’influence en rien la longueur de la valeur retournée par la fonction de hachage. En fait la longueur de la valeur retournée par la fonction de hachage dépend de la fonction elle-même.

Par contre la valeur retournée sera totalement différente même si un seul caractère d’un fichier de 10 000 000 de caractères est modifié. On comprend alors l’utilité de cette fonction qui permet de retourner une signature ou une empreinte unique d’un fichier.

 

A quoi sert le hachage

Comme le hachage permet de retourner une chaine unique de caractères pour un fichier ou un texte fourni en entrée, cette fonction peut être utilisée pour signer des documents et ainsi vérifier qu’ils n’ont pas été modifiés. C'est pour cela que l'on parle d'empreinte ou signature qui est propre à une personne. L'utilisation principale de la fonction de hachage est donc la comparaison.
C'est pourquoi elle est souvent utilisée pour chiffrer des mots de passe d’où la confusion entre hachage et cryptage, certains imaginent à tord que le mot de passe est crypté et que l’on peut récupérer le mot de passe en le décryptant et ainsi vérifier sa validité. Dans les faits, une fois le mot de passe saisi, on le hache et on compare le résultat avec celui se trouvant dans la base de données et si les deux signatures sont identiques, c'est que le mot de passe est valide.
Il faut savoir quand même que certaines fonctions de hachage retournent la même empreinte pour des données différentes, c'est ce qu'on appelle la collision. C'est le cas pour le MD5 et ces fonctions ne doivent pas être utilisées pour hacher des mots de passe, elles restent par contre valables pour signer des documents. En effet, si on veut modifier discrètement un document par exemple, on n'a aucune chance d'obtenir la même signature, seul un texte totalement aléatoire et ne voulant rien dire, pourrait éventuellement retourner la même signature.

 

Peut-on récupérer un texte haché ?

En théorie, NON. En théorie, car il n'existe pas de fonction qui à partir du texte haché, retourne le texte original. Une fois haché, il est impossible de créer une fonction permettant de récupérer le texte original. Si on parle d'empreinte, c'est parce qu'on peut comparer le résultat du hachage à l'empreinte d'un être humain. Si vous récupérez une empreinte sur une scène de crime, vous ne pouvez retrouver celui qui a laissé l'empreinte que si son empreinte est stockée dans la base de données. Pour un texte haché c'est exactement la même chose. En effet en admettant que l'on connaisse la fonction ayant servie à hacher un mot de passe, on créé une table qui d'un côté stocke un texte et de l'autre côté stocke son hachage. On stocke ainsi plusieurs millions voir plusieurs milliards de possibilités. Il suffit ensuite de rechercher dans la table, le hachage d'un mot de passe pour vérifier s'il se trouve dans la table et s'il existe une correspondance, alors on récupère le texte associé et on a ainsi trouvé le mot de passe.
D'où l'importance de choisir un mot de passe sécurisé car si votre mot de passe est 1234 ou admin ou Michel ou azerty ou password, ce mot de passe sera récupéré en moins de un dixième de seconde car vous pouvez être sûr qu'il se trouve dans la table.
Pour contrer ce genre d'attaque il existe ce qu'on appelle le salage. Le salage consiste à ajouter un texte au mot de passe avant de le hacher (Voir explication sur Wikipedia) et rend ce genre d'attaque plus difficile à opérer. Malheureusement pour vous, c'est le site qui ajoute ou pas un sel au mot de passe, voire qui hache ou pas, le mot de passe. Il existe encore des sites qui stockent les mots de passe en clair d'où l'importance de ne pas saisir le même login et le même mot de passe pour tous les sites. Car si c'est le cas et qu'un site peu sécurisé se fait pirater sa base, le pirate aura à la fois votre login et votre mot de passe et il pourra aller sur Amazon et tenter de se connecter avec ces données puis sur les sites de banque et ainsi de suite, vous risquez alors de voir votre compte en banque vidé en moins de 24h00. Et ne pensez pas que les sites de banque sont sécurisés, la Banque de France utilisait le mot de passe 123456 pour un de ses systèmes informatiques ( Voir information sur le journal Les Echos), ça laisse rêveur.

 

Qu’est-ce que le cryptage

Le cryptage ou chiffrement est totalement différent du hachage car son but est de rendre incompréhensible un texte aux yeux de tous sauf bien sûr aux yeux de ceux auxquels il est destiné. Contrairement au hachage, le chiffrement d'un texte nécessite de pouvoir être déchiffrer. La fonction de cryptage est donc une fonction réversible  Qu’est-ce qu’une fonction réversible Exemple d’une fonction réversible : Soit la fonction Carré(a, a) qui retourne a x a soit a².
Connaissant a², il est facile de connaitre a en utilisant la fonction Racine(a²) qui retourne a. La fonction Racine est donc la fonction inverse de la fonction Carré
. Le chiffrement n’est pas une science nouvelle, Jules César l’utilisait déjà pour adresser ses messages secrets. Le cryptage a surtout été utilisé par les armées pour adresser des messages qui ne devaient pas être compris par les ennemis. Le cryptage s’est perfectionné au fil du temps et les Allemands avaient créé la fameuse machine Enigma servant à chiffrer et déchiffrer les messages.
Aujourd’hui il existe beaucoup d’application de messageries cryptées, l’informatique permettant de crypter très facilement. De même, lorsque vous êtes sur un site Internet en https les données que vous faites transiter sur le web, sont cryptées et en cas d’interception, elles ne pourront pas être lues. La science du chiffrement, s'appelle la cryptographie. A l'opposé, la science qui consiste à casser le chiffrement s'appelle la cryptanalyse.

 

Chiffre de César

On est aujourd’hui bien loin du chiffrement utilisé par César qui consistait simplement à remplacer chaque caractère d’un texte par un caractère décalé de 3 caractères, ce qui donne ceci :

Alphabet en clair : ABCDEFGHIJKLMNOPQRSTUVWXYZ
Alphabet chiffré  : DEFGHIJKLMNOPQRSTUVWXYZABC
Ce qui donne :
Texte chiffré : LCLEDQN OD JHVWLRQ IDFLOH
Texte Clair   : IZIBANK LA GESTION FACILE

Par la suite, la méthode à été utilisé avec un décalage arbitraire. Si on connait la valeur du décalage il est facile de décoder le texte.
Ce genre de chiffrement est appelé chiffrement mono alphabétique car une lettre est toujours remplacée par la même lettre. Ainsi la lettre codée F par César, représentait toujours la lettre C en clair. La méthode de chiffrement mono alphabétique est simple et aussi facilement déchiffrable par l'attaque dite d'analyse fréquentielle. Pour un texte long en français, par exemple on sait que la lettre la plus utilisée est le E, on recherche donc la lettre la plus utilisée dans le texte et si c’est le H, il est fort probable que la valeur du décalage est 3. Si ce n'est pas la bonne valeur, c'est-à-dire que le texte décodée ne donne rien, on choisi le A, lettre la plus utilisée ensuite et on trouve alors la valeur 6 et ainsi de suite.
Pour contrer cette attaque, Blaise de Vigenère a créé au XVIe siècle, le chiffrement poly alphabétique. Ce genre de chiffrement reste toujours un chiffrement par substitution (une lettre en clair est remplacée par une lettre codée) mais une même lettre du message clair est remplacée par une lettre qui dépend de la position de cette lettre dans le texte et n'est donc généralement pas identique. Une même lettre codée n'ayant plus nécessairement la même valeur, l'attaque par analyse fréquentielle ne fonctionne plus. Le chiffre de Vigenère n'a été percé qu'au XIXe siècle. Au XXe siècle, l'utilisation de machines électromécaniques comme la machine Enigma utilisée par les Allemands pendant la seconde guerre mondiale a permis de chiffrer de façon beaucoup plus complexe. Aujourd'hui les ordinateurs permettent de chiffrer à des niveaux extrêmement complexes.

Retour à la page sur l'outil de contrôle MD5.