podwójne hashowanie haseł, ogólnie n-hashowanie |
podwójne hashowanie haseł, ogólnie n-hashowanie |
27.02.2006, 11:48:23
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 523 Pomógł: 6309 Dołączył: 27.12.2004 |
w związku z lekkim OT w pewnym temacie, który rozwinął się w ciekawą dyskusję, temat rozdzielam. Dotyczy on:
Czy podwójne (n-te) hashowanie hasła jest bezpieczniejsze, od pojedynczego hashowania md5 sie nie odkoduje. mozna trafic na rozwiązanie metodą brute force. Dla tej metody jednak jest bez roznicy, czy ty dane haslo przepuścic przez md5 raz, dwa czy milion razy Posty będące duplikacją postów już zawartych w temacie, będą bez ostrzeżenia usuwane. Ma to zapobiedz tworzeniu się zbędnego śmietnika -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
27.02.2006, 14:09:17
Post
#2
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Łódź Ostrzeżenie: (0%) |
Ja też myślalem że przepuścić przez md5 dwa razy będzie lepiej, ale ja to bym zrobil tak.
-------------------- |
|
|
27.02.2006, 14:30:17
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
Haszowanie dwa razy jest bez sensu, no bo nawet jeśli działa to co z tego?
W takim razie dlaczego nie 10 razy. To jest jak z kostką Rubika. Jak już pomieszałeś dobrze, to każde kolejne przekręcenie ścianki nic nie daje. Nie da się bardziej pomieszać. A md5 jest algorytmem mieszającym. P.S. Wiecie dlaczego polskim matematykom udało się rozszyfrować Enigmę? Bo niemieccy projektanci założyli, że jak kodowanie będzie odbywać się dwa razy to wzrośnie efektywność. A stało się to przyczyną jej złamania |
|
|
22.03.2006, 18:47:42
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) |
Cytat(mike_mech @ 2006-02-27 14:30:17) rety, co wy żeście się przyczepili tego podwojnego hashowania. jeszcze ten tajny ciąg... Metodzie brute force jest to wszystko jedno. Proponuje poczytać coś na ten temat. md5 do nie jest szyfrowanie dwustronne, że trzeba kombinować. Na to jest tylko jedna metoda by odgadnąć haslo: brute force, czyli tworzenei kombinacja hasla do bólu, aż się natrafi na takie co pasuje. Możecie te haslo mlynkiem mielic, ale jak pasuje to pasuje i juz No niezupelnie. Zgadzam sie z tym, ze w gre wchodzi tylko b-f (aczkolwiek na md5 juz sa jakies bardziej inteligentne sposoby), tylko ze jest roznica dla b-f czy atakujesz haslo, ktore ma 7 znakow czy tez takie, ktore ma 32 znaki. Zakladajac, ze haslo brzmi 'tajne123' to probujac je zaatakowac przy pojedynczym hashowaniu b-f powinien sobie poradzic w czasie takim, ze oplaca sie czekac (tak na oko przy tej dlugosci sadze, ze jest to do rozlozenia w czasie gora kilku dni przy pesymistycznym zalozeniu na domowym sprzecie), w koncu to 'tylko' 8 znakow. Jesli hashujemy podwojnie to pierwszy cykl b-f bedzie musial zwalczyc ciag 32 znakowy (litery i cyfry), a tego juz tak szybko zrobic sie nie da. A nawet jak juz sie po wielu miesiacach/latach uda to otrzymamy w wyniku jeszcze jeden hash i zabawa od nowa. To tak na pierwszy rzut oka.. jednak pamietam przez mgle z inzynierii bezpieczenstwa, ze koles cos mowil o nieskutecznosci podwojnego szyfrowania, nie pamietam jednak czy tyczylo sie to tez hashowania. Jesli ktos widzi jakas dziure w rozumowaniu, ktore przedstawilem wyzej to smialo.. chetnie sobie odswieze wiedze, a przez ksiazki kopac mi sie teraz nie chce -------------------- Brak czasu :/
|
|
|
22.03.2006, 20:27:09
Post
#5
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 1.03.2006 Ostrzeżenie: (0%) |
Osobiście niewiem po co to podwójne kodowanie md5 skoro i tak qbase zastanawia się nad zapamiętywaniem użytkownika przez cookies. Poreszto czy to nowe zabezpieczenia fort'u knox jeżeli nie to całe kodowanie służy tylko do tego że jeżeli już komuś uda się odczytać dane z bazy to żeby niemógł wyciągnąć haseł (znaczy się bez problemu). Md5 zapewnia bezpieczenstwo o wiele wyższe od tego które będzie potrzebne.
Teoretycznie : Jakie kolwiek złamanie hasła wiąże się jedynie z metodą b-f o odkodowaniu md5 mogą wszyscy zapomnieć. I w tym przypadku podwójne zakodowanie md5 może spełnić swoją rolę ponieważ wtedy b-f będzie musiał wygenerować 128 bitowe ciągi znaków. o ile dobrze pamiętam to jest 32 znaki co napewno będzie trudniej rozszyfrować b-f'em z drugiej strony jeżeli ktoś już wyciągnął zakodowane hasła z bazy to napewno sprawdzi czym i jak były kodowane i wtedy okazuje się że podwujne kodowanie jest bez sensu ponieważ wspomniana osoba dalej posłuży się b-f tylko będzie musiała go dwa razy kodować i dopiero sprawdzić z rekordem w bazie. Ten post edytował rbart 22.03.2006, 20:29:03 |
|
|
22.03.2006, 23:26:40
Post
#6
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) |
Cytat(nospor @ 2006-02-27 11:48:23) md5 sie nie odkoduje. mozna trafic na rozwiązanie metodą brute force. Dla tej metody jednak jest bez roznicy, czy ty dane haslo przepuścic przez md5 raz, dwa czy milion razy Moze się okazać, ze podwojne shashowanie hasla, zostanie rozwiązane szybciej, niż byś to zrobil tylko raz tak więc nie kombinuj widze wlasciwie tylko jeden przypadek kiedy kombinowanie z md5 ma sens. istnieją w necie duze bazy z wygenerwoanymi hashami slow ze slownika, ich kombinacji, itp. (podajesz 32-znakowego hasha a on ci wyrzuca co sie pod tym kryje). jesli ktos w jakis sposob wszedl w posiadanie np. hasel zakodowanych md5 wtedy uzywajac powyzszej bazy stosunkowo łatwo wyciągnie większość haseł. ale powiedzmy sobie jasno ze jesli ktos rzeczywiscie wejdzei w posiadanie hasel i loginow to znaczy ze aplikacja jest dziurawa jak sito, ale to juz inna sprawa oczywiscie przy metodach typu brute-force to nie gra zadnej roznicy chocby ktos zrobil crypt, md5, sha1, przemieszial wszystko i jeszcze powtorzyl kilka razy ;-) co do odkodowania md5, jak juz ktos kiedys ladnie zauwazyl, gdyby to bylo mozliwe to mielibysmi najlepszy w historii algorytm kompresji... wszystko mozna do 32 znakow -------------------- "If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org |
|
|
23.03.2006, 00:31:50
Post
#7
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 3 Dołączył: 22.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) |
[offtopic mode on]
Cytat co do odkodowania md5, jak juz ktos kiedys ladnie zauwazyl, gdyby to bylo mozliwe to mielibysmi najlepszy w historii algorytm kompresji... wszystko mozna do 32 znakow Rozbroiłeś mnei tym wnioskiem, w życiu bym nie pomyślał w tych katergoriach o md5 [offtopic mode off] Co do podwórjnego md5 to nie widzę sensu, wszystkie argumenty zostały już powiedziaane wcześniej. |
|
|
23.03.2006, 08:34:33
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 523 Pomógł: 6309 Dołączył: 27.12.2004 |
Cytat Zakladajac, ze haslo brzmi 'tajne123' to probujac je zaatakowac przy pojedynczym hashowaniu b-f powinien sobie poradzic w czasie takim, ze oplaca sie czekac (tak na oko przy tej dlugosci sadze, ze jest to do rozlozenia w czasie gora kilku dni przy pesymistycznym zalozeniu na domowym sprzecie), w koncu to 'tylko' 8 znakow. Jesli hashujemy podwojnie to pierwszy cykl b-f bedzie musial zwalczyc ciag 32 znakowy (litery i cyfry), a tego juz tak szybko zrobic sie nie da. A nawet jak juz sie po wielu miesiacach/latach uda to otrzymamy w wyniku jeszcze jeden hash i zabawa od nowa. Przyznam szczerze, iż nie wiem jak robi się w praktyce ataki b-f. Nigdy nie robilem Wiem z teorii tylko jak dzialają. Ale przypuśćmy, ze taki atak polega na ciąglym wysylaniu requesta do strony, gdzie należy się zalogować. W request wysylane jest haslo. Jak wiemy jest to haslo wówczas w postaci jawnej (nie hashowane). Tak więc nie ma znaczenia, ze hash będzie mial 32 bajty czy też więcej. Nie ma znaczenia, ze po stronie serwera bedzi dodawany jakiś tajny ciąg do tego. Znaczenie ma to, ze haslo ma 8 znaków i wygenerowanie ich wszystkich kombinacji nie ma już zadnego związku z metodami hashowania na serwerze. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
23.03.2006, 18:34:57
Post
#9
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 1 Dołączył: 31.08.2005 Ostrzeżenie: (0%) |
hmmm. a jednak będę odmiennego zdania, niż cześc tu obecnych.
Zakładając, że ktoś wyciagnie hasło uzytkownika (ciastka, itp.) i będzie ono zakodowane md5($hasło), rozszyfrowanie tego nie zajmie dużo czasu (no chyba, ze ma więcej niż 7 znaków), natomiast rozszyfrowanie md5(md5($hasło)) potrwa raczej zbyt długo ...i yu w zupełności zgadzam się z FIDO. Lektura: Rainbow Tables Cytat co do odkodowania md5, jak juz ktos kiedys ladnie zauwazyl, gdyby to bylo mozliwe to mielibysmi najlepszy w historii algorytm kompresji... wszystko mozna do 32 znakow istnieje jeszcze coś takiego na kolizje kodowania, tzn. 32 znaki muszą się kiedyś powtarzać, dlatego jeżeli będziesz chciał coś "odkompresować" możesz otrzymać zupełnie coś innego, a taka szansa jest wprost proporcjonalna do długości ciągu początkowego. Wniosek nasuwa się mi prosty, chyba stosowanie podwójnego md5() nie obciąza tak bardzo serwera, żeby tego nie używać. na pewno nikt na tym nie straci, a do zzyskania jest o wiele więcej. Zawsze lepiej jest komuś (potencjalnemu "chackerowi") coś utrudnić, niż ułatwić. tak swoją drogą, baza danych hashów md5() samych liczb (do 7 znaków) zajmuje ok. 1.3 GB złamanie takiego hasła (przeszukanie bazy) to ok. 3 min. -edyta: jeszcze raz [OT]: Cytat co do odkodowania md5, jak juz ktos kiedys ladnie zauwazyl, gdyby to bylo mozliwe to mielibysmi najlepszy w historii algorytm kompresji... wszystko mozna do 32 znakow jest algorytm (stosunkowo prosty) gdzie z pliku powiedzmy 200kb po rozpakowaniu otrzymamy jakieś 60GB, wszystko zalezy od tego co pakujemy. Ten post edytował lenzcewski 23.03.2006, 20:21:59 -------------------- |
|
|
23.03.2006, 21:02:40
Post
#10
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) |
A co powiecie o słownikach hashy w md5 których pełno w necie? W takim wypadku podwójne hashowanie czy kombinacje z 'tajnym ciagiem' zaczynają mieć sens. Zgadzam się ze md5(md5(pass)) samo w sobie nie ma większego sensu ale żeby uniknąć metody słownikowej może być przydatne.
-------------------- Załóż konto na dropbox.
|
|
|
23.03.2006, 21:10:40
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 523 Pomógł: 6309 Dołączył: 27.12.2004 |
Kurka wodna, jak to potrafią czlowiekowi wodę z mózgu zrobić....
Jak tak czytam kolejne wypowiedzi, to zaczynam wierzyć w lekki sens tego kombinowania edit: oczywiscie mam na mysli sytuację, gdy ktoś wykradnie nam hasha. Bo gdy b-f leci bezposrednio na stronę, to takie kombinowanie jest bez sensu -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
23.03.2006, 21:23:26
Post
#12
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) |
Zgadza sie - na b-f nic sie nie poradzi ale podwojny hash dla takiego czegoś:
http://gdataonline.com/seekhash.php to już bedzie problem. -------------------- Załóż konto na dropbox.
|
|
|
23.03.2006, 22:48:20
Post
#13
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 1 Dołączył: 31.08.2005 Ostrzeżenie: (0%) |
nospor: dla bezpośredniego ataku na strone (remote) mało co ma sens. Zakładając, że serwer odpowiada czy jest dobre hasło czy nie w czasie powiedzmy 0,5 s. (co jest czasem chyba bardzo dobrym , daje to 172 800 zapytań na dobę, przy haśle powiedzmy pięcio literowym (małe litery bez cyfr i innych znaków) przy najbardziej pesymistycznym podejściu
Kod 24^1+24^2+24^3+24^4+24^5 daje to 8 308 824 hashów Czyli jakieś 48 dni, nie licząc padów serwera Exploitów do wyciągnięcia haseł z phpBB jest masa. ...a z tamtąd już tylko prosta droga do gdata. -add: oczywiście dodanie do hasła znaków innych niż alfanumeryczne spowoduje koszmarne utrudnienie w złamaniu takiego hasła, ale to już raczej mentalność użytkowników, a nie administratora ;( Ten post edytował lenzcewski 23.03.2006, 22:55:25 -------------------- |
|
|
23.03.2006, 23:02:10
Post
#14
|
|
Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) |
Co do kodowania 2 x md5 heh a nie łatwiej użyć kodowania sha1()? Dużo mniej znany sposób więc i baze danych hashów nie bedzie łątwo znaleźć przez co napewno będzie ciężej go złamac ;] Dla utrudnienia można kodować w sh1 i ucienać 8 znaków przez co bedzie to wyglądało jak md5 ;] Nikt nie zauważy =)
Co do COOKIE + md5 ;] skoro mamy hasło w md5 to po co je odkodowywać? Wystrczy spreparować odpowiednie ciastko i mamy dostęp do kona ;] Ten post edytował SHiP 23.03.2006, 23:03:19 -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
24.03.2006, 06:53:32
Post
#15
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 1 Dołączył: 31.08.2005 Ostrzeżenie: (0%) |
hmmm. po co?
jeżli masz odkodowane hasło, szansa, że użytkownik ma takie samo w mailu #1 mailu #2, innych kontach, homebanking, itp., a wszystko dzięki Twojej stronie i "systemu zabezpieczeń" na niej. co do Twojego sposobu z SHA1() wydaje się być bardo dobry. ja użwam od jakiegoś czasu megody w której koduje $hasło . $mail funkcjami md5(md5()) (i taki zapis jest w kodzie źróodłowym) następnie w innej cześci trafia to do bazy, gdzie jest standartowe pole typu passwd. Jak ktos dostanie moje baze bedzie mam nadzieje, ze bedzie lekko wprowadzony w blad, a przy okazji powstała optymalizacja bazy (w jednej kolumnie trzymam dwie rzeczy i zamiast adresu e-mail + 32 znaki na hasło, mam 16). Dlatego namawiam wszystkich do nie stosowania standartowych rozwiazan typu md5() i po sprawie. Dołączenie choćby jednego znaku (~!@#$%^&*(){}:"<>?/.,;'[]) znacznie utrudni sprawę. Jednak i tak nie daje to 100% metody na nie odkodowanie. Jeżeli ktoś dostanie kod źródłowy strony, sam może napisać taką funkcję substr(sha1($tajne), 0, 32), a wtedy b-f i kwestia czasu Nie popadajmy jednak w panikę, metod na nieautoryzowany dostęp do aplikacji jest napradwdę mnóstwo. Poprostu róbcie rzeczy nieszablonwe (tyczy sie kodowania hasel), co do reszty, coz jest SQL Injection, Code injection, Cross-Site scripting, HTTP Response Splitting, Directory traversal, Session fixation, Session injection... i pewnie jeszcze milion innych metod. Coż jest miecz, jest tarcza, ale i miny przeciw piechotne, granaty, rakiety bliskiego, średniego i dalekiego zasięgu ...i pewnie miltion innych Ten post edytował lenzcewski 24.03.2006, 06:54:50 -------------------- |
|
|
24.03.2006, 09:04:19
Post
#16
|
|
Grupa: Zarejestrowani Postów: 271 Pomógł: 4 Dołączył: 5.01.2005 Ostrzeżenie: (0%) |
Cytat(SHiP @ 2006-03-23 22:02:10) Dla utrudnienia można kodować w sh1 i ucienać 8 znaków przez co bedzie to wyglądało jak md5 ;] Nikt nie zauważy =) Z tym ucinaniem to chyba nie jest za dobry sposób z uwagi na to, że chyba jest spore prawdopodobieństwo żeby początkowy fragment sie zdublował z jakimś innym. Co do MD5 to jest podobno wydajny sposób na podstawienie swojej zawartości zawierające taka samą sume kontrolną (md5). Sposób ten opracowali jacyś naukowcy i de facto nie został jeszcze opublikowany, ale.. P.S. jak znajde ten artykuł to dokleje linka. -add: Co do stosowanie np. samego MD5 to ja osobiście np. uploadując fotki na serwer wprowadzam nazewnictwo typu: md5('#d.icA'.mysql_inserted_id()); dla dużych fotek i dla miniaturek md5('#m.icA'.mysql_inserted_id()); sądze, że jest to dobry sposób a jesli ktoś nie ma dostępu do kodu to nie wie nawet jak to ugryźć. Ten post edytował chomiczek 24.03.2006, 09:07:53 -------------------- created by chomiczek
|
|
|
24.03.2006, 09:23:34
Post
#17
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 1 Dołączył: 31.08.2005 Ostrzeżenie: (0%) |
http://www.hakin9.org/pl/attachments/md5_pl.pdf
http://www.stachliu.com/collisions.html http://www.google.com/search?client=opera&...=utf-8&oe=utf-8 -------------------- |
|
|
24.03.2006, 10:59:10
Post
#18
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) |
Cytat(lenzcewski @ 2006-03-24 06:53:32) hmmm. po co? jeżli masz odkodowane hasło, szansa, że użytkownik ma takie samo w mailu #1 mailu #2, innych kontach, homebanking, itp., a wszystko dzięki Twojej stronie i "systemu zabezpieczeń" na niej. Debile, którzy używają jednego hasła do wszystkiego sami są sobie winni! Jak można używać takiego samego hasła do logowania na forum i logowania do banku?! Najlepszym zabezpieczeniem i tak pozostanie ludzka inteligencja. Wtedy nawet jeżeli ktoś odkryje Twoje hasło do strony, to będzie znał tylko... hasło do strony. I nic więcej. -------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
24.03.2006, 11:36:29
Post
#19
|
|
Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 9.04.2005 Ostrzeżenie: (0%) |
-------------------- |
|
|
24.03.2006, 11:41:30
Post
#20
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 1 Dołączył: 31.08.2005 Ostrzeżenie: (0%) |
krzychu:
nie zmienia to faktu, że ktoś uzyskał dostęp do jego haseł poprzez nasz serwis, stronę, czy co tam innego. Przy Twoim rozumowaniu po co wogule kodować hasła? -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 1.11.2024 - 01:17 |