berapa panjang maksimal kata sandi pada sistem unix / linux?

27

berapa panjang maksimum kata sandi yang diizinkan pada sistem unix / linux?

hari
sumber
20
Jika jawabannya bukan 42, seharusnya begitu.
tvanfosson
pertanyaan yang lebih baik adalah: apa yang bisa saya harapkan dari seseorang untuk mengetik? Jika batasnya 40 dan Anda melebihi itu, Anda melakukan sesuatu yang salah.
msw

Jawaban:

39

Jika sistem Anda menggunakan hash kriptografi untuk menyimpan kata sandi yaitu MD5, SHA1, dll. Maka tidak ada batasan panjang kata sandi itu sendiri karena hash ini dapat dibuat dengan sejumlah data. Sebuah hash MD5 atau SHA1 dapat dibuat untuk seluruh hard drive dan ini biasanya dilakukan untuk tujuan forensik karena jika bahkan satu bit diubah sedikit maka Anda memiliki hash yang sangat berbeda dan karenanya Anda dapat memverifikasi data telah berubah. Ini berarti Anda dapat menggunakan algoritma yang sama persis ini untuk menguji apakah data telah dirusak. Linux (setidaknya Linux saat ini) menggunakan fungsi hash yang sama. Ini akan meminta Anda untuk kata sandi dan kemudian akan membuat hash kriptografi dari kata sandi yang Anda berikan dan melihat apakah hash ini cocok dengan kata sandi yang disimpan.

Ada sedikit downside untuk menggunakan hash ini yaitu bahwa hash memiliki ukuran yang terbatas misalnya hash MD5 adalah 128 bit. Ini berarti bahwa hash MD5 hanya memiliki 2^128atau 340,282,366,920,938,463,463,374,607,431,768,211,456kemungkinan kombinasi. Sekarang sementara itu adalah angka yang besar, apa artinya ini adalah Anda dapat memiliki apa yang mereka sebut tabrakan hash di mana Anda memiliki dua item atau kunci berbeda yang menghasilkan hash yang sama. Secara teori, semakin besar ukuran kunci, kemungkinan lebih rendah dari tabrakan dan semakin lama harus mengambil untuk brute force password tetapi yang ketat mengevaluasi entropi dan berapa lama CANambil tetapi ada juga kemungkinan bahwa entri pertama yang mereka coba bisa menjadi salah satu yang cocok bahkan jika itu tabrakan hash. Secara umum, Anda benar-benar lebih aman menggunakan hash yang memiliki ukuran kunci lebih besar karena, anggap ini MD5, kemungkinan kata sandi pertama yang cocok dengan 340,282,366,920,938,463,463,374,607,431,768,211,456kemungkinan yang cocok sangat tidak mungkin. Pilih juga kata sandi yang baik karena banyak cracker akan mencoba dan menggunakan daftar kata, daftar nama, dan mutasi dari daftar ini (yaitu jika kata itu "ikan" maka mereka akan mencoba fish1234, fish!@#$dll) sebelum mereka mengandalkan brute memaksa kata sandi.

Cara Anda mengetahui apakah sistem Anda menggunakan hash kriptografis untuk menyimpan kata sandi adalah dengan melihat /etc/shadowfile (dengan asumsi Anda memiliki akses root). Setiap baris diformat seperti user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved. Kolom kata sandi dapat dimulai dengan $num$(yaitu hash md5 di bidang kata sandi terlihat seperti $1$01234567$b5lh2mHyD2PdJjFfALlEz1tempat dimulai $1$). Jika dimulai dengan ini, maka itu berarti sistem Anda menggunakan hash kriptografi. Format bidang kata sandi pada semua sistem modern adalah $id$salt$hash. ID menentukan jenis hash kriptografi apa yang Anda gunakan. Garam adalah string yang dibuat secara acak yang digabungkan dengan kunci (kata sandi teks biasa) untuk melindungi dari tabel hash yang diketahui. Hash adalah hash kriptografi yang dibuat dari garam dan kunci / kata sandi. Jika bidang kata sandi Anda dimulai dengan$num$ maka Anda menggunakan hash kriptografi.

Jadi, Anda tahu, angkanya berarti:

  • $1$ berarti Anda menggunakan MD5
  • $2$atau $2a$berarti Anda menggunakan blowfish
  • $5$ berarti Anda menggunakan SHA-256
  • $6$ berarti Anda menggunakan SHA-512

SHA-512 adalah hash terbaik yang tersedia untuk menggunakan penawaran glibc itu. Saya tidak tahu seberapa kuat blowfish tetapi itu bukan bagian dari glibc dan karenanya hanya tersedia pada distribusi tertentu yang telah menambahkannya. SHA-512 menghasilkan kunci 512 bit atau 2 ^ 512 kemungkinan kombinasi sebelum tabrakan dapat terjadi dan dengan kata sandi yang cukup kompleks, dibutuhkan waktu yang sangat lama bagi sekelompok komputer untuk menemukan kata sandi aktual atau tabrakan dalam hash .

Juga, jika Anda memiliki hash yang tidak dimulai dengan $num$maka Anda menggunakan DES dan itu terbatas pada 8 karakter. Saya percaya sistem lama yang menggunakan DES, atau setidaknya beberapa dari mereka, mereka akan mengambil kata sandi ukuran apa pun tetapi hanya menggunakan 8 karakter pertama. Ini berarti jika Anda mengatur kata sandi Anda mybigbigappledan seseorang menggunakan kata sandi itu mybigbigcitymaka mereka akan diizinkan masuk karena DES hanya akan menggunakan mybigbigdan apa pun setelah itu dibuang.

Jadi Anda tahu, Ubuntu pada 8.04, yang dirilis pada April 2008, menggunakan hash MD5. Ubuntu dari 8.10, yang dirilis pada Oktober 2008, dan semua versi sejak itu menggunakan hash SHA-512. Saya tidak tahu seberapa jauh sebelum April 2008 tetapi saya percaya selama beberapa tahun jika tidak lebih, sebagian besar distribusi menggunakan hash.

12,0 dan 14,04 LTS saat ini (rilis dukungan jangka panjang) dari Ubuntu tampaknya menggunakan SHA-512 secara default, seperti yang dapat dilihat dengan $6$ditambahkan pada hash di file / etc / shadow:

catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]

