
Artykuł jest częścią serii opracowań zagadnień obowiązujących na egzaminie CompTIA Security+ SY0-701. Zapisz się na newsletter, jeśli nie chcesz przegapić kolejnych publikacji.
Hasła nigdy nie powinny być przechowywane w jawnej postaci (ang. plain text), więc przeważnie zapisuje się je w formie skrótów (ang. hashing) obliczonych za pomocą kryptograficznych funkcji skrótu.
Obliczenie takiego skrótu jest operacją, która zajmuje trochę czasu. Z perspektywy użytkownika są dzieje się to przeważnie w mgnieniu oka, jednakże dla procesora czynność, która trwa nawet kilka milisekund jest już uznawana za czasochłonną. Może się wydawać, że pożądane jest błyskawiczne obliczanie skrótów, jednakże należy mieć na uwadze, że szybkie funkcje hashujące to także skuteczniejsze ataki siłowe (można sprawdzić więcej skrótów w krótszym czasie).
Aby utrudnić ataki typu brute-force, oprócz dodawania soli (ang. salting) do haseł, stosuje się również technikę o nazwie key stretching. Jest to celowe wydłużenie czasu obliczeń wykonywanych przez funkcję skrótu. Implementacja tej techniki polega zazwyczaj na kilkukrotnym wywołaniu funkcji hashującej odpornej na kolizje – czyli z hasła jest liczony skrót, potem z tego skrótu liczony jest kolejny skrót i tak dalej. Okazuje się bowiem, że w przypadku funkcji silnie odpornych na kolizje, wielokrotne wyliczanie skrótu nie zwiększa prawdopodobieństwa znalezienia kolizji.
Użytkownikowi logującemu się do systemu nie robi tak naprawdę różnicy, czy weryfikacja jego danych potrwa 5 czy 200 milisekund, ale dla atakującego, który jest zmuszony sprawdzić miliony kombinacji, jest to już bardzo znaczące utrudnienie, bo całkowity czas potrzebny na złamanie hasła mocno się wydłuża.
W związku z powyższym, aktualnie zaleca się stosowanie funkcji z rodziny PBKDF (Password-Based Key Derivation Function). Są to specjalne funkcje, dedykowane dla systemów kryptograficznych, które łączą w sobie zalety funkcji skrótu wraz z dodatkowymi technikami zabezpieczeń, takimi jak np. key stretching czy wspomniane wcześniej solenie haseł.
Materiały źródłowe
- Professor Messer: Encrypting Data – SY0-701
- CompTIA Security+ Study Guide SY0-701, Mike Chapple, David Seidl
- SY0-601: Metody łamania haseł – opracowanie dotyczy starszej edycji egzaminu CompTIA Security+ SY0-601, ale zawiera dodatkowe informacje o różnych technikach ochrony haseł.