SHA-256 est une fonction de hachage cryptographique de la famille SHA-2, conçue par la National Security Agency des États-Unis et normalisée par le National Institute of Standards and Technology. Elle convertit toute donnée d'entrée en une sortie fixe de 256 bits, appelée hachage ou condensé, qui est une chaîne hexadécimale de 64 caractères. SHA-256 est une fonction à sens unique, ce qui signifie qu'elle ne peut pas être inversée pour retrouver l'entrée originale, et elle est déterministe, donc la même entrée produit toujours le même hachage. Cet algorithme est essentiel pour la vérification de l'intégrité des données, les signatures numériques, et il est fondamental pour des systèmes critiques, y compris la preuve de travail de Bitcoin et les jeux équitables vérifiables, ce qui en fait un élément clé de la sécurité numérique moderne au Canada et dans le monde.
Qu'est-ce que SHA-256 et comment ça fonctionne
SHA-256 est un membre de la famille SHA-2 des fonctions de hachage cryptographiques, introduite en 2001 comme successeur plus robuste de l'algorithme SHA-1 antérieur. Le « 256 » désigne la taille de sa sortie, qui est toujours un condensé de 256 bits, équivalent à une chaîne de 64 caractères lorsqu'elle est représentée en notation hexadécimale. Cette fonction n'est pas un algorithme de chiffrement, car le chiffrement est conçu pour être réversible avec une clé, tandis que le hachage est un processus à sens unique par conception. Il n'y a pas de clé et aucune méthode pour déchiffrer un hachage pour retrouver les données d'entrée originales. SHA-256 traite les entrées à travers une série d'étapes bien définies, commençant par le bourrage des données à une longueur spécifique. Le message bourré est ensuite divisé en blocs de 512 bits, chacun subissant 64 tours d'une fonction de compression qui mélange les données de manière approfondie en utilisant des opérations bit à bit, l'addition modulaire et des constantes prédéfinies. L'algorithme utilise huit variables de travail de 32 bits, initialisées à des valeurs spécifiques dérivées des racines carrées de nombres premiers, qui sont mises à jour à chaque tour. La valeur de hachage finale est la concaténation de ces huit variables après que tous les blocs de message ont été traités, ce qui donne une empreinte unique pour les données d'entrée.
Une propriété cruciale de SHA-256 est l'effet d'avalanche, où même un changement minuscule dans le message d'entrée produit un hachage de sortie complètement différent et apparemment aléatoire. Par exemple, ajouter un seul point à la fin d'une phrase change environ la moitié des bits dans le hachage SHA-224 résultant, une variante étroitement liée. Cette sortie déterministe mais imprévisible la rend idéale pour vérifier l'intégrité des données, car toute altération du fichier ou du message original sera immédiatement détectable par une non-concordance du hachage. La fonction est construite en utilisant la construction de Merkle, Damgård à partir d'une fonction de compression à sens unique, qui elle-même utilise la structure de Davies, Meyer d'un chiffrement par blocs spécialisé. Sa structure est pratiquement identique à celle de SHA-512, une autre fonction SHA-2, différant principalement par la taille des mots et le nombre de tours. SHA-256 opère sur des mots de 32 bits, tandis que SHA-512 utilise des mots de 64 bits et 80 tours, mais leur logique algorithmique de base est la même.

