A ja mam wyebunne na ACTA. dowiedz się dlaczego »

blog.dexterxx.pl : Blog | Chcesz być na czasie z moimi poczynaniami? Odwiedzaj bloga. Zawsze znajdziesz tutaj najświeższe informacje.

dexterxx.pl

Internetowy password

Napisany : 25-08-2010 | Przez : Dexterxx® | Kategoria : Security

Tagi: , , , , , ,

0

Nie, to nie ten słynny index.html

Samym nickiem nie zaloguje się na Allegro, poczty nie sprawdzę, a co najwyżej odkryje kolejne godziny zegarowe przed premierą 3W – złodzieje czasu. Zaraz, przecież nie mam hasła do maila, aby aktywować konto. Kurczę.

Przed wczoraj wyszło na jaw, że filmweb został rozkradziony z kont użytkowników i tak oto poszły maile, nicki, i hasła (niesolone?) w ruch w necie. Kolejna potężna wpadka na miarę wykopu, może czegoś jeszcze. Ale dziś nie o tym.

Jubileuszowo 100 post dzisiaj strzelę trochę o hasłach i ich w miarę bezpiecznemu gromadzeniu.

Trochę historii i co, jak, dlaczego

Rok 2000. Rejestrujesz konto na onecie, aby otrzymać pocztę. W sumie więcej usług w tamtym czasie zbytnio nie było. Wybierasz nazwę użytkownika, datę urodzenia itd. W końcu czas na pytanie pomocnicze i odpowiedź.

Kiedyś takie czasy były, ażeby odzyskać swoje hasło należało odpowiedzieć poprawnie na ów pytanie pomocnicze. Jak nie trudno się domyślić w przypadku niektórych pytań nie było trudno. I tak znam pierwszą miłość mojego ojca, czy wiem jak nazywa się Twój ulubiony film. Najśmieszniejsze w całym tym odzyskiwaniu było to, że można było cały dzień siedzieć, próbować brutal dictionary force ( :P ) aż w końcu się udało i poznało się hasło… wiaderko. Kurde, ale one było proste!

Najgorsze w tym wszystkim (patrząc na dzisiejsze czasy) było to, że niektóre strony hasło trzymały jako plain text. Fajnie, spróbujmy to samo hasło teraz na ten serwis randkowy. Bingo.. działa! (Chociaż mógł być problem w poznaniu loginu, wtedy zbytnio nie było trendów do używania emaila jako loginu).

Hasłu jako plain tekst można by przypisać chyba tylko jedną zaletę, która jest większą wadą. Jeśli jesteś totalnie głupi i zapomniałeś swojego jedynego hasła, które użyłeś na 5 innych portali w tamtym czasie, to w ten sposób mogłeś je sobie dokładnie przypomnieć. Oczywiście z drugiej strony hacker/administrator też je pozna… Mogłeś dostać hasło w niezmienionej formie na maila. Żadnych resetów i kolejnych głupich zmian haseł, przecież nie dbamy o bezpieczeństwo, bo po co, nie?

Pierwsze enkrypcje

Potem może i w niektórych głowach przyszedł pomysł na ‘hashowanie’ hasła, przykładowym rot13. Całe zabezpieczenie mogłoby tylko polegać na tym, że totalny noob siedzący nad administracją strony nie byłby w stanie przeczytać ów hasła swoim (może i nie) ojczystym językiem. Ale nie żartujmy już, może i były przypadki używania samego rot13, nie wiem.

Przykładowy hash MD5

Poważniej podchodząc do tematu z czasem zaczęto używać MD5 czy SHA1 (muszę dodawać, że to algorytmy stratne w przeciwieństwie do rot13?). Cała zabawa polegała na podwyższeniu bezpieczeństwa szarych użytkowników, aby i również administrator danej strony od razu nie miał na patelni wszystkich wymaganych danych do złodziejowania, szczególnie, gdy nie był twórcą danego skryptu (rozumiesz?).

Organizacje kryptograficzne pracowały nad jak najlepszym skonstruowaniem algorytmu, który zabezpieczałby przykładowo nasze hasła. I chociaż te algorytmy mają już po kilkanaście lat, to bardzo dobrze sprawowały się przez kilka najbliższych lat. Do czasu, aż zaczęto wynajdować kolizje.

