Français

Outils de développement · Calculateur de hachage SHA

Collision, préimage et deuxième préimage : les trois objectifs de sécurité du hachage

· Contexte

sha-256 cryptographie sécurité

Trois diagrammes montrant la résistance de pré-image, la résistance de deuxième pré-image et la résistance aux collisions
Illustration vectorielle originale de ToolAcre

Un avis indique qu'un algorithme présente des problèmes de collision et que vous devez savoir si votre utilisation est affectée. Cet article définit les trois propriétés de résistance, montre quels cas d'utilisation dépendent de lesquels et les applique à SHA-1.

Mon utilisation est-elle affectée ? — la question à laquelle un avis répond rarement directement

Un avis arrive indiquant que SHA-1 a des problèmes de collision, votre système doit donc être mis à niveau. Mais que se passe-t-il si votre système utilise SHA-1 uniquement pour la dérivation de clé, pas pour authentifier les messages ? Que se passe-t-il si SHA-1 n'est utilisé que pour dédupliquer des fichiers identiques, et non pour prouver l'authenticité ? La question « Mon système est-il concerné ? » On ne peut pas répondre sans comprendre quelle propriété de la fonction de hachage est réellement cassée et de quelle propriété dépend votre cas d'utilisation.

Une fonction de hachage offre plusieurs propriétés de sécurité : résistance à la pré-image, résistance à la seconde pré-image et résistance aux collisions. Une rupture dans une propriété n’en interrompt pas une autre, et certains cas d’utilisation dépendent uniquement de propriétés qui restent sécurisées. Le calculateur de hachage ToolAcre SHA affiche les algorithmes et leurs largeurs de résumé, propriétés qui déterminent les limites de chaque objectif de sécurité. Comprendre ces propriétés est la première étape pour décider si un avis affecte votre système.

Résistance de pré-image — étant donné un hachage, vous ne pouvez pas trouver une entrée qui le produit

La résistance aux pré-images signifie que, étant donné un résumé, il devrait être impossible de trouver une entrée qui produit ce résumé. Vous recevez le hachage d'un mot de passe et souhaitez deviner le mot de passe ; c'est une attaque de pré-image. La deuxième résistance à la pré-image signifie qu'étant donné un message et son hachage, il devrait être impossible de trouver un message différent avec le même hachage. Vous disposez d'un fichier téléchargé et de sa somme de contrôle SHA-256 ; un attaquant souhaite échanger le fichier avec un autre fichier ayant le même hachage ; il s'agit d'une deuxième attaque de pré-image.

La résistance aux collisions signifie qu'il devrait être impossible de trouver deux messages différents avec le même hachage. Vous signez un document ; un attaquant souhaite créer un document différent avec la même signature ; c'est une attaque par collision. Ces trois scénarios nécessitent des quantités de travail différentes de la part de l'attaquant et les limites de sécurité diffèrent. La résistance à la pré-image est la propriété la plus forte et c’est rarement celle qui est brisée. Étant donné un résumé, trouver une pré-image nécessite une recherche par force brute dans l'espace des entrées possibles. La largeur du résumé affecte l'espace de recherche générique, mais cet article n'indique pas le nombre d'opérations sans le dériver et sans définir le modèle d'attaque.

Deuxième résistance de pré-image — étant donné une entrée, vous ne pouvez pas trouver une entrée différente avec le même hachage

La résistance de la deuxième pré-image est la deuxième plus forte, et elle est également rarement brisée de manière isolée. Étant donné un message et son hachage, trouver un message différent avec le même hachage nécessite également un travail exponentiel sur la taille du résumé. Les recherches de seconde pré-image et de collision offrent à l'attaquant différents choix, de sorte que leurs limites génériques ne sont pas interchangeables. La distinction qualitative suffit ici ; aucune limite numérique n'est affirmée sans une dérivation en ligne. Un algorithme perd la résistance à la seconde pré-image s'il y a une attaque structurelle qui ne nécessite pas de force brute.

La résistance aux collisions est la plus faible des trois propriétés, et c'est celle qui est le plus souvent brisée ou pliée. Une recherche de collision permet à l'attaquant de choisir les deux entrées, contrairement aux deux autres objectifs, elle a donc une limite générique différente. Cet article omet intentionnellement les chiffres liés aux anniversaires et les calendriers matériels, car leur déduction et leur origine ne font pas partie du matériel vérifié.

Résistance aux collisions : vous ne trouvez pas deux entrées avec le même hachage, et pourquoi c'est la plus faible des trois

Le mappage des trois propriétés de sécurité aux cas d'utilisation montre quelle propriété est requise pour chaque tâche. La déduplication repose sur l'hypothèse que si deux fichiers ont le même hachage, il s'agit du même fichier. Cela nécessite une résistance aux collisions : si des collisions sont possibles, un attaquant peut créer deux fichiers différents avec le même hachage et briser l'invariant de déduplication. Il s’agit toutefois d’une exigence faible, car les collisions pratiques sont extrêmement rares, même si elles sont théoriquement possibles.

Les signatures numériques nécessitent une forte résistance aux collisions. Lorsqu'un signataire produit une signature pour le hachage d'un document et qu'un vérificateur vérifie ultérieurement la signature, les deux doivent vérifier le même hachage. Si les collisions sont faciles, un attaquant peut falsifier une signature pour un autre document en trouvant une collision avec le document signé. Il s'agit de l'attaque qui a motivé la mise à niveau de SHA-1 vers SHA-256 dans les certificats. Un certificat signé par une autorité de certification et un faux certificat avec la même signature réussissent tous deux la vérification si le hachage présente une collision.

