šifrování hesel

hlasů
27

Jaký je nejrychlejší, ale bezpečný způsob šifrování hesel v PHP (přednostní), a podle toho, co si zvolíte, je to přenosné?

Jinými slovy, když jsem později migrovat na mé webové stránky na jiný server bude moje hesla pokračovat v práci?

Způsob jsem nyní používat jak mi bylo řečeno, je závislá na přesných verzí knihoven nainstalovány na serveru.

Položena 03/08/2008 v 12:50
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
29

Pokud jste zvolili metodu šifrování pro vaše přihlašovací systém pak rychlost není váš přítel, Jeff měl na-and-frow s Thomasem Ptáček o heslech a závěr byl, že byste měli používat nejpomalejší, nejbezpečnější způsob šifrování můžete dovolit ,

Od Thomase Ptáček blogu:
Rychlost je přesně to, co nechcete, aby se v heslo hash funkce.

Moderní systémy hesla jsou napadeni s přírůstkové sušenky hesla.

Přírůstkové sušenky nemají precalculate všechny možné popraskané hesla. Považují každé heslo hash jednotlivě a krmí jejich slovníku pomocí hesla hash funkce stejným způsobem, vaše PHP přihlašovací stránka by. Duhová tabulka sušenky jako Ophcrack využít prostor k útoku hesel; přírůstkové sušenky jako John the Ripper, Crack a LC5 práce s časem: statistiky a výpočetně.

Heslo útok Hra je zaznamenáno v době potřebné k bezva heslo X. S duhových tabulek, že doba závisí na tom, jak velká je vaše tabulky musí být a jak rychle můžete ho hledat. S přírůstkové krekry, doba závisí na tom, jak rychle si můžete vytvořit funkci hesla hash běh.

Čím lépe si můžete optimalizovat své heslo hash funkce, tím rychleji se vaše heslo hash funkce dostane, tím slabší váš systém je. MD5 a SHA1, a to i konvenční blokové šifry, jako je DES, jsou navrženy tak, aby byl rychlý. MD5, SHA1 a DES jsou slabé heslo hashe. Na moderních procesorů, syrový kryptografických stavebních kamenů, jako je DES MD5 lze bitsliced, vektorizovány a paralelizovat aby vyhledá heslo rychlostí blesku. implementace hra-přes FPGA stát pouze stovky dolarů.

Odpovězeno 03/08/2008 v 13:48
zdroj uživatelem

hlasů
14

Jsem s Peterem. Developer nezdá se pochopit hesla. Všichni jsme si vybrat (a já jsem vinu za tento stav příliš) MD5 nebo SHA1, protože jsou rychlé. Přemýšlíte o tom ( 'Cuz někdo nedávno poukázal na to, aby mě), který nedává žádný smysl. Měli bychom být vybírání hashovací algoritmus, který je hloupý pomalé. Myslím, že na stupnici od věcí, bude obsazeno místo hash hesla, co? Každý 1/2 minuty? Koho zajímá, jestli trvá 0,8 sekundy vs 0,03 sekundy serveru moudré? Ale že navíc pomalost je obrovská, aby se zabránilo všechny druhy běžných hrubou-forcish útoky.

Z mého čtení, bcrypt je speciálně navržen pro bezpečné heslo hash. Je založen na Blowfish, a existuje mnoho realizace.

Pro PHP, podívejte se PHPPass http://www.openwall.com/phpass/

Pro každého, kdo dělá .NET vyzkoušet BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

Odpovězeno 03/08/2008 v 14:48
zdroj uživatelem

hlasů
8

Mělo by být zdůrazněno, že nechcete, aby šifrovat hesla, chcete hash ji.

Zašifrovaná hesla lze dešifrovat, nechat někoho vidět heslo. Zatřiďování je jednosměrný provoz, takže původní heslo uživatele je (kryptograficky) pryč.


Pokud jde o jaký algoritmus byste měli zvolit - použijte v současné době uznávaný standard one:

  • SHA-256

A když hash heslo uživatele, ujistěte se, že i hash v nějaké jiné smetí s ním. např:

  • Heslo: password1
  • sůl: PasswordSaltDesignedForThisQuestion

Připojit sůl do uživatelského hesla:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Odpovězeno 17/09/2008 v 19:06
zdroj uživatelem

hlasů
7

Ať se stane cokoliv, nemají psát svůj vlastní šifrovací algoritmus. Tím se téměř zárukou (pokud jste cryptographer), že tam bude chyba v algoritmu, který bude dělat to triviální k prasknutí.

Odpovězeno 17/09/2008 v 19:16
zdroj uživatelem

hlasů
2

Zvažte použití bcryptse používá v mnoha moderních rámců jako laravel.

Odpovězeno 16/07/2016 v 07:47
zdroj uživatelem

hlasů
2

Nejsem nutně hledá nejrychlejší, ale pěknou bilanci, některé serveru, který tento kód je vyvíjen pro jsou poměrně pomalé, skript, který hash a ukládá hesla užívá 5-6 vteřin ke spuštění, a jsem zúžil na hash (kdybych komentovat hash ven běží v 1-2 sekundy).

Nemusí to být nejbezpečnější, nejsem codding pro banku (právě teď), ale rozhodně jsem NEBUDE uložení hesla jako prostého textu.

Odpovězeno 05/08/2008 v 00:07
zdroj uživatelem

hlasů
0

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

password_hash () vytvoří nové heslo hash pomocí silné jednosměrné hashovací algoritmus. password_hash () je kompatibilní s kryptou (). Proto heslo hash vytvořil crypt () lze použít s password_hash ().

Odpovězeno 18/05/2018 v 18:27
zdroj uživatelem

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