Une empreinte SHA-256 est une valeur de hachage de 256 bits (soit 64 caractères hexadécimaux) produite par la fonction de hachage cryptographique SHA-256 (Secure Hash Algorithm 256 bits). Elle sert à identifier de manière unique et à vérifier l’intégrité d’un fichier ou d’un message.
Elle possède trois propriétés fondamentales
- Unicité : Le moindre changement dans les données d’entrée (même un seul bit) produit une empreinte complètement différente.
- Irréversibilité : Il est impossible de reconstituer les données originales à partir de l’empreinte.
- Déterminisme : Les mêmes données produisent toujours la même empreinte.
Par exemple, l’empreinte SHA-256 du mot « thèse » est 5d7df63d74998fqfd63b9ff79dae8cd3aaache9d41f73ef98b71916bf6226e04, tandis que celle du mot « thèses » est 5d44f3c27e1b0294955b478c77c22e0f0c1068a3a953486a4b7622593899e81a.
SHA-256 est vulnérable aux attaques par extension de longueur (length-extension) s’il est utilisé seul pour de l’authentification. La solution est simple : l’utiliser dans un HMAC (Hash-based Message Authentication Code), comme HMAC-SHA-256.
Nuances
Le terme « empreinte » est souvent utilisé comme synonyme de « hash » ou « digest », mais il existe des nuances importantes.
- Hash
- Usage typique : terme générique pour toute sortie d’une fonction de hachage.
- Exemple d’algorithme : SHA-256, MurmurHash.
- Digest
- Usage typique : hash cryptographique utilisé pour vérifier l’intégrité des données.
- Exemple d’algorithme : MD5, SHA-1, SHA-256.
- Fingerprint
- Usage typique : hash utilisé pour identifier de manière unique une donnée (clé SSH, certificat).
- Exemple d’algorithme : SHA-256 tronqué.
Autres algorithmes d’empreintes
- MD5 et SHA-1
- Statut : Obsolètes.
- Raison : Des attaques par collision permettent de générer deux contenus différents avec la même empreinte. Ils doivent être retirés de toute utilisation de sécurité.
- SHA-3 et BLAKE2/BLAKE3
- Statut : Modernes et recommandés.
- Caractéristiques : Offrent des performances et une sécurité comparables, voire supérieures, à SHA-256. BLAKE3 est particulièrement rapide.
- Empreintes perceptuelles (Perceptual Hashing)
- Spécificité : Contrairement aux empreintes cryptographiques qui changent au moindre bit modifié, ces empreintes sont conçues pour être robustes aux modifications mineures d’un contenu (compression, redimensionnement).
- Usage : Identification d’images ou de sons similaires, par exemple pour détecter des contenus protégés par le droit d’auteur.
À quoi ça sert ?
Les empreintes cryptographiques sont essentielles pour :
- Vérifier l’intégrité : S’assurer qu’un fichier téléchargé n’a pas été altéré ou corrompu.
- Sécuriser les signatures électroniques : On signe l’empreinte d’un document, pas le document entier, ce qui est plus rapide et plus sûr.
- Identifier des données : Les empreintes de clés SSH ou de certificats permettent de les reconnaître de manière fiable.
- Sécuriser la blockchain : Le minage et la validation des blocs reposent sur le calcul d’empreintes SHA-256 répondant à des critères précis.
Analogie
Imaginez que vous voulez vérifier qu’un fichier est authentique. L’empreinte est comme une empreinte digitale : elle est unique à ce fichier, impossible à deviner à partir d’une autre, et si le fichier est modifié, même d’un seul caractère, l’empreinte devient totalement différente. C’est une carte d’identité numérique pour vos données.