Sekarang panjang kunci atau kata sandi yang dibolehkan untuk setiap algoritma hashing bukanlah satu-satunya hal untuk menentukan ukuran kata sandi yang Anda boleh miliki. Hal lain yang menarik adalah bagaimana program ditulis dan berapa lama program itu sendiri akan mendukung. Semua program passwd modern dan mungkin sebagian besar crypt(3)fungsinya di Linux. crypt untuk waktu yang lama (karena setidaknya MD5 digunakan dan mungkin sebelum itu) telah memungkinkan pointer karakter untuk kunci yang sebenarnya. Ini berarti bahwa satu-satunya batasan pada berapa lama tombol yang akan diterimanya didasarkan pada berapa banyak RAM yang tersedia untuk program itu tetapi dalam semua kemungkinan, ini mungkin jauh lebih lama daripada kata sandi yang dapat diingat oleh setiap orang. (jutaan karakter?).

Ini harus menjawab pertanyaan Anda tentang berapa lama kata sandi dapat. Semoga saya bisa membantu.

Referensi:

pesawat jet
sumber
7
"Berapa panjang maksimal jawaban SU?" lol jawaban yang bagus!
James Mertz
1
Perlu dicatat bahwa algoritma crypt () telah ditinggalkan lebih dari satu dekade. Tidak peduli berapa lama kata sandi crypt (), ia terpotong menjadi 8 karakter. Dikombinasikan dengan keyspace sangat kecil dari garam 12bit, crypt () telah dibuat sepenuhnya tidak aman. Sebagai referensi, berikut adalah artikel tentang bagaimana 1 juta kata sandi Gawker diekspos karena penggunaan crypt () pada tahun 2010: https://www.lightbluetouchpaper.org/2010/12/15/the-gawker-hack- how-a-million-passwords were lost /
cremefraiche
8

Itu tergantung pada modul otentikasi mana yang digunakan. Dalam sistem Linux modern, tidak ada batasan maksimum panjang kata sandi. Beberapa sistem usang mungkin memiliki batasan yang diberlakukan oleh sistem penyimpanan kata sandi mereka - maksimum yang populer tampaknya 8, 40, dan 255.

John Millikin
sumber
3

Tergantung pada bagaimana kata sandi disimpan, MD5, SHA1, BlowFish dll. Saya pikir tidak ada batasan pada kata sandi yang ditetapkan oleh metode penyimpanan itu sendiri.

Implementasi yang lebih lama mungkin memiliki batas yang mungkin 8 atau 255 karakter.

Ini sepertinya pertanyaan yang lebih cocok untuk www.serverfault.com :)

Kelsey
sumber
5
Ini terkait komputer umum, belum tentu khusus untuk server!
Darth Android
0

Perintah passwd melibatkan Perintah mcrypt untuk enkripsi. Menurut kode sumber mcrypt ukuran maksimum stdin dibatasi hingga 512 Karakter (sandi) - tapi ini dua tahun lalu .... - (Saya akan memperbarui jawaban ini jam berikutnya) ... Ya ... Dalam kode sumber 2.6.8 dari mcrypt di direktori src, ada file getpass.c - di sana pada awalnya Anda melihat nilai 512 ditetapkan sebagai nilai char statis. (Saya ingin memompakannya hingga 1,4 GB ...):

dschinn1001
sumber