Zaczęto również generować tablice tęczowe. W większych przypadków wynajdowanie haseł wydajniej wychodzi przez stworzenie kilkudziesięciu (set?/tysięcy?) GB tęczowych tablic i wyszukiwaniu skrótów dla hashy i ich odwrócenie. Nie wątpię, że tworząc potężny indeks alfabetyczny również byłoby bardzo wydajnie.

Ale ten problem dotyczy głównie ‘czystych’ enkrypcji MD5/SHA1.

Posólmy pieczeń

Dzisiaj solimy, aby bardziej zabezpieczyć hasła użytkowników. Solenie polega na doklejeniu jakiegoś ciągu znaków do hasła użytkownika – w wymyślony przez Ciebie sposób. Może kiedyś zdarzyło Ci się łamać brutalnie hasło do jakiegoś archiwum, np. RAR. Mając kombinację samym małych liter alfabetu prostego ([a-z]) idzie całkiem szybko i przyjemnie. Wiesz, co się stanie, jak dodasz duże litery, cyfry, znaki specjalne…

Tak samo może być w przypadku solenia. Dodanie choćby jednego znaku do czystego hasła użytkownika w zupełności zmienia jego hash. Fajnie, nie? Pomyśl, co się stanie, jak dodasz jeszcze do tego resztę znaków, jakie możesz osiągnąć z klawiatury. Trochę trudniej już tutaj z brute force.

Ale to jednak jeszcze nie chroni użytkownika, który przypadkowo ma to samo hasło, co inny. Odkodował x0r hasło pana A, jest takie samo jak hasło pana B. Bingo, dwie pieczenie na jednym ogniu.

Sól dodawana do hasła nie powinna być zawsze taka sama (ale to i tak lepsze rozwiązanie niż czysty algorytm). Bardzo często, aby jeszcze bardziej ‘zwyjątkowić’ hasło i hash użytkownika dodaje się jego login. Trudno, aby trafili się dwaj Ci sami goście, aby ten sam hash mieli ;-) ? (W skrajnych przypadkach mogłoby to być możliwe). Wiele ludzi lubi jeszcze dodawać aktualny microtime() serwera. To też jest dobry pomysł.

Cholera!! Zakodowałem hasło z microtime’em i teraz nie mogę go porównać! Otóż to. Wyjątkowy, generowany losowo lub jakkolwiek inaczej salt musisz zapisywać, aby było możliwe potem porównanie hashy. Niby zapisywanie soli w kolumnie obok hash hasła to strzelanie sobie w stopę, ale hej.. kto powiedział, że cracker zna Twój algorytm łączenia soli z hasłem?

I tutaj możemy zabawić się w kolejny odcinek ‘Oszukaj hakiera’. Kto powiedział, że ten salt obok… to jest ten faktyczny salt ;-) No dobra, hacker wykradł jeszcze skrypty i wyczytał nasz pomysł tworzenia hashy. Jesteśmy w dupie :-(.

Konkluzja

No cóż. Od Ciebie zależy finezja skąd wytrzaśniesz hashe dla haseł użytkowników. Jak to wyczytałem w komentarzach na niebezpieczniku (wracając do sprawy filmweb’u), to najlepiej podpiąć mózg kobiety pod kodowanie, a nikt nigdy tego nie rozszyfruje, a co dopiero zrozumie.

Weź się też za wkręcanie ludzi. Na Twoją korzyść wpływa, jeśli cracking potrwa dwa lata, a nie jeden dzień i to tylko z powodu, bo zapchałeś trochę zasobów bazy, aby udawać fikcyjny salt.

I nie baw się w md5(md5($pass)); Tak podobno wrasta prawdopodobieństwo kolizji jak kilka lat temu gdzieś tak wyczytałem.

I jeszcze podmuchaj na zimne

Wklepywanie swojego hasła do Google nie jest dobrym pomysłem. Tak samo hashowanie go dowolną stroną w sieci i wyszukiwaniem hasha znów z pomocą choćby Googlarki. Bodajże na wykopie – jak dobrze pamiętam – pojawiły się pogłoski, że pewna strona do konwersji plain tekstu przez wiele algorytmów również ‘gromadziła’ swoją bazę zapytań jak i gotowych hashy – jak myślisz do jakiego celu?

Post trochę niespójny i niezrozumiały, ale co tam – wyślę w eter.

Daj innym to przeczytać:

Skomentuj

  • RSS
  • Blip
  • Facebook
  • GoldenLine
  • Last.fm