Skip to content
BTC2H₿₿2H
BlogChapitresTéléchargerCommanderÀ proposFAQ
BTC Price
In Circulation
Block Time
Tx Fee

Bitcoin: Zero to Hero

A free, open book for everyone—read online, download, or order a physical copy.

Explore

  • Blog
  • Read Online
  • Download PDF
  • Order Book

Legal

  • About
  • FAQ
© 2026 Bitcoin: Zero to Hero. All rights reserved.
  1. Accueil
  2. Blog
  3. Casser SHA-256 Bitcoin avec Length Extension
SHA-256

Casser SHA-256 Bitcoin avec Length Extension

Publié le May 12, 202616 min de lecture
MH
AuthorBio.writtenBy Mohamed Habbat · AuthorBio.role

Dans cet article

  • Résumé
  • Ce que signifie vraiment « SHA-256 a été cassé »
  • Comment fonctionne Merkle-Damgård
  • Comment fonctionne le length extension
  • Reproduire l'attaque avec hash_extender
  • Pourquoi SHA256d immunise Bitcoin contre le length extension
  • HMAC, le correctif pour tous les autres
  • Pourquoi Bitcoin est resté sur SHA-256 et non SHA-3
  • Quantique, Grover et SHA-256
  • Où SHA-256 échoue sur les mots de passe
  • Où SHA-256 vit à l'intérieur de Bitcoin
  • Le verdict 2026, par cas d'usage
  • Pour aller plus loin
  • Avertissement
Dans cet article
  • Résumé
  • Ce que signifie vraiment « SHA-256 a été cassé »
  • Comment fonctionne Merkle-Damgård
  • Comment fonctionne le length extension
  • Reproduire l'attaque avec hash_extender
  • Pourquoi SHA256d immunise Bitcoin contre le length extension
  • HMAC, le correctif pour tous les autres
  • Pourquoi Bitcoin est resté sur SHA-256 et non SHA-3
  • Quantique, Grover et SHA-256
  • Où SHA-256 échoue sur les mots de passe
  • Où SHA-256 vit à l'intérieur de Bitcoin
  • Le verdict 2026, par cas d'usage
  • Pour aller plus loin
  • Avertissement

Résumé

Une attaque fonctionnelle contre SHA-256 existe. Je l'ai reproduite sur une VM jetable en moins de dix minutes. Elle ne touche pas Bitcoin. L'attaque est le length extension contre la construction Merkle-Damgård, et le double-SHA256 de Bitcoin a été publié comme défense six ans avant le bloc genesis. En dehors de Bitcoin, le correctif canonique est HMAC (RFC 2104). L'algorithme de Grover réduit SHA-256 de 2²⁵⁶ à 2¹²⁸, ce qui reste effectivement infini.


Ce que signifie vraiment « SHA-256 a été cassé »

Toutes les quelques semaines, un nouveau titre annonce que SHA-256 a été cassé. Les forums s'emballent. Un fil Reddit sur r/cryptography (thread 15jpuzg) et une longue discussion sur Hacker News (item 36058754) tournent autour du même malentendu. Il existe une attaque spécifique contre SHA-256 dans un contexte spécifique, et le reste d'internet l'aplatit en « Bitcoin est en danger ».

Ce n'est pas le cas. Je travaille dans l'espace de l'auto-conservation crypto, et chaque fois que ce titre circule, quelqu'un me transfère le fil en demandant si son cold storage est en danger. Son cold storage n'est pas en danger. C'est l'hypothèse sur la manière dont SHA-256 est utilisé ailleurs sur internet qui devrait l'inquiéter.

L'attaque s'appelle une attaque length extension. Elle est réelle. Elle est reproductible en moins de dix minutes sur un ordinateur portable. Bitcoin la neutralise par conception. Toute autre affirmation de « SHA-256 cassé » en 2026 se réduit soit au length extension (que Bitcoin gère), soit à une cryptanalyse académique partielle sur certains tours (qui n'a pas produit d'exploit pratique contre SHA-256 complet), soit à une mauvaise utilisation de SHA-256 pour le stockage de mots de passe, qui est un défaut de conception plutôt qu'un défaut d'algorithme.

