Poważne bezpieczeństwo: MD5 uważany za szkodliwy – na kwotę 600,000 XNUMX dolarów PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Poważne bezpieczeństwo: MD5 uważane za szkodliwe – do wysokości 600,000 XNUMX USD

W fascynującej deliberacji prawnej wydanej przez francuski organ nadzorujący ochronę danych CNIL (Krajowa Komisja ds. Informatyki i Wolności), firma energetyczna Électricité de France, w skrócie EDF ukarany grzywną w wysokości 600,000 XNUMX euro (około 600,000 XNUMX $).

Deklaracja prawna jest, na swój sposób, dość długa i (przynajmniej dla osób niebędących prawnikami) językowo niezdarna, co oznacza, że ​​potrzebna jest rozsądna znajomość języka francuskiego, aby zrozumieć wszystkie tajniki sprawy, ale ogólna sprawa sprowadza się do czterech naruszeń.

Pierwsze trzy dotyczą ogólnych interakcji z klientami związanych z danymi, obejmujących:

  • Wysyłanie komercyjnych e-maili marketingowych bez odpowiedniej zgody.
  • Zbieranie danych bez wyjaśnienia co i dlaczego.
  • Nieprawidłowa obsługa żądań gdy klienci poprosili o wgląd do swoich danych, aby je usunąć.

Ale to ostatnia skarga wzbudziła nasze zainteresowanie: Sur le manquement à l'obligation d'assurer la sécurité des données.

W języku angielskim to luźno tłumaczy się jako brak bezpiecznego przechowywania danychi odnosi się bardzo konkretnie do niebezpiecznego obchodzenia się z hasłami.

MD5 uważane za szkodliwe

Regulator zauważył między innymi, że pomimo twierdzenia, że ​​hasła były „solone, a następnie haszowane” przy użyciu akceptowanego algorytmu haszującego, EDF nadal miał ponad 25,000 5 haseł użytkowników „zabezpieczonych” pojedynczym haszem MD2022 jeszcze w lipcu XNUMX r.

Jak wiele razy słyszeliście w Naked Security, przechowywanie plików kryptograficzny skrót hasła oznacza, że ​​możesz sprawdzić poprawność hasła, gdy jest ono prezentowane, po prostu przeliczając jego skrót i porównując go z haszem hasła, które zostało pierwotnie wybrane.

Jeśli skróty są zgodne, możesz bezpiecznie wywnioskować, że hasła są zgodne, bez konieczności przechowywania rzeczywistego hasła.

Po przedstawieniu hasło musi być przechowywane tylko tymczasowo w pamięci i może zostać odrzucone, gdy tylko zostanie obliczony jego skrót.

Tak długo, jak algorytm haszujący jest uważany za bezpieczny kryptograficznie, nie można go z pożytkiem „uruchomić w odwrotnej kolejności”, więc nie można cofnąć się od skrótu, aby ujawnić cokolwiek na temat samego hasła. (Hasz tego rodzaju jest znany w żargonie jako a funkcja jednokierunkowa.)

Podobnie, przyzwoity algorytm haszujący zapobiega rozpoczynaniu od znanego skrótu i ​​opracowaniu jakiejś wartości wejściowej – dowolnej wartości wejściowej, niekoniecznie oryginalnego hasła – która daje pożądany skrót.

Musiałbyś próbować wprowadzania danych za danymi wejściowymi, aż będziesz miał szczęście, co w przypadku skrótów nawet 128-bitowych zajęłoby zbyt dużo czasu, aby był to wykonalny atak. (Mówi się, że hash z zabezpieczeniem uniemożliwiającym znalezienie wielu danych wejściowych z tym samym wyjściem jest odporny na kolizje.)

Ale MD5, jak zapewne wiesz, ma poważne problemy z kolizjami, podobnie jak jego bezpośredni następca SHA-1 (oba te skróty pojawiły się na początku lat 1990.).

W dzisiejszych czasach żaden algorytm nie jest zalecany do użytku gdziekolwiek, przez kogokolwiek, w jakimkolwiek celu, biorąc pod uwagę, że istnieją podobne, ale wciąż bezpieczne alternatywy, które można łatwo zastąpić, takie jak SHA-256 i SHA-512:

Skróty MD5 mają długość 128 bitów lub 16 bajtów. SHA-256 i SHA-512 są odpowiednio 2x i 4x dłuższe. Ale to nie tylko ta dodatkowa długość skrótu czyni je bardziej odpowiednimi. Ich główną przewagą nad MD5 jest to, że nie mają żadnych konkretnych znanych problemów z kolizjami, więc ich bezpieczeństwo kryptograficzne nie jest ogólnie uważane za wątpliwe.

Solenie i rozciąganie

Krótko mówiąc, nie spodziewałbyś się, że jakakolwiek firma, nie mówiąc już o gigancie z sektora energetycznego, takim jak EDF, będzie używać MD5 do jakichkolwiek celów kryptograficznych, nie mówiąc już o zabezpieczaniu haseł.

Jeszcze gorszy był jednak brak solenie, w którym część danych wybrana losowo dla każdego użytkownika jest mieszana z hasłem przed obliczeniem jego skrótu.

Powód soli jest prosty: zapewnia, że ​​wartości skrótu potencjalnych haseł nie mogą zostać obliczone z góry, a następnie przyniesione ze sobą, aby pomóc w ataku.

