it-swarm-id.com

Berapa lama panjang kata sandi maksimum?

Panjang kata sandi minimum yang disarankan adalah sekitar 8 karakter, jadi adakah standar/panjang kata sandi maksimum yang disarankan?

60
Mohamed

Bruce Schneier memiliki beberapa artikel menarik tentang kebijakan kata sandi.

Kata sandi dunia nyata - meliputi panjang kata sandi, kompleksitas dan kata sandi umum.

Saran kata sandi - beberapa hal yang harus dan tidak boleh dilakukan termasuk:

  • LAKUKAN menggunakan pengelola kata sandi
  • Sering-seringlah mengganti kata sandi. Saya mengganti milik saya setiap enam bulan ...
  • Jangan menggunakan kembali kata sandi lama.
  • JANGAN menggunakan kata sandi yang terdiri dari kata-kata kamus, ulang tahun, nama keluarga dan hewan peliharaan, alamat, atau informasi pribadi lainnya.
  • JANGAN akses akun yang dilindungi kata sandi melalui jaringan Wi-Fi terbuka - atau jaringan lain yang tidak Anda percayai - kecuali situs diamankan melalui https.

dan masih banyak lagi

Mengubah kata sandi - diskusi terperinci tentang seberapa sering Anda harus berubah berdasarkan penggunaan dan lingkungan ancaman.

15

Jawaban untuk yang ini, seperti banyak pertanyaan di Keamanan adalah "itu tergantung".

Ada beberapa faktor yang perlu dipertimbangkan ketika melihat panjang kata sandi. Pertama adalah beberapa hal yang dirancang untuk dilindungi oleh kata sandi panjang, yang umumnya merupakan kekuatan serangan tebak kata sandi (online atau offline).

Untuk menebak kata sandi online, jika Anda memiliki kebijakan penguncian yang relatif agresif (misalnya, 3 upaya yang salah dan kemudian penguncian yang tidak ditentukan) maka serangan terhadap satu akun tidak akan berhasil kecuali penyerang memiliki ide bagus tentang kata sandi itu. akan menjadi.

Jika Anda melihat serangan terhadap populasi besar pengguna dengan kebijakan penguncian yang sama, di mana penyerang dapat mencari tahu nama pengguna (misalnya forum web), maka elemen yang paling penting mungkin adalah kata sandi yang digunakan tidak termasuk yang benar-benar umum.

Selain itu, satu hal yang harus diperhatikan di sisi penguncian akun, adalah bahwa kebijakan agresif di sini untuk aplikasi on-line dapat membuat serangan Denial of service cukup mudah, tanpa tindakan pencegahan tambahan.

Jika ada risiko offline brute force maka kekuatan kata sandi menjadi lebih penting. masalahnya di sini adalah peningkatan kekuatan pemrosesan dan metode serangan menjadikan ini target yang bergerak dalam hal kekuatan. Secara realistis saya akan mengatakan bahwa Anda akan melihat lebih dari 10 karakter dan penegakan kuat bahwa kata sandi tidak ada dalam daftar kamus umum (seperti @andy mengatakan frasa sandi adalah pilihan yang baik di sini).

Faktor lain yang perlu dipertimbangkan di sini adalah basis pengguna Anda, dan bagaimana aplikasi digunakan. Dalam beberapa kasus, saya akan mengatakan bahwa persyaratan kata sandi yang sangat kuat sebenarnya dapat menyebabkan aplikasi yang kurang aman. Jika Anda memiliki aplikasi di mana pengguna berada di tempat yang sama (misalnya, banyak aplikasi perusahaan) dan Anda membuat kebijakan kata sandi sangat "kuat" (baik dalam hal panjang kata sandi dan persyaratan rotasi), maka kemungkinan pengguna akan mulai menuliskan kata sandi mereka, yang mungkin mengalahkan salah satu tujuan keamanan untuk aplikasi itu.

Satu sumber yang bagus dari banyak informasi tentang ini adalah sebuah buku berjudul Otentikasi: Dari Kata Sandi ke Kunci Publik

20
Rory McCune

Sejauh ini jawaban yang baik, tetapi saya ingin menyarankan kemungkinan lain: frasa sandi . Seperti StackOverflow milik Jeff Atwood sendiri, jika Anda tidak dilarang oleh batasan teknis, Anda dapat mempertimbangkan untuk mengizinkan dan menyarankan frasa sandi. Anda dapat menerapkannya, tetapi itu mungkin akan mengasingkan beberapa pengguna di sebagian besar situs. Karena panjangnya, mereka bisa secara signifikan lebih sulit untuk dipecahkan, dan mereka juga bisa lebih mudah diingat daripada kata sandi seperti "A1lUrB @ se!" atau hal-hal seperti itu.

19
Andy

