Verschlüsseln Passwörter

stimmen
27

Was ist die schnellste, aber sichere Art und Weise Passwörter in (PHP bevorzugt) zu verschlüsseln, und für die Methode Sie wählen, ist es tragbar?

Mit anderen Worten, wenn ich wandern später meine Website auf einen anderen Server wird meine Passwörter weiter zu arbeiten?

Die Methode, die ich jetzt bin mit, wie mir gesagt wurde, ist abhängig von den genauen Versionen der Bibliotheken auf dem Server installiert.

Veröffentlicht am 03/08/2008 um 12:50
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
29

Wenn Sie eine Verschlüsselungsmethode für Ihre Login - System wählen , dann wird die Geschwindigkeit nicht dein Freund, hatte Jeff eine Hin-und-frow mit Thomas Ptacek über Passwörter und die Schlussfolgerung war , dass Sie die langsamste, sicherste Verschlüsselungsmethode verwenden , sollten Sie es sich leisten können .

Von Thomas Ptacek Blog: Die
Geschwindigkeit ist genau das, was Sie wollen nicht in einer Passwort - Hash - Funktion.

Moderne Passwort Schemata sind mit inkrementalen Passwort-Cracker angegriffen.

Inkrementelle Cracker vorauszuberechnen alle möglichen geknackt Passwörter nicht. Sie halten jedes Passwort-Hash einzeln, und sie füttern ihre Wörterbuch durch die Passwort-Hash-Funktion die gleiche Art und Weise Ihrer PHP-Login-Seite würde. Rainbow-Table-Cracker wie Ophcrack verwenden Raum Passwörter zu attackieren; inkrementelle Cracker wie John the Ripper, Riss und LC5 Arbeit mit der Zeit: Statistiken und berechnet.

Das Passwort Angriff Spiel wird in der Zeit erzielt genommen Passwort X. Mit Rainbow-Tabellen zu knacken, hängt die Zeit auf, wie groß Ihr Tisch sein muss und wie schnell Sie es suchen. Bei der inkrementellen Cracker, hängt die Zeit ab, wie schnell können Sie das Passwort-Hash-Funktion zum Laufen zu bringen.

Je besser Sie Ihr Passwort-Hash-Funktion optimieren, desto schneller wird Ihr Passwort-Hash-Funktion wird, desto schwächer Ihr Schema ist. MD5 und SHA1, auch herkömmliche Blockchiffren wie DES, sind so konzipiert, um schnell zu sein. MD5, SHA1, und DIE sind schwaches Passwort-Hashes. Auf modernen CPUs können roh Krypto Bausteine ​​wie DES und MD5 schnell bitsliced, vektorisiert und parallelisiert Passwort Suche Blitz machen werden. Spiel-over FPGA-Implementierungen kosten nur Hunderte von Dollar.

Beantwortet am 03/08/2008 um 13:48
quelle vom benutzer

stimmen
14

Ich bin mit Peter. Entwickler scheinen nicht Passwörter zu verstehen. Wir alle holen (und ich bin schuldig dieser auch) MD5 oder SHA1, weil sie schnell sind. Darüber nachzudenken ( "Cuz jemand darauf es vor kurzem zu mir), die keinen Sinn macht. Wir sollten einen Hashing-Algorithmus werden Kommissionierung, die langsam dumm ist. Ich meine, auf der Skala der Dinge, ein geschäftiger Ort wird Passwörter Hash was? alle 1/2 Minute? Wer sich interessiert, wenn es klug 0,8 Sekunden vs 0,03 Sekunden Server nehmen? Aber die zusätzliche Langsamkeit ist riesig, alle Arten von gemeinsamen Brute-forcish Angriffen zu verhindern.

Aus meiner Lesung wird bcrypt für sicheres Passwort-Hashing entwickelt. Es basiert auf blowfish, und es gibt viele Umsetzung.

Für PHP Besuche PHPPass http://www.openwall.com/phpass/

Für alle , .NET tun Besuche BCrypt.NET http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx

Beantwortet am 03/08/2008 um 14:48
quelle vom benutzer

stimmen
8

Es sollte darauf hingewiesen werden , dass Sie nicht wollen , verschlüsseln das Passwort, wollen Sie Hash es.

Verschlüsselte Passwörter entschlüsselt werden können, weil jemand das Passwort sehen. Hashing ist ein Ein-Wege-Betrieb so der Original-Passwort des Benutzers (verschlüsselt) gegangen.


Wie bei dem Algorithmus Sie wählen sollten - verwenden die derzeit Standard ein akzeptiert:

  • SHA-256

Und wenn Sie das Kennwort des Benutzers Hash, sollten Sie auch eine andere Junk mit ihm Hash in. z.B:

  • Passwort: password1
  • Salz: PasswordSaltDesignedForThisQuestion

Fügen Sie das Salz das Kennwort des Benutzers:

String s = HashStringSHA256("password1PasswordSaltDesignedForThisQuestion");
Beantwortet am 17/09/2008 um 19:06
quelle vom benutzer

stimmen
7

Was immer Sie tun, nicht Ihren eigenen Verschlüsselungsalgorithmus schreiben. Dadurch fast garantieren, wird (es sei denn, Sie Kryptograph sind), dass es einen Fehler im Algorithmus sein, dass es trivial zu knacken machen.

Beantwortet am 17/09/2008 um 19:16
quelle vom benutzer

stimmen
2

Betrachten wir verwenden bcryptes in vielen modernen Frameworks wie Laravel verwendet wird.

Beantwortet am 16/07/2016 um 07:47
quelle vom benutzer

stimmen
2

Ich bin nicht unbedingt für die schnellste suchen, aber eine gute Balance, etwas von dem Server, der dieser Code für entwickelt wird sind ziemlich langsam, das Skript, das Hashes und speichert das Passwort 5-6 Sekunden laufen dauert, und ich habe verengt es dem Hashing nach unten (wenn ich das Hashing kommentieren sie es läuft, in 1-2 Sekunden).

Es muss nicht die sichersten sein, ich für eine Bank nicht codding bin (jetzt) , aber ich sicherlich NICHT speichert die Passwörter als Klartext.

Beantwortet am 05/08/2008 um 00:07
quelle vom benutzer

stimmen
0

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

password_hash () erzeugt einen neuen Passwort-Hash einen starken Einweg-Hash-Algorithmus. password_hash () ist kompatibel mit Krypta (). Daher Passwort-Hashes von crypt () erstellt mit password_hash () verwendet werden.

Beantwortet am 18/05/2018 um 18:27
quelle vom benutzer

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