0Pricing
Security+ Academy · Leçon

Hachage et intégrité des données

Apprenez comment SHA-256, MD5 et HMAC produisent des condensés de longueur fixe permettant de vérifier que les données n’ont pas été modifiées pendant leur transmission ou leur stockage.

Hachage et intégrité des données est une leçon Security+ Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Security+ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Security+ Academy comprend 4 leçons au total.

Qu'est-ce qu'une fonction de hachage ?

Une fonction de hachage cryptographique est un algorithme mathématique qui prend une donnée d'entrée de taille quelconque et produit un output de longueur fixe appelé hash, condensat ou empreinte. Les fonctions de hachage sont à sens unique : à partir d'un hash, il doit être infaisable en pratique de déterminer l'entrée d'origine. Elles sont déterministes : la même entrée produit toujours le même hash. Les fonctions de hachage sont au fondement de la vérification de l'intégrité des données, des signatures numériques, du stockage des mots de passe et de nombreux autres mécanismes de sécurité.

Propriétés des fonctions de hachage sécurisées

Une fonction de hachage cryptographique sécurisée doit posséder quatre propriétés essentielles. Résistance à la préimage : à partir d'un output de hachage, il doit être infaisable en pratique de trouver une entrée qui le produise. Résistance à la seconde préimage : à partir d'une entrée, il doit être infaisable de trouver une autre entrée ayant le même hash. Résistance aux collisions : il doit être infaisable de trouver deux entrées différentes produisant le même output de hachage. Effet d'avalanche : la modification d'un seul bit de l'entrée provoque un output de hachage complètement différent, ce qui permet de détecter toute falsification.

# Avalanche effect demonstration
echo -n 'Hello' | sha256sum
# 185f8db32...  (completely different when one char changes)
echo -n 'Hello!' | sha256sum
# 334d016f7...  (entirely different hash)

# Same input ALWAYS produces same hash (deterministic)
echo -n 'Security+' | sha256sum
echo -n 'Security+' | sha256sum
# Both outputs are identical

MD5 : compromis et obsolète

MD5 (Message Digest 5) produit un hash de 128 bits et a été largement utilisé par le passé. Cependant, des chercheurs ont démontré des attaques par collision contre MD5 en 2004 : il est possible de trouver deux entrées différentes qui produisent le même hash. Cela est catastrophique pour la vérification de l'intégrité : un attaquant pourrait remplacer un fichier malveillant par un fichier ayant le même hash MD5 que l'original. MD5 est totalement compromis pour la sécurité cryptographique et ne doit pas être utilisé pour vérifier l'intégrité, les signatures numériques ou le hachage des mots de passe. On le rencontre encore parfois pour des sommes de contrôle sans enjeu de sécurité (vérification de fichiers anciens), ce qui reste acceptable uniquement pour détecter une corruption accidentelle.

Famille SHA : SHA-1, SHA-256, SHA-3

La famille Secure Hash Algorithm (SHA) constitue l'ensemble de fonctions de hachage le plus important pour Security+. SHA-1 (160 bits) a été la norme pendant des années, mais a été compromis par une attaque pratique par collision en 2017 (le projet SHAttered de Google) ; il est désormais obsolète. SHA-256 (qui appartient à la famille SHA-2 et produit un output de 256 bits) est actuellement la norme du secteur pour les signatures numériques, les certificats TLS et la vérification de l'intégrité des fichiers. SHA-3 (Keccak) est l'algorithme alternatif de NIST ; il résiste aux attaques visant la structure de SHA-2, même si SHA-256 reste le choix dominant pour la plupart des applications.

# Common hash computations
echo -n 'password123' | sha256sum
# a665a4592...64 hex chars = 256 bits

echo -n 'password123' | sha512sum  
# b109f3bb...128 hex chars = 512 bits (SHA-512)

# File integrity check
sha256sum /path/to/downloaded_file.iso > file.sha256
sha256sum -c file.sha256
# file.iso: OK

Fonctions de hachage pour le stockage des mots de passe

