Les fonctions de hachage, expliquées simplement

Sans les fonctions de hachage, pas de sécurité sur Internet, ni de blockchains, ni de signature électronique. C’est une des briques fondamentales de la sécurité en ligne. Mais qu’est-ce que c’est une fonction de hachage ? Et à quoi servent-elles ?

Une fonction de hachage, c’est un peu comme un hachoir à viande, mais pour les données. Dans un hachoir à viande, vous pouvez mettre du bœuf, du poulet, du porc… vous obtiendrez toujours la même chose : de la viande hachée.

Dans une fonction de hachage, vous pouvez mettre n’importe quel texte, vous obtiendrez toujours la même chose : du texte illisible (appelé empreinte ou hash)

Quand vous avez de la viande hachée, vous ne pouvez pas « dé-hacher » la viande. C’est pareil pour les fonctions de hachages : vous ne pouvez pas revenir en arrière et retrouver les données initiales. Ça ne fonctionne que dans un sens.

La seule manière de retrouver un message à partir de son empreinte, c’est de tester plein de messages en espérant tomber sur la même empreinte. Ça s’appelle une attaque par force brute et ça porte plutôt bien son nom : c’est très long et très coûteux.

Pourquoi ? Parce que les fonctions de hachage sont bien faites. En regardant les exemples proposés plus haut, on voit en effet que :

Mais au final, pourquoi transformer de la belle prose en une vilaine chaîne de caractère ? Parce que ça permet de faire plein de choses pardi ! Prenons les mots de passe par exemple : ils ne sont pas stockés tel quel sur Internet. Ils sont hachés avant d’être enregistrés : azerty123456 devient E4B4C6324ED01B8EDF3139C32C413C00. Ainsi, personne ne peut connaître votre mot de passe, même pas la personne qui gère la base de données dans laquelle il est sauvegardé.

Et quand vous voulez vous connecter ? Rien de plus simple : vous tapez votre mot de passe, il est haché, et si son empreinte est la même que l’empreinte enregistrée vous pouvez entrer. Parce qu’une autre propriété des fonctions de hachage est qu’elles sont déterministes : le même message produit toujours la même empreinte. C’est pour celà qu’on les utilise aussi pour la signature électronique ou pour vérifier qu’un logiciel téléchargé n’a pas été modifié.

Enfin, les fonctions de hachage sont très rapides à calculer. C’est pour cela qu’on les utilise dans les blockchains. En effet, on a besoin de s’assurer que l’historique des transactions n’a pas été changé. Pour cela, à chaque bloc de transaction, on calcule une nouvelle empreinte à partir du bloc et de l’empreinte du bloc précédent. N’importe qui peut donc vérifier que rien n’a été changé dans l’historique des transactions très rapidement : il suffit de recalculer les empreintes successives, ce qui est beaucoup plus rapide que de vérifier une à une toutes les transactions.