it-swarm.com.de

Ist es ein Fehler, ein Passwort zu verwenden, das zuvor (von irgendjemandem jemals) verwendet wurde?

Vor ein paar Monaten beantwortete kutschkem eine Frage zu HIBP damit :

Nehmen wir an, jeder Mensch auf der Erde hat bisher ~ 1000 Passwörter verwendet. Das sind ungefähr 10 Billionen Passwörter, was ~ 2 entspricht43 Wenn ich nicht falsch liege. Die zufällige Auswahl eines vorhandenen Passworts ist daher ungefähr so ​​gut wie ein wirklich zufälliges Passwort mit 8-9 Zeichen, bei dem zwischen Groß- und Kleinschreibung unterschieden wird. Nicht sehr gut. Siehe diese Antwort .

Das bedeutet im Grunde, dass man theoretisch nicht nur ein Passwort nicht wiederverwenden sollte, man sollte auch kein Passwort wiederverwenden, das jemals von jemandem verwendet wurde. Passwörter, die zuvor verwendet wurden, sind im Grunde genommen ein großer Wörterbuchangriff, der darauf wartet, ausgeführt zu werden.

Ich wurde erneut an die Diskussion zwischen Mike Ounsworth und Conor Mancone in den Kommentaren erinnert zu dieser Antwort über die schwarze Liste der Top [~ # ~] n [~ # ~] Passwörter im Vergleich zur gesamten HIBP-Datenbank.

Ist kutschkems Mathematik richtig? Macht dies die Schlussfolgerung richtig?

Die Mathematik kann richtig sein. Man könnte es so weit verfeinern und komplizieren, wie man möchte, aber es trägt nicht wirklich zum Punkt bei. Also lasse ich es sein.

In der Praxis ist es außerdem einfacher und möglicherweise schneller, nach zufälligen Kennwörtern mit fester Länge zu suchen, als eindeutige Kennwörter aus einer Liste zu überprüfen. Eine Passwortliste mit 243 Passwörter mit einer durchschnittlichen Passwortlänge von 8 Zeichen wären ungefähr 64 TB in der Größe, wenn meine Berechnung korrekt ist. Dies müsste irgendwo in unmittelbarer Nähe des Prozessors gespeichert werden, um mit dem gelesen zu werden gleiche Geschwindigkeit wie der Prozessor berechnet die Hashes.

Die Schlussfolgerung lautet jedoch nicht richtig. Die Frage ist nicht, ob jemals ein Passwort verwendet wurde, sondern ob das Passwort jemals in einem Verstoß enthalten.

Wenn die verletzten Passwörter danach öffentlich bekannt gegeben wurden, sind sie jetzt im Internet verfügbar. Die Passwörter sind jetzt nicht nur alle verwendeten Passwörter, sondern eine sehr kleine Teilmenge davon. Und um die Sache noch schlimmer zu machen, wird diese Untergruppe von vielen Menschen auf der ganzen Welt in Wortlisten verwendet, um zu überprüfen, ob sie wiederverwendet wurden. Die Wahrscheinlichkeit, dass jemand einen Hash anhand dieses Kennworts überprüft, ist also viel höher als die Wahrscheinlichkeit, dass er einen Hash anhand eines unbekannten Kennworts überprüft, selbst wenn er irgendwo verwendet wurde.

Daher würde ich kein Kennwort verwenden, das in der HIBP-Datenbank enthalten ist, nur weil diese Kennwörter eine höhere Wahrscheinlichkeit haben, in Wortlisten aufgenommen zu werden.

32
Martin Weil

Mike Ounsworth hier (Autor des Threads, auf den Sie verweisen)

Dies ist eine großartige Ausrede, um ein bisschen hinter dem Umschlag zu rechnen! Der Faktor, über den Sie hier nachdenken sollten, ist, dass Sie Zahlen wie 2 erreichen43müssen Sie die Anzahl der Festplatten, CPUs und des Stroms berücksichtigen, die zum Speichern und Verwenden dieser Daten erforderlich sind.

Um die Mathematik zu vereinfachen, sagen wir jede dieser 243 Das Passwort wird als SHA-1-Hash gespeichert (wie dies bei der HIBP-Datenbank der Fall ist) . Jeder SHA-1-Wert beträgt 160 Bit oder 20 Byte. 243 * 20 Bytes = 176 Terabyte. Größer als mein Laptop, aber Trottelwechsel für einen Cloud-Service.

Stellen Sie sich vor, Sie haben eine Datenbank mit allen 243 Klartext-Passwörter. Sie erhalten den Hash des Kennworts eines Administrators und möchten es brutal gegen Ihre Datenbank erzwingen. Nehmen wir den einfachsten und unsichersten Fall. Es ist ein ungesalzener SHA-256-Hash. Dies ist das Problem, dass Bitcoin-Mining-Rigs für Babys gebaut wurden! Nehmen wir diesen Bitcoin-Miner als groben Benchmark: 3.000 USD, 50TH/s (Tera-Hash pro Sekunde) und verbraucht 1975 W.

Nach meiner voreiligen Rechnung würde eine dieser Einheiten 2^43 / (50,000,000,000,000 / s) = 0.2s benötigen, um alle Passwörter zu testen, vorausgesetzt, eine Datenbank kann so schnell Daten mit 176 TB) Daten zuführen.

