Hakerzy natychmiast zabrali się do łamania ich, przy czym ponad połowa z nich została złamana niemal od razu.
Tak szybkie złamanie było możliwe głównie z dwóch powodów:
*samo wykorzystanie funkcji SHA1
*szybkie procesory
Przyjrzyjmy się obu tym czynnikom:
Funkcja SHA1 została stworzona głównie po to, aby zastąpić słabszą funkcję MD5. Z założenia miała być szybsza i rzeczywiście taka jest. Na karcie graficznej AMD / ATI 7970 “hashcat” oblicza nieco ponad dwa miliardy hashy SHA1 na sekundę. To oznacza, że w bardzo krótkim czasie można przetestować wiele kombinacji.
W celu obejścia tego „problemu” powstały nowoczesne i bezpieczniejsze algorytmy, takie jak funkcja sha512crypt stosowana w Ubuntu i najnowszych wersjach systemu Fedora Core Linux. Zamiast 2 miliardów hashy na sekundę ta sama karta GPU pozwala na złamanie jedynie nieco ponad 12 000 kombinacji sha512crypt na sekundę. Na przykład sprawdzenie jednego miliarda kombinacji sha512crypt zajmuje około 24 godzin; jednak w przypadku SHA1 mniej niż 1 sekundę. Z powodu współczesnych szybkich procesorów dobrą radą - jeżeli chodzi o bezpieczeństwo - jest posiadanie złożonego hasła, które:
*zawiera zarówno wielkie jak i małe litery
*zawiera co najmniej jedną spację
*zawiera cyfry
*zawiera kilka symboli, takich jak !@#
*nie opiera się na znanym słowie
*liczy co najmniej 12 znaków, jednak im dłuższe tym lepsze
Wiele osób, które znam, wykorzystuje hasła liczące od 20 do 50 znaków. Jest to dobra praktyka, ponieważ nawet w przypadku wycieku hasha hasła, nikt go nie złamie. <Wyobraźcie sobie moje zdziwienie dzisiaj, gdy próbując zalogować się do starszego konta na Hotmailu zobaczyłem następujący komunikat:
Długość mojego poprzedniego hasła wynosiła około 30 znaków, dlatego teraz jest za długie. Mógłbym jednak zalogować się, wpisując tylko pierwsze 16 znaków.
Tego rodzaju ograniczenie to nic nowego, moją uwagę przykuł jednak fakt, że nawet po skróceniu do 16 znaków, hasło nadal działało.
Aby trik ten mógł być stosowany ze starszymi hasłami, Microsoft miał do wyboru dwie opcje:
*przechowywać pełne hasła w formie czystego tekstu w swojej bazie danych; porównywać tylko pierwsze 16 znaków
*obliczać hash tylko na pierwszych 16 znakach; ignorować resztę
Przechowywanie haseł dla serwisów online w formie czystego tekstu jest zdecydowanie czymś niestosownym w branży bezpieczeństwa.
Szczerze mówiąc, nie wiem, która opcja jest gorsza.
PS: Mój nauczyciel powtarzał, że zawsze należy myśleć pozytywnie i kończyć w optymistycznym tonie. A zatem: “Dzięki Google za GMail”.
Analizy
Blog