P4ssw0rd Quality Excites!

Preview:

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

amichalczyk@future-processing.comvizzdoom@gmail.com

• Nie Twój interes!

• Nie Twój interes!

• A bo ja wiem?

• Nie Twój interes!

• A bo ja wiem?

• No ba!

Metody uwierzytelnianiaAtakowanie haseł

Porady

Kontrola dostępu do zasobu

1. Identyfikacja

2. Uwierzytelnianie

3. Autoryzacja

METODY UWIERZYTELNIANIA

Nie masz uprawnień

do tego pliku

Informacja uwierzytelniająca

• Coś, o czym podmiot wie

• Coś, co podmiot ma

• Coś, czym podmiot jest

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 zostać zmienione, blokując dostęp do usługi

METODY UWIERZYTELNIANIA

METODY UWIERZYTELNIANIA

• Hasła jednorazowe („co wiem” „co mam”)

• Karty magnetyczne i inteligentne („co mam”)

• Metody biometryczne („czym jestem”)

Inne metody uwierzytelniania

Przechowywanie haseł

• Plaintext

• Szyfrowanie

METODY UWIERZYTELNIANIA

METODY UWIERZYTELNIANIA

HashowaniePrzechowywanie wartości bezpiecznej funkcji hashującej

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

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

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

Metody uwierzytelniania

Atakowanie haseł

Porady

ATAKOWANIE HASEŁ

md5("vizzdoom")96daa74aac66d0fa51c9dd6d2dacc37a

sha1("vizzdoom")bfc4231d98b642f656b0c36200e7ba1371a07890

sha3-512("vizzdoom")7c29260cb1f8c09656cab202e0f27f07e9f637da87bc733ecf60a1c0e4261c77

545f1d2b5c5687c2c11032f30ea135be8b762890a1179c43151ae989c358a07a

•szybkość

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

•szybkość

http://www.flickr.com/photos/spyder01/sets/72157621929408408/detail/http://img.wallpaperstock.net:81/car-crash-3d-wallpapers_25856_1600x1200.jpg

Atak offline

• Atak na skrót kryptograficzny

• Bruteforce / Dictionary / Hybrid …

• Bardzo szybki

o CPU

o GPU

o Przetwarzanie rozproszone

ATAKOWANIE HASEŁ

0-9

a-z

a-z 0-9

A-Z a-z

Zasada pierwsza

• Kontroluj szybkość

Wielokrotne hashowanie

ATAKOWANIE HASEŁ

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

$pass = hashFunc($pass);

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~

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

Funkcje o zmiennym koszcie obliczeniowym

ATAKOWANIE HASEŁ

• BCrypt

• PBKDF2

• Scrypt

• Phpass

• …

Metody uwierzytelniania

Atakowanie haseł

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

PORADY

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

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

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

amichalczyk@future-processing.comvizzdoom@gmail.com

Recommended