Jak znaleźć algorytm mieszający używany do mieszania haseł?

11

Mam działające hasło i widzę skrót (/ etc / passwd). Jak znaleźć algorytm mieszający używany do mieszania hasła bez ręcznego wypróbowywania różnych algorytmów, dopóki nie znajdę dopasowania?

Dorin Botan
źródło
1
Jakiego wariantu Uniksa używasz?
Kusalananda
3
Jestem bardzo zaskoczony, że widzisz skrót /etc/passwd. Myślałem, że wszystkie warianty Unix / Linux przeniosły się z /etc/shadowlaty temu. (Wiem, że takie systemy nadal obsługują skróty, passwdale nie znam narzędzi, które by je tam umieściły. Być może system wbudowany?
roaima
To OpenWrt Backfire 10.03. Hashe nadal są /etc/passwdtutaj przechowywane . Nie zmienia to jednak kwestii pytania. Czy to?
Dorin Botan
1
Dla przypomnienia: BSD mają dwa pliki Berkeley DB, roaima. Nadal jest podzielony, ale tak nie jest /etc/shadowi nie mają pliku o tej nazwie.
JdeBP

Odpowiedzi:

27

Jest to udokumentowane w crypt(3)„s podręcznika , który można znaleźć poprzez shadow(5)„s podręcznika , lub passwd(5)„s . Te linki są odpowiednie dla nowoczesnych systemów opartych na Linuksie; opis jest:

Jeśli sól jest ciągiem znaków rozpoczynającym się od znaków „$ id $”, po którym następuje ciąg opcjonalnie zakończony „$”, wynik ma postać:

$id$salt$encrypted

id identyfikuje zastosowaną metodę szyfrowania zamiast DES, a następnie określa, w jaki sposób interpretowana jest reszta ciągu hasła. Obsługiwane są następujące wartości id:

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, znany również jako bcryptjest również zidentyfikowane przez prefiksów 2, 2b, 2x, i 2y(zobacz dokumentację PassLib za ).

Jeśli więc hashowane hasło jest przechowywane w powyższym formacie, możesz znaleźć algorytm, patrząc na identyfikator ; w przeciwnym razie jest to cryptdomyślny algorytm DES (z 13-znakowym skrótem) lub „duży” cryptDES (rozszerzony do obsługi 128-znakowych haseł, z skrótami do 178 znaków) lub BSDI rozszerzony DES (z _prefiksem a następnie 19-znakowy skrót).

Niektóre dystrybucje używają libxcrypt, który obsługuje i dokumentuje jeszcze kilka innych metod:

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

Inne platformy obsługują inne algorytmy, więc sprawdź crypttam stronę podręcznika. Na przykład OpenBSDcrypt(3) obsługuje tylko Blowfish, które identyfikuje za pomocą identyfikatora „2b”.

Stephen Kitt
źródło
2
Hasła oparte na DES mają BTW zawsze 13 znaków i składają się ze znaków alfanumerycznych, a także .i /. Pierwsze 2 znaki to sól, a pozostałe 11 to wartość skrótu (niejako). Jest to jedyny obsługiwany algorytm, cryptktóry jest tak słaby, że nie można go zrekompensować, wybierając silniejsze hasło.
kasperd