p4ssw0rd quality excites!
DESCRIPTION
Adrian Michalczyk daje receptę na zwiększenie bezpieczeństwa haseł bez utraty użyteczności webaplikacji. Prezentacja z II edycji konferencji Quality Excites.TRANSCRIPT
![Page 1: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/1.jpg)
[email protected]@gmail.com
![Page 2: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/2.jpg)
![Page 3: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/3.jpg)
• Nie Twój interes!
![Page 4: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/4.jpg)
• Nie Twój interes!
• A bo ja wiem?
![Page 5: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/5.jpg)
• Nie Twój interes!
• A bo ja wiem?
• No ba!
![Page 6: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/6.jpg)
![Page 7: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/7.jpg)
Metody uwierzytelnianiaAtakowanie haseł
Porady
![Page 8: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/8.jpg)
Kontrola dostępu do zasobu
1. Identyfikacja
2. Uwierzytelnianie
3. Autoryzacja
METODY UWIERZYTELNIANIA
Nie masz uprawnień
do tego pliku
![Page 9: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/9.jpg)
Informacja uwierzytelniająca
• Coś, o czym podmiot wie
• Coś, co podmiot ma
• Coś, czym podmiot jest
METODY UWIERZYTELNIANIA
![Page 10: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/10.jpg)
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 zostać zmienione, blokując dostęp do usługi
METODY UWIERZYTELNIANIA
![Page 11: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/11.jpg)
METODY UWIERZYTELNIANIA
• Hasła jednorazowe („co wiem” „co mam”)
• Karty magnetyczne i inteligentne („co mam”)
• Metody biometryczne („czym jestem”)
Inne metody uwierzytelniania
![Page 12: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/12.jpg)
Przechowywanie haseł
• Plaintext
• Szyfrowanie
METODY UWIERZYTELNIANIA
![Page 13: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/13.jpg)
METODY UWIERZYTELNIANIA
HashowaniePrzechowywanie wartości bezpiecznej funkcji hashującej
![Page 14: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/14.jpg)
Bezpieczna funkcja hashująca
• Jednokierunkowość na podstawie wyjścia nie możemy określić wejścia
METODY UWIERZYTELNIANIA
classicHash("Quality Excites");0
md5("Quality Excites");fb1093febd19a9694e5c89e911546bd9
badHash("Quality Excites");seticxE ytilauQ
![Page 15: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/15.jpg)
Bezpieczna funkcja hashująca
• Wysoka odporność na kolizje bardzo trudna generacja tego samego wyjścia przy użyciu dwóch różnych wejść
METODY UWIERZYTELNIANIA
classicHash("Vizzdoom"); //2 classicHash("Ale ma kota"); //2
![Page 16: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/16.jpg)
Bezpieczna funkcja hashująca
• Duża zmienność wyjścia duża różnica wyjść przy bardzo podobnych wejściach
METODY UWIERZYTELNIANIA
md5("Quality Excites"); fb1093febd19a9694e5c89e911546bd9
md5("quality excites");9f2f94e3608854bd3c54963144ee92be
![Page 17: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/17.jpg)
Metody uwierzytelniania
Atakowanie haseł
Porady
![Page 18: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/18.jpg)
ATAKOWANIE HASEŁ
md5("vizzdoom")96daa74aac66d0fa51c9dd6d2dacc37a
sha1("vizzdoom")bfc4231d98b642f656b0c36200e7ba1371a07890
sha3-512("vizzdoom")7c29260cb1f8c09656cab202e0f27f07e9f637da87bc733ecf60a1c0e4261c77
545f1d2b5c5687c2c11032f30ea135be8b762890a1179c43151ae989c358a07a
![Page 19: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/19.jpg)
•szybkość
http://www.flickr.com/photos/spyder01/sets/72157621929408408/detail/
![Page 20: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/20.jpg)
•szybkość
http://www.flickr.com/photos/spyder01/sets/72157621929408408/detail/http://img.wallpaperstock.net:81/car-crash-3d-wallpapers_25856_1600x1200.jpg
![Page 21: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/21.jpg)
Atak offline
• Atak na skrót kryptograficzny
• Bruteforce / Dictionary / Hybrid …
• Bardzo szybki
o CPU
o GPU
o Przetwarzanie rozproszone
ATAKOWANIE HASEŁ
![Page 22: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/22.jpg)
0-9
a-z
a-z 0-9
A-Z a-z
![Page 23: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/23.jpg)
![Page 24: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/24.jpg)
![Page 25: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/25.jpg)
![Page 26: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/26.jpg)
![Page 27: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/27.jpg)
Zasada pierwsza
• Kontroluj szybkość
Wielokrotne hashowanie
ATAKOWANIE HASEŁ
for (i=0 ; i < 1000 ; i++)
$pass = hashFunc($pass);
![Page 28: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/28.jpg)
Zasada druga
• Posól hasła
Dodaj losowy ciąg do hasła
Jeden użytkownik – jedna sól
ATAKOWANIE HASEŁ
a`zYHdYHdZ~qwertyU7YHdfv+Hd^&%YHd34d9xl__a`zZ~
![Page 29: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/29.jpg)
BCrypt
ATAKOWANIE HASEŁ
# Python py-bcrypt libraryimport bcrypt
# Generuj hash z własnoręcznie ustawioną soląbcrypt.hashpw("vizzdoom","$2a$12$1234567890123456789012")
$2a$12$123456789012345678901ueEDm4W8S0bcR7tYCaovy5X64j.wKmA2
# Generuj hash z automatycznie losowaną solą bcrypt.hashpw("vizzdoom",bcrypt.gensalt(12))
$2a$12$ECkVAZC8c3FcL9xWNiQ4l.cl72O5et0PCxhKfR6gGX7Hb7ROTbVBy
![Page 30: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/30.jpg)
Funkcje o zmiennym koszcie obliczeniowym
ATAKOWANIE HASEŁ
• BCrypt
• PBKDF2
• Scrypt
• Phpass
• …
![Page 31: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/31.jpg)
Metody uwierzytelniania
Atakowanie haseł
Porady
![Page 32: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/32.jpg)
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
PORADY
![Page 33: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/33.jpg)
Dla QA
• Weryfikuj metody przechowywania haseł
Czy hasła są hashowane?
Czy hasła mogą mieć dowolną długość i dowolne znaki?
• Testuj bezpieczeństwo haseł
Unit Testy
Testy wydajnościowe formatek z hasłami (Denial of Service)
PORADY
![Page 34: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/34.jpg)
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!)
PORADY
![Page 35: P4ssw0rd Quality Excites!](https://reader030.vdocuments.mx/reader030/viewer/2022012922/558c47e2d8b42adc348b4763/html5/thumbnails/35.jpg)
Dziękuję za uwagę
Źródła:„Kompendium bezpieczeństwa haseł – Atak i obrona”
http://vizzdoom.net/2013/02/kompendium-bezpieczenstwa-hasel-atak-i-obrona/
https://www.future-processing.com/fp-security-consulting
[email protected]@gmail.com