GNU/Linux >> Belajar Linux >  >> Linux

berapa panjang maksimal kata sandi pada sistem unix/linux?

Jika sistem Anda menggunakan hash kriptografi untuk menyimpan kata sandi yaitu MD5, SHA1, dll, maka tidak ada batasan untuk panjang kata sandi itu sendiri karena hash ini dapat dibuat dengan jumlah data berapa pun. Hash MD5 atau SHA1 dapat dibuat untuk seluruh hard drive dan ini biasanya dilakukan untuk keperluan forensik karena jika satu bit pun diubah sedikit saja maka Anda memiliki hash yang sangat berbeda dan karenanya Anda dapat memverifikasi data telah berubah. Ini berarti Anda dapat menggunakan algoritme yang sama persis untuk menguji apakah data telah dirusak. Linux (setidaknya Linux saat ini) menggunakan fungsi hash yang sama. Ini akan menanyakan kata sandi kepada Anda dan kemudian akan membuat hash kriptografis dari kata sandi yang Anda berikan dan melihat apakah hash ini cocok dengan kata sandi yang disimpan. Ini juga berarti bahwa kata sandi Anda tidak disimpan dalam teks biasa dan satu-satunya cara untuk memulihkan kata sandi yang hilang adalah dengan menjalankan uji kekerasan yang menghasilkan hash kata sandi setelah hash kata sandi hingga menemukan yang cocok dengan hash saat ini dan kemudian Anda memilikinya sandi.

Ada sedikit kerugian menggunakan hash ini yaitu hash memiliki ukuran yang terbatas misalnya hash MD5 adalah 128 bit. Ini berarti hash MD5 hanya memiliki 2^128 atau 340,282,366,920,938,463,463,374,607,431,768,211,456 kemungkinan kombinasi. Sekarang sementara itu adalah angka yang besar, artinya 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, semakin rendah kemungkinan tabrakan dan semakin lama waktu yang dibutuhkan untuk memaksa kata sandi, tetapi itu hanya mengevaluasi entropi dan berapa lama BISA ambil tetapi ada juga kemungkinan bahwa entri pertama yang mereka coba bisa menjadi entri yang cocok meskipun itu adalah tabrakan hash. Secara umum, Anda benar-benar lebih aman menggunakan hash yang memiliki ukuran kunci lebih besar karena, misalkan ini adalah MD5, kemungkinan kata sandi pertama cocok dengan 340,282,366,920,938,463,463,374,607,431,768,211,456 kemungkinan pertandingan sangat 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 tersebut adalah "fish" maka mereka akan mencoba fish1234 , [email protected]#$ dll) sebelum mereka mengandalkan kekerasan untuk memaksa kata sandi.

Cara mengetahui apakah sistem Anda menggunakan hash kriptografis untuk menyimpan kata sandi adalah dengan melihat /etc/shadow file (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 . Bidang kata sandi dapat dimulai dengan $num$ (yaitu hash md5 di bidang kata sandi terlihat seperti $1$01234567$b5lh2mHyD2PdJjFfALlEz1 di mana itu dimulai dengan $1$ ). Jika dimulai dengan ini, berarti sistem Anda menggunakan hash kriptografi. Format bidang kata sandi pada semua sistem modern adalah $id$salt$hash . Id menentukan jenis hash kriptografi yang Anda gunakan. Salt adalah string yang dihasilkan secara acak yang digabungkan dengan kunci (kata sandi teks biasa) untuk melindungi dari tabel yang telah dihitung sebelumnya dari 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, angka-angka itu berarti ini:

  • $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 digunakan yang ditawarkan oleh glibc. Saya tidak tahu seberapa kuat blowfish tetapi itu bukan bagian dari glibc dan karenanya hanya tersedia di distribusi tertentu yang telah menambahkannya. SHA-512 menghasilkan kunci 512 bit atau 2 ^ 512 kemungkinan kombinasi sebelum tabrakan dapat diharapkan dan dengan kata sandi yang cukup rumit, akan membutuhkan waktu yang sangat lama bagi sekelompok komputer untuk menemukan kata sandi sebenarnya atau tabrakan di hash .

Juga, jika Anda memiliki hash yang tidak dimulai dengan $num$ maka Anda menggunakan DES dan dibatasi hingga 8 karakter. Saya percaya sistem lama yang menggunakan DES, atau setidaknya beberapa dari mereka, mereka akan menggunakan kata sandi ukuran apa pun tetapi hanya menggunakan 8 karakter pertama. Ini berarti jika Anda menyetel kata sandi Anda ke mybigbigapple dan seseorang menggunakan kata sandi mybigbigcity maka mereka akan diizinkan masuk karena DES hanya akan menggunakan mybigbig dan apa pun setelah itu akan 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 saat itu menggunakan hash SHA-512. Saya tidak tahu seberapa jauh sebelum April 2008 tetapi saya yakin selama beberapa tahun jika tidak lebih, hampir semua distribusi menggunakan hash.

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

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

Sekarang panjang kunci atau kata sandi yang diizinkan untuk algoritme hashing apa pun bukanlah satu-satunya hal untuk menentukan ukuran kata sandi yang boleh Anda 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) berfungsi di Linux. crypt untuk waktu yang lama (karena setidaknya MD5 digunakan dan mungkin sebelumnya) telah memungkinkan pointer karakter untuk kunci yang sebenarnya. Ini berarti bahwa satu-satunya batasan pada berapa lama kunci yang akan diterima didasarkan pada berapa banyak RAM yang tersedia untuk program itu, tetapi kemungkinan besar, ini mungkin jauh lebih lama daripada kata sandi apa pun yang dapat diingat oleh siapa pun. (jutaan karakter?).

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

Referensi:

  • crypt(3) halaman manual (Ubuntu 14.04)

  • SHADOW(5) halaman manual (Ubuntu 14.04)

  • en.wikipedia.org/wiki/Crypt_(Unix)

  • en.wikipedia.org/wiki/Password_strength

  • en.wikipedia.org/wiki/Md5

  • en.wikipedia.org/wiki/Blowfish_(sandi)

  • en.wikipedia.org/wiki/SHA-1


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 ditentukan oleh sistem penyimpanan sandinya -- batas maksimum yang populer tampaknya adalah 8, 40, dan 255.


Bergantung pada bagaimana kata sandi disimpan, MD5, SHA1, BlowFish, dll. Menurut saya, tidak ada batasan kata sandi yang ditetapkan oleh metode penyimpanan itu sendiri.

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

Sepertinya ini pertanyaan yang lebih cocok untuk www.serverfault.com :)


Linux
  1. Apa itu POSIX? Mengapa Penting bagi Pengguna Linux/UNIX?

  2. Migrasi Unix ke Linux

  3. Linux – Bagaimana Cara Mengetahui Hard Disk Apa yang Ada di Sistem?

  1. Apa itu umask di UNIX/Linux

  2. Apa lokasi pemasangan konvensional untuk aplikasi di Linux?

  3. Apakah Anda memiliki pesan email baru di Linux/UNIX?

  1. Linux vs. Unix:Apa bedanya?

  2. Apa kata sandi default layar?

  3. Apa perbedaan antara Unix, Linux, BSD dan GNU?