Wie wird die Passwortstärke für die Verwendung der password_hash-Funktion als ausreichend angesehen?

7

Soweit ich weiß, ist eines der wichtigsten Features der neuen PHP-Passwort-Hash-Erweiterung (oder bcrypt im Allgemeinen) ist die Geschwindigkeit des Algorithmus , was die Brute-Force-Angriffsmethode stark verlangsamt.

Aber es läuft immer noch mit einiger Geschwindigkeit, sicher genug für den Wörterbuchangriff und um Brute-Force-schwache Passwörter, [angeblich] kürzer als sechs alphanumerische Zeichen.

Ich möchte also wissen, wie langsam es ist und vor allem - welche Passwortstärke als sicher gilt. "So stark du dir vorstellen kannst" ist keine Antwort, da die Passwortstärke immer ein Kompromiss zwischen Sicherheit und Benutzerfreundlichkeit ist - also suche ich nach der minimalen Stärke, die als sicher und sogar als zukunftssicher angesehen werden kann.

Bitte beachten Sie, dass ich ein Mann der Praxis bin - also, eine bestimmte Antwort basierend auf konkreten Zahlen ist viel vorzuziehen als lange und windige theoretische Argumentation mit ungewissem Schluss.

Um ein bisschen mehr zu verdeutlichen, das schlimmste Szenario: Benutzerdatenbank gestohlen, und jemand würde versuchen, Passwörter zu entschlüsseln. Rainbow Tische sind dank starkem Salz keine Option. Die einzigen übriggebliebenen Vektoren sind Wörterbuchangriff und Brute-Force. Vorausgesetzt, wir stellen den Benutzern vorgenerierte Kennwörter zur Verfügung, wodurch Wörterbuchangriffe vermieden werden. Deshalb ist die Passwortstärke meine einzige Sorge.

Aktualisierung:
Es scheint, ich wurde nicht gut verstanden. Die Frage ist für mich ziemlich praktisch und ziemlich beantwortbar . Und von großer Wichtigkeit .

Ohne genügend Passwortstärke zu bestimmen, kann die Verwendung dieses neuen Algorithmus in Frage gestellt werden. Warum sollten Sie sich mit einem guten Algorithmus beschäftigen, wenn Passwörter noch unsicher sind? Daher bin ich fest davon überzeugt, dass es - zusammen mit der Empfehlung, einen neuen Hashalgorithmus zu verwenden - immer eine Empfehlung für die minimale Passwortstärke geben sollte. Was ich wissen will.

Mit anderen Worten, wenn eine bestimmte Gewissheit über einen Teilalgorithmus besteht ("benutze diesen, nicht anderen!") - sollte es offenbar Gewissheit über einen anderen Teil geben - Passwortstärke, die mit derselben Autoritätsebene gesprochen werden kann . Andernfalls wird der schwächste Teil den stärksten verderben.

    
Your Common Sense 06.02.2014, 16:37
quelle

3 Antworten

31

Ich bin mir nicht sicher, ob ich Ihre Frage klar verstehe, aber ich konzentriere mich nur auf die Passwortstärke und darauf, wie sie sich auf Brute-Force-Angriffe auswirkt.

  

Aber es läuft immer noch mit einiger Geschwindigkeit, sicher genug für den Wörterbuchangriff und um Brute-Force-schwache Passwörter, [angeblich] kürzer als sechs alphanumerische Zeichen.

Einführung

Vergessen Sie einen Moment den Hash-Algorithmus (md5, sha, pbkdf2, bcrypt, scrypt, usw.) und konzentrieren Sie sich auf Passwortstärke zuerst

Passwortstärke Wiki

Dies ist ein Maß für die Effektivität eines Passworts bei der Abwehr von Ratespielen und Brute-Force-Angriffen. In seiner üblichen Form schätzt er, wie viele Versuche ein Angreifer, der keinen direkten Zugriff auf das Passwort hat, im Durchschnitt richtig erraten müsste.

Es kann einfach wie folgt berechnet werden:

Die Entropie wird durch H=Llog2N angegeben, wobei L die Länge des Passworts und N die Größe des Alphabets angibt und normalerweise in Bits gemessen wird.

Hash-Funktion

password_hash verwendet standardmäßig [bcrypt][4] und ist ausreichend für ein Passwort, aber es gibt bessere Alternativen wie PBKDF2 oder scrypt für weitere Informationen zu dem, was ich meine, siehe So speichern Sie sicher ein Passwort

Wenn Sie oclHashcat verwenden, schätzen Sie Folgendes:

%Vor%

Bitte beachten Sie, dass es sich um eine Schätzung handelt, die je nach Hardwarekapazität variieren kann.

Mit diesen Informationen können wir sicher berechnen, wie lange es dauern würde, um ein anderes Passwort zu verwenden.

Berechne die Entropie in PHP

%Vor%

Ausgabe

