Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dobrze posól swoje hasło

Dobrze posól swoje hasło

Skróty haseł w webie

Leszek Krupiński

April 20, 2015
Tweet

More Decks by Leszek Krupiński

Other Decks in Programming

Transcript

  1. >>>  sha1('Quick  brown  fox  jumps  over  the  lazy  dog')  

    =>  "4ba0c2b764daf33a75f06e4ce4dfdce283aa9a9c"   >>>  sha1('Quick  brown  fox  jumps  over  The  lazy  dog')   =>  “c47983041ddb867c60790f93f681d74fc971ff47"   >>>  decbin(ord('T'))   =>  "1010100"   >>>  decbin(ord('t'))   =>  "1110100"
  2. username = Request->get('username'); password = Request->get('password'); hash = md5(password); user

    = Repository->getUser(username, hash); if (user) { this->status = LOGGED_IN; return; } else { throw new BadPasswordException(); }
  3. razem: ~900k user=pass: 5022 user=pass lowercase: 6721 pass zawiera username:

    30782 1234: 4172 12345: 3517 123456: 2954 1234567: 161 12345678: 267 123456789: 409 1234567890: 158 same cyfry: 97259
  4. czy md5(“jabłko”) jest na liście? … czy md5(“gruszka”) jest na

    liście? … czy md5(“banan”) jest na liście? … czy md5(“pomarańcza”) jest na liście? … czy md5(“arbuz”) jest na liście? … czy md5(“brzoskwinia”) jest na liście? … nie tak (użytkownik “janek”) nie tak (użytkownicy “zosia”, “franek”) tak (użytkownik “marek”) nie
  5. password | hash --------------------------------------------- a | 0cc175b9c0f1b6a831c399e269772661 aa | 4124bc0a9335c27f086f24ba207a4912

    aaa | 47bce5c74f589f4867dbd57e9ca9f808 aaaa | 74b87337454200d4d33f80c4663dc5e5 (...) ab | 187ef4436122d1cc2f40dc2b92f0eba0 aba | 79af87723dc295f95bdb277a61189a2a abaa | 537964105de1063e88b2fc126750d16e (...) cat | d077f244def8a70e5ea758bd8352fcd8 (...) dog | 06d80eb0c50b49a509b49f2424e8c805 (...)
  6. aaaaaa 0b4e7a cdadro 8b8031 umehao R H H R PASSWORD

    CANDIDATE HASH PASSWORD CANDIDATE PASSWORD CANDIDATE HASH
  7. P 1 H 1 P 2 H 2 P 3

    dog e0d13d cat 4e85aa lion hawk 867dbd eagle 399e26 pigeon ball tennis basket 23dc29 b92f0e party event ball 70e5ea 33f80c 23dc29
  8. P 1 H 1 P 2 H 2 P 3

    dog e0d13d cat 4e85aa lion hawk 867dbd eagle 399e26 pigeon ball tennis basket 23dc29 b92f0e party event ball 70e5ea 33f80c b92f0e
  9. P 1 H 1 P 2 H 2 P 3

    dog e0d13d cat 4e85aa lion hawk 867dbd eagle 399e26 pigeon ball tennis basket 23dc29 b92f0e party event ball 70e5ea 33f80c 7a68a0
  10. P 1 H 1 P 2 H 2 P 3

    dog e0d13d cat 4e85aa lion hawk 867dbd eagle 399e26 pigeon ball tennis basket 23dc29 b92f0e party event ball 70e5ea 33f80c
  11. dog e0d13d cat 4e85aa lion d023a3 hawk 867dbd eagle 399e26

    pigeon 89f486 ball tennis basket 23dc29 b92f0e 5b9c0f party event ball 23dc29 70e5ea 33f80c tiger d023a3 sparrow 89f486 volley 5b9c0f venue 23dc29 H H H H H H H H H H H H H H H H R1 R1 R1 R1 R2 R2 R2 R2 R3 R3 R3 R3 base foot room falcon R4 R4 R4 R4
  12. dog e0d13d cat 4e85aa lion d023a3 hawk 867dbd eagle 399e26

    pigeon 89f486 ball tennis basket 23dc29 b92f0e 5b9c0f party event ball 23dc29 70e5ea 33f80c tiger d023a3 sparrow 89f486 volley 5b9c0f venue 23dc29 H H H H H H H H H H H H H H H H R1 R1 R1 R1 R2 R2 R2 R2 R3 R3 R3 R3 base foot room falcon R4 R4 R4 R4 89f486 foot 70e5ea R4 R4 leg 70e5ea R3 box R4 yellow H 1043da 70e5ea R2 cat H 4e85aa R3 sparrow R3 H 89f486 R4 foot
  13. Używaj długich, łatwych do zapamiętania haseł. Nie przechowuj haseł plain-text.

    Używaj salt. Salt ma być indywidualny. Salt ma być losowy. Salt ma być długi. Nie używaj dziwnych funkcji skrótu. Używaj iteracyjnych, dedykowanych algorytmów skrótu. Używaj bezpiecznego porównywania ciągów. Wymuszaj politykę haseł na użytkownikach, ale nie przesadzaj. Zmieniaj hasła. Nie używaj tego samego hasła w wielu serwisach. Rozważ zastosowanie biblioteki do generowania skrótu. Z czasem zwiększaj liczbę iteracji. Miej plan awaryjny.