Français

Outils de développement · Calculateur de hachage SHA

De SHA-0 à SHA-3 : comment la norme de hachage sécurisé du NIST a évolué

· Contexte

sha-256 cryptographie API du navigateur

Chronologie de SHA-0 à SHA-1, famille SHA-2 et SHA-3 montrant deux décennies d'évolution
Illustration vectorielle originale de ToolAcre

SHA-1, SHA-2 et SHA-3 sont trois générations d'origines différentes. Cet article retrace le Secure Hash Standard depuis le SHA-0 retiré jusqu'au concours Keccak et explique pourquoi SHA-2 domine toujours.

Que signifient les chiffres ? - pourquoi SHA-256 est SHA-2 mais SHA-3 est tout autre chose

Les développeurs voient SHA-1, SHA-256 et SHA-3 et supposent qu'il s'agit d'une progression linéaire. Ce n’est pas le cas. Les chiffres signifient différentes choses selon les contextes, et la compréhension de l'histoire familiale explique pourquoi SHA-256 est le choix judicieux pour les nouvelles applications, pourquoi SHA-1 est uniquement hérité bien qu'il soit largement déployé, et pourquoi SHA-3 est une conception distincte plutôt qu'une évolution.

Lorsque le NIST a publié pour la première fois une fonction de hachage sécurisée, ils l'ont appelée SHA et plus tard SHA-0, une version si éphémère que la plupart des développeurs n'en ont jamais entendu parler. Le SHA-0 a été retiré quelques années plus tard en raison d'un défaut non spécifié qui n'a jamais été divulgué publiquement. Ce retrait s’est produit discrètement et les algorithmes qui ont suivi ont donné lieu à une confusion en matière de dénomination. Après le retrait de SHA-0, le NIST a publié SHA-1, qui est devenu la norme pendant vingt ans.

L'outil couvre SHA-1 et SHA-2 ; l'historique détaillé de SHA-0 se trouve en dehors des preuves du référentiel

SHA-1 est une fonction de hachage 160 bits qui produit une sortie hexadécimale de 40 caractères. Il est basé sur la construction Merkle – Damgård, où une fonction de compression traite les entrées bloc par bloc, enchaînant l'état vers l'avant. La conception était solide au moment de sa publication et aucune attaque pratique n’a eu lieu pendant de nombreuses années. Cependant, l’année 2005 a apporté une percée cryptanalytique. Une équipe dirigée par Xiaoyun Wang a publié une attaque par collision sur SHA-1, montrant qu'il était possible de trouver deux messages différents avec le même hachage en utilisant des techniques bien plus efficaces que l'approche par force brute.

Des années plus tard, dans 2017, une équipe appelée SHAttered a démontré la première collision pratique, en utilisant un cluster de GPU pour trouver deux fichiers PDF différents avec le même hachage SHA-1. Dans 2020, un article de suivi a montré que les collisions avec préfixe choisi (la variante la plus dangereuse) étaient abordables. SHA-1 n'était plus simplement faible ; c'était cassé. La réponse à la rupture SHA-1 a été d'introduire SHA-2, une famille de quatre fonctions : SHA-224, SHA-256, SHA-384 et SHA-512.

SHA-2 — la famille du début des années 2000 (224, 256, 384, 512 et plus tard le 512/224 tronqué et 512/256) construit sur la même construction

Ces quatre fonctionnent sur des tailles d'état et des tailles de bloc différentes, mais ils utilisent la même construction fondamentale que SHA-1. La famille SHA-2 a été publiée dans 2001, des années avant les ruptures majeures sur SHA-1, mais elle n'a été largement adoptée que lorsque les effondrements de SHA-1 sont devenus concrets. SHA-256 produit un hachage 256 bits et constitue désormais le choix standard pour les nouvelles applications. SHA-512 produit un hachage 512 bits et est souvent plus rapide sur les processeurs 64 bits car il fonctionne sur des mots 64 bits au lieu de mots 32 bits.

La convention de dénomination pour SHA-2 est la source de la confusion. Les fonctions sont appelées SHA-256, SHA-384 et SHA-512, et elles font toutes partie de la famille SHA-2. Quand quelqu'un dit SHA-2, il parle de la philosophie de conception et de la construction Merkle-Damgård, et non d'un seul algorithme. Les nombres dans les noms correspondent aux largeurs de sortie en bits, et non à un schéma de version. SHA-256 n'est pas une mise à jour de SHA-1 ; c'est une conception contemporaine utilisant le même cadre mais avec de meilleures propriétés de sécurité.

Les documents du référentiel ont démontré SHA-1 collisions sans reconstituer l'historique théorique sans source.

À l'intérieur de la construction Merkle – Damgård utilisée par SHA-1 et SHA-2, une fonction de compression traite les entrées bloc par bloc. L'état est reporté d'un bloc au suivant et l'état final est généré sous forme de résumé. La fonction de compression SHA-256 utilise les opérations 32 bits et l'état 256 bits, elle traite donc les blocs 512 bits. La fonction de compression SHA-512 utilise des opérations 64 bits et un état 512 bits, elle traite donc des blocs 1024 bits. Ces choix affectent les performances et la bande passante : SHA-512 est souvent plus rapide car l'arithmétique 64 bits est native sur le matériel moderne.

La décision entre SHA-256 et SHA-512 pour un nouveau système est généralement basée sur des tests de performances et des contraintes d'espace plutôt que sur la sécurité, car les deux sont toujours sécurisés au début des années 2020. Le calculateur de hachage ToolAcre SHA fournit SHA-256, SHA-384 et SHA-512, et lorsque les lecteurs comparent les résumés côte à côte, ils voient la différence de quatre caractères entre SHA-256 (64 caractères hexadécimaux) et SHA-512 (128 caractères hexadécimaux).

