Mengapa panjang maksimal kata sandi root OpenWrt 8 karakter?

29

Ketika saya mencoba mengatur rootkata sandi:

root@OpenWrt:~# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.

Tampaknya panjang maksimum adalah 8. Jika saya mencoba mengatur kata sandi lebih dari 8, hanya 8 karakter pertama yang valid. Bagaimana cara menetapkan kata sandi yang lebih panjang root?

Versi OpenWrt saya:

Linux OpenWrt 4.14.108 #0 SMP Wed Mar 27 21:59:03 2019 x86_64 GNU/Linux
Alan42
sumber

Jawaban:

35

Ini karena crypt berbasis DES (AKA 'descrypt') memotong kata sandi pada 8 byte, dan hanya memeriksa 8 pertama untuk keperluan verifikasi kata sandi.

Itulah jawaban untuk pertanyaan langsung Anda, tetapi inilah beberapa saran umum yang tersirat oleh konteks Anda:

  • Untungnya, dari bacaan saya, MD5di /etc/login.defssebenarnya md5crypt ($ 1 $), yang, sementara sedikit yang usang dan dinyatakan tidak berlaku lagi oleh pemiliknya , masih jauh lebih unggul crypt berbasis DES (dan pasti jauh lebih baik daripada mentah, hash unsalted seperti biasa MD5! Sebagian besar hash yang tidak tawar dapat dipecahkan pada GPU komoditas dengan laju miliaran per detik)

  • Sepertinya SHA256(sebenarnya sha256crypt) dan SHA512(sebenarnya sha512crypt) juga ada. Saya akan memilih salah satu dari itu.

  • Jika Anda mengatur kata sandi Anda passwordatau sesuatu di bawah setiap skema, Anda dapat secara visual memverifikasi apakah kesimpulan saya bahwa mereka adalah varian -crypt benar (contoh di sini diambil dari hashcat contoh hash , semua 'hashcat', sebagian dibungkus untuk keterbacaan):

Tidak direkomendasikan - jenis hash tawar atau warisan, terlalu "cepat" (tingkat perengkahan) untuk penyimpanan kata sandi:

MD5         - 8743b52063cd84097a65d1633f5c74f5
SHA256      - 127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935
SHA512      - 82a9dda829eb7f8ffe9fbe49e45d47d2dad9664fbb7adf72492e3c81ebd3e2 \
              9134d9bc12212bf83c6840f10e8246b9db54a4859b7ccd0123d86e5872c1e5082f
descrypt    - 48c/R8JAv757A

OK - jauh lebih baik daripada tidak tawar, tidak ada pemotongan, tetapi tidak lagi cukup tahan terhadap kekerasan pada perangkat keras modern:

md5crypt    - $1$28772684$iEwNOgGugqO9.bIz5sk8k/

Lebih baik - hash yang relatif modern dengan garam besar dan faktor kerja:

sha256crypt - $5$rounds=5000$GX7BopJZJxPc/KEK$le16UF8I2Anb.rOrn22AUPWvzUETDGefUmAV8AZkGcD
sha512crypt - $6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/

Dari jumlah tersebut, hanya descrypt yang terpotong pada 8. Dua yang terakhir adalah taruhan terbaik Anda.

(Catatan: garam digit-only dalam contoh md5crypt dan sha512crypt di atas hanyalah efek samping dari bagaimana hashcat menciptakan contoh hash; garam yang sehat dan sehat biasanya diambil dari ruang kunci yang jauh lebih besar).

Perhatikan juga bahwa saya hanya mencantumkan tipe hash yang didukung oleh /etc/login.defs di platform ini. Untuk penggunaan umum, bahkan sha256crypt dan sha512crypt telah digantikan - pertama oleh bcrypt, dan kemudian oleh hash yang benar-benar sejajar serangan-serangan seperti scrypt dan keluarga Argon2. (Namun, perlu diketahui bahwa untuk login interaktif yang harus diselesaikan dalam waktu kurang dari satu detik, bcrypt sebenarnya lebih tahan terhadap serangan daripada yang terakhir)

Royce Williams
sumber
20

Saya memodifikasi ini di /etc/login.defs:

PASS_MAX_LEN            8

masalah diperbaiki.


Tambahan penting:

Setelah saya mengubah parameter di atas, meskipun saya dapat mengatur kata sandi lebih besar dari 8 digit, itu masih tidak valid karena kata sandi sebenarnya hanya delapan digit pertama. Saya tidak tahu apakah ini masalah saya.

Solusi terakhir saya adalah mengatur

# ENCRYPT_METHOD DES

untuk

ENCRYPT_METHOD MD5

di /etc/login.defs.

Sekarang, saya akhirnya dapat menetapkan kata sandi root yang benar-benar lebih besar dari delapan.

Alan42
sumber
16
Perbaikan yang baik, tetapi pilihan asli yang buruk untuk sistem standar ...
HBruijn
8
Saya berasumsi Anda telah mengubah kata sandi Anda menjadi lebih dari 8 karakter sekarang. Bisakah Anda mencoba jika masuk dengan 8 karakter pertama dari kata sandi Anda yang lama berfungsi? Karena itu mungkin saja ...
marcelm
9
Anda dapat mempertimbangkan untuk mengubahnya menjadi SHA256 atau SHA512 atau didukung - MD5 dianggap rusak hari ini.
PhilippNagel
8
benar-benar sha256 dan sha512 sendiri tidak jauh lebih baik daripada md5. Anda memerlukan garam, dan gunakan versi crypt dari algoritma ini.
SnakeDoc
4
@ PhilippNagel Dengan kata sandi entropi tinggi, itu tidak terlalu buruk. Meskipun MD5 tentu saja harus dianggap rusak, kelemahan saat ini diketahui tidak memengaruhi untuk hashing kata sandi. Apa adalah masalah bagi sandi hashing adalah kecepatan; MD5 non-iterated sangat cepat sehingga brute-forcing sangat layak untuk banyak kata sandi.
marcelm