Stocker des mots de passe en clair n'est jamais acceptable. Lorsqu'un utilisateur crée un mot de passe, un hash est stocké dans la base de données à la place du mot de passe lui-même. Lorsque l'utilisateur se connecte, le mot de passe saisi est haché et comparé au hash Stored. Cependant, SHA-256 standard est trop rapide pour le stockage des mots de passe : les attaquants utilisent des GPU pour tester des milliards de hash par seconde contre des bases de données de mots de passe volées. Les fonctions de hachage des mots de passe spécialement conçues à cet effet, comme bcrypt, PBKDF2 et Argon2, ajoutent un coût de calcul (facteurs de travail) et des exigences en mémoire qui rendent le cassage massif irréaliste.

# bcrypt hash example (Python-style pseudocode)
import bcrypt
password = b'mySecretPassword'
# Hash with work factor of 12 (2^12 = 4096 iterations)
hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))
# Stored in DB: $2b$12$H0qS/LkPkAiH8KlxJb3lFuK...

# Verify (never compare raw hashes for bcrypt)
bcrypt.checkpw(password, hashed)  # Returns True

Salage : déjouer les tables arc-en-ciel

Une table arc-en-ciel est une table de recherche précalculée qui associe des mots de passe courants à leurs hash, ce qui permet à un attaquant de rechercher instantanément un hash et de retrouver le mot de passe d'origine. Pour déjouer les tables arc-en-ciel, les hash de mots de passe doivent être salés. Un salt est une valeur aléatoire ajoutée au mot de passe avant le hachage ; elle rend le hash de chaque utilisateur unique, même lorsque deux utilisateurs ont le même mot de passe. Le salt est stocké avec le hash (il n'a pas besoin d'être secret). Même si un attaquant possède toute votre base de données de mots de passe, les tables arc-en-ciel précalculées sont inutiles, car chaque hash a utilisé un salt différent.

# Salt demonstration
# Without salt: same password = same hash (rainbow table attack works)
# SHA256('password123') = always the same hash

# With salt: same password + random salt = unique hash
# SHA256('password123' + 'aBc8xZ') = unique hash for this user
# SHA256('password123' + 'mK2pYq') = completely different hash

# The salt is stored in the database alongside the hashed value
# Format: $salt$hash or combined as in bcrypt output

HMAC : ajouter l'authentification au hachage

HMAC (Hash-based Message Authentication Code) est une construction qui utilise une fonction de hachage avec une clé secrète pour produire un code d'authentification. Contrairement à un hash simple, un HMAC ne peut être calculé et vérifié que par les parties qui connaissent la clé secrète. Il assure ainsi à la fois l'intégrité (détection des modifications) et l'authentification (preuve que le message provient d'une personne possédant la clé). HMAC-SHA256 est largement utilisé pour l'authentification des API (signature des requêtes d'API), les jetons JWT et les opérations MAC de TLS. Il empêche un attaquant qui intercepte un message de le remplacer par une autre version forgée.

# Compute HMAC-SHA256 with OpenSSL
openssl dgst -sha256 -hmac 'my-secret-api-key' -hex api_request.json
# Output: HMAC-SHA256(api_request.json)= 3d4e2f...

# Only someone with 'my-secret-api-key' can generate or verify this HMAC
# Used in AWS Signature V4 for API authentication
# Used in JWT HS256 algorithm for token integrity

Fonctions de hachage dans les signatures numériques

Les fonctions de hachage jouent un rôle central dans les signatures numériques. Lors de la signature d'un document volumineux, vous ne chiffrez pas l'intégralité du document avec la clé privée, car ce serait extrêmement lent. À la place, vous : (1) calculez le hash du document (rapidement, pour obtenir un condensat de petite taille fixe), puis (2) signez le petit hash avec la clé privée. La signature est simplement un hash chiffré. La vérification suit le même principe : déchiffrez la signature pour obtenir le hash, hachez le document indépendamment, puis comparez les deux résultats. SHA-256 est obligatoire dans tous les certificats PKI modernes ; SHA-1 est interdit dans les nouveaux certificats.

