Bagaimana menemukan algoritma hashing yang digunakan untuk kata sandi hash?

11

Saya memiliki kata sandi yang berfungsi dan dapat melihat hash (/ etc / passwd). Bagaimana saya menemukan algoritma hashing yang digunakan untuk hash password, tanpa secara manual mencoba algoritma yang berbeda sampai saya menemukan kecocokan?

Dorin Botan
sumber
1
Varian Unix apa yang Anda gunakan?
Kusalananda
3
Saya sangat terkejut Anda bisa melihat hash di /etc/passwd. Saya pikir semua varian Unix / Linux telah berpindah ke /etc/shadowtahun yang lalu. (Saya tahu sistem seperti itu masih mendukung hash, passwdtetapi saya tahu tidak ada utilitas yang menempatkannya di sana lagi. Sistem tertanam, mungkin?
roaima
Ini OpenWrt Backfire 10.03. Hash masih disimpan di /etc/passwdsini. Namun ini tidak mengubah masalah pertanyaan. Melakukannya?
Dorin Botan
1
Sebagai catatan: BSD memiliki dua file Berkeley DB, roaima. Itu masih terbagi, tetapi tidak /etc/shadowdan mereka tidak memiliki file dengan nama itu.
JdeBP

Jawaban:

27

Hal ini didokumentasikan dalam crypt(3)'s manualnya , yang Anda dapat menemukan melalui shadow(5)‘s manualnya , atau passwd(5)'s . Tautan tersebut sesuai untuk sistem berbasis Linux modern; deskripsinya ada:

Jika garam adalah string karakter yang dimulai dengan karakter "$ id $" diikuti oleh string yang diakhiri oleh "$", maka hasilnya memiliki bentuk:

$id$salt$encrypted

id mengidentifikasi metode enkripsi yang digunakan sebagai ganti DES dan ini kemudian menentukan bagaimana sisa kata sandi diinterpretasikan. Nilai id berikut ini didukung:

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, juga dikenal sebagai bcrypt, juga diidentifikasi oleh prefiks 2, 2b, 2x, dan 2y(lihat dokumentasi PassLib ini ).

Jadi, jika kata sandi hash disimpan dalam format di atas, Anda dapat menemukan algoritma yang digunakan dengan melihat id ; jika tidak, itu adalah cryptalgoritma DES default (dengan hash 13 karakter), atau cryptDES "besar" (diperluas untuk mendukung kata sandi 128 karakter, dengan panjang hash hingga 178 karakter), atau BSDI memperpanjang DES (dengan _awalan diikuti oleh hash 19 karakter).

Beberapa distribusi menggunakan libxcrypt yang mendukung dan mendokumentasikan beberapa metode lagi:

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

Platform lain mendukung algoritma lain, jadi periksa halaman cryptmanual di sana. Sebagai contoh, OpenBSDcrypt(3) hanya mendukung Blowfish, yang diidentifikasi menggunakan id "2b".

Stephen Kitt
sumber
2
Kata sandi berbasis DES adalah BTW yang selalu sepanjang 13 karakter dan terdiri dari karakter alfanumerik serta .dan /. 2 karakter pertama adalah salt dan 11 karakter lainnya adalah nilai hash (semacam). Dan itu adalah satu-satunya algoritma yang didukung oleh cryptyang sangat lemah sehingga Anda tidak dapat mengimbanginya dengan memilih kata sandi yang lebih kuat.
kasperd