Jest to teoretycznie możliwe, ale jeszcze tego nie zrobiono.
To, czego szukasz, nazywa się „kolizją skrótu”: dwoma plikami z tym samym skrótem. Kryptograficzne kody skrótu, takie jak SHA-1, są ogólnie zaprojektowane, aby to utrudnić. Ponieważ SHA-1 jest 160-bitowym kodem, potrzeba około 2 ^ 159 brutalnych prób znalezienia duplikatu. Jeśli zostanie znaleziony algorytm, który niezawodnie radzi sobie lepiej niż w przypadku kryptograficznego skrótu, jest on uznawany za „uszkodzony”.
MD-5 jest przykładem bardzo zepsutego skrótu. Miał on mieć siłę 128 bitów, co wymagało średnio 2 ^ 127 prób. Ponieważ nadużywając znanych luk w zabezpieczeniach, rzeczywista liczba potrzebnych prób może wynosić nawet 2 ^ 47. To jest DUŻO mniejsze niż 2 ^ 127. W rzeczywistości zostało to zrobione w niecały dzień w nowoczesnym klastrze komputerowym.
Podaję ten przykład, ponieważ jest to najbliżej tego, jak chcesz użyć SHA-1. Nie jest to jednak najczęstsze podejście stosowane w kryptoanalizie, aby mieć pewność, że skróty nie zostaną złamane. Zwykle pozwalają one na kolizję między dwoma plikami wybranymi przez atakującego, zamiast wybierać jeden plik i atakującego, który chce go dopasować. Ten rodzaj ataku ma tę zaletę, że jest łatwiejszy do porównania. Jeśli uważam, że „trudno” złamać twój plik, czy to oznacza, że inny plik jest podobnie silny? Ten atak, w którym atakujący może wybrać oba pliki, zapewnia, że złapiemy najgorsze z najgorszych.
Ten rodzaj ataku pozwala na interesującą sztuczkę zwaną „ atakiem urodzinowym ”. Krótko mówiąc, użycie ataku urodzinowego zmniejsza siłę algorytmu o połowę, więc SHA-1 wymaga 2 ^ 80 prób (średnio), a MD5 wymaga 2 ^ 64 prób (średnio). Są to odpowiednio połowa z 160 i 128.
SHA-1 ma znane ataki, które zmniejszają jego siłę z 2 ^ 80 do 2 ^ 69. To nie będzie miało dla ciebie większego znaczenia. 2 ^ 69 prób to długi czas.
Jednak z historii odkryliśmy, że algorytmy mieszające nie są łamane spontanicznie, ale raczej z czasem. Nikt nie łamie algorytmu takiego jak MD-5, biorąc go z 2 ^ 64 na 2 ^ 47 w ciągu nocy. Dzieje się to z czasem, ponieważ wiele osób publikuje artykuły na temat matematyki, której używają przeciwko niemu. Zwykle można obserwować, jak złożoność ataków spada powoli od początku algorytmu (gdzie najlepszym atakiem jest zwykle atak urodzinowy).
Fakt, że obserwujemy pewne zmiany w zderzeniach, sugeruje, że SHA-1 widzi światło na końcu tunelu. Nadal jest silny, ale może być chęć przejścia na najnowszą SHA-3, która jest obecnie znacznie bezpieczniejsza.
Powinieneś naprawdę podejmować takie decyzje z perspektywy modelu zagrożenia. Ile szkód może wyrządzić atakujący, jeśli dostanie jedną z tych kolizji. Czy atakujący mają dzieciaki z dostępem do kilku laptopów, czy rządy z całymi klastrami superkomputerów do ich dyspozycji. Jak duże jest okno czasowe, w którym atakujący musi złamać skrót, zanim nie zostanie on użyty (wiele zastosowań kryptografii wymaga „zmiany warty”, takiej jak rotacja hasła). Wszystko to wpłynie na to, jak poważnie musisz brać pod uwagę kolizje.