Historique et normalisation
La famille SHA-2, y compris SHA-256, a été publiée pour la première fois en 2001 dans l'ébauche FIPS PUB 180-2 par le National Institute of Standards and Technology. Après un examen public, FIPS PUB 180-2 est devenu la norme officielle Secure Hash Standard en août 2002, remplaçant la norme précédente FIPS PUB 180-1 de 1995. Cette norme initiale incluait SHA-1 aux côtés des nouveaux algorithmes SHA-256, SHA-384 et SHA-512. Une mise à jour importante a eu lieu en février 2004 avec un avis de changement qui a ajouté SHA-224, une version tronquée de SHA-256 conçue pour correspondre à la longueur de clé du Triple DES à deux clés. La norme a été révisée à nouveau sous le nom de FIPS PUB 180-3 en octobre 2008, incorporant formellement SHA-224 mais sans apporter de changements fondamentaux aux algorithmes de base. L'objectif principal de cette mise à jour était de déplacer les recommandations de sécurité et les conseils d'utilisation vers des publications spéciales distinctes, à savoir SP 800-107 et SP 800-57.
En janvier 2011, le NIST a publié SP800-131A, qui a mandaté une transition dans l'utilisation du gouvernement fédéral américain d'un minimum de sécurité de 80 bits, fourni par SHA-1, à une sécurité de 112 bits, fournie par SHA-2. SHA-1 était autorisé jusqu'à la fin de 2013, SHA-2 devenant l'exigence minimale à partir de 2014. La norme la plus récente, FIPS PUB 180-4, a été publiée en mars 2012 et a ajouté les fonctions de hachage SHA-512/224 et SHA-512/256. Elle a également supprimé une restriction sur le bourrage des données d'entrée, permettant le calcul du hachage de se produire simultanément avec la génération du contenu, par exemple à partir d'un flux vidéo en temps réel. En mars 2023, le NIST a annoncé sa décision de réviser FIPS 180-4 en FIPS 180-5, qui supprimera entièrement la spécification SHA-1 et incorporera les conseils de SP 800-107. Malgré la sélection d'une nouvelle fonction de hachage, SHA-3, dans une compétition distincte du NIST en 2012, SHA-2 et SHA-3 sont distincts et SHA-3 n'est pas dérivé de SHA-2.
- 2001 : La famille SHA-2 est publiée pour la première fois dans l'ébauche FIPS PUB 180-2.
- Août 2002 : FIPS PUB 180-2 devient la norme officielle.
- Février 2004 : La variante SHA-224 est ajoutée via un avis de changement.
- Octobre 2008 : FIPS PUB 180-3 est publié.
- Janvier 2011 : NIST SP800-131A impose le passage de SHA-1 à SHA-2 d'ici 2014.
- Mars 2012 : FIPS PUB 180-4 est publié, ajoutant SHA-512/224 et SHA-512/256.
- Mars 2023 : Le NIST annonce la révision FIPS 180-5 pour supprimer SHA-1.
Applications et utilisations
SHA-256 est implémenté dans une vaste gamme d'applications et de protocoles de sécurité largement utilisés qui sont essentiels au Canada et dans le monde. Il est utilisé dans les protocoles Transport Layer Security (TLS) et Secure Sockets Layer (SSL) qui sécurisent la navigation Web, ainsi que dans PGP pour le chiffrement des courriels, SSH pour l'accès à distance sécurisé, S/MIME pour la messagerie sécurisée, et IPsec pour la sécurité des réseaux. L'algorithme est utilisé pour l'authentification des paquets logiciels Debian et fait partie de la norme DKIM pour la signature des messages courriel. Dans les télécommunications, HMAC-SHA-256 sert de fonction de dérivation de clé dans les réseaux mobiles 4G et 5G pour générer des clés cryptographiques, comme défini dans les spécifications techniques 3GPP. Pour la sécurité des mots de passe, les distributions Linux utilisent souvent SHA-512, une autre variante SHA-2, pour le hachage sécurisé des mots de passe, bien que l'utilisation de SHA-256 seul pour le stockage des mots de passe soit fortement déconseillée en raison de sa vitesse, qui aide les attaquants.
L'une des applications les plus importantes de SHA-256 est dans la technologie blockchain et les cryptomonnaies. Bitcoin utilise SHA-256 de manière extensive pour vérifier les transactions et calculer la preuve de travail qui sécurise le réseau. La demande computationnelle du minage de Bitcoin a conduit au développement de circuits intégrés spécifiques à l'application (ASIC) conçus uniquement pour accélérer les calculs SHA-256. Cette montée en puissance du minage ASIC a également incité d'autres cryptomonnaies à adopter des schémas de preuve de travail différents, comme scrypt, pour maintenir la décentralisation. Au-delà de la finance, SHA-256 est essentiel pour les systèmes « équitables vérifiables » dans les jeux en ligne et les applications. Ces systèmes utilisent SHA-256 dans un schéma d'engagement par hachage pour permettre aux utilisateurs de vérifier cryptographiquement que les résultats du jeu n'ont pas été manipulés après coup, remplaçant la confiance aveugle par des mathématiques vérifiables. L'algorithme est également utilisé dans DNSSEC pour sécuriser le système de noms de domaine.

