Scrypt - propozycja nowej funkcji PBKDF

Autorzy projektu Tarsnap opublikowali ciekawą analizę funkcji służących do tworzenia kluczy kryptograficznych z haseł, wraz z propozycją nowej funkcji tego typu zapewniającej długoterminową odporność nawet dla stosunkowo słabych haseł.

Program Tarsnap sam z siebie jest interesującym projektem, umożliwiającym przechowywanie kopii zapasowych w sieciowych hurtowniach danych takich jak Amazon Web Services. Oczywiście, przechowując swoje dane w takiej lokalizacji należy zadbać o ich poufność i to nie tylko w perspektywie okresu, w którym nasz plik będzie się tam znajdował (a ściślej: do momentu, w którym będzie się nam wydawało, że go usunęliśmy).

Ze względu na to, że nadal najbardziej rozpowszechnioną metodą zabezpieczania tego typu archiwów jest hasło, kluczowy dla bezpieczeństwa jest sposób, w jaki wyprowadza się z hasła klucz kryptograficzny uwierzytelniający i szyfrujący dane. W praktyce najczęściej używamy do tego rodziny funkcji PBKDF (Password-Based Key Derivation Functions) opisanych w PKCS#5, które powinny zapewniać wystarczającą odporność na popularne ataki na skróty haseł jak i te bardziej zaawansowane, w tym wykorzystujące time-memory-tradeoff (rainbow tables).

Praca Colina Percivala Stronger Key Derivation Through Memory-Hard Functions analizuje rozpowszechnione mechanizmy konwersji hasła na klucz, takie jak PBKDF czy bcrypt i wskazuje na istotne zagrożenie, jakim jest możliwość znacznego ich osłabienia przez rozwój technik komputerowych w perspektywie 10-20 lat. Jest to okres, który w przypadku kopii zapasowych należy brać całkiem serio.

Propozycja Percivala to użycie funkcji specjalnie zaprojektowanych tak, by zużywały odpowiednio dużo pamięci i operacji (memory-hard functions) w celu zapewnienia długoterminowej odporności na nowe techniki łamania haseł np. przy pomocy przetwarzania równoległego. Wzorcowa implementacja to właśnie wspomniany scrypt. W najsilniejszej wersji haszowanie hasła na współczesnym procesorze będzie trwało aż 5 sekund.

Ciekawe wnioski płyną z symulacji przeprowadzonej przez Percivala na końcu pracy. Hasło sześcioznakowe składającej się z samych tylko liter może zostać złamane w ciągu roku bardzo niskim kosztem, niezależnie od tego jakiej metody haszowania użyjemy. Ale już dla hasła składającego się z ośmiu liter scrypt robi sporą różnicę - skrót PBKDF2 z ponad 80 tys. iteracji jest dla takiego hasła łamalna niskim kosztem, ale złamanie skrótu scrypt jest szacowane już na ponad 600 tys. USD. Dla dłuższych haseł różnice te są rosną wykładniczo.