Le hachage

Principe et utilité du hachage

Pour connaître quelqu’un sans voir son visage, on peut utiliser son empreinte digitale. C’est une signature unique, compacte et impossible à reconstituer en sens inverse. En informatique, le hachage fonctionne un peu comme ça.

On vit dans un monde où tout circule : mots de passe, photos, transactions bancaires, messages privés… La question n’est pas seulement de protéger ces données, mais aussi de vérifier qu’elles n’ont pas été modifiées. Et c’est là que le hachage entre en scène.

 

Principe

Le hachage consiste à transformer une donnée (texte, fichier, mot de passe…) en une chaîne de caractères de longueur fixe, appelée empreinte ou hash.

Exemple :

  • Entrée : bonjour
  • Sortie (hash) : 2cf24dba5fb0a... (tronquée ici)

Ce qui est important, c’est que :

  • la sortie a toujours la même longueur,
  • elle semble totalement aléatoire,
  • une toute petite modification de l’entrée change complètement le résultat.

Un bon algorithme de hachage possède plusieurs caractéristiques :

  • Déterminisme : la même entrée donne toujours le même résultat.

  • Rapidité : le calcul du hash est très rapide, même pour de gros fichiers.

  • Résistance à l’inversion : On ne peut pas retrouver l’entrée à partir du hash. C’est une fonction à sens unique.

  • Résistance aux collisions : il est extrêmement difficile de trouver deux entrées différentes qui produisent le même hash.

  • Effet avalanche : une modification minuscule de l’entrée provoque un changement radical du hash.

Prenons l’analogie du blender : on met des fruits dedans et on obtient un jus (le hash). Impossible de reconstituer les fruits d’origine à partir du smoothie ! Et si l’on change un seul ingrédient, le goût change complètement.

blender

Attention, tous les algorithmes de hachage ne se valent pas. On recommande d’éviter MD5 ou SHA-1, d’ancienne génération, pour privilégier SHA-256, bcrypt ou Argon2. Précisons que MD5 (Message Direct 5) date du début des années 90. Développé par Ronald Rivestau MIT, il est un peu l’ancêtre des systèmes de hachage.

 

Utilité

Stockage des mots de passe : quand on crée un mot de passe sur un site, il n’est pas stocké en clair. C’est son hash qui l’est. Et lors d’une reconnexion, le mot de passe est à nouveau haché et le résultat est comparé au hash stocké. Même si la base de données est piratée, les attaquants ne récupèrent pas directement les mots de passe.

Vérification de l’intégrité des fichiers : quand on télécharge certains fichiers, on nous fournit un hash (exemple : SHA256). On peut recalculer le hash du fichier téléchargé : s’il correspond, le fichier est intact et sinon, il a été modifié ou corrompu.

Signature et sécurité : le hachage est aussi utilisé dans…

  • les signatures numériques,
  • les certificats SSL,
  • les blockchains.

Il sert alors à garantir que les données n’ont pas été altérées.

Mentionnons un intérêt juridique du hachage : son rôle dans la non-répudiation.

La non-répudiation est le fait qu’une personne ne puisse pas nier avoir effectué une action. Si l'on envoie un message, signe un document ou valide une transaction, on ne peut pas dire ensuite « ce n’était pas moi ». En informatique, la non-répudiation joue un rôle de preuve.

Elle ne repose pas sur un seul mécanisme, mais sur plusieurs éléments combinés :

  • L’identité : il faut savoir qui est l’auteur (certificat, clé publique…).

  • La preuve : il faut prouver que l’action a bien été faite.

  • L’intégrité : il faut garantir que le contenu n’a pas été modifié.

Dès lors, vous comprenez que le hachage est un élément indispensable à la non-répudiation (l’autre élément étant la signature, qui relève du chiffrement).

 

Hachage et chiffrement

Le hachage est un outil cryptographique distinct du chiffrement. Celui-ci consiste à transformer une donnée pour la rendre illisible… mais réversible. On peut chiffrer un message, puis le déchiffrer avec une clé.

Au contraire, le hachage est irréversible. Le but n’est pas la confidentialité mais la vérification.

Ainsi, s’il y a une clé dans le chiffrement, il n’y en a pas dans le hachage.

Les deux se complètent. Ainsi, un message peut être chiffré pour rester secret et son hash peut être utilisé pour vérifier qu’il n’a pas été modifié.

 

Salage

Si un attaquant possède une liste de mots de passe courants (attaque par dictionnaire), il peut calculer leurs hash et comparer avec ceux volés.

La solution est d’ajouter… du sel !

Le principe consiste à accoler une valeur aléatoire au mot de passe avant de le hacher. C’est ce qu’on appelle le salage.

Exemple :

  • mot de passe : azerty
  • sel : X9!k
  • hash : azertyX9!k

Deux utilisateurs avec le même mot de passe auront des empreintes différentes.

 

Hachage et Linux

Linux est un excellent terrain de jeu pour comprendre le hachage et vous pouvez vous entraîner avec ce système d’exploitation. Si à la base vous en utilisez un autre, vous pouvez installer un environnement virtuel (VirtualBox, par exemple) puis jouer avec Linux…

Exemple :

echo -n "bonjour" | sha256sum

Ici, c’est SHA- 256 qui a été utilisé. On obtient une longue chaîne hexadécimale suivie d’un tiret.

Modifions juste un peu notre entrée.

echo -n "Bonjour" | sha256sum

Malgré une modification mineure, le résultat est tout autre ! C’est l’effet avalanche.

 

hachage