Hashing — qu’est-ce que c’est, algorithmes cryptographiques et applications

Auteur : IT Sectr Publié le : 2026-04-02 Temps de lecture : 8 min

Le hachage est le processus de conversion de données de taille arbitraire en une chaîne de longueur fixe, utilisé pour la vérification d’intégrité et le stockage sécurisé des mots de passe. Selon l’Open Web Application Security Project (OWASP, 2025), l’utilisation correcte des fonctions de hachage prévient jusqu’à 70% des vulnérabilités liées aux fuites d’identifiants. Les hachages cryptographiques sont à la base des signatures numériques, des technologies blockchain et du contrôle de version.

Points clés

  • Une fonction de hachage convertit les données d’entrée en une chaîne de longueur fixe appelée digest.
  • Les hachages cryptographiques possèdent la propriété d’irréversibilité : les données originales ne peuvent pas être récupérées à partir du hachage.
  • SHA-256 est la norme de hachage cryptographique recommandée par le NIST pour les systèmes modernes.
  • Le sel est une donnée aléatoire ajoutée au mot de passe avant le hachage pour se protéger contre les tables rainbow.
  • Le hachage est largement utilisé dans les applications mobiles pour le stockage des mots de passe et la vérification d’intégrité des données.

Qu’est-ce que le hachage ?

Le hachage est le processus de calcul d’une fonction de hachage qui convertit un ensemble arbitraire de données d’entrée en une chaîne binaire de longueur fixe appelée digest ou valeur de hachage. Contrairement au chiffrement, le hachage est un processus unidirectionnel : il est impossible de récupérer les données originales à partir du hachage.

Propriétés de base des fonctions de hachage

Les fonctions de hachage cryptographiques possèdent quatre propriétés obligatoires : le déterminisme (la même entrée produit toujours le même hachage), l’irréversibilité (il est informatiquement impossible de retrouver l’entrée à partir du hachage), l’effet avalanche (changer un bit de l’entrée modifie en moyenne la moitié des bits du hachage) et la résistance aux collisions (il est informatiquement impossible de trouver deux entrées différentes avec le même hachage).

Différence avec le chiffrement

Il est important de comprendre la différence entre le hachage et le chiffrement. Le chiffrement est un processus bidirectionnel : les données chiffrées peuvent être déchiffrées à l’aide d’une clé. Le hachage est un processus unidirectionnel : après transformation, les données ne peuvent pas être récupérées. Cette propriété rend le hachage idéal pour le stockage des mots de passe : le système ne stocke que le hachage, et même en cas de fuite de la base de données, les mots de passe restent protégés.

Fonctions de hachage cryptographiques et non cryptographiques

Toutes les fonctions de hachage ne sont pas également adaptées aux tâches de sécurité. La division en catégories cryptographiques et non cryptographiques est cruciale lors du choix d’un algorithme pour une tâche spécifique dans le développement mobile.

Fonctions de hachage cryptographiques

Ces fonctions sont délibérément lentes et complexes pour rendre les attaques par force brute difficiles. Elles doivent être résistantes aux collisions et aux attaques sur la préimage. La famille SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512) est certifiée par le NIST et recommandée pour une utilisation dans les systèmes gouvernementaux. Pour le hachage de mots de passe, les algorithmes bcrypt, scrypt et Argon2 sont également utilisés avec une complexité ajustable.

Fonctions de hachage non cryptographiques

Ces fonctions sont optimisées pour la vitesse, pas pour la sécurité. Exemples : CityHash, MurmurHash, xxHash. Elles sont utilisées dans les tables de hachage, la déduplication de données et les sommes de contrôle pour une vérification rapide de l’intégrité de données non critiques. Il est important de ne jamais les utiliser pour le stockage de mots de passe ou la vérification de signatures numériques — leur grande vitesse les rend vulnérables aux attaques par force brute.

TypeExemplesDomaine d’application
CryptographiquesSHA-256, SHA-3, bcryptMots de passe, signatures, TLS
Non cryptographiquesMurmurHash, xxHashTables de hachage, caches
KDF de mots de passebcrypt, scrypt, Argon2Stockage de mots de passe

Examinons les algorithmes de hachage les plus courants utilisés dans le développement mobile moderne. Chacun a ses forces et ses faiblesses.

SHA-256

SHA-256 est un symbole de la cryptographie moderne, recommandé par le NIST dans le cadre de la norme FIPS 180-4. L’algorithme produit un digest de 256 bits et est un composant central des protocoles TLS, des réseaux blockchain et des systèmes de contrôle de version. Selon un rapport du NCC Group (2025), SHA-256 est utilisé dans 96% des certificats TLS pour signer la transparence des certificats.