Surveillance de l'intégrité des fichiers (FIM)

File Integrity Monitoring (FIM) utilise des fonctions de hachage pour détecter les modifications non autorisées de fichiers système critiques. Lors de la création de la référence, l'outil FIM calcule le hash de tous les fichiers surveillés et stocke ces hash de manière sécurisée. Périodiquement (ou en continu), il recalcule le hash des fichiers et les compare à la référence. Toute différence indique qu'un fichier a été modifié, potentiellement par un logiciel malveillant ou à la suite d'une action d'un administrateur non autorisé. Les outils FIM comme Tripwire, AIDE (Linux) et le propre outil de vérification de l'intégrité de Windows utilisent des hash SHA-256. FIM est exigé par des référentiels de conformité comme PCI-DSS pour protéger les environnements contenant des données de titulaires de cartes.

# AIDE (Advanced Intrusion Detection Environment) - Linux FIM
# Initialize baseline database
aide --init
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

# Check for changes (run via cron daily)
aide --check
# Output shows any files that were added, changed, or deleted
# File: /etc/passwd changed
# MD5 : old_hash != new_hash

Sommes de contrôle et hash cryptographiques

Il est important de distinguer les sommes de contrôle des hash cryptographiques. Les sommes de contrôle comme CRC32 sont conçues pour détecter une corruption accidentelle des données pendant leur transmission : elles sont rapides et simples, mais peuvent être facilement falsifiées par un attaquant. Les hash cryptographiques (SHA-256) sont conçus pour résister aux collisions et révéler toute altération, même face à une manipulation hostile. Utilisez des sommes de contrôle lorsque vous devez seulement vérifier qu'un téléchargement n'a pas été corrompu pendant son transfert ; utilisez des hash cryptographiques lorsque vous devez vérifier qu'un fichier n'a pas été délibérément altéré par un adversaire.

Attaques par collision de hash en pratique

Les attaques par collision de hash ont des conséquences concrètes. En 2017, des chercheurs ont créé deux fichiers PDF différents ayant le même hash SHA-1, démontrant ainsi que des certificats SHA-1 pouvaient être falsifiés. En 2008, des chercheurs ont utilisé des collisions MD5 pour créer un faux certificat CA qui semblait légitime. Ces attaques expliquent pourquoi les navigateurs rejettent les certificats MD5 et SHA-1 et pourquoi les autorités de certification doivent utiliser au minimum SHA-256. Comprendre les attaques par collision vous aide à expliquer les décisions d'abandon de certains algorithmes et pourquoi l'argument « mais il produit toujours un hash » ne suffit pas à justifier l'utilisation d'algorithmes compromis.

Vérification rapide

Testez votre compréhension des concepts de CompTIA Security+ (SY0-701) présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que les fonctions de hachage produisent des condensats de longueur fixe pour vérifier l'intégrité ; MD5 et SHA-1 sont compromis et obsolètes ; SHA-256 est la norme actuelle ; le salage déjoue les attaques par tables arc-en-ciel ; et HMAC ajoute l'authentification au hachage grâce à une clé secrète partagée. Nous allons ensuite étudier l'échange de clés et le chiffrement hybride.

Questions Fréquemment Posées

La leçon « Hachage et intégrité des données » est-elle gratuite ?

Oui — le texte complet de « Hachage et intégrité des données » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Security+ Academy, passe à CoddyKit PRO. Le cours Security+ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Hachage et intégrité des données » ?

Apprenez comment SHA-256, MD5 et HMAC produisent des condensés de longueur fixe permettant de vérifier que les données n’ont pas été modifiées pendant leur transmission ou leur stockage. Tu pratiques Security+ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Security+ Academy ?

Aucune expérience préalable n'est requise. Security+ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Hachage et intégrité des données » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Security+ Academy ?

Oui. Chaque leçon Security+ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Algorithmes de chiffrement symétrique
  2. Chiffrement asymétrique et paires de clés
  3. Hachage et intégrité des données
  4. Échange de clés et chiffrement hybride
← Retour à Security+ Academy