Jika Anda akan mem-hashing kata sandi, mengapa menetapkan batas atas?

Ini tidak seperti Anda perlu khawatir tentang mencapai batas maksimum karakter pada bidang teks, berbasis web atau lainnya. Jadi Anda bisa saja menetapkan maksimum beberapa ratus karakter hanya untuk membatasi beberapa syarat batas bidang teks apa pun yang Anda gunakan.

Tentu saja, jika Anda berbicara tentang membuat kata sandi yang akan Anda coba gunakan di banyak situs, jangan pikirkan; tidak ada seorang pun di luar sana yang tampaknya setuju. Lebih buruk lagi, saya telah menemukan situs yang memiliki batas karakter maksimum yang berbeda pada bidang input yang berbeda, jadi untuk masuk Anda harus terlebih dahulu mengetiknya salah sebelum diberi bidang yang berbeda yang memungkinkan lebih banyak karakter. Tentu saja, jika setiap situs hanya membiarkannya menjadi kemampuan minimum yang diharapkan dari bidang teks biasa tanpa mencoba untuk membatasinya secara artifisial, maka sekitar 2k karakter akan diizinkan, dan Anda tidak perlu khawatir tentang ini sama sekali.

Diedit untuk menambahkan: sesuatu yang disebutkan secara sepintas di sini membuat saya berhenti sejenak:

anda harus mengukur kerja hashing ke apa yang tersedia dan masuk akal di server atau perangkat Anda. Sebagai contoh, kami memiliki sedikit penolakan bug layanan dalam Wacana di mana kami mengizinkan orang untuk memasukkan hingga 20.000 kata sandi karakter dalam formulir login

Oleh karena itu, mungkin layak untuk menetapkan batasan yang masuk akal baik pada pengaturan maupun percobaan kata sandi jika Anda melakukan hashing dengan cara yang semaksimal mungkin secara komputasi. Beberapa ratus karakter mungkin masih menjaga hal-hal agar tidak meledak terlalu banyak, sementara masih jauh lebih dari yang mungkin pernah dicoba oleh pengguna.

16
Doug Kavendek

Seharusnya tidak ada panjang kata sandi maksimum - jika pengguna menerima untuk menggunakan kata sandi yang sangat panjang, maka ia harus dipuji, tidak diblokir.

Perangkat lunak seperti apa adanya, beberapa sistem akan memberlakukan batasan ukuran kata sandi, terutama karena masalah GUI, pemrograman yang buruk, atau kompatibilitas dengan sistem yang jauh lebih tua. Misalnya, sistem Unix lama menggunakan proses hashing kata sandi yang hanya menggunakan delapan karakter pertama, dan mengabaikan semua yang lain. Demikian pula, sistem Windows lama memiliki batas internal hingga 14 karakter. Oleh karena itu, yang terbaik adalah jika kata sandi, ketika dipotong ke 14 karakter pertamanya, masih "kuat".

Namun, satu-satunya batasan ukuran kata sandi maksimal adalah kesabaran pengguna. Tidak ada gunanya menegakkan apa pun di sini.

8
Thomas Pornin

Minimal umum saat ini adalah 12 karakter, yang hanya cukup besar untuk mencegah brute-force cracking oleh organisasi yang didanai cukup baik dalam jumlah waktu yang wajar.

Sejauh maksimum panjang; berikut adalah beberapa pemikiran: kata sandi yang lebih panjang dari beberapa ratus byte hampir pasti berbahaya (mis. upaya injeksi SQL). Juga perhatikan bahwa jika Anda hashing kata sandi Anda (dan jika tidak, Anda harus memulai dari awal), maka kata sandi lebih lama daripada hasil hash Anda tidak menambahkan entropi lagi. Perhatikan bahwa dengan "lebih lama" yang saya maksud adalah jumlah bit yang sama di keyspace Anda, bukan panjang karakter yang sama. Jadi, sementara membiarkan kata sandi lebih panjang dari panjang hash seharusnya diizinkan sebagai titik kenyamanan, tidak masuk akal dari sudut pandang matematika untuk hal seperti itu --- wajib .

Membutuhkan case campuran menggandakan ukuran alfabet Anda, yang menghasilkan pengembalian kompleksitas sangat besar dan mungkin harus diminta. Membutuhkan karakter numerik menambahkan mungkin 20% lebih banyak ke alfabet Anda, yang tidak terlalu besar, dan membutuhkan simbol menambahkan mungkin 16% hingga 40% lebih banyak di atasnya (tergantung pada simbol apa yang Anda hitung), dan sekali lagi, tidak pengembalian yang cukup signifikan, tetapi tentunya tidak boleh dianulir.

3
tylerl