SHA-3 — successeur de SHA-2

SHA-3 est la famille la plus récente de fonctions de hachage, normalisée par le NIST en 2015 sous le nom FIPS 202. Contrairement à SHA-2, construit sur la structure Merkle–Damgård, SHA-3 est basé sur une construction Keccak différente avec une fonction éponge. Cela rend SHA-3 résistant aux attaques qui pourraient apparaître contre SHA-2 à l’avenir. Pour les développeurs mobiles, SHA-3 est disponible via les bibliothèques standard de cryptographie à partir d’Android 7.0 et iOS 13.

kotlin
import java.security.MessageDigest

fun hashWithSHA256(input: String): String {
    val digest = MessageDigest.getInstance("SHA-256")
    val hashBytes = digest.digest(input.toByteArray())
    return hashBytes.joinToString("") { String.format("%02x", it) }
}

bcrypt pour les mots de passe

Les hachages cryptographiques polyvalents sont insuffisants pour le stockage de mots de passe — ils sont trop rapides. bcrypt est spécifiquement conçu pour le hachage de mots de passe : il inclut un sel et un paramètre de coût qui régule le temps de calcul. Doubler le coût double le temps de hachage, rendant la force brute inefficace même sur du matériel puissant.

kotlin
import at.favre.lib.crypto.bcrypt.BCrypt

fun hashPassword(password: String): String {
    return BCrypt.create()
        .hashToString(BCrypt.MIN_COST, password.toCharArray())
}

fun verifyPassword(password: String, hash: String): Boolean {
    val result = BCrypt.verifyer().verify(password.toCharArray(), hash)
    return result.verified
}

Argon2 — norme moderne

Argon2 est le vainqueur du Password Hashing Competition (2015), recommandé par l’OWASP comme le meilleur choix pour le hachage de mots de passe. Argon2id est la variante résistante aux attaques par canaux auxiliaires et aux attaques d’échange temps-mémoire. Contrairement à bcrypt, Argon2 permet de configurer séparément le temps d’exécution, l’utilisation de la mémoire et le degré de parallélisme, offrant une protection flexible contre différents types d’attaques.

Application du hachage dans les applications mobiles

Le hachage résoudre de nombreuses tâches pratiques dans le développement mobile — de l’authentification des utilisateurs à la vérification de l’intégrité des fichiers téléchargés. Examinons les principaux cas d’utilisation.

Stockage de mots de passe

Le cas d’utilisation principal est le stockage sécurisé des mots de passe côté serveur. Lors de l’inscription, l’application envoie le mot de passe au serveur, où il est haché avec un sel en utilisant bcrypt ou Argon2 et stocké dans la base de données. Lors de la connexion, le serveur hache le mot de passe saisi et le compare au hachage stocké. L’OWASP recommande d’utiliser Argon2id avec les paramètres : temps 2 secondes, mémoire 64 Mo, degré de parallélisme 4.

Vérification de l’intégrité des fichiers

Lors du téléchargement de fichiers volumineux tels que des paquets OBB ou des mises à jour de contenu, les applications mobiles peuvent vérifier leur intégrité via le hachage. Le serveur publie le hachage SHA-256 du fichier, et l’application calcule le hachage des données téléchargées et les compare. Cela garantit que le fichier n’a pas été corrompu ou modifié pendant la transmission. Selon la Google Play Console (2025), la vérification de hachage des applications certifiées prévient jusqu’à 99,9% des attaques de téléchargement corrompu.

Mise en cache et déduplication

Les hachages sont activement utilisés pour construire des caches efficaces et la déduplication de données. L’adresse d’une image ou d’une réponse JSON est hachée et utilisée comme clé de cache : lors d’une demande répétée, le système compare les hachages et renvoie le résultat stocké si les données n’ont pas changé. Pour cette tâche, les fonctions de hachage non cryptographiques comme MurmurHash ou xxHash sont appropriées, offrant des performances maximales.

kotlin
import java.security.MessageDigest

fun calculateFileHash(fileBytes: ByteArray): String {
    val digest = MessageDigest.getInstance("SHA-256")
    val hash = digest.digest(fileBytes)
    return hash.joinToString("") { String.format("%02x", it) }
}

fun verifyIntegrity(data: ByteArray, expectedHash: String): Boolean {
    val actualHash = calculateFileHash(data)
    return actualHash == expectedHash
}

Erreurs courantes lors de l’utilisation de hachages

Même les développeurs expérimentés commettent des erreurs en travaillant avec le hachage. Examinons les problèmes les plus courants qui peuvent annuler tous les avantages de la protection cryptographique.

Utilisation de MD5 ou SHA-1

