Wenn Kennwörter gehasht gespeichert werden, woher weiß ein Computer, dass Ihr Kennwort dem letzten ähnlich ist, wenn Sie versuchen, Ihr Kennwort zurückzusetzen?

11

Wenn Kennwörter gehasht gespeichert werden, woher weiß ein Computer, dass Ihr Kennwort dem letzten ähnlich ist, wenn Sie versuchen, Ihr Kennwort zurückzusetzen? Wären die beiden Passwörter nicht völlig unterschiedlich, da eines gehasht ist und nicht rückgängig gemacht werden kann?

Bob Larry
quelle
5
Der Computer würde nicht wissen, ob sie ähnlich sind. Es würde nur wissen, ob sie identisch sind (indem das neue Passwort gehasht und mit dem gespeicherten Hash des ursprünglichen Passworts verglichen wird).
Robert Harvey
Es gibt jedoch Möglichkeiten, einen Hash zu generieren, der einen Teil der Merkmale des Kennworts erfasst. Die Verfügbarkeit solcher Hashes ist jedoch eine große Lücke, da Passwort-Cracker solche Informationen auch nutzen können, um die Brute-Force-Suche nach Passwörtern um viele Größenordnungen einzugrenzen.
Rwong
Wenn Sie Kennwörter vergleichen müssen, verwenden Sie keine Hashes. Es ist wahrscheinlich, dass Sie AES oder andere Formen der simetrischen Verschlüsselung verwenden
Laiv

Antworten:

15

Eine Möglichkeit, dies zu implementieren, besteht darin, dass Sie beim Zurücksetzen des Kennworts normalerweise auch aufgefordert werden, Ihr altes Kennwort einzugeben. In dieser Situation können Sie einfach einen regulären Vergleich der Zeichenfolgenähnlichkeit verwenden, da Sie zu diesem Zeitpunkt beide Kennwörter im Klartext haben.

Eine andere Möglichkeit, dies zu implementieren, besteht darin, das Kennwort zu normalisieren. Beispielsweise werden Zeichen mit Akzent auf die nächstgelegenen englischen Alphabete normalisiert, versucht, den Text phonetisch zu transkribieren, Zahlen zu entfernen usw. und mehrere Versionen der Hashes vorab zu berechnen, die aus dem Kennwort generiert werden war auf verschiedene Weise normalisiert worden. Beachten Sie, dass dies den Hashing-Mechanismus um einen nicht festgelegten Betrag schwächt. Ich würde dies nicht als bewährte Sicherheitsmethode betrachten.

Lie Ryan
quelle
"Passwort zurücksetzen" bezieht sich im Allgemeinen auf "Ich habe mein Passwort vergessen und möchte es zurücksetzen", sodass Sie nicht nach dem alten Passwort gefragt werden. Die zweite Hälfte Ihrer Antwort ist jedoch korrekt.
Casablanca
3
@ Casablanca: Es gibt viele Systeme, die Sie Ihr Passwort alle X Tage "zurücksetzen" lassen ....
Whatsisname
1
@casablanca: Die erste Hälfte ist ebenfalls korrekt. "Zurücksetzen des Passworts" kann beide Bedeutungen haben. Die Terminologie ist nicht so starr. Wir müssen das OP fragen, was sie genau gemeint haben.
Doc Brown
12

Die einfache Antwort ist, dass ein sicheres System nicht weiß, ob sie ähnlich sind.

Einige Systeme reduzieren jedoch absichtlich die Sicherheit für ein bestimmtes Kennwort, um zu verhindern, dass neue Kennwörter alte oder ähnliche Kennwörter sind. Der Kosten-Nutzen-Kompromiss besteht darin, dass ein neues Passwort erstellt wird, bevor jemand das aktuelle Passwort trotz der Ähnlichkeitsinformationen böswillig knackt.

  • Sie speichern möglicherweise die letzten N Hashes von Kennwörtern, die Sie verwendet haben. Wenn Sie ein altes Passwort eingeben, ist dies offensichtlich, da der neue Passwort-Hash mit einem alten Passwort-Hash übereinstimmt.
  • Der verwendete Hash-Mechanismus kann einen Daumennagelmechanismus enthalten, oder ein Hash-Thumbnail kann neben dem Hash gespeichert sein. Im Wesentlichen drücken bestimmte Bitmuster in der Hash-Miniaturansicht eine Reihe sehr ähnlicher Bitmuster im zugrunde liegenden Wert aus.
  • In ähnlicher Weise könnten sie Statistiken über Ihr Passwort auf der Seite halten, was ein genaues Maß an Ähnlichkeit ermöglichen würde.

Im Allgemeinen verringert jede dieser Techniken die Sicherheit von Passwörtern.

  • Das Behalten alter Passwörter verringert die Sicherheit dieser Passwörter. Sollte eines dieser Passwörter geknackt werden, besteht eine hohe Wahrscheinlichkeit, dass das aktuelle Passwort ihnen ähnlich ist. Die meisten Leute ändern nur eine Nummer.

  • Daumennageln und Statistiken können fehlerhafte Passwort-Vermutungen schneller beseitigen als der Versuch, die Vermutungen zu hashen und zu vergleichen. Dies liegt daran, dass Hashes, insbesondere sichere Hashes, kompliziert zu berechnen und aufwändig sind, selbst wenn die Hardware beschleunigt wird. Während eine einfachere Berechnung, die "definitiv nicht" oder "vielleicht" sagt, die meisten dieser Vermutungen beseitigen kann, sollen die Ähnlichkeitsprüfungen Sie davon abhalten, ähnliche Passwörter zu verwenden, und nicht davon, ein völlig neues Passwort zu verwenden, das dem alten nicht ähnelt.

Kurz gesagt, seien Sie vorsichtig bei Websites, die auf ein Ähnlichkeitsmaß mit Ihrem aktuellen / alten Passwort hinweisen. Es sei denn, sie sagen, dass das neue Passwort das alte Passwort ist.

Kain0_0
quelle
7

Wenn Kennwörter gehasht gespeichert werden, woher weiß ein Computer, dass Ihr Kennwort dem letzten ähnlich ist, wenn Sie versuchen, Ihr Kennwort zurückzusetzen? Wären die beiden Passwörter nicht völlig unterschiedlich, da eines gehasht ist und nicht rückgängig gemacht werden kann?

Sie generieren mehrere ähnliche Kennwörter aus dem vom Benutzer eingegebenen Kennwort und prüfen, ob einer der Hashes mit dem des alten Kennworts übereinstimmt.

Jörg W Mittag
quelle
Ja, die Leute sind in Bezug auf die Art der Änderungen, die sie vornehmen werden, ziemlich vorhersehbar, so dass dies ein anständiger Weg sein könnte, dies zu tun.
Cyborg
Das würde in Bezug auf die Verarbeitung, die nur mit den kürzesten Passwörtern benötigt wird, sehr schnell explodieren. Ich glaube also nicht, dass dies eine echte Praxis ist.
Martin Maat
Ich habe ziemlich lange an einem Ort gearbeitet, und als ich ging, war mein Passwort supersecurepassword39. (Nur die letzten beiden Ziffern sind wahr). Es ist offensichtlich, ob ein Passwort mit einer Nummer beginnt oder endet, um festzustellen, ob die vorherige Nummer verwendet wurde.
Gnasher729
@ MartinMaat Würde es aber? Sie können beispielsweise das Hinzufügen oder Inkrementieren einer Zahl erkennen, indem Sie die Zeichen einzeln aus dem ursprünglichen Kennwort entfernen. Das heißt, für "Passwort" haben Sie "Assword" (heehee), "Pssword", "Pasword" usw. Sie könnten sogar mit der Verwendung eines schwächeren Has für diese davonkommen, da es zusätzlich komplex ist, 256 Permutationen von jedem zu versuchen Wenn Sie den sekundären Hash brutal erzwingen. (Mehr, wenn Sie sie in zufälliger Reihenfolge speichern und nicht wissen, welcher Charakter in welchem ​​elidiert wurde, dann ist es 256 * N für jeden.)
Millimoose
Das Einstellen eines neuen Kennworts wird N-mal teurer, wenn N die Kennwortlänge ist, ohne die Ähnlichkeitsprüfungen, die viel billiger sein sollten als das Hashing. Aber Sie haben jedes Mal, wenn sich ein Benutzer anmeldet, Hash-Passwörter, und dies passiert wahrscheinlich viel häufiger als das Ändern von Passwörtern. Daher bezweifle ich, dass die zusätzliche Belastung so spürbar wäre.
Millimoose
2

Ein anderes Muster ist, dass Ihr System einige charakteristische Teilmengen Ihres Passworts hascht und diese Hashes speichert, um zu überprüfen, ob Teilmengen des neuen Passworts mit einem der alten übereinstimmen, dh: Passwort: "Admin2018" & Teilmenge: "Admin" = kann "Admin2019" nicht als eingeben ein neues.

Lukasz Matysiak
quelle
1

Eine Möglichkeit besteht darin, die letzten fünf Hash-Passwörter in einer Tabelle wie "Passwortverlauf" zu speichern. Wenn der Benutzer versucht, ein neues Passwort festzulegen, muss es gehasht und mit den Hash-Passwörtern in der Tabelle verglichen werden.

SKDev
quelle