it-swarm.com.de

Ist Git Crowdsourcing kryptografische Angriffe?

Ein starker kryptografischer Hash macht Kollisionen unwahrscheinlich. Viele kryptografische Protokolle bauen auf dieser Tatsache auf. Aber Git verwendet SHA-1 Hashes als Objektkennungen. Es gibt also viele bereits berechnete Hashes in den öffentlichen Git-Repositories des Webs sowie Details zu deren Reproduktion.

Gibt es einen bekannten Angriff auf ein Protokoll, bei dem dies genutzt werden könnte? Etwas wie "Nun, ich kann etwas Böses tun, wenn ich diesen unbekannten Klartext durch einen anderen Klartext mit demselben SHA-1-Hash ersetze. Anstatt eine Kollision zu berechnen, werde ich danach googeln." Natürlich ist der Speicherplatz aller Hashes noch weit davon entfernt, von Git-Commits abgedeckt zu werden, aber dennoch würde ich vermuten, dass alle Git-Commits da draußen einige CPU-Stunden für die Berechnung von SHA-1-Hashes betragen könnten. Ich bin mir jedoch nicht sicher, ob diese Vermutung gerechtfertigt ist.

Soweit ich sehen kann, würde ein solcher Angriff nur funktionieren, wenn der Hash sichtbar ist, der einfache Text, aus dem er generiert wurde, nicht ist, aber ein Teil des verschlüsselten Chiffretextes, und ein anderer Text kann ebenfalls verschlüsselt werden. Dies scheint also für einige auf öffentlichen Schlüsseln basierende Protokolle zu gelten, bei denen Sie verschlüsseln, aber nicht entschlüsseln können. Darüber hinaus haben Sie keine Kontrolle über den kollidierenden Klartext, sodass offensichtliche Dinge wie die Angabe Ihres eigenen Namens als Begünstigter einer Finanztransaktion nicht funktionieren. Gibt es Szenarien, in denen eine solche Crowd-Sourcing-Hash-Kollision mit nicht zu vernachlässigender Wahrscheinlichkeit ernsthafte Probleme verursachen könnte?

48
MvG

Ist Git Crowdsourcing die Produktion von SHA-1 Preimages ? Nicht zu einem sinnvollen Grad.

Github sagt nicht, wie viele Commits es verfolgt, aber es sind wahrscheinlich nicht mehr als ein paar Milliarden. Zum Vergleich gibt es 1.461.501.637.330.902.918.203.684.832.716.283.019.655.932.542.976 mögliche SHA-1-Hashes, sodass die Wahrscheinlichkeit, einen Klartext zu finden, der mit einem beliebigen interessierenden Hash übereinstimmt, praktisch nicht besteht.

50
Mark

Sie könnten wahrscheinlich Ihre eigenen SHA1-Hashes schneller aus kleinen beliebigen Texten berechnen, als wenn Sie die Hashes ernten, die jemand anderes berechnet hat. Aber es gibt viele mögliche SHA1-Digests, ungefähr so ​​viele wie Atome auf der Welt. Dies zeigt die Herausforderung, wenn Sie eine Liste aller bekannten Digests führen und diese Liste durchsuchen möchten.

13
rvdheij

Der menschliche Aufwand, der für die Berechnung der einzelnen in Git gefundenen SHA-1-Hashes aufgewendet wurde, ist erheblich. Und das bedeutet, dass die Anzahl der auf diese Weise berechneten Hashes ziemlich begrenzt ist.

Wenn Sie Kollisionen finden möchten, benötigen Sie keinen menschlichen Aufwand pro Hash und nur sehr wenig Computerzeit für jeden Hash.

Bitcoin ist möglicherweise das einzige System mit genügend Rechenleistung, um die 2 ^ 80 kryptografischen Operationen auszuführen, die erforderlich sind, um eine SHA-1-Kollision durch Brute Force zu finden. Obwohl der größte Teil dieser Rechenleistung spezialisierte Hardware ist, die nur SHA-2 ausführt und nicht für die Berechnung von SHA-1-Hashes verwendet werden konnte.

Es liefert immer noch eine Vorstellung vom Umfang des Einsatzes, der für einen solchen Brute-Force-Angriff erforderlich ist. Bitcoin hat bewiesen, dass 2 ^ 80 kryptografische Operationen möglich sind. Und allein aus diesem Grund sollten wir so schnell wie möglich zu stärkeren Hashes als SHA-1 übergehen.

Wäre Bitcoin auf SHA-1 basiert, wäre bereits eine Kollision aufgetreten. Und das wäre mit brutaler Gewalt geschehen, ohne auch nur eine Schwäche in SHA-1 auszunutzen. Das liegt daran, dass Bitcoin fast nichts anderes tut, als ständig Hashes zu berechnen, und es verfügt über spezielle Hardware, um dies zu tun.

Die tatsächlich in Bitcoin verwendete Hash-Funktion hat eine größere Ausgabe als SHA-1, sodass höchstwahrscheinlich keine Kollision aufgetreten ist. Außerdem wäre ein anderes Design erforderlich gewesen, um herauszufinden, ob eine Kollision aufgetreten ist, da Bitcoin, wie es heute existiert, die meisten Hashes sofort verwirft. Selbst wenn eine Kollision aufgetreten wäre, würden wir nichts darüber wissen.

10
kasperd