szyfrowanie haseł

głosy
27

Jaki jest najszybszy, jeszcze bezpieczny sposób do szyfrowania haseł w PHP (korzystny), i dla których kiedykolwiek wybranej metody jest to przenośne?

Innymi słowy, jeśli później przenieść moją stronę na inny serwer będzie moje hasła nadal działa?

Sposób używam teraz jako powiedziano mi zależy na dokładnych wersji bibliotek zainstalowanych na serwerze.

Utwórz 03/08/2008 o 12:50
źródło użytkownik
W innych językach...                            


7 odpowiedzi

głosy
29

Jeśli wybiera metodę szyfrowania dla systemu logowania następnie prędkość nie jest twoim przyjacielem, Jeff miał to-i-frow z Thomas Ptáček temat haseł i wniosek , że należy użyć najwolniejszy, najbardziej bezpieczną metodę szyfrowania można sobie pozwolić ,

Thomas Ptáček blogu:
Prędkość jest dokładnie to, czego nie chcesz w funkcji hash hasła.

Nowoczesne systemy hasło są atakowane z przyrostowych krakersy haseł.

Przyrostowe krakersy nie precalculate wszystkie możliwe popękane haseł. Uważają każdy hash hasła indywidualnie i karmią ich słownika poprzez funkcję hash hasła ten sam sposób, w jaki strona logowania PHP będzie. Rainbow krakersy stole jak Ophcrack wykorzystywać przestrzeń do ataku haseł; przyrostowe krakersy jak John the Ripper, crack i pracy LC5 z czasem: statystyki i obliczyć.

Hasło atak gra trafia w czas potrzebny do złamania hasła X. Z tęczowe tablice, że czas zależy od tego, jak duży jest twój stół musi być i jak szybko można go szukać. Z pierwotnych, krakersy, czas zależy od tego jak szybko można dokonać przebieg funkcji hash hasła.

Tym lepiej można zoptymalizować funkcję hash hasła, tym szybciej funkcja hash hasła dostaje, tym słabszy jest Twój schemat. MD5 i SHA1, nawet konwencjonalne szyfry blokowe, takie jak DES, mają być szybkie. MD5, SHA1, a DES są słabymi hashe haseł. Na nowoczesnych procesorach, surowe krypto cegiełki jak DES i MD5 można bitsliced, wektorowy i parallelized aby wyszukuje hasło błyskawicznie. Gra-over implementacje FPGA kosztuje tylko kilkaset dolarów.

Odpowiedział 03/08/2008 o 13:48
źródło użytkownik

głosy
14

Jestem z Piotrem. Twórca nie wydają się zrozumieć haseł. Wszyscy odebrać (i jestem winny tego zbyt) MD5 lub SHA1, ponieważ są one szybko. Myśląc o nim ( "bo ktoś niedawno wskazał mi ją), że nie ma żadnego sensu. Powinniśmy zbieranie algorytmu mieszającego, że jest głupie powolny. To znaczy, na skali od rzeczy, zajęty strona będzie hash hasła Co? każde pół minuty? Kogo to obchodzi, jeśli to zajmie 0,8 sekundy vs 0,03 sekundy serwerze mądry? Ale to dodatkowy powolność jest ogromny, aby zapobiec wszelkiego rodzaju wspólnych ataków brute-forcish.

Z mojego czytania, bcrypt został specjalnie zaprojektowany do bezpiecznego hasła mieszaja. Jest on oparty na Blowfish, i istnieje wiele realizacji.

PHP, sprawdź PHPPass http://www.openwall.com/phpass/

Dla każdego, kto robi .NET, sprawdź BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

Odpowiedział 03/08/2008 o 14:48
źródło użytkownik

głosy
8

Należy podkreślić, że nie chcesz, aby zaszyfrować hasło chcesz hash go.

Zaszyfrowane hasło można odszyfrować, pozwalając ktoś zobaczyć hasło. Operacja mieszania jest jednokierunkowa tak oryginalne hasło użytkownika jest (kryptograficznym) zniknął.


Jak dla których algorytm należy wybrać - użyj obecnie przyjętym standardem jeden:

  • SHA-256

A kiedy hash hasła użytkownika, należy również hash w niektórych innych śmieci z nim. na przykład:

  • hasło: password1
  • Sól: PasswordSaltDesignedForThisQuestion

Dołącz sól do hasła użytkownika:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Odpowiedział 17/09/2008 o 19:06
źródło użytkownik

głosy
7

Cokolwiek robisz, nie napisać własny algorytm szyfrowania. Spowoduje to niemal gwarancja (o ile jesteś kryptolog), że nie będzie to błąd w algorytmie, że będzie to trywialne do zgryzienia.

Odpowiedział 17/09/2008 o 19:16
źródło użytkownik

głosy
2

Rozważyć użycie bcryptjest ona wykorzystywana w wielu nowoczesnych ram jak laravel.

Odpowiedział 16/07/2016 o 07:47
źródło użytkownik

głosy
2

Ja nie koniecznie szuka najszybszy ale ładnym równowagi, niektóre z serwera, że ​​kod ten jest realizowany za to dość powolny, skrypt, który mieszań i przechowuje hasła bierze 5-6 sekund do uruchomienia, a ja zmniejszyła go do mieszaja (gdybym skomentować hashowania się uruchamia, w 1-2 sekundy).

To nie musi być najbardziej bezpieczne, nie jestem codding dla banku (teraz), ale na pewno NIE przechowywać haseł jak zwykły tekst.

Odpowiedział 05/08/2008 o 00:07
źródło użytkownik

głosy
0

password_hash ( string $password , int $algo [, array $options ] ), (PHP 5> = 5.5.0 PHP 7)

password_hash () tworzy nowy hash hasła przy użyciu silnego algorytmu mieszającego jednokierunkową. password_hash () jest zgodny z krypty (). Dlatego hashe haseł tworzone przez crypt () może być używany z password_hash ().

Odpowiedział 18/05/2018 o 18:27
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more