Blockchain/Niveau II · Mécanismes/2.1 Cryptographie/Leçon 1
Fonctions de hachage et SHA-256
L’empreinte qui ancre le registre
MatérielUn terminal avec shasum ou openssl installéUn calculateur SHA-256 en ligneDeux fichiers texte qui diffèrent par un seul caractère
Curiosité
- Pourquoi changer un seul caractère dans un fichier modifie-t-il la moitié de son hash ?
- Si une infinité d’entrées possibles se partagent un ensemble fini de sorties, pourquoi est-il malgré tout irréalisable d’en trouver deux qui entrent en collision ?
- Qu’est-ce qui a rendu SHA-256 sûr alors que son prédécesseur, SHA-1, avait été compromis ?
Explorer
- Une fonction de hachage cryptographique transforme des données de longueur arbitraire en un digest de taille fixe. Elle est déterministe : la même entrée produit toujours exactement la même sortie. Elle est rapide à calculer, mais impossible à inverser en pratique. Cette propriété à sens unique définit la résistance à la préimage. Si un attaquant ne dispose que du hash, il ne peut pas en déduire le message d’origine. Cette irréversibilité sécurise les vérifications d’intégrité et les preuves d’identité au sein des systèmes distribués.
- SHA-256 produit une sortie de 256 bits, quelle que soit la taille de l’entrée. Que l’entrée soit un seul octet ou un fichier d’un gigaoctet, le digest fait toujours exactement 32 octets. Cette longueur fixe permet un stockage et une comparaison homogènes. La fonction traite les données par blocs de 512 bits, au fil de 64 tours d’opérations logiques. Sa conception suit la construction de Merkle–Damgård, qui enchaîne une fonction de compression d’un bloc à l’autre ; c’est le brassage opéré par cette fonction de compression qui rend la sortie méconnaissable.
- L’effet avalanche est une caractéristique essentielle : inverser un seul bit de l’entrée modifie environ la moitié des bits du hash de sortie. Cette sensibilité garantit que la moindre corruption ou altération des données produit un digest complètement différent. Les fonctions de hachage sont donc idéales pour vérifier l’intégrité des fichiers et détecter les modifications. Toute modification, aussi subtile soit-elle, rompt la correspondance entre le hash attendu et le hash calculé.
- La résistance aux collisions est la propriété la plus exigeante. Trouver deux entrées distinctes qui produisent le même hash nécessite environ 2^128 opérations, en raison de la borne du paradoxe des anniversaires. Pour SHA-256, ce coût de calcul rend les attaques par force brute irréalisables avec le matériel actuel. À l’inverse, SHA-1 a subi une attaque par collision pratique, démontrée en 2017 par des chercheurs de Google et du CWI et connue sous le nom de SHAttered. Cette vulnérabilité a imposé l’abandon de SHA-1 pour les applications critiques en matière de sécurité.
- Bitcoin applique SHA-256 deux fois, une pratique appelée double hachage. Les en-têtes de bloc et les identifiants de transaction sont hachés avec SHA-256, puis le résultat est de nouveau haché avec SHA-256. Satoshi n’a jamais expliqué ce choix ; une explication courante est la protection contre les attaques par extension de longueur, une faiblesse connue des fonctions de hachage de type Merkle–Damgård comme SHA-256. Chaque hash de bloc et chaque identifiant de transaction de la chaîne est le résultat de ce double passage.
- Ouvrez n’importe quel terminal ou outil en ligne et calculez le hash SHA-256 de la chaîne 'MSTR Cat'. Calculez ensuite le hash de 'MSTR cat', en ne changeant que la casse d’une seule lettre. Comparez les deux sorties hexadécimales de 64 caractères. Elles seront entièrement différentes, sans aucun motif reconnaissable en commun. Cette divergence immédiate montre l’effet avalanche en action : la modification d’un seul bit bouleverse tout le digest, ce qui confirme que la fonction traite ses entrées avec une extrême sensibilité.
Faits clés
- SHA-256 produit une sortie fixe de 256 bits pour n’importe quelle taille d’entrée.
- L’effet avalanche garantit que la modification d’un seul bit change environ la moitié des bits du hash.
- Trouver une collision SHA-256 par force brute nécessite environ 2^128 opérations.
- SHA-1 a été cassé par une attaque par collision pratique (SHAttered) en 2017.
- Bitcoin utilise un double SHA-256 pour les hachages de blocs et les identifiants de transactions.
- SHA-256 traite les données en blocs de 512 bits au cours de 64 tours.
Exercice neuf, six, trois, un
9RassemblerListez 9 fonctions de hachage ou algorithmes de somme de contrôle utilisés en informatique. Indiquez la taille de leur sortie et leurs principaux cas d’usage.
6RegrouperRegroupez les 9 en 6 catégories selon leur niveau de sécurité : cassées, dépréciées, standard pour un usage général, standard pour les contextes de haute sécurité, spécialisées pour la vitesse, ou autres.
3DistillerRéduisez les 6 groupes à 3 raisons fondamentales pour lesquelles une fonction de hachage est choisie pour une application donnée.
1CristalliserÉcrivez 1 phrase expliquant comment des digests de longueur fixe permettent de vérifier des données de taille variable.
Vérification des faits
Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.