La démonstration ci-dessous montre ce que le length extension fait réellement, pourquoi la construction SHA256d de Bitcoin le rend impossible contre la chaîne de hachage Bitcoin, à quoi ressemble la mitigation canonique dans le code non-Bitcoin (HMAC), et le seul cas d'usage où SHA-256 est véritablement non sécurisé : le stockage de mots de passe. À la fin, vous reproduisez l'attaque contre un serveur de démonstration délibérément vulnérable avec un outil Python, puis vous observez la même attaque échouer lorsque le serveur passe à la construction de Bitcoin.


Comment fonctionne Merkle-Damgård

SHA-256 appartient à la famille SHA-2, dont tous les membres partagent la même conception générale appelée construction Merkle-Damgård. La comprendre prend environ une minute, et cette minute rend le length extension évident.

Un hachage Merkle-Damgård prend un long message et le découpe en blocs de taille fixe (64 octets pour SHA-256). Il commence par un état initial fixe (le vecteur d'initialisation), puis exécute une fonction de compression sur chaque bloc qui mélange ce bloc dans l'état. Après le dernier bloc, l'algorithme émet directement l'état comme condensat de hachage.

Cette dernière phrase est tout le problème. Le condensat final du hachage est l'état interne à la fin du calcul. Si vous connaissez Hash(message), vous connaissez l'état interne de la fonction de compression après qu'elle a traité message. Vous pouvez reprendre depuis là.

C'est ce qu'exploite le length extension. Connaissant Hash(secret || message), vous détenez l'état auquel la fonction de compression est arrivée après avoir consommé secret || message. Vous reprenez le calcul depuis cet état, ajoutez les données supplémentaires que vous souhaitez, et produisez un hachage valide. Vous n'apprenez jamais secret.

SHA-3 (Keccak) ne fonctionne pas ainsi. Sa construction en éponge n'émet qu'une troncature de l'état interne, pas l'état lui-même. SHA-512/256, BLAKE2 et BLAKE3 utilisent des astuces de troncature similaires. Ces algorithmes sont immunisés contre le length extension par conception. SHA-256, l'algorithme sur lequel tourne Bitcoin, ne l'est pas.

C'est le fait structurel derrière chaque titre « SHA-256 est cassé ». Voici maintenant l'attaque elle-même en code.


Comment fonctionne le length extension

L'exemple motivant canonique, utilisé dans l'article Wikipedia sur les attaques length extension et reproduit dans chaque manuel de cryptographie depuis 2009, fonctionne ainsi.

Un serveur web signe les requêtes API en calculant SHA-256(secret || params). Il publie la signature avec la requête :

GET /api?user=alice&role=user&sig=a3f1...

Le serveur valide en recalculant SHA-256(secret || "user=alice&role=user") et en le comparant à sig. La construction semble correcte à quiconque n'a pas étudié les règles de rembourrage Merkle-Damgård, c'est-à-dire la plupart des développeurs qui livrent du code en 2026.

L'attaquant capture une paire valide (params, sig). Il devine la longueur en octets de secret (typiquement 16, 32 ou 64, donc il balaye les trois). Il calcule les octets de rembourrage Merkle-Damgård que SHA-256 aurait ajoutés à secret || params avant l'étape de compression finale. Le rembourrage est déterministe (RFC 6234 §4.1). Il initialise alors un nouvel état SHA-256 depuis la sig capturée, car la signature capturée EST l'état interne de la fonction de compression après avoir consommé secret || params || (auto-rembourrage). Depuis cet état il continue le calcul SHA-256, en introduisant &role=admin ou toute extension choisie, et émet le nouvel état comme signature falsifiée.

L'attaquant envoie :

GET /api?user=alice&role=user[octets de rembourrage]&role=admin&sig=<falsifié>

Le serveur recalcule SHA-256(secret || "user=alice&role=user[rembourrage]&role=admin") et arrive exactement à la signature falsifiée, parce que la construction commute avec l'extension de l'attaquant. L'attaquant est désormais admin.

L'exploit public le plus célèbre de ce schéma est la falsification de l'API Flickr en 2009 par Thai Duong et Juliano Rizzo, où la même construction permettait la suppression non autorisée de photos via l'API Flickr. La technique est plus ancienne (Daniel Bleichenbacher en a discuté dans les années 1990) mais le cas Flickr en a fait un incontournable des syllabus de tests de pénétration.

Il faut une paire valide (params, sig) et la longueur en octets du secret. C'est toute la surface d'attaque. SHA-256 n'est pas cassé dans un sens algorithmique. Le développeur a simplement utilisé la mauvaise construction.


Reproduire l'attaque avec hash_extender

Vous pouvez reproduire l'attaque sur votre propre machine en moins de dix minutes. La démonstration complète étape par étape se trouve dans le bloc de données structurées HowTo en haut de cette page. La version résumée, avec les dépôts de sources primaires.

L'outil d'attaque Python eid3t1c/Hash_Extender automatise la falsification length extension pour MD5, SHA-1, SHA-256 et SHA-512. L'implémentation C canonique antérieure par iagox86/hash_extender (la publication originale de 2014) fait le même travail et est l'outil cité dans la plupart des tutoriels length extension depuis 2014. Les deux fonctionnent.

Associez-le à magodo/sha256-length-extension-attack-demo, un serveur Flask délibérément vulnérable qui signe les chaînes de requête avec SHA-256(secret || params). Démarrez le serveur, capturez un token, exécutez hash_extender, soumettez la falsification. Le serveur l'accepte. Vous êtes désormais admin sur un serveur web dont vous n'avez jamais appris le secret.

Puis changez une ligne du serveur de démonstration. Remplacez SHA-256(secret || params) par SHA-256(SHA-256(secret || params)) et relancez l'attaque. La falsification échoue. Le second hachage prend la sortie complète de 256 bits comme entrée, et l'attaquant n'a aucun état interne sur lequel s'appuyer. Cette seule modification reproduit ce que fait Bitcoin sur chaque hachage de bloc, chaque TXID, chaque racine de Merkle.

Une implémentation de référence en Rust de la même attaque figure dans l'article 2026 de Sylvain Kerkour, utile si vous souhaitez suivre la logique de récupération d'état au niveau des octets dans un langage typé. Pour la reproduction la plus simple, les outils Python ci-dessus sont plus rapides.

J'ai exécuté cela de bout en bout la première fois que j'ai travaillé sur cet article. Observer la falsification réussir puis la regarder échouer contre SHA-256(SHA-256(...)) est plus convaincant que n'importe quelle explication de Merkle-Damgård sur la page. Si vous voulez une intuition cryptographique plutôt qu'un vocabulaire cryptographique, c'est l'attaque la moins coûteuse que vous puissiez exécuter.


Pourquoi SHA256d immunise Bitcoin contre le length extension

Bitcoin calcule SHA-256(SHA-256(x)), appelé SHA256d, pour chaque emplacement où un hachage apparaît dans le protocole critique du consensus. Les en-têtes de blocs alimentant la preuve de travail du minage. Les identifiants de transactions. Les racines de Merkle qui agrègent les transactions à l'intérieur d'un bloc. Le hachage de bloc que les mineurs recherchent, un SHA256d qui doit être inférieur à la cible de difficulté.

Ferguson et Schneier ont proposé la construction double-hachage dans Practical Cryptography (2003) comme défense canonique contre les attaques length extension sur SHA-2. L'argument est court. Le SHA-256 externe est calculé sur la sortie complète de 256 bits du SHA-256 interne. Un attaquant qui connaît SHA256d(secret || params) ne connaît pas l'état interne de la fonction de compression externe de façon exploitable. Pour récupérer cet état, il devrait inverser le SHA-256 externe, ce qui est une attaque de préimage à environ 2²⁵⁶ opérations. C'est la garantie de sécurité.

Une réponse fréquemment citée sur crypto.stackexchange.com retrace la justification depuis Tahoe-LAFS (qui a adopté SHA256d en 2006) jusqu'à l'adoption par Bitcoin en 2009. Le livre blanc dit simplement « SHA-256 » et la liste de diffusion de cryptographie est silencieuse sur le choix de la construction, donc nous ne pouvons pas prouver que Satoshi a explicitement choisi SHA256d pour neutraliser le length extension. Nous savons que Ferguson-Schneier avait publié la construction six ans auparavant, que Tahoe-LAFS l'utilisait déjà pour les hachages de capacités du système de fichiers pour cette raison exacte, et que Bitcoin a été livré avec SHA256d dès le premier jour. Tirez vos propres conclusions. Le fait technique reste valable dans tous les cas : la chaîne de hachage de Bitcoin est immune au length extension, et l'attaque qui produit les titres « SHA-256 est cassé » ne s'applique à aucune couche du protocole Bitcoin.


HMAC, le correctif pour tous les autres

La plupart des développeurs de logiciels n'écriront jamais SHA256d. Ils écriront HMAC.

HMAC (RFC 2104) est l'enveloppe universelle immune au length extension pour tout hachage Merkle-Damgård. Étant donné une fonction de hachage H (SHA-256, SHA-1, MD5, HMAC fonctionne pour tous), HMAC est défini comme :

HMAC(key, message) = H( (key ⊕ opad) || H( (key ⊕ ipad) || message ) )

opad et ipad sont des motifs d'octets fixes (0x5c5c5c... et 0x363636...). Le hachage interne absorbe le message. Le hachage externe hache la sortie interne avec une dérivée de clé différente.

La construction ressemble à SHA256d mais est plus flexible. HMAC prend une clé comme paramètre de premier ordre, supporte tout hachage sous-jacent, et s'intègre proprement avec les piles de fonctions de dérivation de clés. C'est la norme IETF depuis que RFC 2104 a été publié en 1997, et chaque bibliothèque cryptographique traite HMAC-SHA256 comme une primitive.

Les deux endroits où vous le rencontrez le plus souvent en production sont TLS 1.3, qui utilise HMAC-SHA256 à l'intérieur de son calendrier de clés HKDF (RFC 8446 §7.1), et les tokens JWT avec l'algorithme HS256, qui sont signés HMAC-SHA256(secret, header.payload). AWS SigV4 et WebAuthn s'appuient tous deux sur la même primitive pour la même raison.

Si votre code calcule hash(secret + message) n'importe où en dehors de Bitcoin, remplacez-le par HMAC. Le coût est une invocation de hachage supplémentaire. Le gain de sécurité est une immunité totale au length extension.


Pourquoi Bitcoin est resté sur SHA-256 et non SHA-3

SHA-3 (Keccak), standardisé par le NIST en 2015 (FIPS-202), est construit sur une conception fondamentalement différente appelée construction en éponge, qui est immune au length extension par construction. Pas besoin de double-hachage. Pas besoin d'enveloppe HMAC. Les hachages SHA-3 peuvent être utilisés comme MACs directement (parfois appelés KMAC) et restent sécurisés.

Bitcoin fonctionne toujours sur SHA-256 en 2026 pour des raisons qui relèvent davantage de la dépendance au chemin que de considérations cryptographiques. Changer l'algorithme de hachage nécessite un hard fork. Chaque nœud complet, chaque mineur, chaque portefeuille, chaque explorateur de blocs, chaque BIP, chaque schéma de signature touche SHA-256 quelque part. Une migration coordonnée est techniquement possible mais politiquement catastrophique. Des dizaines de milliards de dollars de matériel ASIC existent spécifiquement pour calculer SHA-256 au débit maximum, et remplacer l'algorithme rend toute la base de minage obsolète du jour au lendemain. SHA-256 est également plus rapide que SHA-3 sur les CPU modernes et dramatiquement plus rapide sur les ASICs, ce qui importe pour la vérification sur chaque nœud complet.

L'argument cryptographique pour rester en place est plus simple. SHA256d résout déjà la seule faiblesse structurelle de SHA-256 qui compte dans le modèle de menace de Bitcoin. Il n'y a aucun problème existant que la migration résoudrait. SHA-3 aurait été un choix défendable en 2009. Le coût de la migration en 2026 dépasse largement l'avantage.


Quantique, Grover et SHA-256

Les ordinateurs quantiques ne cassent pas SHA-256.

L'algorithme quantique pertinent contre une fonction de hachage est l'algorithme de Grover, qui apporte une accélération quadratique sur la recherche non structurée. Pour SHA-256, cela réduit la résistance aux préimages de 2²⁵⁶ opérations classiques à 2¹²⁸ opérations quantiques. 2¹²⁸ est encore effectivement infini, bien au-delà de tout matériel quantique plausible prévu pour les prochaines décennies.

L'algorithme de Shor est celui à craindre réellement, et il ne touche pas SHA-256. Shor apporte une accélération exponentielle sur le problème du logarithme discret, ce qui casse ECDSA (le schéma de signature de Bitcoin) en temps polynomial sur un ordinateur quantique suffisamment grand. Le risque quantique de Bitcoin réside dans les signatures, pas dans le hachage.

Le tableau quantique 2026 pour Bitcoin spécifiquement, incluant BIP-360, BIP-361 et le cadre de migration PACTs, fait l'objet de deux articles distincts sur ce site. Voir BIP-360/361 : Bitcoin résistant aux quantiques et Informatique quantique, Bitcoin et l'annonce de Google en 2026. La version courte : SHA-256 va bien. ECDSA nécessite une migration. Les délais pour les deux sont séparés de décennies.

La menace « harvest-now-decrypt-later » s'applique uniquement aux signatures ECDSA de Bitcoin. Elle ne s'applique pas à SHA-256 de façon significative, car une primitive résistante à 2¹²⁸ est non récupérable, que l'on moissonne ou non.


Où SHA-256 échoue sur les mots de passe

Le seul contexte où « SHA-256 n'est pas sécurisé » est justifié est le stockage des mots de passe.

Cela n'a rien à voir avec le length extension. SHA-256 est trop rapide. Un GPU grand public moderne calcule des milliards de hachages SHA-256 par seconde, et Hashcat publie les benchmarks ouvertement. Pour un mot de passe haché SHA-256 non salé de moins d'environ 15 caractères aléatoires, un attaquant disposant d'un seul GPU grand public force tout l'espace en quelques heures.

Le stockage des mots de passe nécessite une fonction de hachage délibérément lente et gourmande en mémoire, de sorte qu'un GPU n'ait aucun avantage sur un CPU. Utilisez Argon2id (RFC 9106, recommandé par OWASP en 2026), ou scrypt ou bcrypt si vous êtes bloqué sur une pile plus ancienne.

Si vous trouvez SHA-256 utilisé pour le stockage de mots de passe dans du code 2026, le correctif consiste à migrer toute la base d'utilisateurs (typiquement en rehachant à la prochaine connexion). N'ajoutez pas de défenses contre le length extension. Le vrai problème est la vitesse de brute force, et le length extension n'a aucun rapport avec ça.


Où SHA-256 vit à l'intérieur de Bitcoin

Pour Bitcoin spécifiquement, SHA-256 (presque toujours comme SHA256d) apparaît dans plusieurs rôles distincts :

RôleCe qu'il fait
Preuve de travail du minageLes mineurs cherchent un nonce tel que SHA256d(en-tête de bloc) soit inférieur à la cible
Identifiants de transactionsLes TXIDs sont le SHA256d de la transaction
Racine de MerkleAgrège tous les TXIDs dans un bloc
Hachage de blocSHA256d de l'en-tête de bloc
Adresse P2PKHRIPEMD160(SHA-256(clé publique)) puis encodage base58check
Dérivation BIP-39SHA-256 utilisé dans PBKDF2-HMAC-SHA512 pour la dérivation graine-vers-clé

Chacun de ces rôles représenterait une perte catastrophique d'intégrité si SHA-256 était cassé. Aucun d'eux n'est en danger pratique en 2026. Les attaques pratiques connues (length extension, collisions partielles sur 31 des 64 tours, brute force GPU rapide sur de petits espaces d'entrée) n'atteignent pas l'algorithme SHA-256 complet dans aucun rôle qui compte dans Bitcoin.