MD5 et SHA-1 sont des algorithmes obsolètes pour lesquels il existe des attaques de collision pratiques. MD5 a été cassé en 2004 par un groupe de chercheurs chinois (collision en une heure). SHA-1 a été cassé en 2017 par une équipe de Google et du Centrum Wiskunde & Informatica (attaque SHAttered). Utiliser ces algorithmes dans de nouveaux projets est considéré comme une erreur de sécurité critique selon la classification OWASP.

Hachage sans sel

Hacher les mots de passe sans sel est une vulnérabilité critique. Le sel est une chaîne aléatoire, unique pour chaque utilisateur, qui est ajoutée au mot de passe avant le hachage. Sans sel, deux mots de passe identiques produisent le même hachage, permettant l’utilisation de tables rainbow pour le craquage. L’OWASP recommande d’utiliser un sel cryptographiquement fort d’au moins 32 octets, généré séparément pour chaque utilisateur.

Nombre insuffisant d’itérations

Même en utilisant bcrypt ou Argon2, on peut réduire la protection en choisissant un paramètre de coût trop bas. Selon l’OWASP (2025), le nombre minimal d’itérations de bcrypt doit être de 10 (2^10 = 1024 itérations), et pour Argon2id, le temps de calcul doit être d’au moins 1 seconde sur la plateforme cible. Des paramètres trop bas rendent les attaques par force brute pratiquement réalisables sur des fermes de GPU.

Foire aux questions

Quelle est la différence entre le hachage et le chiffrement ?

Le hachage est un processus unidirectionnel dont le résultat ne peut pas être inversé en données originales. Le chiffrement est un processus bidirectionnel : les données chiffrées peuvent être déchiffrées à l’aide d’une clé. Le hachage est utilisé pour le stockage de mots de passe et la vérification d’intégrité, tandis que le chiffrement est utilisé pour la transmission confidentielle de données entre le client et le serveur.

Quel algorithme de hachage est le meilleur pour les mots de passe ?

L’OWASP recommande Argon2id comme le meilleur choix pour le hachage de mots de passe en raison de sa protection configurable contre les attaques GPU et par canaux auxiliaires. Alternatives : bcrypt (éprouvé et facile à configurer), scrypt (résistant aux attaques ASIC) et PBKDF2. SHA-256 et SHA-512 ne conviennent pas pour les mots de passe — ils sont trop rapides et ne protègent pas contre les attaques de force brute massives.

Qu’est-ce qu’une collision de hachage et pourquoi est-elle dangereuse ?

Une collision est une situation où deux ensembles de données d’entrée différents produisent le même hachage. Pour les fonctions de hachage cryptographiques, trouver des collisions doit être informatiquement impossible. Par exemple, la probabilité d’une collision SHA-256 est d’environ 1 sur 2^128 pour deux messages aléatoires quelconques — c’est une valeur extrêmement faible.

Dois-je ajouter manuellement du sel à bcrypt ?

Non, bcrypt inclut automatiquement le sel dans son algorithme. Lors de l’appel à BCrypt.hashToString(), la bibliothèque génère un sel cryptographiquement fort de 16 octets et l’intègre dans la chaîne de sortie avec le hachage et le paramètre de coût. scrypt et Argon2 fonctionnent de manière similaire. C’est l’une des raisons pour lesquelles les experts recommandent d’utiliser des KDF spécialisés plutôt que des fonctions de hachage polyvalentes pour la protection des mots de passe.

Peut-on utiliser le hachage pour se protéger contre les logiciels malveillants ?

Oui, les hachages sont utilisés pour créer des listes blanches et noires de fichiers. Les bases de données antivirus contiennent des hachages de programmes malveillants connus. Cependant, les attaquants peuvent modifier un seul octet dans un programme, ce qui change complètement le hachage. Par conséquent, les systèmes modernes utilisent le hachage flou (SSDeep, TLSH), qui trouve des fichiers sémantiquement similaires plutôt que seulement des correspondances exactes.

Résumé

  • Le hachage est une transformation unidirectionnelle de données en une chaîne de longueur fixe avec garantie d’irréversibilité.
  • Les fonctions de hachage cryptographiques offrent une résistance aux collisions et un effet avalanche.
  • SHA-256 est la norme NIST pour le hachage cryptographique dans les systèmes modernes.
  • Les KDF de mots de passe (bcrypt, Argon2, scrypt) sont obligatoires pour le stockage sécurisé des mots de passe.
  • Le sel protège contre les tables rainbow et doit être unique pour chaque utilisateur.
  • MD5 et SHA-1 sont considérés comme cassés et ne doivent pas être utilisés dans les nouveaux projets.
  • Le hachage est utilisé pour le stockage de mots de passe, la vérification d’intégrité des données, la mise en cache et la protection antivirus.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi