Einige Male habe ich versucht, ein Benutzerkennwort auf verschiedenen Linux-Rechnern zu ändern, und als das neue Kennwort dem alten ähnlich war, beklagte sich das Betriebssystem, dass sie zu ähnlich waren.
Ich habe mich immer gefragt, woher das System das weiß. Ich dachte, dass das Passwort als Hash gespeichert wird. Bedeutet dies, dass das alte Passwort tatsächlich als Klartext gespeichert wird, wenn das System das neue Passwort auf Ähnlichkeit vergleichen kann?
Antworten:
Da Sie bei der Verwendung sowohl das alte als auch das neue Kennwort eingeben müssen
passwd
, können diese problemlos im Klartext und im Speicher verglichen werden, ohne dass sie irgendwo auf das Laufwerk geschrieben werden müssen.Ihr Passwort wird zwar gehasht, wenn es endgültig gespeichert ist, aber bis dahin kann das Tool, in das Sie Ihr Passwort eingeben, natürlich genauso direkt darauf zugreifen wie jedes andere Programm auf Dinge, die Sie beim Lesen von STDIN über Ihre Tastatur eingegeben haben.
Dies ist eine Funktion des PAM-Systems, die im Hintergrund des
passwd
Tools verwendet wird. PAM wird von modernen Linux-Distributionen verwendet.Genauer gesagt
pam_cracklib
handelt es sich um ein Modul für PAM, mit dem Kennwörter abgelehnt werden können, die auf mehreren Schwachstellen beruhen, die sie sehr anfällig machen würden.Nicht nur zu ähnliche Passwörter können als unsicher eingestuft werden. Der Quellcode enthält verschiedene Beispiele dafür, was überprüft werden kann, z. B. ob ein Passwort ein Palindrom ist oder wie groß der Bearbeitungsabstand zwischen zwei Wörtern ist. Die Idee ist, Passwörter widerstandsfähiger gegen Wörterbuchangriffe zu machen.
Siehe auch die
pam_cracklib
Manpage.quelle
Zumindest in meinem Ubuntu kommt die "zu ähnliche" Nachricht raus
wenn: "... mehr als die Hälfte der Zeichen sind verschiedene ..." (Einzelheiten siehe unten).Dank der PAM-Unterstützung, wie in der @ slhck-Antwort deutlich erklärt.Für andere Plattformen, auf denen PAM nicht verwendet wird, werden die "zu ähnlichen" Meldungen ausgegeben, wenn: "... mehr als die Hälfte der Zeichen unterschiedliche sind ...." (Einzelheiten siehe unten)
Um diese Aussage selbst weiter zu überprüfen, können Sie den Quellcode überprüfen. Hier ist, wie.
Das "passwd" -Programm ist im passwd-Paket enthalten:
Da es sich um Open Source-Technologien handelt, haben wir uneingeschränkten Zugriff auf Quellcode. Es zu bekommen ist so einfach wie:
Danach ist es einfach, das entsprechende Codefragment zu finden:
Eine schnelle Überprüfung der "obscure.c" ergibt dies (ich schneide nur den relevanten Teil des Codes aus und füge ihn ein):
Jetzt wissen wir also, dass es eine "ähnliche" Funktion gibt, die auf der alten und der neuen basiert und prüft, ob beide ähnlich sind. Hier ist der Ausschnitt:
Ich habe den C-Code nicht überprüft. Ich habe mich darauf beschränkt, dem Kommentar kurz vor der Funktionsdefinition zu vertrauen :-)
Die Unterscheidung zwischen PAM- und NON-PAM-fähigen Plattformen wird in der Datei "obscure.c" definiert, die wie folgt aufgebaut ist:
quelle
passwd
nach alten und neuen Passwörtern gefragt wird, ist die Antwort . Der Rest dieser Antwort ist irrelevant.Die Antwort ist viel einfacher als Sie denken. Tatsächlich ist es fast wie Zauberei, denn sobald Sie den Trick erklärt haben, ist er weg:
Es weiß, dass Ihr neues Passwort ähnlich ist ... Weil Sie das alte in einem Moment zuvor eingegeben haben.
quelle
Obwohl die anderen Antworten richtig sind, kann es erwähnenswert sein, dass Sie nicht das alte Passwort eingeben müssen, damit dies funktioniert!
Tatsächlich kann man eine Reihe von Passwörtern erstellen, die dem von Ihnen eingegebenen neuen Passwort ähneln, sie hacken und dann prüfen, ob einer dieser Hashes mit dem alten übereinstimmt. Ist dies der Fall, wird das neue Passwort ähnlich wie das alte beurteilt! :)
quelle
n
), was62 * (n!)/(6 * (n - 3)!)
13540 für ein 12 Zeichen langes Passwort entspricht. Aber wenn jemand über etwas anderes nachdenkt, ist die Gleichung unbrauchbar. Warum also die Mühe machen?Ein Aspekt wurde nicht behandelt: Kennwortverlauf. Einige Systeme unterstützen dies. Zu diesem Zweck werden Kennwörter im Verlauf gespeichert und mit dem aktuellen Kennwort verschlüsselt. Wenn Sie Ihr Passwort ändern, wird das "alte" Passwort verwendet, um die Liste zu entschlüsseln und zu überprüfen. Wenn ein neues Passwort festgelegt wird, wird die Liste (erneut) mit einem vom neuen Passwort abgeleiteten Schlüssel verschlüsselt gespeichert.
So
remember=N
funktioniert das in PAM (gespeichert in/etc/security/opasswd
). Aber auch Windows und andere Unix-Anbieter bieten ähnliche Funktionen.quelle