Algorytm kryptograficzny MD5 oraz funkcja skrótu SHA1 to bardzo przestarzałe sposoby na przechowywanie haseł w postaci niejawnej. Do kolizji skrótu MD5 doszło już w ubiegłym wieku, a SHA1, następcę MD5, złamano nieco później. Oznacza to, że funkcja haszująca powinna tworzyć unikalny skrót dla każdego ciągu znaków alfanumerycznych. Czyli w praktyce dwa różne hasła nie powinny być obliczane do identycznego skrótu, ponieważ wystąpi tzw. kolizja. Dzięki niej można wygenerować identyczny hasz i podszyć się pod inną osobę w cyberataku.

Funkcje skrótu MD5, jak i SHA1, oraz te bardziej bezpieczne (SHA2 i SHA3) są funkcjami jednokierunkowymi. Haszowanie to funkcja matematyczna, która koduje wpisane hasło do postaci nieczytelnej. Oznacza to, że dla procesora bardzo łatwo jest obliczyć skrót hasła, ale nie da się tego zrobić w drugą stronę — mając obliczony skrót nie jest możliwe odwrócenie tego procesu i ujawnienie hasła. Przynajmniej nie jest to łatwe w nowoczesnych funkcjach haszujących.

Do wyjaśnienia w jaki sposób funkcje haszujące działają w praktyce, posłużymy się najnowszym odkryciem naukowców, którzy przyjrzeli się 49 systemom do zarządzania treści i 47 aplikacjom internetowym. Większość z nich umożliwia internaucie założenie konta, czyli utworzenie hasła powiązanego z adresem e-mail.

Niechaj nasze hasło będzie takim ciągiem znaków (pisanym z małych liter):

hello

Obliczone funkcje skrótu dla tego hasła, to:

MD5: 5D41402ABC4B2A76B9719D911017C592

SHA1: AAF4C61DDCC5E8A2DABEDE0F3B482CD9AEA9434D

Eksperci w swoim doświadczeniu zauważyli, że:

Co czwarty CMS używa funkcji MD5 do haszowania hasła. Wśród tych CMS-ów wyróżniamy: osCommerce, SuiteCRM, WordPress, X3cms, SugarCRM, CMS Made simple, MantisBT, Simple Machines, miniBB, Phorum, MyBB, Observium i Composr. Dodatkowo co piąta aplikacja internetowa albo forum używa funkcji SHA1: GetSimple CMS, Redmine, Collabtive, PunBB, Pligg, Omeka.

Wnioski są następujące: wiele najpopularniejszych internetowych systemów do zarządzania treścią używa niezabezpieczonych algorytmów do utajniania haseł użytkowników w bazie danych portalu.

Prosta funkcja haszująca. Jak lepiej zabezpieczyć MD5 i SHA1?

Dodając sól (ang. salt), czyli tzw. ciąg zaburzający, dzięki czemu identyczne hasła będą miały różne skróty. W praktyce wygląda to tak:

Jak działa funkcja haszująca na przykładzie zabezpieczeń Drupal i Wordpress
Źródło: https://blogs.quickheal.com/password-security-a-dash-of-salt-and-little-of-hash-to-go-please

„hello” jest naszym hasłem. Solą, czyli ciągiem zaburzającym jest „3ab9”. Powstaje z tego zupełnie nowy hasz. W zależności od tego, gdzie jest wstawiany ciąg zaburzający (na początku lub na końcu), otrzymujemy różny wynik. Dodatkowo wynik takiej funkcji może być iterowany wielokrotnie (nawet tysiące razy), a ciąg zaburzający może mieć różną ilość znaków. Sól również jest generowana przez pseudolosowy algorytm, aby za każdym razem i przy każdej iteracji była inna. Obliczanie skrótu jest bardzo szybkie, ale odwracanie tego w drugą stronę to proces bardzo kosztowny obliczeniowo dla procesorów.

Zdaniem naukowców niektóre z przeanalizowanych systemów internetowych używają starych funkcji MD5 i SHA1 i wcale nie używają soli albo iteracji. Są to: X3cms 0.5.3, GetSimple, MiniBB 3.2.2 i Phorum.

Z kolei uznany za najbardziej bezpieczną funkcję haszującą bcrypt i odporną na łamanie przez połączenie wielu procesorów GPU, jest używany w: Joomla, Zurmo, OrangeHRM, SilverStripe, Elgg, XOOPS, e107, NodeBB, Concrete5, phpBB, Vanilla Forums, Ushahidi, Lime Survey, Mahara, Mibew, vBulletin, OpenCart, PrestaShop i Moodle.

W najbardziej popularnym CMS-sie (Wordpress) przy zakładaniu konta, hasze są obliczane za pomocą funkcji MD5 ze solą oraz 8 iteracji. Bardziej bezpieczną metodę stosuje Drupal 8, bo hasło utajnia za pomocą SHA512 ze solą oraz wielokrotną iteracją.

Tradycyjne hasło vs WebAuthn

Nie ważne jak trudne jest do złamania nasze hasło, jeżeli nie będzie dobrze zabezpieczone przez portal internetowy. Przy wycieku bazy danych może się okazać, że znajduje się w postaci MD5 bez soli lub w postaci tekstu jawnego. Oprogramowanie CMS często używa źle dobranego mieszania haseł — ostrzegają naukowcy. Proste funkcje haszujące są nie tylko podatne na kolizje, co też wykorzystanie graficznych procesorów GPU (o wiele bardziej wydajnych niż CPU) do obliczania haseł na podstawie skrótu z bazy danych, która wyciekła do sieci.

Bardzo bezpieczną metodą logowania jest używanie kluczy bezpieczeństwa, takich jak Yubikey. Bez fizycznego dostępu do klucza, żadna osoba postronna nie może zalogować się do portalu, nawet znając login i hasło użytkownika. WebAuthn z kluczami bezpieczeństwa to logowanie przyszłości.

AUTOR:

Adrian Ścibor

Podziel się

Dodaj komentarz