Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> podwójne hashowanie haseł, ogólnie n-hashowanie
nospor
post 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 wink.gif

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

Go to the top of the page
+Quote Post
7 Stron V   1 2 3 > »   
Start new topic
Odpowiedzi (1 - 19)
wijet
post 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.

  1. <?php
  2.  
  3. $tajny_ciag = '23mjdkifjS1lpo321lpSAo5c90sawe3';
  4.  
  5. $zaszyfrowane = md5($tajny_ciag.md5($tajny_ciag.$_POST['pass']));
  6.  
  7. ?>


--------------------
Go to the top of the page
+Quote Post
mike
post 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 wink.gif
Go to the top of the page
+Quote Post
FiDO
post 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 smile.gif

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 winksmiley.jpg


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
rbart
post 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 snitch.gif 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
Go to the top of the page
+Quote Post
sobstel
post 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 winksmiley.jpg Moze się okazać, ze podwojne shashowanie hasla, zostanie rozwiązane szybciej, niż byś to zrobil tylko raz smile.gif tak więc nie kombinuj smile.gif

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 tongue.gif

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 tongue.gif


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
Aztech
post 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

laugh.gif laugh.gif
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.
Go to the top of the page
+Quote Post
nospor
post 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 winksmiley.jpg 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

Go to the top of the page
+Quote Post
lenczewski
post 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

winksmiley.jpg istnieje jeszcze coś takiego na kolizje kodowania, tzn. 32 znaki muszą się kiedyś powtarzać, dlatego jeżeli będziesz chciał coś "odkompresować" winksmiley.jpg 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 winksmiley.jpg 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


--------------------
Go to the top of the page
+Quote Post
My4tic
post 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.
Go to the top of the page
+Quote Post
nospor
post 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ć.... winksmiley.jpg
Jak tak czytam kolejne wypowiedzi, to zaczynam wierzyć w lekki sens tego kombinowania smile.gif

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

Go to the top of the page
+Quote Post
My4tic
post 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.
Go to the top of the page
+Quote Post
lenczewski
post 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 winksmiley.jpg, 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 winksmiley.jpg

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


--------------------
Go to the top of the page
+Quote Post
SHiP
post 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
Go to the top of the page
+Quote Post
lenczewski
post 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 winksmiley.jpg

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 winksmiley.jpg

Ten post edytował lenzcewski 24.03.2006, 06:54:50


--------------------
Go to the top of the page
+Quote Post
chomiczek
post 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
Go to the top of the page
+Quote Post
lenczewski
post 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


--------------------
Go to the top of the page
+Quote Post
kszychu
post 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
Go to the top of the page
+Quote Post
E-d
post 24.03.2006, 11:36:29
Post #19





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 9.04.2005

Ostrzeżenie: (0%)
-----


md5 da się odhaszować.
http://md5.rednoize.com/
Więc lepiej używać sha1


--------------------
Go to the top of the page
+Quote Post
lenczewski
post 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?


--------------------
Go to the top of the page
+Quote Post

7 Stron V   1 2 3 > » 
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.11.2024 - 19:52