In Wirklichkeit werden Passwörter (nun, sollte) mit gesalzenem PBKDF2 oder Argon2 gespeichert. Dies verändert das Spiel erheblich, da diese Hash-Funktionen diese Art von Angriff verhindern sollen. Diese Hash-Funktionen können zum Zeitpunkt des Speicherns des Kennworts als Hash so langsam eingestellt werden, wie Sie möchten. Angenommen, Sie stellen es auf ~ 0,1 s pro Hash ein. Jetzt sehen Sie plötzlich Zahlen wie "Tausende von Jahrhunderten" und "Stromverbrauch des Planeten".


TL; DR: Das ist eine großartige Frage!

Die Antwort lautet: Wenn Sie ein Kennwort auswählen, an das Sie sich erinnern können und das möglicherweise mit einer anderen Person im Internet kollidiert, ist die Auswahl des Kennworts weniger wichtig als die Website, auf der Sie es speichern, um es sicher zu speichern.

IMHO, wenn Sie ein Passwort wählen, versuchen Sie nicht zu verhindern, dass ein ausreichend engagierter Angreifer es jemals knackt. Stattdessen versuchen Sie es so schwer zu machen, dass sie einem weicheren Ziel nachjagen. "Ich muss keinem Bären entkommen, ich muss nur meinem Freund entkommen" .

Wenn Sie natürlich einen Passwort-Manager mit einem völlig zufälligen 32-Zeichen-Passwort verwenden, gelangen Sie in den Bereich der kryptografischen Stärke von "Alter des Universums" und "Leistung eines großen Sterns". Also mach das!

23
Mike Ounsworth

Ich sehe einige logische Fehler bei dieser Aussage - zuallererst wie würden Sie es jemals erfahren?
Wenn Joe Schmoe in den Jahren 2007 bis 2009 ein bestimmtes Kennwort für seinen Windows-PC verwendet hätte und es nie gehackt worden wäre und der Computer verwüstet und verbrannt worden wäre, gäbe es nirgendwo Aufzeichnungen darüber.
Wenn ein Passwort nicht gehackt oder auf andere Weise veröffentlicht wurde, können Sie es nicht wissen und können es daher nicht vermeiden, es wiederzuverwenden.

Abgesehen davon sind von den geschätzten 2 ^ 43 Passwörtern, die jemals verwendet wurden, wahrscheinlich 2 ^ 42,9 Duplikate, und die Liste passt auf eine Festplatte.

11
Aganju

Ein alphanumerisches Kennwort in gemischter Groß- und Kleinschreibung für Längen zwischen 1 und 9 (einschließlich) hat einen Schlüsselraum von 13.759.005.997.841.642, was zwischen 2 liegt53 und 254.

Die Mathematik ist eine anständige Vermutung, aber keine vernünftige Vermutung auf der Rückseite der Serviette.

Nur weil die Mathematik falsch ist, bedeutet dies nicht, dass die Schlussfolgerung ungültig ist.

Menschen sind schlecht in Passwörtern. Wir merken sie uns, verwenden sie wieder und generieren sie aus leicht zu merkenden Wörtern.

Eine naive, brutale Kraft von Passwörtern wird also viele Möglichkeiten erzeugen, die Menschen nie auswendig gelernt, nie wiederverwendet und Wörtern in einer menschlichen Sprache nicht ähnlich sind.

