> openssl passwd -1 "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/
Dies ist der erweiterte Unix-Stil crypt(3)
Passwort-Hash-Syntax, insbesondere die MD5-Version davon.
Die erste $1$
identifiziert den Hash-Typ, der nächste Teil OKgLCmVl
ist das Salt, das zum Verschlüsseln des Passworts verwendet wird, dann nach dem Trennzeichen $
Zeichen am Ende der Zeile ist der eigentliche Passwort-Hash.
Wenn Sie also den Salt-Teil aus der ersten Verschlüsselung nehmen und ihn mit den nachfolgenden verwenden, sollten Sie immer das gleiche Ergebnis erhalten:
> openssl passwd -1 -salt "OKgLCmVl" "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/
> openssl passwd -1 -salt "OKgLCmVl" "a"
$1$OKgLCmVl$d02jECa4DXn/oXX0R.MoQ/
Wenn Sie ein Passwort ändern , sollten Sie immer auf ein neues Salz umsteigen. Damit wird verhindert, dass jemand im Nachhinein herausfindet, ob das neue Passwort tatsächlich mit dem alten identisch war. (Wer die Wiederverwendung alter Passwörter verhindern möchte, kann den neuen Passwortkandidaten natürlich auch zweimal hashen:einmal mit dem alten Salt und dann, wenn das Ergebnis anders als das alte Passwort und damit akzeptabel ist, noch einmal mit einem neuen Salz.)
Wenn Sie openssl passwd
verwenden ohne Optionen erhalten Sie das Original crypt(3)
-kompatibler Hash, wie von dave_thompson_085 beschrieben. Dabei besteht das Salz aus zwei Anfangsbuchstaben des Hash:
> openssl passwd "a"
imM.Fa8z1RS.k
> openssl passwd -salt "im" "a"
imM.Fa8z1RS.k
Sie sollten diesen alten Hash-Stil in keiner neuen Implementierung verwenden, da er die effektive Passwortlänge auf 8 Zeichen beschränkt und zu wenig Salt enthält, um sich angemessen gegen moderne Methoden zu schützen.
(Ich habe einmal die Datenmenge berechnet, die erforderlich ist, um einen vollständigen Satz Regenbogentabellen für jeden klassischen crypt(3)
zu speichern Hasch. Ich erinnere mich nicht an das genaue Ergebnis, aber vorausgesetzt, meine Berechnungen waren korrekt, war es in der Größenordnung von "einem bescheidenen Stapel von Multi-Terabyte-Festplatten". Meiner Meinung nach liegt es damit im Bereich "organisierte Kriminelle könnten es tun".)
Im Gegensatz zu normalen Hashes ist Passwort Hashes sollten 'Salz' und verwenden sollte langsam sein (normalerweise durch Iteration), um zu verhindern, dass ein Angreifer, der den/die Hash(s) erhält, das/die Passwort(e) leicht wiederherstellen kann. Siehe Canonical on security.SX und viele damit verlinkte.
Die ursprüngliche crypt(3) aus den 1970er Jahren, jetzt der Klarheit halber DEScrypt genannt, ist (leicht) gesalzen :
Salz ist eine aus der Menge [a-zA-Z0-9./] ausgewählte Zeichenfolge aus zwei Zeichen. Diese Zeichenfolge wird verwendet, um den Algorithmus auf eine von 4096 verschiedenen Arten zu stören.
Das etwas neuere MD5crypt-Schema ist gesalzen und iteriert, entspricht aber nicht modernen Standards. Diese beiden und einige der besseren Schemata, die sie auf Unix(en) ersetzt haben, sind in https://en.wikipedia.org/wiki/Crypt_%28C%29 .
detailliert beschriebenUser Muru hat recht. Das Passwort ist gesalzen.
Sie können Option -salt string
hinzufügen selbst und der Hash bleibt gleich.
$ openssl passwd -salt "foo" "bar"
foXrpAKGo3142
$ openssl passwd -salt "foo" "bar"
foXrpAKGo3142