%Vor%

Ausgabe mit csv2table konvertiert

CUDA / OpenCL-Implementierungen von Passwort-Crackern können die enorme Menge an Parallelität nutzen, die in GPUs verfügbar ist, und erreichen Milliarden von Passwörtern pro Sekunde .

Ermöglicht die Schätzung Mit können wir 921600M c/s parallel auf einem sehr schnellen System ausführen

%Vor%

Verwenden von

%Vor%

Ausgabe

%Vor%

Wie Sie sehen können, dauert es noch eine Weile, bis eine ordentliche 12-stellige Zahl gebrochen ist.

Funktion verwendet

%Vor%

Missverständnis

Sie haben Recht Passwort Länge ist wichtig, wie die Entropie des Passwortes. Die meisten Empfehlungen empfehlen Benutzern, bcrypt , die Passwortkomplexität usw. zu verwenden, ohne die Passwortstärke zu verstehen

Aber Tatsache ist, dass die einfachsten Passwörter oft die stärksten sein können.

Quelle | Related blog post

  

Ich möchte also wissen, wie langsam es ist und vor allem - welche Passwortstärke als sicher gilt.

Quelle

Definitiv nicht 6 letters :)

  • & lt; 28 Bits = sehr schwach; könnte Familienmitglieder heraushalten
  • 28 - 35 Bits = schwach; sollte die meisten Leute raushalten, oft gut für Desktop-Login-Passwörter
  • 36 - 59 Bits = angemessen; ziemlich sichere Passwörter für Netzwerk- und Firmenpasswörter
  • 60 - 127 Bits = stark; kann gut sein, um Finanzinformationen zu schützen
  • 128+ Bits = Sehr stark; oft übertrieben

Fazit

Hier sind ein paar gute Referenzen, auf die Sie vielleicht schauen sollten

Baba 10.02.2014 04:52
quelle
3

Es ist eine interessante Frage, obwohl es sehr unwahrscheinlich ist, dass jemand eine endgültige Antwort geben kann.

Wie Sie wissen, haben BCrypt (und andere Schlüsselableitungsfunktionen) einen Kostenfaktor. Normalerweise stimmen Sie diesen Kostenfaktor ab, bis Ihr Server eine bestimmte Zeit für das Hashing eines Passworts braucht, zum Beispiel 1 Millisekunde. Ein Angreifer mit der gleichen Hardware könnte daher 1'000 Hashes / s berechnen.

Wenn Sie die Geschwindigkeit von oclHashcat (GPU) mit seiner CPU-Version vergleichen, sehen Sie einen Faktor 100 für MD5, also wir kann erraten, dass ein Angreifer etwa 1'000'000 Hashes bruteforce (BCrypt ist nicht GPU freundlich, aber auf der sicheren Seite ...). Das kommt von den 8'000'000'000 MD5 Hashes und hängt vom Kostenfaktor ab.

Das zweite Problem ist die Stärke des Passworts. Wenn es Teil eines allgemeinen Wörterbuchs ist, kann es schnell gefunden werden, selbst wenn es lang ist, so dass eine minimale Länge keine Garantie für ein starkes Passwort ist. Wenn es "zufällig" genug ist, ist der einzige Weg, es zu knacken, Brute-Forcing (der beste Fall für uns). Für diesen Fall können wir etwas Mathe ausprobieren:

%Vor%

Natürlich basiert dies auf einer Menge Annahmen, vielleicht kann der Angreifer viel schneller Brute-Force, oder das Passwort ist nicht so stark. Ich selbst fordere mindestens 8 Zeichen, aber ich empfehle, eine Passphrase zu verwenden.

BEARBEITEN: Noch eine Anmerkung zur Passwortstärke:

Die Stärke eines Passwortes kann nicht realistisch berechnet werden, sicherlich nicht durch eine Formel. Jedes ernstzunehmende Passwort-Cracker-Tool unterstützt hybride Angriffe und regelbasierte Angriffe . Passwörter, die stark aussehen, können sehr schwach sein, wenn sie Teil eines Wörterbuchs sind oder von einer Regel bewältigt werden. Es hängt also von der Vorstellungskraft des Angreifers ab, wie schnell ein Passwort geknackt werden kann.

Das Einzige, was wir sagen können, ist, dass lange und zufällige Passwörter stark sind, weil es keinen leichteren Weg gibt, sie zu knacken als Brute-Forcing. Aber das hilft hier nicht, denn die Benutzer wählen ihre Passwörter, nicht die Entwickler, die eine Website erstellt haben, und sie wählen keine idealen Passwörter.

    
martinstoeckli 07.02.2014 15:38
quelle
0

Nach Ihrem letzten Kommentar möchten Sie ein Passwort-Schema erstellen, das für große Regierungen akzeptabel ist. Diese Information ist leicht verfügbar.

PaulProgrammer 06.02.2014 17:38
quelle