Adrian Michalczyk daje receptę na zwiększenie bezpieczeństwa haseł bez utraty użyteczności webaplikacji. Prezentacja z II edycji konferencji Quality Excites.
10. METODY UWIERZYTELNIANIA
Hasło statyczne („co wiem”)
• Najpopularniejsza metoda uwierzytelniania
• Krótki ciąg znaków, często wymyślany przez użytkownika
• Charakterystyczny ciąg, łatwy do przejęcia
• Może zostad zmienione, blokując dostęp do usługi
11. METODY UWIERZYTELNIANIA
Inne metody uwierzytelniania
• Hasła jednorazowe („co wiem” „co mam”)
• Karty magnetyczne i inteligentne („co mam”)
• Metody biometryczne („czym jestem”)
14. METODY UWIERZYTELNIANIA
Bezpieczna funkcja hashująca
• Jednokierunkowośd
na podstawie wyjścia nie możemy określid wejścia
0
fb1093febd19a969
4e5c89e911546bd9
seticxE ytilauQ
classicHash("Quality Excites");
md5("Quality Excites");
badHash("Quality Excites");
15. METODY UWIERZYTELNIANIA
Bezpieczna funkcja hashująca
• Wysoka odpornośd na kolizje
bardzo trudna generacja tego samego wyjścia
przy użyciu dwóch różnych wejśd
classicHash("Vizzdoom");
//2
classicHash("Ale ma kota"); //2
16. METODY UWIERZYTELNIANIA
Bezpieczna funkcja hashująca
• Duża zmiennośd wyjścia
duża różnica wyjśd przy bardzo podobnych wejściach
md5("Quality Excites");
fb1093febd19a9694e5c89e911546bd9
md5("quality excites");
9f2f94e3608854bd3c54963144ee92be
21. ATAKOWANIE HASEŁ
Atak offline
•
Atak na skrót kryptograficzny
•
Bruteforce / Dictionary / Hybrid …
•
Bardzo szybki
o
CPU
o
GPU
o
Przetwarzanie rozproszone
32. PORADY
Dla programisty
• Hashuj hasła
Używaj soli dynamicznych
Hashuj wielokrotnie
BCrypt, PBKDF2, PHPASS
• Ograniczaj użytkownika z dołu, nie z góry!
• I <3 you kontra I%20<3+you
33. PORADY
Dla QA
• Weryfikuj metody przechowywania haseł
Czy hasła są hashowane?
Czy hasła mogą mied dowolną długośd i dowolne znaki?
• Testuj bezpieczeostwo haseł
Unit Testy
Testy wydajnościowe formatek z hasłami (Denial of Service)
34. PORADY
Dla użytkownika
• Używaj długich, nieprzewidywalnych haseł
• Używaj osobnych haseł w każdej usłudze
• Włącz podwójne uwierzytelnianie tam, gdzie to możliwe
• Używaj menadżerów haseł (Keepass!)