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
|
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:
- do 2010 roku powinny być używane algorytmy zapewniające minimum 80 bitów - nie powinny być stosowane klucze RSA i DSA krótsze niż 1024 bity,
- w latach 2011-2030 powiny być używane algorytmy zapewniające min. 112 bitów - wycofany powinien zostać 3DES z dwoma kluczami (2TDEA), minimalna długość kluczy RSA i DSA to 2048 bitów,
- po roku 2030 powinny być używane algorytmy zapewniające min. 128 bitów - wycofany powinien być każdy warian 3DES, minimalne długości kluczy RSA i DSA to 3072 bity
Zgodnie z zaleceniami SP 800-57 po aktualizacji w 2008 roku SHA-1 jako zapewniające odporność mniejszą niż 80 bitów nie powinno być stosowane w noywych implementacjach.
comment