35

P4ssw0rd Quality Excites!

Embed Size (px)

DESCRIPTION

Adrian Michalczyk daje receptę na zwiększenie bezpieczeństwa haseł bez utraty użyteczności webaplikacji. Prezentacja z II edycji konferencji Quality Excites.

Citation preview

Page 1: P4ssw0rd Quality Excites!

[email protected]@gmail.com

Page 2: P4ssw0rd Quality Excites!
Page 3: P4ssw0rd Quality Excites!

• Nie Twój interes!

Page 4: P4ssw0rd Quality Excites!

• Nie Twój interes!

• A bo ja wiem?

Page 5: P4ssw0rd Quality Excites!

• Nie Twój interes!

• A bo ja wiem?

• No ba!

Page 6: P4ssw0rd Quality Excites!
Page 7: P4ssw0rd Quality Excites!

Metody uwierzytelnianiaAtakowanie haseł

Porady

Page 8: P4ssw0rd Quality Excites!

Kontrola dostępu do zasobu

1. Identyfikacja

2. Uwierzytelnianie

3. Autoryzacja

METODY UWIERZYTELNIANIA

Nie masz uprawnień

do tego pliku

Page 9: P4ssw0rd Quality Excites!

Informacja uwierzytelniająca

• Coś, o czym podmiot wie

• Coś, co podmiot ma

• Coś, czym podmiot jest

METODY UWIERZYTELNIANIA

Page 10: P4ssw0rd Quality Excites!

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!

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!

Przechowywanie haseł

• Plaintext

• Szyfrowanie

METODY UWIERZYTELNIANIA

Page 13: P4ssw0rd Quality Excites!

METODY UWIERZYTELNIANIA

HashowaniePrzechowywanie wartości bezpiecznej funkcji hashującej

Page 14: P4ssw0rd Quality Excites!

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!

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!

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!

Metody uwierzytelniania

Atakowanie haseł

Porady

Page 18: P4ssw0rd Quality Excites!

ATAKOWANIE HASEŁ

md5("vizzdoom")96daa74aac66d0fa51c9dd6d2dacc37a

sha1("vizzdoom")bfc4231d98b642f656b0c36200e7ba1371a07890

sha3-512("vizzdoom")7c29260cb1f8c09656cab202e0f27f07e9f637da87bc733ecf60a1c0e4261c77

545f1d2b5c5687c2c11032f30ea135be8b762890a1179c43151ae989c358a07a

Page 19: P4ssw0rd Quality Excites!

•szybkość

http://www.flickr.com/photos/spyder01/sets/72157621929408408/detail/

Page 20: P4ssw0rd Quality Excites!

•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!

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!

0-9

a-z

a-z 0-9

A-Z a-z

Page 23: P4ssw0rd Quality Excites!
Page 24: P4ssw0rd Quality Excites!
Page 25: P4ssw0rd Quality Excites!
Page 26: P4ssw0rd Quality Excites!
Page 27: P4ssw0rd Quality Excites!

Zasada pierwsza

• Kontroluj szybkość

Wielokrotne hashowanie

ATAKOWANIE HASEŁ

for (i=0 ; i < 1000 ; i++)

$pass = hashFunc($pass);

Page 28: P4ssw0rd Quality Excites!

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!

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!

Funkcje o zmiennym koszcie obliczeniowym

ATAKOWANIE HASEŁ

• BCrypt

• PBKDF2

• Scrypt

• Phpass

• …

Page 31: P4ssw0rd Quality Excites!

Metody uwierzytelniania

Atakowanie haseł

Porady

Page 32: P4ssw0rd Quality Excites!

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&lt;3+you

PORADY

Page 33: P4ssw0rd Quality Excites!

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!

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!

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