Outils de développement · Calculateur de hachage SHA
SHA-256 vs SHA-512 : taille des mots, tours et pourquoi 512 peut être plus rapide
· Comment ça marche
sha-256 cryptographie Navigateur API du navigateur
SHA-512 produit un résumé plus long mais s'exécute souvent plus rapidement sur du matériel 64 bits. Cet article explique les différences structurelles entre les deux et comment SHA-384 s'intègre, afin que vous puissiez choisir sur des faits.
Un hachage plus long, une exécution plus rapide ? — l'observation contre-intuitive qui lance la comparaison
SHA-512 produit un résumé plus long mais s'exécute souvent plus rapidement que SHA-256 sur du matériel 64 bits. L'observation contre-intuitive vient de la conception du processeur : un processeur optimisé pour l'arithmétique 64 bits exécute les opérations 64 bits plus rapidement que les opérations 32 bits sur les mêmes données. SHA-256 fonctionne sur des mots de 32 bits, tandis que SHA-512 fonctionne sur des mots de 64 bits. Sur un processeur 64 bits, ce dernier s'adapte plus naturellement au matériel et consacre moins de temps aux conversions de taille de mot et au remplissage.
Cela ne rend pas SHA-512 intrinsèquement meilleur pour chaque cas d'utilisation. Un résumé plus long nécessite plus de stockage et de bande passante. Le choix entre eux doit être fait sur la base de vos exigences en matière de taille de sortie et de votre plate-forme, et non sur une vague impression de « plus récent » ou de « plus fort ».
Mots 32-bit contre 64-bit - la différence structurelle fondamentale et pourquoi il convient aux processeurs modernes
SHA-256 fonctionne sur des mots de 32 bits tout au long de l'algorithme. La planification des messages développe les mots 16 32 bits en mots 64 32 bits. Chaque cycle met à jour huit variables de travail 32 bits. Le bloc de message est composé de 512 bits (seize mots de 32 bits). La sortie est constituée de 256 bits (huit mots de 32 bits). Toutes les opérations arithmétiques sont effectuées sur des valeurs 32 bits, avec un débordement à 2^32.
SHA-512 fonctionne sur des mots 64 bits. La planification des messages développe les mots 16 64 bits en 80 mots 64 bits (et non 64, comme dans SHA-256). Chaque cycle met à jour huit variables de travail 64 bits. Le bloc de message est composé de 1024 bits (seize mots de 64 bits). La sortie est constituée de 512 bits (huit mots de 64 bits). Toutes les opérations arithmétiques sont effectuées sur des valeurs 64 bits, avec un débordement à 2^64.
64 tours contre 80, 512-bit contre 1024-bit blocs - ce qui change par bloc et par octet
SHA-256 exécute 64 tours par bloc ; SHA-512 exécute 80 tours par bloc. Cela signifie que SHA-512 effectue plus de mixage par bloc. À première vue, cela semble plus lent. Mais la taille des mots et la taille des blocs plus grandes signifient que SHA-512 traite plus de bits par tour. Pour un fichier 1 mégaoctets, SHA-256 traite 1048576 / 512 = 2048 blocs, chacun avec 64 tours, pour un total de 131072 tours. SHA-512 traite 1048576 / 1024 = 1024 blocs, chacun avec 80 tours, pour un total de 81920 tours. SHA-512 effectue moins de tours au total, même s'il effectue plus de tours par bloc.
La différence de temps d'horloge murale dépend de l'optimisation du processeur pour la taille des mots. Un processeur avec une ALU 64-bit (unité arithmétique-logique) exécutera efficacement les opérations 64-bit. Si le même processeur doit décomposer les opérations 32 bits SHA-256 en plusieurs micro-opérations ou les exécuter sur une unité d'exécution plus petite, le coût par opération est plus élevé. Les processeurs modernes optimisent les opérations 64 bits, rendant SHA-512 souvent plus rapide malgré les tours supplémentaires par bloc.
La taille des blocs et le nombre de tours expliquent le travail par octet ; le débit réel nécessite une référence de plate-forme
L'arithmétique des blocs explique pourquoi une sortie plus longue n'implique pas nécessairement plus de travail par octet. SHA-256 effectue soixante-quatre tours pour chaque bloc 512 bits, tandis que SHA-512 effectue quatre-vingts tours pour chaque bloc 1,024 bits. La deuxième conception effectue plus de tours sur chaque bloc mais consomme deux fois plus d'entrées chaque fois qu'elle en traite un.
Cette comparaison structurelle ne prédit pas une référence de navigateur particulière. Web Crypto peut utiliser des instructions natives, des bibliothèques du système d'exploitation ou tout autre code optimisé, et la longueur d'entrée modifie le partage consacré à la configuration. Mesurer l'environnement cible réel lorsque le débit est important ; le référentiel ne prend en charge que l'affirmation qualitative selon laquelle des mots plus larges peuvent convenir au matériel 64-bit.
Les longueurs de sortie affectent les propriétés de représentation et de sécurité sans estimation du travail d'attaque non sourcé
SHA-384 n'est pas un algorithme distinct ; il s'agit de SHA-512 avec deux modifications : les constantes de hachage initiales sont différentes et la sortie est tronquée à 384 bits (48 octets) au lieu des 512 bits complets. Cette troncature présente un avantage contre les attaques par extension de longueur : un attaquant ne peut pas étendre le résumé en ajoutant des données au message d'origine, car l'état complet de 512 bits est inconnu (seuls 384 bits de celui-ci ont été divulgués).
SHA-256 est vulnérable aux attaques d'extension de longueur : si vous connaissez le résumé d'un message et la longueur du message, vous pouvez ajouter des données au message et calculer le résumé du message étendu sans connaître le contenu du message d'origine. Cela est important dans des contextes de sécurité spécifiques, comme les implémentations HMAC qui utilisent une construction faible. SHA-384, bien qu'il soit basé sur SHA-512, n'est pas vulnérable car l'état complet n'est pas exposé. Cela rend SHA-384 utile dans les contextes où SHA-256 est considéré comme risqué.
Exemple concret : hacher une entrée avec les trois et comparer les longueurs de résumé côte à côte
La taille de sortie est la distinction la plus simple. SHA-256 produit 32 octets (64 caractères hexadécimaux) ; SHA-384 produit 48 octets (96 caractères hexadécimaux) ; SHA-512 produit 64 octets (128 caractères hexadécimaux). Pour le stockage dans des URL ou JSON, les résumés plus longs prennent plus d'espace. Pour la résistance aux collisions, une sortie plus longue rend les collisions exponentiellement plus difficiles à trouver. Les sorties plus larges fournissent un espace de résultats plus grand, tandis que leur conséquence immédiate sur le produit est plus simple à mesurer : plus d'octets dans le stockage, les URL et les champs de protocole. Cet article ne joint pas d’estimation du travail d’attaque car aucune n’est dérivée des preuves du référentiel.
Certains systèmes et normes spécifient explicitement SHA-256 ; d'autres utilisent SHA-512 ou permettent un choix. Les empreintes digitales SSH sont par défaut SHA-256 ; les résumés d’images de conteneur peuvent être SHA-256 ou SHA-512. Les gestionnaires de packages comme npm utilisent SHA-512 pour l'intégrité des sous-ressources. Le choix est souvent fait pour vous, mais comprendre les différences vous permet de choisir judicieusement lorsque vous avez votre mot à dire.
Ce que cela ne couvre pas : les chiffres de débit, qui dépendent du processeur, du compilateur et de la taille d'entrée ; le post reste qualitatif
Le calculateur de hachage ToolAcre SHA propose SHA-256, SHA-384 et SHA-512. Hachez la même entrée avec les trois et observez les longueurs de sortie. Les résumés seront tous complètement différents les uns des autres, ce qui est attendu : les algorithmes utilisent différentes constantes d'arrondi, différents calendriers de messages et différentes opérations de mixage. Le nombre d'octets affiché à côté du résumé reflète uniquement la taille d'entrée, pas la taille de sortie ; les trois algorithmes traitent les mêmes octets d'entrée de manière identique tout au long de leurs séquences de tours respectives.
Les tests sur votre propre matériel révèlent la différence de performances. Hachez un fichier volumineux (un scénario de test de plusieurs mégaoctets) avec chaque algorithme et chronométrez les résultats. Sur les systèmes 64 bits modernes, SHA-512 se terminera souvent en moins de temps d'horloge murale, même si le nombre d'octets peut suggérer le contraire. Sur les systèmes 32 bits ou les processeurs intégrés, SHA-256 peut être plus rapide car l'ALU du processeur est optimisé pour les opérations 32 bits.
À retenir : choisissez par taille de sortie et par plate-forme – le calculateur de hachage ToolAcre SHA propose SHA-256, SHA-384 et SHA-512 afin que vous puissiez voir les trois sur la même entrée.
La force cryptographique est distincte des performances. Le référentiel ne marque pas SHA-256 comme cassé et le sélectionne comme valeur par défaut à usage général. Cette preuve de produit ne justifie pas qu’un quelconque primitif soit universellement sûr ; l’adéquation dépend toujours de la construction et du modèle de menace. Le passage de SHA-256 à SHA-512 n'est pas une mise à niveau de sécurité ; c'est un compromis entre stockage et performances. Si votre système spécifie SHA-256 et que vous avez besoin de cet algorithme exact, utilisez-le. Si vous avez le choix et souhaitez un résumé plus long ou si vous savez que votre plate-forme est 64-bit, SHA-512 est un choix valable.
L'implémentation Web Crypto du navigateur calcule les trois via crypto.subtle.digest. Votre appareil, la version de votre navigateur et la charge du système en arrière-plan affectent tous les performances observées. Mais le point clé demeure : SHA-256 et SHA-512 ne se disputent pas le titre de « meilleure fonction de hachage ». Ce sont des outils conçus pour différentes exigences de sortie, et le choix entre eux est fait en fonction des besoins de votre système, et non en fonction d'affirmations de performances généralisées.