it-swarm.com.de

Ist es sicher, die Möglichkeit von SHA Kollisionen in der Praxis zu ignorieren?

Nehmen wir an, wir haben eine Milliarde eindeutiger Bilder, jeweils ein Megabyte. Wir berechnen den SHA-256-Hash für den Inhalt jeder Datei. Die Möglichkeit einer Kollision hängt ab von:

  • die Anzahl der Dateien
  • die Größe der einzelnen Datei

Inwieweit können wir diese Möglichkeit ignorieren, vorausgesetzt, sie ist Null?

196
Hristo Hristov

Die übliche Antwort lautet: Wie groß ist die Wahrscheinlichkeit, dass ein Schurken-Asteroid innerhalb der nächsten Sekunde auf die Erde stürzt, die Zivilisation auslöscht, wie wir sie kennen, und ein paar Milliarden Menschen tötet? Es kann argumentiert werden, dass jedes unglückliche Ereignis mit einer geringeren Wahrscheinlichkeit eigentlich nicht sehr wichtig ist.

Wenn wir eine "perfekte" Hash-Funktion mit der Ausgabegröße n haben, und wir haben p Nachrichten zu Hash (individuelle Nachrichtenlänge ist nicht wichtig), dann ist die Kollisionswahrscheinlichkeit ungefähr p2/ 2n + 1 (Dies ist eine Näherung, die für "klein" gilt p , dh wesentlich kleiner als 2n/2). Zum Beispiel mit SHA-256 ( n = 256 ) und einer Milliarde Nachrichten ( p = 109) dann ist die Wahrscheinlichkeit ungefähr 4,3 * 10-60.

Ein Massenmörder-Weltraumgestein kommt durchschnittlich alle 30 Millionen Jahre vor. Dies führt zu einer Wahrscheinlichkeit, dass ein solches Ereignis in der nächsten Sekunde auftritt, bis ungefähr 10-15. Das ist 45 Größenordnungen wahrscheinlicher als die SHA-256-Kollision. Kurz gesagt, wenn Sie SHA-256-Kollisionen für beängstigend halten, sind Ihre Prioritäten falsch.

In einer Sicherheitseinrichtung, in der ein Angreifer die Nachrichten auswählen kann, die gehasht werden sollen, verwendet der Angreifer möglicherweise wesentlich mehr als eine Milliarde Nachrichten. Sie werden jedoch feststellen, dass die Erfolgswahrscheinlichkeit des Angreifers immer noch verschwindend gering ist. Das ist der springende Punkt bei der Verwendung einer Hash-Funktion mit einer 256-Bit-Ausgabe: Kollisionsrisiken können vernachlässigt werden.

All dies setzt natürlich voraus, dass SHA-256 eine "perfekte" Hash-Funktion ist, was alles andere als bewiesen ist. Trotzdem scheint SHA-256 recht robust zu sein.

356
Thomas Pornin

Die Möglichkeit einer Kollision hängt nicht von der Größe der Dateien ab, sondern nur von ihrer Anzahl.

Dies ist ein Beispiel für das Geburtstagsparadoxon . Auf der Wikipedia-Seite wird die Wahrscheinlichkeit einer Kollision geschätzt. Wenn Sie die Zahlen eingeben, werden Sie feststellen, dass alle jemals auf der Erde produzierten Festplatten nicht genug 1-MB-Dateien enthalten können, um eine Kollisionswahrscheinlichkeit von sogar 0,01% für SHA-256 zu erhalten.

Grundsätzlich kann man die Möglichkeit einfach ignorieren.

46

Zuallererst es ist nicht Null, aber sehr nahe bei Null .

Die Schlüsselfrage ist , was passiert, wenn tatsächlich eine Kollision auftritt ? Wenn die Antwort lautet "Ein Kernkraftwerk wird explodieren", sollten Sie die Kollisionsmöglichkeit wahrscheinlich nicht ignorieren. In den meisten Fällen sind die Folgen nicht so schlimm und Sie können die Kollisionsmöglichkeit ignorieren.

Vergessen Sie auch nicht, dass Ihre Software (oder ein winziger Teil davon) möglicherweise in einer Unmenge von Computern bereitgestellt und gleichzeitig verwendet wird (einige winzige eingebettete Mikrocomputer, die heutzutage fast überall enthalten sind). In diesem Fall müssen Sie die geschätzte Anzahl der Exemplare mit der größtmöglichen Anzahl multiplizieren.

17
sharptooth