Hachage

Le hachage est une opération mathématique déterministe qui transforme une entrée de taille arbitraire (texte, fichier, mot de passe) en une empreinte numérique de taille fixe, appelée empreinte de hachage (hash), unique, quasi-unique et irréversible.

« Hashing » est un anglicisme technique à éviter dans les textes francophones formels.

Imaginez une machine à empreintes digitales pour les données :

  • Vous y mettez n’importe quoi (un mot, un roman, une photo),
  • Elle en sort toujours une empreinte de même longueur (ex. : 64 caractères hexadécimaux),
  • Même une minuscule modification de l’entrée → empreinte totalement différente,
  • Impossible de retrouver l’original à partir de l’empreinte.

C’est comme mixer un fruit dans un blender : vous obtenez un jus uniforme, mais vous ne pouvez pas reconstituer la pomme.

Propriétés essentielles d’une bonne fonction de hachage

  1. Déterministe : même entrée → même hash, toujours.
  2. Rapide à calculer : efficace même pour de gros fichiers.
  3. Résistante aux collisions : quasi impossible de trouver deux entrées différentes avec le même hash.
  4. Sensibilité aux changements : bonjour et bonjouR → hashs complètement différents.
  5. Irréversible (à sens unique) : impossible de « dé-hacher ».

Usages courants

DomaineUtilisation
SécuritéStockage sécurisé des mots de passe (avec sel), signatures numériques
IntégritéVérifier qu’un fichier n’a pas été modifié (ex. : checksum SHA256 sur téléchargements)
Structures de donnéesTables de hachage (dictionnaires, ensembles) → accès ultra-rapide
BlockchainChaînage des blocs via hachage (ex. : Bitcoin utilise SHA-256)
Dé-duplicationIdentifier les fichiers identiques sans les comparer octet par octet

Exemples de fonctions de hachage

  • SHA-256 : standard sécurisé (utilisé par Bitcoin, TLS, etc.)
  • MD5 : obsolète (collisions faciles) → à éviter pour la sécurité
  • bcrypt, scrypt, Argon2 : spécifiques aux mots de passe (lents volontairement, avec sel)

Jamais : stocker un mot de passe en clair ou avec MD5/SHA1 seul.
Toujours : utiliser bcrypt ou Argon2 pour les mots de passe.

La fonction de hachage

Qu’est-ce que c’est ?

Une fonction de hachage est un algorithme mathématique qui prend une entrée de taille quelconque (un mot, un fichier, une phrase) et produit une sortie de taille fixe, appelée empreinte de hachage (hash), unique et irréversible.

Comment ça marche ?

Entrée : "Bonjour le monde"
          ↓
[Fonction de hachage : SHA-256]
          ↓
Sortie : a3f8d9e1c4b2f7a0e6d5c8b9a1f3e7d2c4b8a0e5f9c2d6b3a7f1e8c0d4b9a2f5

Propriétés clés

  • Déterministe : même entrée → même hash, toujours.
  • Sensible : modifier un seul caractère → hash complètement différent.
    • "mot"x7y2...
    • "mpt"k9z4...
  • Irréversible : impossible de retrouver "Bonjour" à partir du hash.
  • Taille fixe : que l’entrée fasse 1 octet ou 1 Go, le hash SHA-256 fera toujours 64 caractères hexadécimaux (256 bits).

Cas d’usage

  • Stockage sécurisé des mots de passe (avec sel),
  • Vérification de l’intégrité d’un fichier téléchargé,
  • Blockchain (chaque bloc contient le hash du précédent),
  • Détection de doublons (deux fichiers avec même hash = très probablement identiques).

La fonction de vérification du hachage

Qu’est-ce que c’est ?

Ce n’est pas une fonction différente : c’est le même algorithme de hachage, utilisé deux fois pour comparer :

  1. Le hash calculé localement (sur votre machine),
  2. Le hash fourni par la source (site web, développeur, dépôt).

Comment ça marche ? (exemple : téléchargement d’un logiciel)

  1. Source officielle publie :
    • Le fichier monlogiciel.zip
    • Son hash SHA-256 : a1b2c3...
  2. Vous téléchargez monlogiciel.zip
  3. Vous calculez vous-même le hash du fichier reçu
  4. Vous comparez :
    • Identiques → le fichier est authentique et intègre.
    • Différents → le fichier a été corrompu ou altéré (attaque Man-in-the-Middle, erreur de transfert, etc.).

C’est une preuve d’intégrité, pas d’authenticité — sauf si le hash est signé numériquement (ex. : avec GPG).

Bonnes pratiques de vérification

SituationBonne pratique
Téléchargement de logicielToujours vérifier le hash (SHA-256 ou mieux) fourni sur le site officiel
Mots de passeNe jamais comparer les mots de passe en clair → comparer les hashes (via password_verify() en PHP, etc.)
Sauvegardes critiquesGénérer un fichier .sha256 à côté de chaque sauvegarde
Échange de documents sensiblesPartager le hash par un canal séparé (ex. : Signal pour le fichier, email pour le hash)

Session et vérification d’authentification dans une application web : comment ça marche ?

Objectif

Permettre à un utilisateur de se connecter une fois, puis de naviguer librement dans l’application sans retaper son mot de passe à chaque page — tout en garantissant que c’est bien lui.

Le cycle complet : de la connexion à la vérification

1. L’utilisateur se connecte

  • Il envoie identifiant + mot de passe via un formulaire sécurisé (HTTPS).
  • Le serveur :
    • récupère le hash du mot de passe stocké en base,
    • vérifie avec Argon2/bcrypt si le mot de passe saisi correspond,
    • si OK → crée une session.

2. Création de la session

  • Le serveur génère un identifiant de session unique et aléatoire (ex. : a1b2c3d4e5f6...).
  • Il stocke côté serveur (en mémoire, base de données)
  • Il envoie un cookie au navigateur.

Pourquoi stocker côté serveur ?
Pour ne jamais exposer les données sensibles (comme l’ID utilisateur) dans le cookie.

3. Vérification sur chaque requête suivante

À chaque nouvelle page ou requête (ex. : accès au tableau de bord) :

  1. Le navigateur envoie automatiquement le cookie session_id.
  2. Le serveur :
    • recherche ce session_id dans son stockage,
    • vérifie :
      • qu’il existe,
      • qu’il n’est pas expiré (ex. : 30 minutes d’inactivité),
      • (optionnel) qu’il correspond à la même IP et user-agent (protection contre le vol de session),
    • si tout est OK → l’utilisateur est considéré comme authentifié.
  3. S’il est authentifié, l’application affiche la page protégée.
    Sinon → redirection vers la page de connexion.

syn. : Hachage cryptographique, Empreinte (de hachage)

Les contenus de définition restent publics. Les ressources (outils, grilles, supports) liées à cette fiche sont disponibles dans l’espace membre.