Analyse de sécurité et propriétés cryptographiques
En 2026, SHA-256 est considéré comme sécurisé contre toutes les attaques cryptographiques pratiques connues, y compris celles des ordinateurs quantiques. Pour une fonction de hachage avec un condensé de L bits, une attaque par force brute sur la préimage, qui cherche un message produisant un hachage donné, nécessite en moyenne 2^L évaluations. Pour SHA-256, cela représente 2^256 opérations, un nombre si vaste qu'il est considéré comme informatiquement infaisable. Une attaque par collision, qui cherche deux messages différents produisant le même hachage, est plus facile en raison du paradoxe des anniversaires, nécessitant environ 2^(L/2) évaluations, soit 2^128 pour SHA-256. Bien que ce soit également un nombre astronomiquement grand, une analyse accrue pendant la compétition SHA-3 a produit de nouvelles attaques académiques sur des versions à tours réduits de SHA-2. Par exemple, des chercheurs ont démontré des attaques par pseudo-collision s'étendant jusqu'à 52 tours sur SHA-256 et 57 tours sur SHA-512, mais celles-ci ne menacent pas les fonctions complètes de 64 tours et 80 tours, respectivement. Aucune attaque par collision ou préimage pratique contre l'algorithme SHA-256 complet n'existe.
SHA-256 est une fonction de hachage cryptographique car elle atteint trois propriétés de sécurité clés. Premièrement, elle est résistante à la préimage, ce qui signifie qu'il est infaisable de trouver une entrée qui correspond à une sortie spécifique. Deuxièmement, elle est résistante à la seconde préimage, rendant infaisable la recherche d'une entrée différente qui correspond à la même valeur qu'une entrée connue. Troisièmement, elle est résistante aux collisions, car trouver deux entrées distinctes avec le même hachage est infaisable. Le contraste de sécurité avec son prédécesseur, SHA-1, est frappant. Des collisions pratiques pour SHA-1 ont été démontrées en 2017, conduisant à sa dépréciation. Les grandes entreprises technologiques comme Google, Microsoft et Mozilla ont supprimé le support de SHA-1 dans les certificats TLS entre 2014 et 2017. Concernant l'informatique quantique, la sécurité de SHA-256 n'est pas significativement diminuée. L'algorithme de Shor ne s'applique pas aux fonctions de hachage. L'algorithme de Grover peut accélérer les recherches par force brute, mais seulement de manière quadratique, réduisant la résistance effective de SHA-256 à la préimage de 256 bits à environ 128 bits, ce qui reste sécurisé pour un avenir prévisible.
SHA-256 dans Bitcoin et les cryptomonnaies
Dans Bitcoin, SHA-256 est l'algorithme de hachage central utilisé pour la validation des transactions et la génération de blocs via le mécanisme de preuve de travail. Cependant, Bitcoin n'utilise généralement pas une seule passe de SHA-256. La méthode principale est HASH256, également appelée double-SHA256 ou SHA-256d. Cela implique de faire passer les données à travers l'algorithme SHA-256, puis de prendre le hachage résultant et de le faire passer à nouveau à travers SHA-256. Ce double hachage est utilisé pour calculer les hachages de blocs, les identifiants de transaction (TXID) et dans la structure de l'arbre de Merkle qui résume toutes les transactions dans un bloc. La justification de Satoshi Nakamoto pour choisir le double-SHA256 pourrait avoir été la prudence contre de potentielles attaques par extension de longueur, bien que de telles attaques ne soient pas une préoccupation pour l'utilisation spécifique de Bitcoin. Les mises à jour modernes de Bitcoin, comme Segregated Witness, favorisent maintenant le simple SHA-256 lorsque c'est possible, par exemple lors du hachage des scripts dans les sorties Pay-to-Witness-Script-Hash (P2WSH).
Une autre méthode de hachage courante dans Bitcoin est HASH160, qui combine SHA-256 avec une autre fonction de hachage, RIPEMD-160. Cela implique de hacher les données avec SHA-256, puis de hacher ce résultat avec RIPEMD-160. HASH160 est utilisé principalement pour construire les anciennes adresses Bitcoin, comme celles des scripts Pay-to-Public-Key-Hash (P2PKH) et Pay-to-Script-Hash (P2SH). RIPEMD-160 produit un condensé plus court de 160 bits, rendant les adresses plus compactes tout en maintenant la sécurité. Le choix de RIPEMD-160 plutôt que SHA-1, qui produit également des sorties de 160 bits, s'est avéré judicieux, car SHA-1 a depuis subi des collisions. L'énorme puissance computationnelle du réseau Bitcoin, dédiée à la résolution des énigmes SHA-256, souligne la résilience de l'algorithme. Il a été calculé qu'utiliser toute la puissance du réseau Bitcoin pour trouver une collision SHA-256 prendrait un temps inimaginable, 39 fois l'âge actuel de l'univers, mettant en évidence sa sécurité pratique.

