Verwenden alle Linux-Distributionen dieselbe kryptografische Hash-Funktion?

7

Verwenden alle Linux-Distributionen dieselbe kryptografische Hash-Funktion ?

Wenn ja, wird es mit dem Kernel selbst bereitgestellt?

BEARBEITEN: - Ich beziehe mich auf die Funktion, die hauptsächlich zum Speichern von Benutzeranmeldekennwörtern verwendet wird.

registrierter Nutzer
quelle
Kryptografische Hash-Funktionen für welche Zwecke genau? Es gibt viele Verwendungszwecke für diese, und "Linux" ist ein gebräuchlicher Name für eine Sammlung lose gekoppelter Pakete, von denen jedes nach Belieben seine eigenen oder sogar andere verwenden kann, je nach der von der Distribution ausgewählten Konfiguration.
vonbrand

Antworten:

9

Nein und nein zu Ihren Fragen.

Ich würde einen Blick auf die crypt(3)Funktion werfen, um weitere Informationen zu erhalten. Von man crypt(3):

GNU-ERWEITERUNG

Die glibc2-Version dieser Funktion verfügt über die folgenden zusätzlichen Funktionen. Wenn salt eine Zeichenfolge ist, die mit den drei Zeichen beginnt, $1$gefolgt von höchstens acht Zeichen, und optional mit beendet wird $, verwendet die glibc-Kryptofunktion anstelle der DES-Maschine einen MD5-basierten Algorithmus und gibt nämlich bis zu 34 Byte aus , wobei für die bis zu 8 Zeichen steht, die im Salt folgen, gefolgt von 22 Bytes, die aus dem Satz ausgewählt wurden . Der gesamte Schlüssel ist hier von Bedeutung (anstelle nur der ersten 8 Bytes).$1$&‹string›$‹string›$1$[a–zA–Z0–9./]

Sie können Ihr Pam-Setup überprüfen, um festzustellen, ob Sie MD5 oder DES verwenden:

$ egrep "password.*pam_unix.so" /etc/pam.d/system-auth
password    sufficient    pam_unix.so md5 shadow nis nullok try_first_pass use_authtok

Und Sie können in dieser /etc/shadowSystemdatei sehen, dass es auch MD5 verwendet:

root:$1$<DELETED PASSWORD HASH>:14245:0:99999:7:::

Die Codes, die Sie /etc/shadowfür jede Art von Hashing sehen:

  • $ 1 - MD5
  • $ 2 - Blowfish
  • $ 2a - Eksblowfish
  • $ 5 - SHA-256
  • $ 6 - SHA-512

In Red Hat-Distributionen können Sie dies mit dem authconfigBefehl ändern .

$ sudo authconfig --passalgo=sha512 --update

Verweise

slm
quelle
1
Beachten Sie, dass es sich bei den Kennwort-Hashing-Funktionen nicht um die Hash-Funktionen MD5, SHA-256 usw. handelt, sondern um darauf aufgebaute Funktionen (die im Grunde genommen häufig wiederholt werden).
Gilles 'SO - hör auf böse zu sein'
5

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 cryptFunktion 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 $6basieren 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.

Gilles 'SO - hör auf böse zu sein'
quelle
4

Nein, und es wird nicht vom Kernel bereitgestellt. Abhängig von der Version, der Distribution und den von Ihnen verwendeten Unixen finden Sie unterschiedliche Hash-Codierungsalgorithmen (ich nehme an, Sie möchten hauptsächlich das Passwort speichern).
Wenn Sie die /etc/shadowDatei als root betrachten, können Sie sehen, welcher Hash unter Ihrem Linux verwendet wird.

Wenn Sie etwas mit einem Hash signieren möchten, integrieren die meisten Unices die Binärdatei md5sumodersha1sum

Kiwy
quelle
1
Beachten Sie, dass der Hashes-Computer mit md5sumund Freunde die üblichen kryptografischen Hashes sind, die nicht zum Hashing von Passwörtern verwendet werden. Passwort-Hashes sind langsam; Die üblichen unter Unix basieren auf MD5 oder SHA-2 (viele Male wiederholt und mit Salz eingeworfen). Siehe meine Antwort für weitere Details.
Gilles 'SO - hör auf böse zu sein'