Es ist theoretisch möglich, aber es wurde noch nicht getan.
Was Sie suchen, wird als "Hash-Kollision" bezeichnet: zwei Dateien mit demselben Hash. Kryptografische Hash-Codes wie SHA-1 sind im Allgemeinen so konzipiert, dass sie dies erschweren. Da es sich bei SHA-1 um einen 160-Bit-Code handelt, sind durchschnittlich 2 ^ 159 Brute-Force-Versuche erforderlich, um ein Duplikat zu finden. Wenn ein Algorithmus gefunden wird, der zuverlässig besser als ein kryptografischer Hash ist, wird der Hash als "defekt" betrachtet.
MD-5 ist ein Beispiel für einen sehr kaputten Hash. Es sollte eine Stärke von 128 Bit haben und durchschnittlich 2 ^ 127 Versuche erfordern. Da bekannte Sicherheitslücken missbraucht werden, kann die tatsächliche Anzahl der erforderlichen Versuche nur 2 ^ 47 betragen. Dies ist eine Menge kleiner als 2 ^ 127. Tatsächlich wurde dies in einem modernen Computercluster in weniger als einem Tag erledigt.
Ich gebe dieses Beispiel an, weil es der Frage am nächsten kommt, wie Sie SHA-1 verwenden möchten. Dies ist jedoch nicht die häufigste Methode der Kryptoanalyse, um sicherzustellen, dass Hashes nicht beschädigt werden. Sie ermöglichen normalerweise eine Kollision zwischen zwei Dateien, wie vom Angreifer ausgewählt, anstatt dass Sie eine Datei auswählen und der Angreifer danach sucht, sie abzugleichen. Diese Art von Angriff hat den Vorteil, dass sie einfacher zu bewerten ist. Wenn ich finde, dass es "schwer" ist, Ihre Datei zu knacken, bedeutet das, dass eine andere Datei ähnlich stark ist? Dieser Angriff, bei dem der Angreifer beide Dateien auswählen kann, stellt sicher, dass wir das Schlimmste vom Schlimmsten abfangen.
Diese Art von Angriff erlaubt einen interessanten Trick, der als " Geburtstagsangriff " bekannt ist. Um es kurz zu machen: Die Verwendung des Geburtstagsangriffs halbiert die Stärke des Algorithmus, sodass für SHA-1 durchschnittlich 2 ^ 80 Versuche und für MD5 durchschnittlich 2 ^ 64 Versuche erforderlich sind. Dies sind die Hälfte von 160 bzw. 128.
SHA-1 hat bekannte Angriffe, die seine Stärke von 2 ^ 80 auf 2 ^ 69 verringern. Das wird dir nicht viel ausmachen. 2 ^ 69 Versuche ist eine lange Zeit.
Aus der Geschichte haben wir jedoch herausgefunden, dass Hash-Algorithmen nicht spontan, sondern im Laufe der Zeit kaputt gehen. Niemand knackt einen Algorithmus wie MD-5, der ihn über Nacht von 2 ^ 64 auf 2 ^ 47 erhöht. Es passiert im Laufe der Zeit, da viele Personen Artikel über die Mathematik veröffentlichen, die sie dagegen anwenden. Man kann normalerweise beobachten, wie die Komplexität der Angriffe von Beginn an langsam abnimmt (wobei der beste Angriff normalerweise der Geburtstagsangriff ist).
Die Tatsache, dass sich die Kollisionen ändern, deutet darauf hin, dass SHA-1 das Licht am Ende des Tunnels erblickt. Es ist immer noch stark, aber es könnte ein Wunsch bestehen, auf das neueste SHA-3 zu steigen, das derzeit viel sicherer ist.
Sie sollten solche Entscheidungen wirklich aus der Perspektive eines Bedrohungsmodells treffen. Wie viel Schaden kann ein Angreifer anrichten, wenn er eine dieser Kollisionen erleidet? Sind Ihre Angreifer Skriptkinder mit Zugriff auf ein paar Laptops oder Regierungen mit ganzen Supercomputer-Clustern zur Verfügung. Wie groß ist das Zeitfenster, in dem ein Angreifer den Hash brechen muss, bevor er keine Verwendung findet? All dies wirkt sich darauf aus, wie ernst Sie Kollisionen in Betracht ziehen müssen.