22.09.2016 | 16:21

Adam Haertle

Jak Dropbox przechowuje Wasze hasła, czyli uczmy się od najlepszych

Wycieki haseł z największych firm branży technologicznej pokazują, że prawidłowe przechowywanie poufnych informacji ciągle jest dla wielu organizacji dużym wyzwaniem. Tym cenniejszy jest przykład Dropboxa, który dzieli się swoim doświadczeniem.

Hasła uzytkowników są jednym z najczęstszych celów włamań do systemów informatycznych. Choć od 40 lat znane są sposoby ich bezpiecznego przechowywania w formie funkcji skrótu, to ujawniane ostatnio wycieki pokazują, że albo firmy przechowują hasła w formie jawnej, albo stosują funkcje skrótu które miały rację bytu 15 lat temu. Spójrzmy zatem na podręcznikowy przykład, jak hasła można przechowywać dużo bezpieczniej.

Polityka otwartości Dropboxa

Dropbox, choć ma swoje wpadki na koncie, potrafi uczyć się na błędach oraz dzielić swoimi doświadczeniami. Na swoim blogu opublikował szczegółowy opis tego, jak przechowuje hasła milionów swoich użytkowników. Spójrzmy na poniższy schemat:

Schemat przechowywania haseł (źródło: Dropbox)

Schemat przechowywania haseł (źródło: Dropbox)

Podstawowym algorytmem zabezpieczającym treść hasła jest bcrypt. Zanim jednak hasło do niego trafi, jest przekształcane za pomocą funkcji SHA512. Dlaczego właśnie tak? Odpowiedź jest dosyć prosta – jest to rozwiązanie problemu zbyt długich haseł. Historia pokazuje, że przyjmowanie zbyt długich haseł może prowadzić do poważnych problemów, np. skutkując zawieszeniem aplikacji. Brak ograniczenia długości hasła oznacza, że można zmusić system do przetworzenia hasła np. o długości 4 kilobajtów, co w przypadku zasobożernej funkcji bcrypt mogło szybko wyczerpać możliwości Dropboxa. W niektórych implementacjach bcrypta rozwiązano ten problem obcinając hasła do 72 bajtów, lecz Dropbox nie chciał wprowadzać takiego rozwiązania. Z tego powodu zdecydował się najpierw policzyć funkcję skrótu SHA512, dzięki której użytkownik może mieć hasło dowolnej długości (o ile tylko uda się je przesłać do serwera zanim sesja wygaśnie), a do bcrypta trafi zawsze ciąg tej samej, sensownej długości.

Drugim etapem jest bcrypt. Na rynku funkcji skrótu uznawanych za bezpieczne w dłuższym horyzoncie czasu bcrypt nie jest monopolistą – jest także scrypt oraz argon2, jednak zespół Dropboxa zaufał bcryptowi który ma już swoje lata i został dość dokładnie przetestowany w boju. Zaletą bcrypta jest możliwość definiowania jego siły poprzez parametr liczby rund. Dropbox wybrał wartość 10, co oznacza, że przy uwzględnieniu mocy obliczeniowej serwerów obsługujących ten proces przetworzenie hasła do formy docelowej zajmie ok. 100 milisekund. Gdyby zatem ktoś próbował sprawdzać kolejne możliwe kombinacje haseł dysponując ich skrótami na podobnym sprzęcie, to musiałby robić to w tempie ok. 10 haseł na sekundę, czyli bardzo, bardzo, bardzo wolno. Nawet wspomagając się kartami graficznymi nie osiągnąłby istotnego przyspieszenia ze względu na konstrukcję funkcji bcrypt. Do tego każde hasło posiada swoją indywidualną sól, czyli doklejony losowy ciąg znaków powodujący, że dwa identyczne hasła nigdy nie dadzą w wyniku tego samego skrótu i każde hasło trzeba łamać oddzielnie.

Co jednak w wypadku gdyby ktoś wykradł dane wszystkich haseł i ich soli? Na wypadek takiego scenariusza Dropbox stosuje jeszcze jedną warstwę zabezpieczeń, szyfrując wyniki funkcji skrótu algorytmem AES256 i globalna solą (którą zwą pieprzem), a która przechowywana jest w innym miejscu niż same skróty haseł. Sprawia to, że nawet wykradzione skróty haseł będą dla napastnika nieprzydatne jeśli nie pozna pozostałych parametrów funkcji AES. Dropbox informuje także, że rozważa wdrożenie bezpiecznego sprzętowego modułu do przechowywania pieprzu – jednak wymaga to poważnych zmian w architekturze.

Dropboxowi pozostaje pogratulować zarówno chęci ujawnienia swoich procedur jak i ich konstrukcji – szkoda tylko, że 4 lata temu nie przechowywał wszystkich haseł w identyczny sposób.

Powrót

Komentarze

  • 2016.09.22 17:36 Mateusz

    Bardzo dużo zyskują u mnie firmy, które tak jak Dropbox podchodzą do tematu bezpieczeństwa. Błędy się zdarzają, nikt nie jest nieomylny ale potem trzeba umieć wyciągnąć wnioski.

    Odpowiedz
    • 2016.10.05 15:21 stefan

      Tylko po co się tym chwalą? Jak ktoś będzie chciał wykraść dane to już wie, że poza solą musi mieć pieprz.

      Odpowiedz
      • 2016.10.24 08:36 Konrad

        No i co z tego. DP nie jest jakąś konspirą, tylko dużym korpo. Wiedza na temat jak chronią hasła jest nie do ukrycia, bo wystarczy tam popracować aby się wszystkiego dowiedzieć.
        Informacja powyższa jest przeznaczona dla inwestorów i dla nas, end userów.

        Odpowiedz
  • 2016.09.22 20:17 vjhdyi

    Szkoda tylko, że ogrodnik ma klucze.

    Odpowiedz
    • 2016.09.24 11:14 Otóż

      Otóż to

      Odpowiedz
  • 2016.09.22 22:32 Mick

    Tak przechowują hashe haseł a nie same hasła. To w takim razie jak przechowywać same hasła, np. mam aplikację, która łączy się z Allegro i potrzebne jest bezpieczne przechowywanie loginu i hasła użytkownika.

    Odpowiedz
    • 2016.09.22 23:13 m

      Jeżeli chcesz względnie bezpiecznie, to przy pierwszym logowaniu zamieniasz login i hasło na jakiś losowy token, który możesz lokalnie zapisać i używać w przyszłości do logowania. Jeżeli nawet token wycieknie, to hasło może być (ale nie musi) nadal bezpieczne. Jeżeli stracisz dostęp do urządzenia, na którym jest zapisany token, to go odwołujesz/anulujesz, nie musząc zmieniać hasła. A jak Allegro robi, to nie wiem.

      Odpowiedz
      • 2016.09.23 23:05 krzysiek

        Ale co da Ci taki token, skoro w takim allegro dalej musisz podać login i hasło?

        Odpowiedz
  • 2016.09.23 09:04 Grzegorz

    okazuje się, że sposób jaki „wymyśliłem” do zabezpieczenia mojego CMSa jest bardzo podobny :)

    Odpowiedz
  • 2016.09.23 15:09 Krzysztof Kozłowski

    No to teraz czekać aż ktoś udowodni że hasła sa średnio potrzebne…. I dostanie się do danych inaczej

    Odpowiedz

Zostaw odpowiedź do Konrad

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Jak Dropbox przechowuje Wasze hasła, czyli uczmy się od najlepszych

Komentarze