web-dev-qa-db-fra.com

Git crowdsourcing est-il des attaques cryptographiques?

Un hachage cryptographique puissant rend les collisions peu probables. De nombreux protocoles cryptographiques s'appuient sur ce fait. Mais Git utilise SHA-1 des hachages comme identificateurs d'objet. Il y a donc beaucoup de hachages déjà calculés dans les dépôts publics Git du Web, ainsi que des détails sur la façon de les reproduire.

Y a-t-il une attaque connue contre un protocole où cela pourrait être exploité? Quelque chose comme "eh bien, je peux faire quelque chose de mal si je remplace ce texte brut inconnu par un autre texte brut avec le même hachage SHA-1, donc au lieu de calculer une collision, je vais le chercher sur Google." Bien sûr, l'espace de tous les hachages est encore loin d'être couvert par les validations Git, mais néanmoins, je suppose que toutes les validations Git pourraient représenter un certain nombre d'heures CPU de calcul des hachages SHA-1. Je ne sais pas si cette supposition est justifiée, cependant.

Pour autant que je sache, une telle attaque ne fonctionnerait que si le hachage est visible, le texte brut à partir duquel il a été généré ne l'est pas, mais du texte de chiffrement généré à partir de l'est, et un texte différent peut également être chiffré. Il semble donc que cela puisse s'appliquer à certains protocoles basés sur des clés publiques, où vous pouvez chiffrer mais pas déchiffrer. De plus, vous n'avez aucun contrôle sur le texte brut en collision, donc des choses évidentes comme mettre votre propre nom en tant que bénéficiaire d'une transaction financière ne fonctionneront pas. Existe-t-il des scénarios où une telle collision de hash d'origine collective pourrait causer de graves problèmes avec une probabilité non négligeable?

48
MvG

Git crowdsourcing la production de SHA-1 préimages ? Pas à un degré significatif.

Github ne dit pas combien de validations sont suivies, mais ce n'est probablement pas plus de quelques milliards. À titre de comparaison, il existe 1 461 501 637 330 230 902 918 203 684 832 716 283 019 655 932 542 976 hachages SHA-1 possibles, de sorte que les chances de trouver un texte en clair correspondant à un hachage arbitraire d'intérêt sont effectivement inexistantes.

50
Mark

Vous pourriez probablement calculer vos propres hachages SHA1 plus rapidement à partir de petits textes arbitraires que de récolter les hachages calculés par quelqu'un d'autre. Mais il existe de nombreux digestes SHA1 possibles, à peu près autant d'atomes dans le monde. Cela illustre le défi si vous souhaitez conserver une liste de tous les résumés connus et rechercher cette liste.

13
rvdheij

La quantité d'effort humain qui a été consacrée au calcul de chacun de ces hachages SHA-1 trouvés dans Git est significative. Et cela signifie que le nombre de hachages calculés de cette façon est assez limité.

Si vous voulez trouver des collisions, vous n'avez besoin d'aucun effort humain par hachage et très peu de temps passé par ordinateur sur chaque hachage.

Bitcoin pourrait être le seul système avec une puissance de calcul suffisante pour effectuer les 2 ^ 80 opérations cryptographiques nécessaires pour trouver une collision SHA-1 par force brute. Bien que la majeure partie de cette puissance de calcul soit un matériel spécialisé qui ne fait que SHA-2 et ne puisse pas être réutilisé pour calculer les hachages SHA-1.

Il donne toujours une idée de l'ampleur du déploiement nécessaire pour une telle attaque par force brute. Bitcoin a prouvé que 2 ^ 80 opérations cryptographiques sont réalisables. Et pour cette seule raison, nous devrions passer à des hachages plus forts que SHA-1 ASAP.

Si le bitcoin avait été basé sur SHA-1, une collision se serait déjà produite. Et cela aurait été par la force brute sans même exploiter aucune faiblesse de SHA-1. En effet, le bitcoin ne fait presque rien d'autre que de calculer des hachages tout le temps, et il dispose d'un matériel spécialisé pour le faire.

La fonction de hachage réelle utilisée dans Bitcoin a une sortie plus grande que SHA-1, il n'y a donc probablement pas eu de collision. De plus, il aurait fallu une conception différente pour pouvoir savoir si une collision s'était produite car le bitcoin tel qu'il existe aujourd'hui rejette immédiatement la plupart des hachages, donc même si une collision s'était produite, nous ne le saurions pas.

10
kasperd