Die Verwendung eines Wörterbuchs mit zuvor durchgesickerten Kennwörtern ist wahrscheinlich der schnellste Weg, um Kennwörter zu erraten, da Sie wissen, dass jemand dieses Kennwort bereits einmal verwendet hat. Da Menschen Menschen sind, ist es wahrscheinlicher, dass dieses Passwort erneut verwendet wird, als dass ein zufälliger Wert mit einem Passwort übereinstimmt.

Aus diesem Grund ist meine feste Meinung, dass es ein Fehler ist, ein Passwort zu verwenden, das nicht zufällig generiert ist, aber ich stimme dem Gefühl zu, dass es ein Fehler ist Verwenden Sie ein Kennwort, das zuvor verwendet wurde, unabhängig davon, wie es generiert wurde.

4
Ghedipunk

Ist kutschkems Mathematik richtig?

Was kutschkem zu sagen scheint, ist:

  1. Wenn ungefähr 7⋅109 Leute wählten jeweils 1000 Passwörter, es wären ungefähr 243 verwendete Passwörter.

    Dies scheint eine vernünftige Annäherung zu sein: log2(1000 · 7 · 109) 42,7; runden Sie es auf 43 auf. (Ich bewerte nicht die empirische Frage, wie viele Passwörter die Leute gewählt haben - nur um die Multiplikation zu überprüfen!)

  2. Es gibt ungefähr 243 8-stellige Passwörter.

    Dies ist eine etwas niedrige Schätzung: Wenn wir nur alphabetische US-ASCII-Passwörter mit Groß- und Kleinschreibung („wirklich zufälliges 8-9-Zeichen-Kennwort für Groß- und Kleinschreibung“) zählen, gibt es 2⋅26 mögliche Zeichen und ein Protokoll2[(2⋅26)9] ≈ 45,6; runden Sie es auf 43 ab.

Aber wenn jeder 8-stellige alphabetische Passwörter einheitlich zufällig so wählt, ist es im Wesentlichen garantiert , dass sie irgendwann kollidieren würden!

Angenommen, wir wählen Passwörter gleichmäßig zufällig aus einem Raum von k Möglichkeiten. Wenn es n Passwörter auf der Welt gibt, beträgt die Wahrscheinlichkeit einer Kollision durch das Geburtstagsparadoxon höchstens n 2/ k . Wenn k und n gleich sind, bedeutet diese Grenze nicht alles, aber die Wahrscheinlichkeit ist extrem nahe an 1.

Angenommen, alle haben unsere 1000 Passwörter unabhängig voneinander und einheitlich zufällig aus 2 ausgewählt128 Möglichkeiten - beispielsweise 10-Wort-Diceware-Phrasen mit einer 7776-Wort-Liste oder grafische US-ASCII-Zeichenfolgen mit 20 Zeichen. Dann ist n = 243 und k = 2128Die Wahrscheinlichkeit einer Kollision zwischen zwei der von den sieben Milliarden Menschen gewählten Passwörter beträgt also höchstens n 2/ k = (243)2/ 2128= 286-128= 1/242- weniger als einer von einer Billion.

Ich empfehle , wenn Sie Passwortsicherheit wünschen , dass ein Computer ein Passwort für Sie gleichmäßig zufällig aus über 2 auswählt128 Möglichkeiten. (Bei Diensten, die ungesalzene Kennwort-Hashes verwenden, verdoppeln Sie möglicherweise die Länge, um Angriffe mit mehreren Zielen abzuschwächen.)

Macht dies die Schlussfolgerung richtig?

Die Schlussfolgerung - , dass man ein Passwort, das jemals von jemandem verwendet wurde, nicht wiederverwenden sollte - scheint davon auszugehen, dass mein Ziel als Benutzer darin besteht, dies zu verhindern Jeder, der das Passwort errät. Vielleicht ist es mir als Benutzer egal, ob jemand mein Passwort erraten kann, und es ist wichtiger, dass ich mich nur daran erinnern kann. Man könnte die ganze Zeit Wegwerfkonten erstellen - siehe , z. B. , BugMeNot -, um die werbebasierte Massenüberwachung zu untergraben, auf die man sich stützt Verfolgen von Benutzern durch Anmelden für höherwertige Werbung.

1

Ich denke, es würde davon abhängen, wie Passwörter auf dem Zielsystem behandelt werden.

