Wie finde ich den Hashing-Algorithmus, der zum Hashing von Passwörtern verwendet wird?


11

Ich habe das Arbeitspasswort und kann den Hash (/ etc / passwd) sehen. Wie finde ich den Hashing-Algorithmus, der zum Hashing des Kennworts verwendet wird, ohne manuell verschiedene Algorithmen auszuprobieren, bis ich eine Übereinstimmung finde?


1
Welche Unix-Variante verwenden Sie?
— Kusalananda

3
Ich bin sehr überrascht, dass Sie einen Hash sehen können /etc/passwd. Ich dachte, alle Unix / Linux-Varianten hätten sich vor /etc/shadowJahren getrennt. (Ich weiß, dass solche Systeme immer noch Hashes unterstützen, passwdaber ich kenne keine Dienstprogramme mehr, die sie dort
— ablegen

Es ist OpenWrt Backfire 10.03. Hier sind noch Hashes gespeichert /etc/passwd. Dies ändert jedoch nichts an der Frage. Macht es?
— Dorin Botan

1
Nur zur Veranschaulichung: Die BSDs haben zwei Berkeley DB-Dateien, roaima. Es ist immer noch geteilt, aber es ist nicht /etc/shadowund sie haben keine Datei mit diesem Namen.
— JdeBP

Antworten:


27

Dies ist in dokumentiert crypt(3)‚s Manpage , die Sie finden können über shadow(5)‚s Manpage oder passwd(5)‚s . Diese Links sind für moderne Linux-basierte Systeme geeignet. Die Beschreibung dort ist:

Wenn salt eine Zeichenfolge ist, die mit den Zeichen "$ id $" beginnt, gefolgt von einer Zeichenfolge, die optional mit "$" abgeschlossen wird, hat das Ergebnis die Form:

$id$salt$encrypted

id identifiziert die anstelle von DES verwendete Verschlüsselungsmethode und bestimmt dann, wie der Rest der Kennwortzeichenfolge interpretiert wird. Die folgenden Werte von id werden unterstützt:

ID  | Method
─────────────────────────────────────────────────────────
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)

Blowfish, auch bekannt als bcrypt, auch durch Präfixe identifiziert wird 2, 2b, 2xund 2y(siehe PassLib Dokumentation ).

Wenn also ein Hash-Passwort im obigen Format gespeichert ist, können Sie den verwendeten Algorithmus anhand der ID ermitteln . Andernfalls ist es der cryptStandard-DES-Algorithmus (mit einem 13-stelligen Hash) oder der cryptDES von "big" (erweitert, um 128-Zeichen-Passwörter mit Hashes mit einer Länge von bis zu 178 Zeichen zu unterstützen) oder der erweiterte BSDI-DES (mit einem _Präfix) gefolgt von einem 19-stelligen Hash).

Einige Distributionen verwenden libxcrypt, das einige weitere Methoden unterstützt und dokumentiert :

  • y: yescrypt
  • gy: gost-yescrypt
  • 7: scrypt
  • sha1: sha1crypt
  • md5: SunMD5

Andere Plattformen unterstützen andere Algorithmen. Überprüfen Sie daher die cryptManpage dort. Beispielsweise unterstützt OpenBSDcrypt(3) nur Blowfish, das anhand der ID „2b“ identifiziert wird .



2
DES-basierte Passwörter sind übrigens immer 13 Zeichen lang und bestehen aus alphanumerischen Zeichen sowie .und /. Die ersten 2 Zeichen sind das Salz und die anderen 11 sind ein Hash-Wert (eine Art). Und es ist der einzige der unterstützten Algorithmen, cryptder so schwach ist, dass Sie ihn nicht durch die Wahl eines stärkeren Passworts kompensieren können.
— Kasperd
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.