kryptering av passord

stemmer
28

Hva er den raskeste, men likevel sikker måte å kryptere passord i (PHP foretrukket), og for hvilken metode du velger er det bærbar?

Med andre ord hvis jeg senere migrere nettstedet mitt til en annen server vil mitt passord fortsette å jobbe?

Metoden jeg bruker nå som jeg ble fortalt er avhengig av den eksakte versjoner av bibliotekene installert på serveren.

Publisert på 03/08/2008 klokken 11:50
kilden bruker
På andre språk...                            


7 svar

stemmer
30

Hvis du velger en krypteringsmetode for login system så hastigheten er ikke din venn, Jeff hadde en to-og-frow med Thomas Ptacek om passord og konklusjonen var at du bør bruke den tregeste, sikreste krypteringsmetode du har råd til .

Fra Thomas Ptacek blogg:
Speed er akkurat hva du ikke vil ha i et passord hash-funksjon.

Moderne passord ordninger blir angrepet med inkrementelle passord crackere.

Inkrementelle kjeks ikke forhåndsberegne alle mulige sprekker passord. De anser alle passord hash individuelt, og de mate sine ordboken gjennom passord hash-funksjon på samme måte PHP påloggingssiden ville. Rainbow bord kjeks som Ophcrack bruke plass til å angripe passord; inkrementelle crackere som John the Ripper, Crack, og LC5 arbeid med tiden: statistikk og beregne.

Passordet angrep spillet er scoret i tiden det tar å knekke passordet X. Med regnbuen, avhenger da av hvor stor bordet ditt må være og hvor fort du kan søke den. Med inkrementell kjeks, avhenger tiden på hvor fort du kan gjøre passord hash-funksjon løp.

Jo bedre du kan optimalisere passord hash-funksjon, jo raskere passord hash-funksjon blir, er svakere ordningen. MD5 og SHA1, selv vanlige blokkchiffer som DES, er designet for å være rask. MD5, SHA1, og DES er svake passord hashes. På moderne prosessorer, kan rå krypto byggesteiner som DES og MD5 bli bitsliced, vektorisert, og parallelized å lage passord søk lynraske. Game-enn FPGA implementasjoner koster bare hundrevis av dollar.

Svarte 03/08/2008 kl. 12:48
kilden bruker

stemmer
15

Jeg er sammen med Peter. Utvikler ikke synes å forstå passord. Vi plukker (og jeg er skyldig i dette også) MD5 eller SHA1 fordi de er raske. Tenker på det ( 'cuz noen nylig pekte den ut for meg) som ikke gir noen mening. Vi skal plukke en nummeralgoritme som er dumt treg. Jeg mener, på omfanget av ting, vil et travelt område hasj passord HVA? hvert 1/2 minutt? Hvem bryr seg om det tar 0,8 sekunder vs 0,03 sekunder serveren lurt? Men den ekstra treghet er stort for å hindre alle typer vanlige brute-forcish angrep.

Fra min lesing, er bcrypt spesielt utviklet for sikkert passord hashing. Det er basert på månefisk, og det er mange gjennomføring.

For PHP, sjekk ut PHPPass http://www.openwall.com/phpass/

For noen gjør .NET, sjekk ut BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

Svarte 03/08/2008 kl. 13:48
kilden bruker

stemmer
8

Det bør påpekes at du ikke ønsker å kryptere passordet, vil du hasj det.

Krypterte passord kan dekrypteres, la noen se passordet. Hashing er en enveis drift slik brukerens opprinnelige passordet er (kryptografisk) borte.


Som for hvilken algoritme bør du velge - bruk tiden akseptert standard en:

  • SHA-256

Og når du hasj brukerens passord, må du også hasj på annen junk med det. f.eks:

  • passord: password1
  • salt: PasswordSaltDesignedForThisQuestion

Tilføy salt til brukerens passord:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Svarte 17/09/2008 kl. 18:06
kilden bruker

stemmer
7

Uansett hva du gjør, ikke skriv din egen krypteringsalgoritme. Å gjøre dette vil nesten garantere (med mindre du er en kodeknekkeren) at det vil være en feil i algoritmen som vil gjøre det trivielt å knekke.

Svarte 17/09/2008 kl. 18:16
kilden bruker

stemmer
2

Vurdere å bruke bcryptden brukes i mange moderne rammeverk som laravel.

Svarte 16/07/2016 kl. 07:47
kilden bruker

stemmer
2

Jeg er ikke nødvendigvis ute etter den raskeste, men en fin balanse, noen av serveren som denne koden er utviklet for er ganske treg, skript som hashes og lagrer passordet tar 5-6 sekunder å kjøre, og jeg har snevret det ned til hashing (hvis jeg kommentere hashing ut den går i 1-2 sekunder).

Det trenger ikke å være det sikreste, jeg er ikke codding for en bank (akkurat nå), men jeg absolutt vil ikke lagre passord som ren tekst.

Svarte 04/08/2008 kl. 23:07
kilden bruker

stemmer
0

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

password_hash () oppretter et nytt passord hash ved hjelp av en sterk enveis nummeralgoritme. password_hash () er kompatibelt med krypten (). Derfor passord-hasher opprettet av krypten () kan brukes med password_hash ().

Svarte 18/05/2018 kl. 18:27
kilden bruker

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