La comparaison pertinente est SHA-1, qui a été cassé en pratique par l'attaque de collision SHAttered de Google en 2017 contre SHA-1 complet. SHA-256 n'est pas dans cet état et n'a aucune trajectoire cryptanalytique à court terme dans cette direction.


Le verdict 2026, par cas d'usage

La chaîne tient. Chaque utilisation critique du consensus de SHA-256 dans Bitcoin passe par SHA256d, que j'ai déjà montré être immune au length extension. Il n'existe aucune attaque pratique de préimage sur SHA-256 complet en 2026, aucune attaque pratique de collision, et rien à l'horizon cryptanalytique qui s'en approche. Le minage Bitcoin, les TXIDs, les racines de Merkle, les adresses P2PKH et P2WPKH, la dérivation de graine BIP-39 via PBKDF2-HMAC-SHA512 : tout est sécurisé.

En dehors de Bitcoin, partout où SHA-256 est derrière une enveloppe HMAC (signature d'enregistrement TLS 1.3, JWT-HS256, AWS SigV4), il est également sécurisé. SHA-256 brut utilisé pour l'adressage de contenu ou comme pré-hachage pour les signatures numériques ou les vérifications d'intégrité d'archives à long terme convient parfaitement, parce que le length extension est non pertinent quand il n'y a pas de secret ni de MAC.

Deux schémas continuent d'échouer en 2026 et vous devriez les corriger dès que vous les voyez. Les MACs maison de la forme Hash(secret || message) sont trivialement falsifiés par length extension. Passez à HMAC. Le stockage de mots de passe SHA-256 brut, salé ou non, est forcé par un seul GPU parce que SHA-256 est trop rapide. Passez à Argon2id.

Les deux échecs sont des échecs de construction, pas des échecs d'algorithme. SHA-256 lui-même fait toujours le travail qu'il fait depuis 2001.


Pour aller plus loin

Cet article fait partie d'un petit groupe sur btc2h.com qui examine les primitives cryptographiques dont Bitcoin dépend réellement, et ce que la recherche actuelle signifie pour chacune d'elles. Trois lectures complémentaires :

  • BIP-360 / BIP-361 : Le plan de migration Bitcoin résistant aux quantiques couvre le tableau quantique côté signatures, là où réside le vrai risque à long terme.
  • Informatique quantique, Bitcoin et l'annonce de Google en 2026 met en contexte le cycle d'actualités sur le matériel quantique 2026.
  • Tutoriel btcrecover 2026 montre pourquoi la vitesse de brute force GPU de SHA-256 est la bonne réponse pour la récupération de mots de passe de portefeuilles et la mauvaise pour le stockage de mots de passe.

Bibliographie de sources primaires pour cet article (vérifiées accessibles au 2026-05-12 sauf mention contraire) :

  • Wikipedia, Attaque par extension de longueur
  • Wikipedia, SHA-2
  • RFC 6234, Algorithmes de hachage sécurisés américains (spécification de rembourrage SHA-256)
  • RFC 2104, HMAC Keyed-Hashing for Message Authentication
  • crypto.stackexchange.com Q779, Pourquoi Bitcoin utilise-t-il le double SHA-256 ?
  • Reddit r/cryptography, fil length extension SHA-256
  • Hacker News fil 36058754
  • arXiv 2406.20072, cryptanalyse SHA-256 sur tours partiels (affirmation : résultats sur tours partiels, aucune attaque pratique sur tours complets. Vérifier contre l'abstract de l'article avant de citer les bornes numériques.)
  • Kerkour, Breaking SHA-2 length extension attacks in practice with Rust
  • eid3t1c/Hash_Extender (outil d'attaque Python)
  • magodo/sha256-length-extension-attack-demo (serveur Flask vulnérable)
  • sjlombardo length-extension gist (2012)
  • Ferguson & Schneier, Practical Cryptography (2003), la publication canonique de SHA256d

Avertissement

Cet article est un contenu éducatif destiné aux détenteurs et développeurs Bitcoin. Il ne constitue pas un conseil juridique, financier ou d'ingénierie cryptographique. Les déploiements cryptographiques réels nécessitent une revue formelle par des spécialistes qualifiés. N'implémentez pas de code critique pour la sécurité à partir d'un article de blog. Pour les systèmes en production gérant des secrets, utilisez des bibliothèques éprouvées (libsodium, OpenSSL, Bouncy Castle) plutôt que de créer vos propres primitives. Pour les questions juridiques ou de conformité concernant l'agilité cryptographique sous FINMA, GDPR ou NIS2, consultez un conseil qualifié.

Questions fréquentes

SHA-256 est-il toujours sécurisé en 2026 ?+
Oui, pour les usages qui comptent. Au 2026-05-12 aucune attaque pratique de préimage, de collision ou de seconde préimage contre SHA-256 n'est connue. La seule faiblesse structurelle, le length extension, ne s'applique que lorsque SHA-256 est utilisé naïvement comme MAC sous la forme `Hash(secret || message)`. La construction double-SHA256 (SHA256d) de Bitcoin et le standard universel HMAC la neutralisent l'un comme l'autre.
Peut-on craquer, inverser ou forcer SHA-256 par brute force ?+
Non. Inverser un hash SHA-256 de manière classique requiert environ 2²⁵⁶ opérations, soit plus que le nombre d'atomes dans l'univers observable. Trouver une collision quelconque prend environ 2¹²⁸ via la borne des anniversaires, toujours hors de portée. La seule façon de forcer SHA-256 par brute force concerne les espaces d'entrée réduits (par exemple des mots de passe non salés), ce qui est un défaut de conception du stockage des mots de passe, pas un défaut de SHA-256.
SHA-256 est-il résistant aux ordinateurs quantiques ?+
Effectivement oui. L'algorithme de Grover apporte une accélération quadratique (√n) sur la recherche non structurée, réduisant la résistance aux préimages de SHA-256 de 2²⁵⁶ à 2¹²⁸ sur une machine quantique. C'est encore hors de portée de tout matériel quantique plausible pour les prochaines décennies. La menace quantique pour Bitcoin concerne les signatures ECDSA via l'algorithme de Shor, pas SHA-256 ; voir notre [guide Bitcoin résistant aux quantiques BIP-360/361](/fr/blog/bip-360-361-bitcoin-resistant-quantique).
Pourquoi Bitcoin utilise-t-il le double SHA-256 ?+
Bitcoin calcule `SHA-256(SHA-256(x))`, appelé SHA256d, pour les hachages de blocs, les identifiants de transactions et les racines de Merkle. Ferguson et Schneier ont proposé la construction double-hachage dans *Practical Cryptography* (2003) spécifiquement pour neutraliser les attaques length extension contre SHA-2. Le second hachage prend la sortie complète de 256 bits comme entrée, brisant la chaîne Merkle-Damgård qu'un attaquant devrait étendre. Que ce soit la motivation *explicite* de Satoshi est non documenté, mais c'est la raison technique universellement admise.
Qu'est-ce qu'une attaque length extension ?+
Une attaque length extension permet à un attaquant, connaissant `Hash(secret || message)` et la longueur en octets de `secret`, de calculer `Hash(secret || message || padding || extra)` pour tout `extra` choisi, sans jamais connaître `secret`. Elle affecte MD5, SHA-1, SHA-256 et SHA-512. Elle n'affecte PAS SHA-3, SHA-512/256, BLAKE2/3 ou le SHA256d de Bitcoin.
HMAC vs SHA-256 : quelle est la différence ?+
SHA-256 est une fonction de hachage. HMAC est une construction (RFC 2104) qui enveloppe n'importe quelle fonction de hachage : `HMAC-SHA256(key, msg) = SHA-256((key ⊕ opad) || SHA-256((key ⊕ ipad) || msg))`, pour produire un MAC immunisé contre le length extension. Utilisez HMAC partout où vous authentifiez un message avec un secret partagé. Utilisez SHA-256 brut uniquement pour l'adressage de contenu, les signatures sur le hachage ou les arbres de Merkle.
SHA-256 est-il sécurisé pour le stockage des mots de passe ?+
Non, mais pas à cause du length extension. SHA-256 est trop rapide : un GPU grand public moderne calcule des milliards de hachages SHA-256 par seconde, rendant tout mot de passe de moins de 15 caractères aléatoires attaquable par brute force. Utilisez Argon2id (préféré), scrypt ou bcrypt, des algorithmes délibérément conçus pour être lents et gourmands en mémoire pour le stockage de mots de passe.
SHA-256 a-t-il déjà été cassé en pratique ?+
Non. Au 2026-05-12 la meilleure cryptanalyse publiée n'atteint que des résultats partiels sur certains tours (par exemple environ 31 des 64 tours SHA-256 pour des collisions), académiques et non pratiques. Le preprint arXiv 2406.20072 et les travaux similaires n'ont produit aucune préimage ou collision réelle contre SHA-256 complet. Le length extension est la seule faiblesse structurelle démontrable en pratique, et c'est une propriété de la construction Merkle-Damgård, pas une rupture de l'algorithme.
Approfondir

Ce sujet est traité en détail dans bitcoin-cryptography-and-security.

Vous avez aimé cet article ?

Le guide Bitcoin complet — gratuit en ligne ou CHF 25 pour le livre physique.

Articles connexes

  • Quantique Bitcoin Google Paper 2026

    Quantique Bitcoin Google Paper 2026

  • Bitcoin Ordinals Inscriptions Expliquées

    Bitcoin Ordinals Inscriptions Expliquées

Dans cet article

  • Résumé
  • Ce que signifie vraiment « SHA-256 a été cassé »
  • Comment fonctionne Merkle-Damgård
  • Comment fonctionne le length extension
  • Reproduire l'attaque avec hash_extender
  • Pourquoi SHA256d immunise Bitcoin contre le length extension
  • HMAC, le correctif pour tous les autres
  • Pourquoi Bitcoin est resté sur SHA-256 et non SHA-3
  • Quantique, Grover et SHA-256
  • Où SHA-256 échoue sur les mots de passe
  • Où SHA-256 vit à l'intérieur de Bitcoin
  • Le verdict 2026, par cas d'usage
  • Pour aller plus loin
  • Avertissement
Dans cet article
  • Résumé
  • Ce que signifie vraiment « SHA-256 a été cassé »
  • Comment fonctionne Merkle-Damgård
  • Comment fonctionne le length extension
  • Reproduire l'attaque avec hash_extender
  • Pourquoi SHA256d immunise Bitcoin contre le length extension
  • HMAC, le correctif pour tous les autres
  • Pourquoi Bitcoin est resté sur SHA-256 et non SHA-3
  • Quantique, Grover et SHA-256
  • Où SHA-256 échoue sur les mots de passe
  • Où SHA-256 vit à l'intérieur de Bitcoin
  • Le verdict 2026, par cas d'usage
  • Pour aller plus loin
  • Avertissement
MH
Mohamed Habbat

AuthorBio.role

AboutPage.authorBioShort

AuthorBio.learnMore
Approfondir

Ce sujet est traité en détail dans bitcoin-cryptography-and-security.

Articles connexes

  • Quantique Bitcoin Google Paper 2026

    Quantique Bitcoin Google Paper 2026

    16 min de lecture

  • Bitcoin Ordinals Inscriptions Expliquées

    Bitcoin Ordinals Inscriptions Expliquées

    16 min de lecture

  • Bitcoin Satoshi Rare Pourquoi Certains Valent Plus

    Bitcoin Satoshi Rare Pourquoi Certains Valent Plus

    16 min de lecture

BTC2H₿₿2H