Für ein System, das Best Practice Salting und Hashing verwendet, sind Kennwortlisten nur bei Brute-Force-Angriffen hilfreich. Ein Angreifer müsste für jedes Konto eine Hash-Suche unter Verwendung seines spezifischen Salt erstellen. Dies ist praktisch ein Brute-Force-Angriff auf die Kennwortdatei (oder -tabelle). Mit kryptografisch sicherem Hashing ist es auf einem großen Passwortbereich nicht möglich (das Hashing jedes Passworts dauert nicht trivial). Ein Angreifer kann bekannte Passwörter vor allen anderen Möglichkeiten priorisieren, aber das ist immer noch ein großer Raum.

Für ein System, das weniger als bewährte Methoden verwendet, hängt es von den spezifischen Sicherheitslücken ab, wie eine Liste bekannter verwendeter Kennwörter einen Angriff beschleunigen kann.

Da Sie nicht sicher sein können, welche Maßnahmen auf einem bestimmten System vorhanden sind, ist es möglicherweise ratsam, wahrscheinlich bekannte Kennwörter zu vermeiden, aber Sie geben einem Hacker nicht unbedingt eine offene Tür, indem Sie ein obskures Kennwort verwenden, das zufällig verwendet wurde irgendwann von jemand anderem.

0
Zenilogix

Ich denke, dass keine andere Mathematik als die Mengenlehre benötigt wird. Der Zweck eines Passworts besteht darin, als Authentifizierungsmethode zu fungieren. Sie sind der, von dem Sie sagen, dass Sie es sind, weil Sie das Geheimnis kennen. Dieses "Geheimnis" sollte idealerweise zufällig sein, um Brute-Force-Angriffe zu verhindern. Das heißt, Angriffe auf die Plattform, für die die Anmeldeinformationen bestimmt sind. Brute Forcing ist ein letzter Ausweg, da es nicht effizient ist. Sie versuchen buchstäblich blind jede mögliche Permutation für dieses "Geheimnis". Hier haben Sie drei Sätze:

  1. Die Menge aller möglichen Permutationen.
  2. Die Teilmenge von # 1, die Menge aller möglichen Permutationen, die von jedem verwendet werden, ob bekannt oder nicht.
  3. Die Teilmenge von # 2, die Menge aller möglichen Permutationen, die bekannt sind (Verstöße).

Nummer 3 ist nur nützlich, um den Angriff zu trimmen, da die Permutationszahl niedriger als # 2 und sicherlich niedriger als # 1 ist. Logischerweise kann man davon ausgehen, dass # 2 nicht durchführbar ist, nur weil niemand eine Sammlung aller jemals verwendeten Passwörter hat. Der wichtige Punkt, den ich denke, ist jedoch, dass # 2 alleine nicht so nützlich wäre. Die Idee ist, Ihren Angriff zu reduzieren, um die Effizienz zu steigern. Sofern es sich bei dem Ziel nicht um ein Ziel mit hohem Wert handelt, ist # 2 wahrscheinlich bereits zu groß, um den Angriff zu reduzieren. Ein Wörterbuchangriff, bei dem tatsächliche Wörterbuchbegriffe oder nur gängige Kennwortvarianten verwendet werden, ist vor allem deshalb nützlich, weil der Permutationsraum so viel kleiner ist als die erschöpfende Brute Force. # 2 vergrößert diesen Raum so weit, dass er für den Angreifer genauso unpraktisch ist wie für den Benutzer.

Ironischerweise würde ich argumentieren, dass die Vermeidung von Permutationen in dieser Liste Ihre Anfälligkeit erhöhen könnte, wenn # 2 tatsächlich durch Magie freigesetzt würde, da Sie den potenziellen Permutationsraum verringern, den ein Angreifer bei gleicher Passwortlänge abdecken müsste .

Wenn # 2 verfügbar wäre, würde ein Angreifer höchstwahrscheinlich immer noch versuchen, es nur als Werkzeug zu verwenden, um einen besseren Brute-Force-Angriff durchzuführen, indem er ein Wörterbuch aus den Passwörtern mit der höchsten Häufigkeit aus diesem Satz erstellt.

Vor diesem Hintergrund ist anzumerken, dass die gesamte HIBP-Datenbank immer noch eine relativ kleine Teilmenge aller Permutationen darstellt. Daher ist es immer noch effizient, die Gesamtheit als Wörterbuchangriff zu verwenden. Ein Angreifer kann immer noch auf die höchste Frequenz trimmen, wenn er mehr Effizienz wünscht, aber dies wäre im Gegensatz zu Nummer 2 keine Voraussetzung.

0