
Artykuł jest częścią serii opracowań zagadnień obowiązujących na egzaminie CompTIA Security+ SY0-701. Zapisz się na newsletter, jeżeli nie chcesz przegapić kolejnych publikacji.
Uzyskanie oryginalnej wartości na podstawie hasha jest praktycznie niemożliwe, jednakże realne jest jej odgadnięcie metodą siłową (ang. brute force): obliczamy skróty dla kolejnych wartości, aż otrzymamy hash identyczny z tym, który próbujemy złamać.
W przypadku bardzo prostych (uznawanych za słabe) haseł może nastąpić to bardzo szybko. Techniką przyspieszającą ataki siłowe są tęczowe tablice (ang. rainbow table), czyli przygotowane wcześniej bazy wyrażeń wraz z ich wstępnie wyliczonymi skrótami. Taka baza przypomina trochę skompresowaną strukturę lookup table, gdzie możemy gwałtownie odnaleźć interesującą nas parę hash-hasło.
Aby utrudnić ataki siłowe prowadzące do złamania hasha, stosuje się tzw. solenie (ang. salting). Proces ten polega na dodaniu losowego łańcucha znaków, zwanego solą (ang. salt), do oryginalnej wartości, jeszcze przed obliczeniem skrótu. Na przykład: do hasła admin123 dodajemy sól o losowej wartości c56Tfrcb5, więc ostatecznie funkcja hashująca otrzyma na wejściu wyrażenie admin123c56Tfrcb5.
Do każdego użytkownika przeważnie jest przypisana inna sól, dzięki czemu, choćby jeżeli pojawią się powtórzone hasła, ich skróty będą znacząco się różnić. Podczas procesu uwierzytelniania, kiedy użytkownik podaje swoje hasło, przed obliczeniem skrótu celem porównania, dodawana jest odpowiednia sól.
Istnieje ryzyko, iż wartość soli, która jest przechowywana w bazie danych, może również zostać wykradziona wraz z skrótami haseł – w takim przypadku atak siłowy ciągle jest możliwy, ale utrudniony.