Bez solenia za każdym razem, gdy dowolny użytkownik wybiera hasło 123456, oszuści wiedzą z góry, jaki będzie jego skrót.

Nawet jeśli użytkownik wybierze bardziej odpowiednie hasło, np 34DF6467!Lqa9, możesz z góry powiedzieć, że jego skrót MD5 będzie 7063a00e 41866d47 f6226e60 67986e91.

Jeśli masz wystarczająco długą listę wstępnie obliczonych haseł lub częściowo obliczonych haseł (znanych dość wspaniale w żargonie jako tęczowy stół), możesz odzyskać hasło za pomocą tabeli, zamiast próbować bilionów kombinacji haseł, dopóki nie będziesz mieć szczęścia.

Solenie oznacza, że ​​potrzebujesz kompletnego, wstępnie obliczonego tęczowego stołu dla każdego użytkownika (tabela jest określana przez kombinację soli + hasła) i nie byłbyś w stanie obliczyć każdej tęczowej tabeli – zadanie, które może zająć kilka tygodni i zająć terabajty miejsca na dysku – dopóki i tak nie odzyskasz soli,

Ale jest jeszcze coś, co musisz zrobić.

Nawet jeśli dołączysz sól, aby nie można było użyć wstępnie obliczonych „słowników skrótów”, i użyjesz zaufanego algorytmu kryptograficznego, takiego jak SHA-512, samo obliczenie skrótu jest wystarczająco szybkie, aby osoby atakujące, które zdobyły bazę danych skrótów, mogły nadal wypróbuj miliardy możliwych haseł na sekundę, a nawet więcej.

Powinieneś więc użyć tzw sięgnięcie również, gdzie nie tylko solisz początkowe hasło, ale następnie przekazujesz dane wejściowe przez algorytm haszujący tysiące lub więcej razy w pętli, dzięki czemu ataki są znacznie bardziej czasochłonne dla każdego oszusta, który chce spróbować.

W przeciwieństwie do wielokrotnego dodawania, w którym można użyć pojedynczego mnożenia jako skrótu do zastąpienia, powiedzmy, obliczenia 5+5+5+5+5+5 przez 6×5, nie ma skrótów dla powtarzanych skrótów. Zaszyfrowanie danych wejściowych 1000 razy wymaga 1000 „obrotów” uchwytu obliczeń kryptograficznych.

Nie tylko problem MD5

Jak na ironię, wydaje się, że chociaż EDF miał tylko 25,800 5 haseł zaszyfrowanych za pomocą MD512 i twierdził w swojej obronie, że zamiast tego używa głównie SHA-XNUMX, nadal nie zawsze soleł lub rozciągał przechowywane skróty.

Organ regulacyjny informuje, że 11,200,000 2,400,000 5 haseł zostało poprawnie zaszyfrowanych i zaszyfrowanych, ale mimo to 512 XNUMX XNUMX zostało po prostu zaszyfrowanych bezpośrednio raz, czy to za pomocą MDXNUMX, czy SHA-XNUMX.

Najwyraźniej EDF ma teraz do zera przechowywanie haseł, ale firma i tak została ukarana grzywną w wysokości 600,000 XNUMX EUR i pozostanie publicznie notowana online na „niegrzecznym kroku” CNIL przez następne dwa lata.

Nie możemy być pewni, jaka grzywna zostałaby nałożona, gdyby wyrok dotyczył tylko słabego haszowania, a EDF nie musiałby również odpowiadać za trzy inne przestępstwa związane z ochroną danych wymienione na początku…

…ale pokazuje, że złe wybory kryptograficzne mogą kosztować cię pieniądze na więcej niż jeden sposób!

Co robić?

Przechowuj hasła swoich klientów bezpiecznie!

Dodatkowy koszt obliczeniowy solenia i rozciągania można wybrać tak, aby poszczególni użytkownicy nie odczuwali niedogodności podczas logowania, a jednocześnie potencjalni atakujący mieliby zwiększoną prędkość ataku o kilka rzędów wielkości.

Atak polegający na odzyskaniu hasła, który może zająć tydzień, aby wyodrębnić 10% haseł przechowywanych jako proste jednorazowe skróty, teoretycznie zająłby 200 lat (10,000 10,000 tygodni), gdyby koszt obliczenia każdego hasła próbnego był XNUMX XNUMX razy wyższy .

Przeczytaj nasz doskonały artykuł wyjaśniający na ten właśnie temat:

Krótko mówiąc, polecamy PBKDF2 algorytm „rozciągania” z SHA-256 jako główny skrót, z losową liczbą użytkowników salt of 16 bytes (128 bitów) lub więcej.

Jest to zgodne z zaleceniami zawartymi w najnowszym wyroku CNIL.

CNIL nie oferuje porad dotyczących liczby iteracji PBKDF2, ale jak zobaczysz w naszym artykule, naszą radą (październik 2022) jest użycie 200,000 or more. (Możesz regularnie zwiększać liczbę pętli, aby nadążyć za wzrostem mocy obliczeniowej.)

Jeśli nie chcesz używać PBKDF2, sugerujemy przeczytanie algorytmów bcrypt, scrypt i Argon2 aby pomóc Ci dokonać mądrego wyboru.

Nie daj się złapać na niegrzecznym kroku kryptograficznym!


Znak czasu:

Więcej z Nagie bezpieczeństwo