Implémentation et validation au Canada
Au Canada, les implémentations des fonctions cryptographiques approuvées par FIPS comme SHA-256 peuvent être officiellement validées par le programme de validation des modules cryptographiques (CMVP). Ce programme est géré conjointement par le National Institute of Standards and Technology (NIST) des États-Unis et l'Établissement de la sécurité des communications (CSE) du Canada. La validation formelle CMVP est exigée par la loi pour certaines applications, en particulier celles impliquant la protection d'informations non classifiées sensibles pour un usage gouvernemental. Pour les développeurs et les organisations cherchant une vérification informelle, le NIST fournit des vecteurs de test à télécharger pour vérifier l'exactitude de leurs implémentations SHA-256. Cependant, cette auto-vérification ne remplace pas le processus de validation formelle CMVP lorsqu'il est légalement requis. En décembre 2013, il y avait plus de 1300 implémentations validées de SHA-256 dans le monde, dont seulement une petite fraction capable de traiter des messages où la longueur en bits n'est pas un multiple de huit.
L'adoption de SHA-256 et de la famille SHA-2 plus large n'a pas été immédiate après leur publication, même si elles offraient une meilleure sécurité que le vulnérable SHA-1. La lenteur initiale de l'adoption était due à des facteurs comme le manque de support sur les anciens systèmes d'exploitation tels que Windows XP SP2 et un manque d'urgence perçue avant que des collisions pratiques de SHA-1 ne soient trouvées. La migration a été accélérée par des directives des organismes de normalisation et des entreprises technologiques. Le NIST a recommandé que les agences gouvernementales américaines passent de SHA-1 à SHA-2 ou SHA-3 pour toutes les applications dès que possible. Ces conseils ont influencé les politiques de sécurité informatique du gouvernement canadien et du secteur privé également. Dans le secteur public, l'adhésion à des normes internationalement reconnues comme FIPS est courante pour assurer l'interopérabilité et la sécurité dans les communications transfrontalières et la protection des données.
Systèmes équitables vérifiables et SHA-256
L'aléatoire équitable vérifiable est un processus algorithmique qui permet aux utilisateurs de vérifier l'équité d'un résultat randomisé, comme dans un jeu en ligne, en temps réel en utilisant la cryptographie. SHA-256 est la fonction de hachage la plus courante au cœur de ces systèmes. Le principe de base est de remplacer la confiance aveugle dans un serveur central par des mathématiques vérifiables. Le processus implique généralement trois variables : une graine serveur, une graine client et un nonce. Avant qu'un tour de jeu ne commence, le casino ou le fournisseur de services génère une graine serveur aléatoire et fournit à l'utilisateur son hachage SHA-256. Ce hachage agit comme un engagement, verrouillant la valeur de la graine avant toute action de l'utilisateur. L'utilisateur fournit une graine client, souvent générée par son navigateur, et un nonce, qui est un nombre séquentiel qui s'incrémente avec chaque pari.
Ces trois entrées sont combinées et traitées à travers un algorithme de hachage, souvent HMAC-SHA-256, pour produire une chaîne hexadécimale finale. Cette chaîne est ensuite convertie en résultat de jeu, comme un tirage de carte ou un lancer de dé. Après la fin du tour, le service révèle la graine serveur originale, non hachée. L'utilisateur peut alors vérifier indépendamment le résultat en prenant la graine serveur révélée, la graine client et le nonce, en les exécutant à travers le même algorithme de hachage, et en confirmant que la sortie correspond au résultat du jeu qu'il a observé. Cela prouve deux choses : que la graine serveur utilisée était bien celle engagée avant le tour, et que la combinaison spécifique des entrées a produit le résultat déclaré. Toute divergence indique une falsification. Cette technologie est une norme dans les jeux et applications basés sur la blockchain où la transparence est primordiale, fournissant un environnement sans confiance sans avoir besoin d'audits tiers.
Idées fausses courantes et utilisation appropriée
Une idée fausse répandue est que SHA-256 est adapté pour stocker des mots de passe de manière sécurisée. C'est incorrect et potentiellement dangereux. SHA-256 est conçu pour être informatiquement rapide, ce qui est idéal pour vérifier l'intégrité des données et les signatures numériques, mais c'est la mauvaise propriété pour le hachage des mots de passe. Un attaquant qui obtient une base de données de hachages de mots de passe SHA-256 peut utiliser du matériel moderne pour essayer des milliards de suppositions de mots de passe par seconde dans une attaque par force brute. Le stockage sécurisé des mots de passe nécessite des fonctions de hachage de mots de passe dédiées et lentes, qui sont délibérément gourmandes en ressources pour contrer de telles attaques. Ces fonctions, comme bcrypt, scrypt, Argon2 ou PBKDF2, incorporent un sel aléatoire unique pour chaque mot de passe, assurant que des mots de passe identiques se transforment en valeurs de hachage différentes, et elles sont coûteuses en calcul ou difficiles en mémoire.
Un autre point de confusion est la différence entre le hachage et le chiffrement. SHA-256 est une fonction de hachage, pas un algorithme de chiffrement. Le chiffrement est un processus bidirectionnel. Le texte chiffré peut être déchiffré en texte clair en utilisant la bonne clé. Le hachage est un processus à sens unique. Un hachage ne peut pas être inversé pour révéler l'entrée. Il n'y a pas de clé de déchiffrement pour un hachage. Cette distinction fondamentale signifie que SHA-256 est utilisé pour la vérification et l'empreinte, pas pour garder les données secrètes. Enfin, bien que SHA-256 soit sécurisé, il fait partie d'un écosystème plus large. Pour les signatures numériques et les certificats, la sécurité dépend également de l'algorithme de clé publique sous-jacent. La migration vers la cryptographie post-quantique se concentre sur le remplacement des algorithmes de clé publique vulnérables comme RSA et ECC, tandis que les fonctions de hachage de confiance comme SHA-256 restent une base pour les nouvelles normes, comme l'algorithme de signature basé sur le hachage SLH-DSA.
Questions fréquentes
Qu'est-ce que SHA-256 ?
SHA-256 est une fonction de hachage cryptographique de la famille SHA-2, conçue par la National Security Agency des États-Unis et normalisée par le NIST en 2001. Elle prend n'importe quelle donnée d'entrée et produit une sortie fixe de 256 bits, appelée condensé, qui apparaît comme une chaîne hexadécimale de 64 caractères. C'est une fonction à sens unique, ce qui signifie que le hachage ne peut pas être inversé pour récupérer l'entrée originale. SHA-256 est utilisé pour vérifier l'intégrité des données, dans les signatures numériques, et est l'algorithme de base derrière la preuve de travail de Bitcoin.
Comment fonctionne SHA-256 dans Bitcoin ?
Dans Bitcoin, SHA-256 est utilisé principalement à travers une méthode appelée HASH256 ou double-SHA256, où les données sont hachées deux fois consécutivement. Cela est utilisé pour calculer les hachages de blocs, les identifiants de transaction et la racine de Merkle qui résume les transactions. Les mineurs rivalisent pour trouver un hachage pour un nouveau bloc qui répond à une cible de difficulté spécifique, un processus appelé preuve de travail. La sécurité et la nature déterministe de l'algorithme assurent que les transactions ne peuvent pas être modifiées et que la blockchain reste évidente de toute falsification.
SHA-256 est-il sécurisé en 2026 ?
En 2026, SHA-256 est considéré comme sécurisé contre toutes les attaques pratiques connues. Aucune méthode réalisable n'existe pour inverser le hachage ou trouver deux entrées différentes qui produisent la même sortie (une collision). Il est également considéré comme résistant aux ordinateurs quantiques. Bien que les ordinateurs quantiques puissent théoriquement accélérer certaines attaques en utilisant l'algorithme de Grover, la sécurité effective reste forte. Cela contraste avec SHA-1, qui a été cassé et déprécié après que des collisions pratiques aient été trouvées en 2017.
Qu'est-ce qu'un système équitable vérifiable utilisant SHA-256 ?
Un système équitable vérifiable utilise SHA-256 pour permettre aux utilisateurs de vérifier cryptographiquement l'équité d'un résultat aléatoire, comme dans un jeu en ligne. Le fournisseur de services s'engage sur une graine serveur secrète en donnant à l'utilisateur son hachage SHA-256 avant le jeu. Après le jeu, la graine serveur est révélée. L'utilisateur peut ensuite la combiner avec sa graine client et un nonce, les hacher avec SHA-256, et confirmer que le résultat correspond au résultat du jeu, prouvant qu'il n'a pas été manipulé.
SHA-256 peut-il être utilisé pour le stockage des mots de passe ?
Non, SHA-256 seul ne devrait pas être utilisé pour le stockage des mots de passe. Il est conçu pour être rapide, ce qui le rend vulnérable aux attaques par force brute si un attaquant obtient les hachages de mots de passe. Le stockage sécurisé des mots de passe nécessite des fonctions de hachage dédiées et lentes, comme bcrypt, scrypt, Argon2 ou PBKDF2. Ces fonctions incorporent un sel unique pour chaque mot de passe et sont coûteuses en calcul, rendant les attaques considérablement plus difficiles et longues.
Comment SHA-256 est-il validé pour utilisation au Canada ?
Les implémentations de toutes les fonctions de sécurité approuvées par FIPS, y compris SHA-256, peuvent être officiellement validées par le programme CMVP. Ce programme est géré conjointement par le National Institute of Standards and Technology (NIST) et l'Établissement de la sécurité des communications (CSE) du Canada. Pour une vérification informelle, un paquet pour générer un grand nombre de vecteurs de test est disponible en téléchargement auprès du NIST. Cependant, cette vérification informelle ne remplace pas la validation formelle CMVP, qui est exigée par la loi pour certaines applications.
Sources et lectures complémentaires
- SHA-2 (Wikipedia) en.wikipedia.org
- SHA256 for provably-fair game hashes 002 steemit.com
- What is SHA- 256? encryptionconsulting.com
- Provably Fair Randomness: A Technical Guide chain.link
- Hash Function | Fingerprints for Data learnmeabitcoin.com
- What Is SHA-256? A Complete Guide (2026) millionminer.com
Cet article explique le fonctionnement des choses et ne constitue pas un conseil financier, fiscal ou juridique. Les règles, plafonds et taux changent, vérifiez donc les chiffres à jour auprès de l'Agence du revenu du Canada, de votre province ou de votre institution financière avant d'agir.