Selon cet article et beaucoup d’autres, SHA-1 n’est pas sécurisé.
Dans mon cas, les mots de passe ou les certificats numériques ne me préoccupent pas. Je suis préoccupé par l'intégrité des fichiers.
Est-il raisonnablement possible qu'un fichier (par exemple une image ISO ou un fichier exécutable) soit modifié de manière malveillante de manière à:
- Conserve le hachage SHA-1 du fichier d'origine et
- Maintient le contenu global et le fonctionnement du fichier (mais inclut bien sûr maintenant un contenu malveillant qui n'y était pas à l'origine)
À mon avis, modifier un fichier de manière à générer une collision SHA-1 le rendrait totalement inutile. L'ISO serait totalement corrompu, ou le fichier exécutable serait tellement embrouillé qu'il ne serait même plus un fichier exécutable.
Mais la façon dont je vois les choses pourrait bien être fausse. Jusqu'à présent, je n'ai rien trouvé sur les recherches Google concernant l'adéquation continue de SHA-1 pour la vérification des fichiers. Des idées?
Réponses:
Personne n'a encore accompli cela pour SHA-1. C'est possible en théorie, mais pas encore pratique. Les informations sur l'insécurité dans SHA-1 signifient simplement que le niveau de sécurité n'est pas aussi élevé que nous le souhaiterions, ce qui signifie que nous n'aurons pas autant d'années à nous soucier de cela que nous le pensions.
Il est plus difficile de produire un fichier avec le même hachage SHA-1 que de créer deux fichiers vous-même avec le même hachage SHA-1. Et à notre connaissance, personne dans le monde n’a encore accompli cette tâche plus facile. Cela ne signifie pas que cela ne peut pas arriver demain cependant
la source
C'est théoriquement possible, mais cela n'a pas encore été fait.
Ce que vous recherchez s'appelle une "collision de hachage:" deux fichiers avec le même hachage. Les codes de hachage cryptographiques tels que SHA-1 sont généralement conçus pour rendre cela difficile. Comme SHA-1 est un code de 160 bits, il faudra en moyenne 2 ^ 159 tentatives de force brute pour trouver un doublon. Si on trouve un algorithme dont le résultat est meilleur que celui utilisé contre un hachage cryptographique, celui-ci est considéré comme "cassé".
MD-5 est un exemple de hachage très cassé. Il était censé avoir une puissance de 128 bits, nécessitant en moyenne 2 ^ 127 tentatives. En ce qui concerne les vulnérabilités connues, le nombre réel de tentatives nécessaires peut être aussi faible que 2 ^ 47. C'est beaucoup moins que 2 ^ 127. En fait, cela s’est fait en moins d’une journée sur un cluster informatique moderne.
Je donne cet exemple car il correspond le mieux à la manière dont vous envisagez d’utiliser SHA-1. Cependant, ce n’est pas l’approche la plus courante utilisée par la cryptanalyse pour s’assurer que les hachages ne sont pas cassés. Ils permettent généralement une collision entre deux fichiers, choisis par l'attaquant, au lieu de vous laisser choisir un fichier et l'attaquant cherchant à le faire correspondre. Ce type d'attaque a l'avantage d'être plus facile à évaluer. Si je trouve qu'il est "difficile" de déchiffrer votre fichier, cela signifie-t-il qu'un autre fichier est tout aussi puissant? Cette attaque qui permet à l’attaquant de choisir les deux fichiers nous permet d’attraper le pire du pire.
Ce type d'attaque permet une astuce intéressante appelée " attaque d'anniversaire ". En bref, utiliser l'attaque d'anniversaire divise par deux la force de l'algorithme. SHA-1 nécessite donc 2 ^ 80 tentatives (en moyenne) et MD5, 2 ^ 64 tentatives (en moyenne). Ce sont la moitié de 160 et 128 respectivement.
SHA-1 a des attaques connues qui diminuent sa force de 2 ^ 80 à 2 ^ 69. Cela ne va pas avoir beaucoup d'importance pour vous. 2 ^ 69 tentatives, c'est long .
Cependant, de l’histoire, nous avons constaté que les algorithmes de hachage ne sont pas cassés spontanément, mais plutôt au fil du temps. Personne ne déchiffre un algorithme tel que MD-5 en le faisant passer de 2 ^ 64 à 2 ^ 47 en une nuit. Cela se produit au fil du temps, alors que de nombreuses personnes publient des articles sur les calculs qu’ils utilisent pour contrer ces calculs. On peut généralement voir la complexité des attaques diminuer lentement depuis le début de l’algorithme (où la meilleure attaque est généralement l’attaque anniversaire).
Le fait que nous assistions à quelques changements dans les collisions suggère que SHA-1 voit la lumière au bout du tunnel. Il est encore fort, mais on pourrait souhaiter passer au dernier SHA-3, qui est actuellement beaucoup plus sécurisé.
Vous devriez vraiment prendre de telles décisions du point de vue du modèle de menace. Combien de dégâts un attaquant peut-il causer s'il subit une de ces collisions? Les scripts de vos attaquants ont-ils accès à quelques ordinateurs portables ou les gouvernements disposent-ils de grappes complètes de superordinateurs? Quelle est la durée d'une fenêtre temporelle qu'un attaquant doit casser le hachage avant qu'il ne soit utilisé (de nombreuses utilisations de la cryptographie impliquent un "changement de garde", tel que la rotation du mot de passe). Tous ces facteurs affecteront le sérieux avec lequel vous devrez considérer les collisions.
la source
Les failles de SHA-1 discutées dans cet article sont très spécifiques: elles permettent aux attaquants de créer deux choses qui ont la même valeur (ceci s'appelle une "attaque par collision"). Cependant, une attaque par collision nécessite que l'attaquant contrôle les deux fichiers impliqués. Si l'attaquant ne contrôle pas le fichier d'origine, une attaque par collision ne leur permet pas de trouver un autre fichier avec la même valeur de hachage.
La raison pour laquelle cela est important pour TLS / SSL (et les signatures en général) est qu’avec ceux-ci, un attaquant peut souvent contrôler les deux fichiers. Un certificat TLS est principalement créé par la personne qui le demande (les bits qu’ils ne contrôlent pas sont souvent prévisibles). Les collisions leur permettent donc de créer un certificat légitime et un certificat illégitime, de faire signer le certificat légitime et de transférer la signature.
Pour les fichiers, la même situation ne s'applique pas toujours. Si vous craignez que la personne qui crée le fichier soit l’attaquant (par exemple, une chose sera vérifiée de manière indépendante, puis vous enverra la charge maléfique avec le même hachage), l’attaque SHA-1 s’applique, et vous devriez regarder vers une élimination progressive (bien que ce ne soit pas critique, comme l'a mentionné David Schwartz). Si le fichier d'origine est approuvé, l'attaquant ne peut pas appliquer les attaques SHA-1 connues, bien que vous devriez toujours penser à le supprimer progressivement si vous le pouvez (si vous avez le choix, utilisez un hachage sans attaques connues, telles que SHA). 2)
En réponse à "la collision ne sera pas utile" - Bien qu'une attaque n'exige pas qu'un attaquant soit en mesure d'obtenir une collision utile , il n'est généralement pas si difficile de transformer une "collision" en "collision utile". De nombreux formats de fichiers disposent de suffisamment d'espace pour que vous puissiez avoir ce que vous voulez sans affecter les fonctionnalités du fichier; un attaquant peut généralement modifier cela afin d’obtenir une collision (si les collisions sont pratiquement détectables), tout en conservant la partie fonctionnelle comme elle le souhaiterait. L'écart entre "attaque académique" et "attaque pratique" peut être grand; l'écart entre "toute collision" et "collision utile" est généralement beaucoup plus petit.
Le problème le plus grave, qui n’est pas lié au choix de l’algorithme, est de savoir comment obtenir le hachage. Tout ce qu’un hachage fait est de déplacer le problème de «récupère le fichier réel» à «récupère la valeur de hachage réelle»; une valeur de hachage envoyée par le même serveur et sur le même type de connexion que le fichier est totalement inutile contre les modifications malveillantes (tout attaquant qui peut altérer le fichier peut altérer le hachage). Les hachages ne sont utiles que si vous pouvez faire davantage confiance au hachage qu'au fichier; Bien que ce soit parfois le cas (torrents, miroirs), ils sont souvent utilisés quand ce n'est pas le cas. Vous devez donc faire très attention à cela chaque fois que vous utilisez des hachages pour la vérification de l'intégrité.
la source
Vous devez faire la différence entre une attaque par collision et une attaque avant image . La recherche de deux messages contenant la même valeur est une attaque par collision.
Remplacer un message donné (ici: un exécutable) par un autre message ayant le même hachage est une (seconde) attaque de pré-image.
SHA-1 est cassé dans la mesure où une attaque par collision peut être effectuée en 2 52 opérations selon un article de Wikipedia qui ne fournit aucune citation pour ce nombre (la meilleure attaque que je connaisse qui soit réellement crédible est celle de Marc Stevens , qui prend 2 60 opérations). Mais supposons le cas pessimiste de 2 52 .
C'est inquiétant, car une attaque de cette ampleur est non seulement théoriquement envisageable, mais parfaitement réalisable en moins d'une journée sur une plate-forme multi-GPU. C'est bien sûr un problème pour les applications où "deux" messages feront l'affaire. Même le chiffre de 2 60 indiqué par Stevens (qui représente 256 fois plus de travail) est parfaitement réalisable si votre attaquant est prêt à dépenser de l'argent supplémentaire pour résoudre le problème ou à passer une année.
Ce qui est exactement le genre de chose qui n'empêchera pas une personne impliquée dans l'espionnage ou la cybercriminalité de falsifier des certificats.
Maintenant, une attaque pré-image a un exposant deux fois plus grand, donc si on prend 2 52 pour l'attaque par collision, cela correspondrait à 2 104 opérations, ce qui est un stade totalement différent.
Ce n'est pas seulement peu pratique (une machine qui est un milliard de fois plus rapide que celle mentionnée dans le paragraphe précédent nécessiterait encore environ 6 millions d'années), mais étant donné nos faibles moyens de production d'énergie, c'est tout à fait impossible.
Effectuer un calcul aussi massif nécessiterait une source d’énergie beaucoup plus importante que tout ce que nous pouvons nous permettre de consacrer à une seule opération. Non, pas tout à fait une source d’énergie de la taille du soleil, mais quand même une assez grosse .
Vous pouvez raisonnablement vous attendre à obtenir entre 10 et 50 GFLOPS sur un Watt. En supposant qu'un miracle se produise et que les processeurs consomment environ plusieurs milliers de fois mieux en énergie pendant la nuit, on pourrait supposer que 1 SHA 1 FLOP (plutôt optimiste!). Cela signifie que pour effectuer 2 104 calculs de hachage dans les 10 ans, vous avez besoin d'une centrale de 10 12 W. Pour lancer l'attaque dans un délai d'un an, vous avez besoin d'une centrale de 10 13 W. C'est environ 50 fois plus que ce que les centrales nucléaires des États-Unis, de la France et du Japon peuvent produire ensemble, uniquement pour forger un seul hasch.
Cela ne se produira pas , il existe des moyens beaucoup plus faciles d'atteindre le même objectif (exploiter le serveur qui stocke le hachage d'origine et le remplacer, faire chanter quelqu'un, etc.).
la source
Le point général de l'article mentionné dans la question est le suivant: SHA1 est obsolète et doit être supprimé progressivement tant que vous avez encore le temps de le faire en douceur. Dans certaines régions, le temps presse car Google et Microsoft imposent des délais.
Règle générale pour les technologies obsolètes :
Résumé de l'article de Bruce Schneier publié en 2012: "Le problème, c'est que nous, les membres de la communauté, devons commencer la migration de SHA-1 à SHA-2 / SHA-3 maintenant."
la source
En ce qui concerne la partie collision de hachage SHA-1 de votre question, quelques-unes des réponses ont été apportées à cette question.
Cependant, une grande partie de cela dépend du type de fichier avec lequel nous travaillons:
Ce que cela signifie varie énormément sur ce qui détecte les altérations:
Alors, il ne vous reste plus qu'à trouver des solutions pour éviter les collisions, quelle que soit leur structure et leur degré indétectable:
Supposons que vous ayez un ordinateur super rapide et un fichier compact, de sorte qu'une modification avec une séquence d'octets valide et un nouveau calcul du hachage prennent 1 milliseconde (nécessitant probablement du matériel dédié). Si la distribution de hachage est parfaitement aléatoire et répartie sur toute la plage, vous obtiendrez une collision avec SHA-1 à chaque
2^160
tentative (forcée brutalement).Mais bon, essayons les versions
2^60
et2^52
, et supposons qu'elles nous permettent de modifier le fichier comme bon nous semble (ce qu'elles ne font pas) et qu'elles peuvent également être effectuées en 1ms à chaque essai:Mais bon, vous pourriez avoir de la chance. Vraiment, vraiment, plus d'un-miracle-que-tout-les-gens-appels-miracles chanceux.
la source
Pas vraiment, vous pouvez satisfaire à l’une de ces conditions à la fois, mais pas les deux. Il est possible d’obtenir le même hachage pour deux fichiers différents, mais il est pratiquement impossible de modifier un fichier et d’essayer d’obtenir le même hachage. autant que je sache
la source
Oui c'est possible. Pensez à la manière dont les virus fonctionnent sur les fichiers EXE. Le contenu du logiciel malveillant est ajouté au fichier EXE d'origine, de sorte que le programme fonctionne toujours comme il le faisait à l'origine, mais se transmet également sous forme de virus. Maintenant, pour conserver le même hachage, vous aurez besoin d’un rembourrage supplémentaire spécialement conçu .
Cela signifie que le fichier serait plus volumineux. Mais dans le cas d'un fichier EXE, vous pourriez peut-être supprimer une partie du code moins utilisé, afin que le programme ne semble fonctionner que dans un premier temps. Dans le cas d'un fichier JPEG, vous pouvez compresser davantage l'image ou utiliser une image totalement différente. Pour une image ISO, vous pouvez supprimer des ensembles de fichiers. Les calculs requis pour reproduire le hachage seraient plus difficiles et, peut-être, mathématiquement impossibles pour des cas spécifiques, mais seraient toujours possibles en général.
la source