Beachten Sie, dass eine Kennwort-Hash-Funktion eine bestimmte Art von kryptografischer Hash-Funktion ist, die nicht für andere Verwendungen von kryptografischen Hash-Funktionen verwendet wird. Eine Passwort-Hash-Funktion muss langsam sein. Normalerweise verwenden wir schnelle kryptografische Hash-Funktionen. Technisch gesehen ist eine Passwort-Hash-Funktion keine Hash-Funktion, sondern ein Salted- Key-Stretching-Algorithmus , der zwei Eingaben (das Passwort und das Salt) übernimmt, während eine Hash-Funktion eine einzige Eingabe (die Daten) übernimmt. Siehe So sichern Sie Passwörter sicher? Weitere Informationen zum Passwort-Hashing.
Aus historischen Gründen wird in vielen Unix-Dokumenten das Kennwort-Hashing als "Verschlüsselung" bezeichnet. Dies ist jedoch kein Verschlüsselungsprozess (Sie können einen Hash nicht wieder in das Kennwort entschlüsseln). Der historische Grund ist, dass in den frühen Tagen von Unix die Passwort-Hashing-Funktion auf dem DES- Algorithmus basiert, der hauptsächlich für die Verschlüsselung verwendet wird.
Das Passwort-Hashing wird von einer Funktion in der Standardbibliothek aufgerufen crypt
. (Beachten Sie, dass es ein traditionelles Unix-Dienstprogramm gibt crypt
, das nicht verwandt ist. Dieses verschlüsselt tatsächlich.) Der Kernel weiß nichts über Kennwörter. (Einige Kernel auf einigen Plattformen bieten eine kryptografische Bibliothek, um die Vorteile von Hardwarebeschleunigern zu nutzen.)
Die historische crypt
Funktion verwendete einen DES-basierten Algorithmus, der für die damalige Zeit in Ordnung war, aber für die heutigen Computergeschwindigkeiten zu schwach ist. Heute ist die Passwort - Hash - Funktion durch die Zeichen zu Beginn des Salzes angegeben: $1$
, $5$
, $6$
, ... Diese drei Werte (und ein paar mehr) sind de - facto - Standard in vielen Unix - Varianten (einschließlich Linux - Systemen auf Basis von Glibc, die praktisch alle nicht eingebettete und einige der größeren eingebetteten). Einige Unix-Varianten bieten mehr Auswahlmöglichkeiten. Eingebettete Linux-Systeme verfügen möglicherweise nicht über alle diese Methoden.
$1$
basiert auf MD5, jedoch mit einer festen Anzahl von Iterationen und ist aus diesem Grund veraltet. $5$
und $6
basieren auf einer variablen Anzahl von Iterationen von SHA2-256 bzw. SHA2-512. Weitere Informationen finden Sie unter Erstellen von SHA512-Kennwort-Hashes in der Befehlszeile, wenn Sie einige Kennwort-Hashes über die Befehlszeile berechnen möchten.