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 :)