Załóżmy, że mamy miliard unikalnych obrazów, każdy o wielkości jednego megabajta. Obliczamy skrót SHA-256 dla zawartości każdego pliku. Możliwość kolizji zależy od:
- liczba plików
rozmiar pojedynczego pliku
Jak daleko możemy posunąć się, ignorując tę możliwość, zakładając, że jest to zero?
Odpowiedzi:
Zwykła odpowiedź brzmi: jakie jest prawdopodobieństwo, że nieuczciwa asteroida rozbije się na Ziemi w ciągu najbliższej sekundy, niszcząc cywilizację taką, jaką znamy i zabijając kilka miliardów ludzi? Można argumentować, że każde nieszczęśliwe zdarzenie z prawdopodobieństwem niższym niż to nie jest tak naprawdę bardzo ważne.
Jeśli mamy „Perfect” funkcji skrótu z wielkości wyjściowej n , i mamy p wiadomości hash (indywidualna długość komunikatu nie jest ważne), to prawdopodobieństwo kolizji jest o p 2 /2 n + 1 (jest to przybliżenie, które jest ważne dla „małego” p , tj. znacznie mniejszego niż 2 n / 2 ). Na przykład w przypadku SHA-256 ( n = 256 ) i miliarda wiadomości ( p = 109 ) prawdopodobieństwo wynosi około 4,3 * 10–60 .
Kosmiczna skała masowego mordercy zdarza się średnio raz na 30 milionów lat. Powoduje to prawdopodobieństwo takiego zdarzenia występującego w następnej sekundy do około 10 -15 . To 45 rzędów wielkości bardziej prawdopodobne niż kolizja SHA-256. Krótko mówiąc, jeśli uznasz, że kolizje SHA-256 są przerażające, twoje priorytety są błędne.
W ustawieniach zabezpieczeń, w których atakujący wybiera wiadomości, które zostaną zaszyfrowane, atakujący może użyć znacznie więcej niż miliarda wiadomości; przekonasz się jednak, że prawdopodobieństwo sukcesu atakującego będzie nadal znikomo małe. Taki jest sens używania funkcji skrótu z 256-bitowym wyjściem: aby ryzyko kolizji można było pominąć.
Oczywiście wszystkie powyższe założenia zakładają, że SHA-256 jest „idealną” funkcją skrótu, której daleko jeszcze do udowodnienia. Mimo to SHA-256 wydaje się dość solidny.
źródło
Możliwość kolizji nie zależy od wielkości plików, tylko od ich liczby.
To jest przykład paradoksu urodzinowego . Strona Wikipedii podaje szacunkowe prawdopodobieństwo kolizji. Jeśli uruchomisz liczby, zobaczysz, że wszystkie dyski twarde kiedykolwiek wyprodukowane na Ziemi nie mogą pomieścić wystarczającej ilości plików 1 MB, aby uzyskać prawdopodobieństwo kolizji nawet 0,01% dla SHA-256.
Zasadniczo możesz po prostu zignorować tę możliwość.
źródło
Przede wszystkim nie jest to zero, ale bardzo blisko zera .
Kluczowe pytanie brzmi: co się stanie, jeśli rzeczywiście nastąpi kolizja ? Jeśli odpowiedź brzmi „wybuch elektrowni jądrowej”, prawdopodobnie nie powinieneś ignorować możliwości kolizji. W większości przypadków konsekwencje nie są tak straszne, więc możesz zignorować możliwość kolizji.
Nie zapominaj również, że twoje oprogramowanie (lub jego niewielka część) może zostać wdrożone i jednocześnie użyte w gazillionach komputerów (niektóre małe wbudowane mikrokomputery, które są obecnie prawie wszędzie obecne). W takim przypadku należy pomnożyć szacunkową liczbę uzyskanych danych przez możliwie największą liczbę kopii.
źródło