La résistance aux collisions diffère des objectifs de pré-image ; aucun chiffre lié à l'anniversaire n'apparaît sans dérivation

Le stockage adressé par contenu utilise des hachages comme clés de recherche. Si un fichier est stocké à l'emplacement déterminé par son hachage, puis récupéré à l'aide du même hachage, les deux opérations doivent atteindre le même fichier. Cela nécessite une résistance aux collisions s’il y a des attaquants actifs, mais cela ne nécessite qu’une deuxième résistance de pré-image si les attaquants sont passifs. Un attaquant passif ne peut pas créer de collision ; ils ne peuvent observer que si des fichiers légitimes entrent en collision par hasard.

La vérification du téléchargement utilise une somme de contrôle pour confirmer qu'un fichier récupéré sur Internet n'est pas corrompu. La somme de contrôle est généralement publiée avec le fichier à partir d'une source fiable. Un attaquant qui modifie le fichier téléchargé ne peut pas mettre à jour la somme de contrôle sans accès à la source fiable. Ce cas d'utilisation nécessite une deuxième résistance de pré-image : étant donné le fichier d'origine et sa somme de contrôle, l'attaquant ne devrait pas être en mesure de produire un fichier différent avec la même somme de contrôle. La résistance de SHA-1 seconde pré-image est toujours solide malgré les ruptures de collision.

Mapper l'intégrité et les utilisations de dénomination aux propriétés requises ; les hachages simples ne sont pas un stockage de mot de passe

Le stockage des mots de passe est le seul cas d'utilisation dans lequel une fonction de hachage n'est pas le bon outil. Si les mots de passe sont stockés sous forme de hachages SHA-256 et que la base de données de hachage est divulguée, un attaquant peut lancer une attaque par dictionnaire : hacher des millions de suppositions et vérifier si certaines correspondent aux hachages stockés. L'attaquant n'a besoin que d'une pré-image pour chaque mot de passe, et une fonction rapide lui offre une boucle de comparaison hors ligne efficace sans limites de débit d'application.

Les mots de passe nécessitent une fonction salée délibérément lente, gourmande en mémoire et par utilisateur, comme Argon2id, scrypt ou bcrypt. Un sel unique par utilisateur fait que des mots de passe identiques produisent des enregistrements stockés différents, tandis que les coûts de mémoire et de temps configurés pour la fonction de mot de passe rendent chaque candidat délibérément plus cher. Les paramètres exacts nécessitent une analyse comparative locale et ne sont pas prescrits ici. Le calculateur de hachage ToolAcre SHA n'effectue pas de hachage de mot de passe, et la documentation du guide explique pourquoi SHA-256 n'est pas adapté à ce cas d'utilisation.

Exemple pratique : application du mappage à SHA-1 dans un référentiel Git par rapport à SHA-1 dans un certificat

Un exemple concret : SHA-1 dans un référentiel Git. Chaque commit Git a un hachage SHA-1 comme ID d'objet. Si la résistance aux collisions SHA-1 est brisée, un référentiel Git est-il vulnérable ? La réponse est : peut-être. Un attaquant pourrait créer une validation avec le même SHA-1 qu'une validation existante et la transmettre à un serveur de référentiel, qui pourrait ensuite servir différentes validations à différents clients. Cependant, cela nécessite de choisir une cible spécifique et de calculer une collision, ce qui coûte cher même avec SHA-1 cassé.

Les membres du projet Git ont publié une feuille de route pour migrer vers SHA-256, mais l'urgence est modérée car l'attaque pratique nécessite à la fois des techniques de collision et une compromission du serveur. Pour un développeur demandant « la sécurité de mon référentiel Git dépend-elle de la résistance aux collisions SHA-1 ? la réponse est oui, mais le risque pratique est faible par rapport à d’autres menaces pour la sécurité. Le calculateur de hachage ToolAcre SHA fournit à la fois SHA-1 et SHA-256, étiquetés de manière appropriée, afin que les développeurs puissent calculer l'un ou l'autre et comprendre la différence.

À retenir : nommez la propriété avant de paniquer : le calculateur de hachage ToolAcre SHA vous permet de voir les longueurs de résumé qui définissent les limites de chaque algorithme.

Pour tout système utilisant SHA-1, la décision de mise à niveau dépend du fait que le cas d'utilisation nécessite ou non la propriété spécifique qui est cassée. Si le cas d'utilisation concerne les signatures numériques ou la déduplication contre des attaquants actifs, une résistance aux collisions est requise et SHA-1 est cassé, alors effectuez une mise à niveau vers SHA-256 immédiatement. Si le cas d'utilisation concerne le stockage adressé au contenu ou les sommes de contrôle, une deuxième résistance de pré-image est requise et SHA-1 est toujours sécurisé à cette fin, bien que SHA-256 soit préférable pour la pérennité.

Si le cas d'utilisation est la dérivation de clé ou la vérification de mot de passe, la résistance à la pré-image est requise, et rien dans cette boîte à outils ne doit être utilisé du tout, car les fonctions plus rapides sont meilleures pour la dérivation de clé. Le calculateur de hachage ToolAcre SHA permet aux développeurs de calculer des résumés et de voir les propriétés en action. Comprendre ces trois propriétés et les faire correspondre aux cas d'utilisation est la base pour faire des choix cryptographiques sécurisés dans les systèmes réels.