Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak dobrze hashowac hasla?
narvego
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.09.2010

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


Na wstepie przepraszam, jesli jakis podobny watek na ten temat istnieje - jednak przeszukalem forum i w ostatnich nie znalazlem.

Pytanie brzmi - jak dobrze zahashowac haslo? Od razu chce zaznaczyc, ze moja wiedza jest dosc amatorska. Dotychczas w przerobkach skryptow stosowalem podwojne hashowanie:

  1. sha1(md5($password));


Jednak w przypadku robienia sobie serwisu na ktorym spodziewam sie kilku tysiecy kont, chyba przydalyby sie lepsze zabezpieczenia... wymyslilem sobie zatem konstrukcje tego typu:


  1. md5(sha1(base64_encode($password)));


Smiga, dziala, rejestruje sie, loguje... roznica pomiedzy tym samym haslem zakodowanym w sha1+md5 a pomiedzy haslem dodatkowo zakodowanym tez w base64 istnieje, zatem to kodowanie rzeczywiscie mi dziala. Ale watpliwosci mam duze:

- czy potrojne kodowanie nie zuzywa przesadnie mocy obliczeniowej maszyny? hosting posiadam wykupiony, nie chcialbym, zeby admin dostal przeze mnie bialej goraczki gdy spojrzy na zuzycie procesorow (IMG:style_emoticons/default/smile.gif)

- czy jest w ogole sens kodowac potrojnie haslo?

Czy nie lepiej, abym uzyl jednego kodowania z moze samym base64? Czy to bedzie wystarczajace zabezpieczenie? Jaka jeszcze inna metode hashowania mozna polecic? Nie chce czegos przesadnie mocnego, ale cos jednak na miare dzisiejszych "standardow".
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

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


Z wielokrotnym hashowaniem jest tak, że stosowanie czegoś takiego:
  1. $hash = md5( md5( md5( md5( md5( md5( md5( md5( md5( md5( $pass . $salt ) ) ) ) ) ) ) ) ) );

jest w gruncie rzeczy bez sensu. Natomiast wielokrotne hashowanie, zakładając, że "wielokrotne" jest rzędu tysięcy, pomaga zabezpieczyć się przed atakami brute force na wykradziony hash.
MD5 jest bardzo szybkim algorytmem, więc nieskomplikowane hasło nowoczesny komputer jest w stanie złamać w czasie, gdy będę sobie parzył herbatę. Natomiast nieskomplikowane hasło hashowane 3000 razy wydłuży czas łamania 3000 razy, czyli łamanie może przestać być to opłacalne.
Minus jest taki, że ludzie którzy uważają, że stosowanie ' zamiast " przyspieszy ich skrypt PHP raczej niechętnie będą robili hash tysiące razy.
Plus natomiast, że można pozwolić użytkownikom na mniej skomplikowane hasła. To jest bardzo ważne, bo 99% społeczeństwa nie lubi zapamiętywać skomplikowanych haseł i gdy na stronce, na której co najwyżej można napisać komentarz i wstawić fotkę wymaga się od nich małych, dużych liter, cyfr, znaków i Bóg wie czego jeszcze, to podadzą takie hasło jak mają na allegro albo do banku (IMG:style_emoticons/default/smile.gif)

Z tego co pamiętam, to są nawet algorytmy hashujące specjalnie zaprojektowane, żeby były powolne, ale nie mogę sobie nazw przypomnieć.


Natomiast sól zabezpiecza przed rainbow tables. Ogólnie powinno się stosować losową, unikalną sól dla każdego hasła (nic przesadnie skomplikowanego, zwykły int wystarczy) i trzymać ją w bazie danych. Przez to dla każdej soli trzeba by wygenerować osobną tęczową tablicę, ważącą dziesiątki GB, co również przestaje być opłacalne.


Cytat
wielokrotne hashowanie zwiększa szansę wystąpienia kolizji, więc jaki tego sens ?

Z tego co się dowiedziałem, od mądrzejszych ode mnie ludzi, to po pierwsze przyjmuje się, że jeżeli ktoś ma dostęp do bazy danych strony XYZ, to już nie będzie się włamywał na konta jej użytkowników. Będzie natomiast próbował odzyskać oryginalne hasło i użyć je na innych stronach (banki, paypal, allegro, bukmacherzy, poker online, cokolwiek). Więc znalezienie kolizji w sumie niewiele daje - potrzebny jest oryginał, bo inne strony mogą używać innego algorytmu, czy innej soli.
Ponadto szansa wystąpienia kolizji się co prawda zwiększa, ale nie aż tak znacznie, żeby brać to pod uwagę.

Ten post edytował Noidea 13.09.2010, 18:05:57
Go to the top of the page
+Quote Post

Posty w temacie
- narvego   Jak dobrze hashowac hasla?   12.09.2010, 13:02:48
- - wookieb   Cytat(narvego @ 12.09.2010, 14:02:48 ...   12.09.2010, 13:12:50
- - narvego   Ok, udalo sie mi zrobic to tak - Dolaczylem funkc...   12.09.2010, 13:49:13
- - Pilsener   Wystarczy zwykłe md5 + sól, solenie haseł jest ist...   12.09.2010, 13:53:11
|- - uupah5   Cytat(Pilsener @ 12.09.2010, 14:53:11...   13.09.2010, 15:01:45
- - Quantum   sha1(str.salt) w zupełności wystarcza (umiejscowie...   13.09.2010, 15:11:35
- - everth   Akurat przeczytałem temat do którego odnosisz @Qua...   13.09.2010, 17:01:23
- - wookieb   Tylko, że RSA jest szyfrem dwukierunkowym (można d...   13.09.2010, 17:04:41
- - skowron-line   Najlepiej poczytaj o tych funkcjach jednokierunkow...   13.09.2010, 17:08:22
|- - piotr94   Cytat(skowron-line @ 13.09.2010, 18...   13.09.2010, 18:17:45
- - everth   @wookieb - to że chodzi o firmę RSA, to nie znaczy...   13.09.2010, 17:10:19
- - Quantum   Cytat(everth)W jednej z jego części dot. kodowania...   13.09.2010, 17:47:19
- - Noidea   Z wielokrotnym hashowaniem jest tak, że stosowanie...   13.09.2010, 17:58:59
- - yevaud   PBKDF2 przypomina raczej nakladanie funkcji miesza...   13.09.2010, 17:59:33
- - yevaud   tak na dobra sprawe zeby dobrze odpowiedziec na py...   13.09.2010, 18:37:00
- - everth   @yevaud - czyli jednak są rozbieżności. W PKCS zal...   13.09.2010, 18:38:58
|- - yevaud   Cytat(everth @ 13.09.2010, 19:38:58 )...   13.09.2010, 18:41:55
- - Zyx   Noidea -> co najwyżej serwer Ci spowolni, ale g...   13.09.2010, 19:17:51
- - everth   Ee tam, Zyx przesadzasz z tą kolizją - przecież pr...   13.09.2010, 20:07:45
- - flashdev   Cytat(narvego @ 12.09.2010, 14:02:48 ...   13.09.2010, 22:06:17
- - Novik102   A co myślicie o tym? [PHP] pobierz, plaintext fun...   14.09.2010, 04:18:09
- - nospor   Przypięty temat w tym dziale http://forum.php.pl/i...   14.09.2010, 06:16:30


Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 05:25