Saya pribadi akan menggunakan generator kata sandi (seperti lastpass.com atau 1 kata sandi) untuk menghasilkan dan menggunakan kata sandi minimal 8 karakter dan maks 32 karakter (karena tidak semua situs mendukung panjang kata sandi lebih dari 10 atau 15) dan menggunakan satu kata sandi utama untuk otentikasi. (Sekali lagi ini bergantung pada kepercayaan Anda pada situs-situs seperti lastpass.com) atau utilitas kata sandi terenkripsi sisi klien untuk Mac dan Windows).

Tidak disarankan menggunakan seperangkat kata sandi untuk semua situs. Forum khususnya, email saya kata sandi dalam teks biasa. Beberapa situs memiliki fitur untuk mengirim kata sandi biasa jika Anda menggunakan fitur "Lupa Kata Sandi".

Biasanya, pembatasan diatur di server (untuk situs web). Kita harus menyalahkan server yang kita gunakan untuk tidak menetapkan batasan pada kata sandi pengguna.

Singkatnya, gunakan kata sandi yang berbeda setiap kali. Jika Anda memiliki lebih dari 10-15 kata sandi untuk diingat, saatnya untuk mulai menggunakan pengelola kata sandi "aman". (Sebagai catatan, pengelola kata sandi firefox sama sekali tidak aman)

2
Sairam

16 karakter.

Ini memberi Anda 96 bit menurut Wikipedia , yang jauh melampaui apa pun yang dapat dipecahkan menurut artikel itu.

Secara pribadi saya menggunakan program kata sandi untuk ponsel saya, dikombinasikan dengan fitur Kata Sandi Utama Firefox. Kata sandi master saya memiliki lebih dari 25 karakter dan didasarkan pada Dice Ware, yang membuatnya mudah diingat. Hampir semua kata sandi saya dibuat ulang secara acak, karena Firefox tetap mengingatnya untuk saya.

2

Saya berada di klien di mana petugas keamanan itu gila. Dia ingin menggunakan setiap kebijakan kompleksitas kata sandi yang dimungkinkan. (Novell eDirectory memiliki BANYAK masalah kompleksitas kata sandi, dan ia ingin menggunakan plugin tambahan untuk menambahkan lebih banyak!)

Sampai-sampai tidak mungkin menghasilkan kata sandi yang dapat diingat. Saya mengharapkan massa yang tidak dicuci untuk menemukannya, dan tar dan bulu dia setelah diimplementasikan.

Dengan kata lain, Anda bisa mengambilnya terlalu jauh.

1
geoffc

Nasihat

Pada tahun 2019, keacakan yang diperlukan untuk kata sandi/passphrase yang aman adalah:

  • 12 karakter yang dihasilkan secara acak dengan huruf kecil, huruf besar, dan angka; atau
  • 6 kata yang dihasilkan secara acak. (Jangan tidak pilih sendiri kata-kata! Itu menciptakan pola.)

Tidak mungkin untuk mengingat dua puluh dari mereka, jadi hanya menghafal beberapa yang penting yang Anda gunakan secara teratur. Misalnya, Anda dapat mengingat satu untuk akun email Anda, dan satu untuk manajer kata sandi Anda. Untuk yang lainnya, simpan kata sandi dalam pengelola kata sandi.

Relevan: Apakah pengguna rata-rata benar-benar membutuhkan pengelola kata sandi?
Jawaban yang terpilih adalah "ya".

Relevan: Seberapa amankah pengelola kata sandi?
Dari jawaban teratas, oleh paj28 (penekanan saya):

bagi kebanyakan orang risiko ini dapat diterima, dan saya akan menyarankan bahwa pendekatan menggunakan pengelola kata sandi [untuk] sebagian besar kata sandi Anda lebih baik daripada menggunakan kata sandi yang sama di mana-mana - yang tampaknya menjadi alternatif utama. Tetapi saya tidak akan menyimpan setiap kata sandi di sana; upayakan untuk mengingat yang paling penting, seperti perbankan online.

Pengelola kata sandi yang umum disebutkan adalah KeePass (X), 1Password, dan LastPass. Yang ada di browser Anda tergantung: ketika Anda menggunakan Firefox dengan kata sandi utama, itu hampir sama baiknya dengan menggunakan yang khusus. Jika browser Anda tidak memerlukan kata sandi sebelum Anda dapat mengakses kata sandi, itu tidak terlalu aman (tetapi detailnya bergantung pada implementasi yang tepat, yang merupakan keseluruhan topik dengan sendirinya).

Pengembang

Saat Anda membangun aplikasi, berikut adalah beberapa pertimbangan berguna:

Bagaimana cara mengamankan kata sandi hash?
Ringkasan: gunakan Scrypt atau Argon2, selambat yang Anda bisa. Jika itu tidak tersedia, Bcrypt atau PBKDF2 adalah alternatif yang dapat diterima. Tambahkan keduanya garam dan lada .