SHA-3 est en dehors de l'API prise en charge ; l'historique de la compétition n'est pas attesté à partir des preuves du référentiel

Les motivations du remplacement de SHA-1 étaient claires au début des années 2000, c'est pourquoi le NIST a lancé le processus de sélection de SHA-3. Plutôt que de concevoir un remplacement de manière isolée, le NIST a ouvert le concours à la communauté des chercheurs en cryptographie. L'objectif était de sélectionner une fonction de hachage fondamentalement différente de la construction Merkle – Damgård, afin de gagner en confiance à partir d'une diversité de conceptions. Plusieurs équipes ont soumis des propositions et, sur plusieurs années, le concours a sélectionné Keccak comme gagnant. Keccak était une construction éponge, une manière différente de construire une fonction de hachage qui n'avait pas été utilisée auparavant dans un standard.

SHA-3 est la normalisation NIST de Keccak, finalisée en 2015. Contrairement à SHA-2, qui est une famille d'algorithmes, SHA-3 est généralement appelé un algorithme unique, bien qu'il ait également plusieurs largeurs. SHA-3 n'est pas encore largement déployé, ce qui est frappant étant donné qu'il est la norme depuis près d'une décennie. La raison est que SHA-2 n'est pas cassé. Il n'y a aucune raison de sécurité impérieuse pour passer de SHA-2 à SHA-3. L'API Web Crypto du navigateur implémente SHA-1 et SHA-2 mais pas SHA-3, c'est pourquoi le calculateur de hachage ToolAcre SHA n'offre pas SHA-3.

SHA-2 reste la valeur par défaut de l'outil ; cet article évite une allégation de sécurité universelle non étayée

Pourquoi SHA-2 est toujours partout est la question centrale du choix de l'algorithme de hachage. SHA-2 n'a aucune collision pratique connue. Les implémentations matérielles sont matures. Chaque langage de programmation et plate-forme le prend en charge. La modification de l'algorithme de hachage d'un système est perturbatrice : chaque hachage stocké doit être migré ou conservé pour vérification, chaque point d'intégration doit être mis à jour et des tests doivent être effectués pour garantir que le nouvel algorithme fonctionne avec chaque système en aval.

Pour les systèmes où SHA-2 est toujours sécurisé, cette perturbation n'est pas justifiée. Pour les nouveaux systèmes et les nouveaux protocoles, SHA-2 est la valeur par défaut. Le calculateur de hachage ToolAcre SHA affiche SHA-256 et SHA-512 dans une position bien visible, car ce sont ce que les nouvelles applications devraient utiliser. SHA-1 est répertorié comme existant uniquement. SHA-384 est affiché par souci d'exhaustivité et pour les cas d'utilisation où il est spécifiquement requis.

Ce que ceci ne couvre pas : les composants internes de Keccak, qui méritent leur propre article

L'avenir des normes de hachage n'est pas clair à l'heure actuelle. SHA-3 est sécurisé et mature, et offre une alternative si SHA-2 est cassé. L’informatique quantique constitue une menace à long terme pour toutes les fonctions de hachage actuelles, mais les conceptions de fonctions de hachage résistantes aux quantiques constituent un domaine de recherche ouvert. Le NIST organise actuellement un concours de cryptographie post-quantique, sélectionnant des algorithmes destinés à résister aux attaques quantiques, mais les fonctions de hachage ne sont pas une priorité dans ce concours par rapport aux systèmes à clé publique.

Pour les applications pratiques dans les années 2020, SHA-256 est la réponse à la question « quel hachage dois-je utiliser ? Pour la vérification de l'intégrité, l'adressage du contenu et la prise d'empreintes digitales, SHA-256 est la norme. Pour les systèmes qui nécessitent un résumé plus large, SHA-512 est généralement plus rapide sur le matériel 64 bits. SHA-384 est le plus courant dans les spécifications de la suite de chiffrement TLS. SHA-1 est uniquement destiné à la vérification des anciennes versions. Le calculateur de hachage ToolAcre SHA fournit les quatre algorithmes Web Crypto afin que les développeurs puissent voir leurs résultats.

À retenir : trois générations, un nom de famille – le calculateur de hachage ToolAcre SHA couvre les algorithmes SHA-1 et SHA-2 fournis par le navigateur.

Comprendre l'histoire de SHA permet de comprendre pourquoi les chiffres et les noms signifient ce qu'ils font et pourquoi les choix faits dans les années 1990 et 2000 dictent encore ce que font les nouvelles applications aujourd'hui. SHA-0 a été retiré discrètement, SHA-1 a été brisé par des attaques pratiques, SHA-2 est toujours sécurisé et SHA-3 est une conception alternative choisie pour sa robustesse future. Le nouveau code doit utiliser SHA-256 pour le hachage à usage général. Les systèmes existants utilisent toujours SHA-1, et l'interopérabilité avec ces systèmes nécessite la capacité de calculer les hachages SHA-1.

Le calculateur de hachage ToolAcre SHA incarne cette perspective : il propose SHA-256 par défaut, SHA-512 comme option plus large, SHA-384 pour des exigences spécifiques et SHA-1 étiqueté comme héritage. Cela fournit aux développeurs des outils précis et un étiquetage précis. L'implémentation Web Crypto du navigateur fournit ces algorithmes, et ToolAcre utilise cette implémentation directement plutôt que d'envoyer du code personnalisé. Ce choix reflète des décennies d’évolution cryptographique et l’état actuel des pratiques.