![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 5 Dołączył: 10.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Z początku chicałbym przeprosić jeśli napisałem w nieodpowiednim dziale, ale żaden mi nie pasował =) Chciałbym poruszyć temat haseł i ich zabezpieczenia. Oczywiste wydaje się, że dodanie soli do hasła zwiększy skuteczność przeciwko atakami brutal-force. Zakładając, że użytkownik ma hasło o długości 3 znaków, dodanie soli o długości 4 znaków zwiększa znacząco długość hasła (Mówie ciągle o metodach brutal foce na metodzie np md5) Teraz chciałbym się dowiedzieć coś na temat tablic tęczowych, Czytałem, coś juz na ten temat i wiem, że nie są to po prostu hash'e każdych wyrazów (tzn nie jest to zbiór hashy każdej kombinacji znaków w alfabecie o określonej długości np, zajeło by to za dużo miejsca.) Więc czym one są? Co daje dodanie soli , i dlaczego dla każdego hasła sól powinna być inna? Dodanie soli, która ma np 10 znaków, pewnie zwiększa tylko możliwość kolizji.. 2)Czy nie lepszą metodą było by np hashowanie za pomocą md5 i np zamiana pierwszego i trzecigeo znaku w hashu literą, która jest podana będzie podana w kolumnie salt? Każdy 'hacker' pomyśli, że jest so salt, a to będzie inna metoda zabezpiecznia (na podstawnie md5), więc nawet jeżeli ktoś dostanie dostęp do bazy będzie miał znaczną trudność rozkodować hasła Czy ten pomysł poprawi bezpieczeństwo, czy to tylko jest dobre w teroii, a w praktyce to nie wygląda tak ciekawie (Przecież tyle serwisów korzysta z md5, zamiast troszkę go zmodyfikować) Lub po prostu dodawać jakiś znak w środku hasha, dzięki temu 'kid script' nie będą mogli użyć żadnego md5 crackera(nawet jeśli domyślą się, że hash ma złą długość, nie będą wiedzli który znak jest dodany) Cały czas mam na uwadzę, że cel ataku to poznnie prawdziwego hasła użytkownika, a nie zalogowanie się na jego konto (np poprzez kolizje) Ten post edytował mimol 12.07.2012, 19:42:07 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@up Bez urazy - ale chyba nie do końca wiesz o czym mówisz (IMG:style_emoticons/default/smile.gif) Może nie zajmowałeś się tym nigdy...
Masz trochę racji owszem, że lepiej mieć sól i w bazie i w kodzie - to nieco zwiększa skuteczność obrony ale rzadko kiedy zaczyna się włam od samej bazy... ale od początku. Jak włamuje się na serwer... Szukamy luki w aplikacji... wyodrębniamy i wyszukujemy kod odpowiedzialny za łączenie z DB - bingo - mamy dostęp do kodu i bazy (mamy oba sole) - seriously - poczytaj o tym - wystarczy dostać się jakkolwiek do kodu PHP - malutka furtka - mamy wszystko... Nie mówiąc o dostaniu się na FTP itp... Ok mamy bazę plus salty - co teraz? Pokazałeś mi kombinacje ok fajnie wszystko super - to teraz ja ci pokażę liczby: Z danych uzyskanych z netu wprost - chłopaki z Anglii się bawili: - skrypt w pythonie (zaznaczam że nie jest to ani wydajne ani optymalne do tego) - 3 miliony haseł sha1 - 1 salt Jak myślisz na średniej jakości maszynie ile chłopakom zajęło wyciągnięcie wszystkich 3 milionów haseł? (IMG:style_emoticons/default/smile.gif) Powiem Ci - < 30 sekund Jak to możliwe? To bardzo proste. W dużej liczbie aplikacji masz podane wprost: "hasło powinno składać z X do Y znaków takich jak..." i już wiemy jakie znaczki wrzucić do mieszania - liczba kombinacji drastycznie spada. Lecimy po każdym haśle po kolei próbując szczęścia... znamy salt... więc do każdego "wylosowanego" ciągu go dodajemy. Stosując tutaj metody słownikowe i ograniczając powtarzalność kombinacji (aplikacje/strony też czasem wprost mają podane i odrzucają hasła typu "aaaaa", "12345" itd..) można to jeszcze przyśpieszyć I tak wg tych danych cały misterny plan poszedł w p*** (IMG:style_emoticons/default/smile.gif) Dwa salty gdyby były - też nie problem - czas praktycznie by się nie zmienił - każdy hash hasła byłby generowany odpowiednio - salt_stały + hasło + salt_zmienny... Możesz teraz odpisać coś w stylu: "no dobra - ale skąd możesz wiedzieć jaka jest kombinacja kolejności hasła i saltów i czy nie ma pomiędzy nimi czegoś zagmatwanego" - odpowiem Ci "Nie wiem" - ale pierwsze co bym zrobił to wziął pierwsze hasło, jego salt i salt ogólny - napisał kombinacje kolejności i poświęcił dzień (załóżmy że tyle zajmie znalezienie kombinacji i hasła - tylko tego jednego). Teraz znam już kombinacje i mogę lecieć skuteczniej bruteforce'em Nie wierzysz że to takie proste - sprawdź (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 04:15 |