Opublikowany w ubiegłym miesiącu dokument NIST SP 800-107 zawiera, poza głównym tematem jakim jest randomizowany skrót na potrzeby podpisu cyfrowego, także interesującą analizę aktualnego stanu bezpieczeństwa kryptograficznych funkcji skrótu.
Pod uwage brana jest funkcja SHA1 oraz funkcje z serii SHA-2 czyli SHA-224, SHA-256, SHA-384 i SHA-512. Ich praktyczna odporność na ataki dotykające funkcji haszujących jest przedstawiona w poniższe tabeli zaczerpniętej z SP 800-107. Wszystkie odporności są mierzone w bitach:
Atak / Funkcja | SHA1 | SHA-224 | SHA-256 | SHA-384 | SHA-512 |
---|---|---|---|---|---|
Kolizja | <80 | 112 | 128 | 192 | 256 |
Preimage | 160 | 224 | 256 | 384 | 512 |
Second preimage | 105-160 | 201-224 | 201-256 | 384 | 394-512
</table>
Dla SHA-1 podana jest wartość <80 czyli "mniej niż 80". Jest to o tyle istotne, że wartość 80 bitów to dolna granica złożoności obliczeniowej (odporności), jaką posługuje się NIST w stosunku do podstawowych algorytmów kryptograficznych. Aktualny szacunek dla SHA-1 według SP 800-107 to 60 bitów, czyli grubo poniżej granicy 80 bitów.
Podane wartości mają istotne znaczenie dla wyboru funkcji skrótu w różnych zastosowaniach. Na przykład większość dostępnych w Internecie serwerów SSL (banków, sklepów internetowych) negocjuje domyślnie SSL z funkcją skrótu MD5 i nie wywołuje to specjalnej sensacji, ze względu na krótkotrwały charakter tych połączeń.
Drugie zastosowanie funkcji skrótu w protokole SSL czyli ochrona autentyczności stron za pomocą certyfikatów X.509 wymaga długotrwałej odporności na wymienione ataki - i tutaj obecność MD5 w certyfikatach znanego CA wywołała niedawno umożliwiła ich podrobienie.
Zgodnie z zaleceniami NIST opisanymi we wspomnianej publikacji SP 800-107 oraz - szerzej - w 800-57 funkcja MD5 nie powinna być używana w zastosowaniach związanych z podpisem cyfrowym już od 1999 roku.
W stosunku do SHA-1 taką rekomendację wyznaczono na rok 2010. A ściślej, wyznaczono ją dla wszystkich algorytmów posługując się kryterium zapewnianej odporności mierzonej w bitach. I tak:
|