Haruskah saya memiliki panjang kata sandi maksimum?
Ringkasan: hanya terhadap serangan DoS, jadi beberapa kilobyte atau lebih.

Menerapkan hashing kata sandi sisi klien
Pengungkapan penuh: Saya menautkan ke jawaban saya sendiri karena saya pikir itu yang paling lengkap. Pastikan juga membaca pendapat orang lain.

Detail

Anda mungkin bertanya-tanya "mengapa kode PIN saya hanya 4 digit? Cukup untuk menjaga keamanan rekening bank saya!" Ada pertanyaan yang didedikasikan untuk ini , tetapi ringkasannya adalah dua hal: Anda memerlukan kartu bank Anda untuk akses (faktor kedua otentikasi), dan chip mengunci Anda setelah 3 upaya.

Situs web jauh lebih lunak, sehingga penyerang dapat melakukan lebih banyak upaya. Selain itu, situs web diharapkan untuk diretas cepat atau lambat, setelah itu penyerang dapat memecahkan kata sandi hash Anda secara efisien.

Sebagian besar situs web menyimpan kata sandi Anda dengan semacam enkripsi satu arah, yang disebut hashing. Tidak ada kunci dekripsi. Dengan menerapkan algoritma hashing yang sama lagi, sistem dapat membandingkan kata sandi (yang baru saja Anda ketik) dengan yang disimpan (dari database) dan tahu apakah mereka sama. Tetapi hanya dengan database, Anda tidak dapat mengetahui kata sandi asli.

Di masa lalu, metode hashing cepat adalah umum. Ini juga berarti bahwa seorang penyerang, yang telah memperoleh hash, dapat meminta komputernya melakukan milyaran upaya per detik pada komputer game biasa. Dengan asumsi sepuluh miliar upaya per detik, kata sandi acak 11 karakter bertahan selama sekitar 165 tahun. Dan itu hanya satu gamer, bayangkan Anda memiliki akses ke data perusahaan yang diminati beberapa pesaing asing: dengan kekuatan komputasi ekstra, 165 tahun itu tiba-tiba berubah menjadi beberapa bulan cracking. Dan tahun depan, akan ada CPU baru yang lebih cepat dengan harga yang sama, mengurangi kekuatan lagi. Itulah sebabnya dua belas karakter adalah minimum untuk kata sandi yang kuat: bahwa satu karakter tambahan menambahkan secara harfiah sepuluh ribu tahun ke waktu cracking (165 tahun versus 10 230 tahun), dan aman untuk masa mendatang.

Omong-omong, menghitung kekuatan kata sandi itu mudah: variations^length / guesses_per_time. Variasi adalah berapa banyak elemen unik yang ada dan panjangnya adalah jumlah elemen yang Anda gunakan. Jadi, jika Anda hanya menggunakan digit, ada sepuluh variasi (0 hingga 9). Jika Anda menggunakan kata-kata dari kamus, namun banyak kata yang ada di kamus. Kemudian, guesses_per_time adalah seberapa cepat Anda menganggap penyerang dapat memecahkan. Nilai yang masuk akal adalah puluhan miliar per detik.
Contoh: 10^14/10e9/3600 Menunjukkan kepada Anda berapa jam yang diperlukan untuk memecahkan kode 14 digit, ketika Anda mengasumsikan 10e9 upaya per detik (ada 3600 detik dalam satu jam, 60 * 60).

Beberapa situs web cerdas dan menggunakan algoritma hashing lambat. Kami tidak dapat menentukan yang mana, karena server melakukan hashing, jadi Anda tidak dapat melihatnya dari luar. Jika ini masalahnya, maka tebakan tunggal akan membutuhkan waktu lebih lama untuk dihitung (untuk server, tetapi juga untuk penyerang). Dalam kasus yang masuk akal, penyerang yang didanai dengan baik hanya dapat melakukan lima puluh ribu tebakan per detik, dalam hal ini kata sandi 9 karakter sudah cukup. Tetapi 9 karakter acak sudah sangat sulit untuk dihafal untuk banyak akun yang berbeda, terutama jika Anda tidak menggunakannya secara teratur. Oleh karena itu, pengelola kata sandi diperlukan untuk benar-benar memiliki keamanan dalam kata sandi.

Tetapi apakah benar-benar perlu memiliki kata sandi yang unik? Mengapa tidak menggunakan kembali kata sandi yang kuat di beberapa situs yang berbeda? Karena situs web sering dikompromikan. Ini bukan kejadian sehari-hari, tetapi coba masukkan alamat email Anda di haveibeenpwned.com : ini pasti sering terjadi. Inilah cara akun paling sering diretas: penggunaan kembali kata sandi. Kompromi pengelola kata sandi jauh lebih jarang.

0
Luc