Adakah alasan yang sah untuk menolak karakter dan membatasi panjang kata sandi?

39

Saya telah menemukan beberapa situs yang membatasi panjang kata sandi yang diizinkan dan / atau melarang karakter tertentu. Itu membatasi saya karena saya ingin memperluas dan memperpanjang ruang pencarian kata sandi saya. Itu juga memberi saya perasaan tidak nyaman bahwa mereka mungkin tidak hashing.

Adakah alasan yang baik untuk menetapkan panjang bagian atas atau mengecualikan karakter dalam kata sandi?

chris
sumber
26
Yakin! Itu membuatnya lebih mudah untuk memaksa-menebak-nebak kata sandi orang-orang! : P
FrustratedWithFormsDesigner
4
Apakah kita berbicara alasan "Teknis" yang valid atau alasan "Bisnis" yang valid?
Martin York
1
@ Martin: Saya berpikir teknis tetapi saya kira begitu.
chris
11
@JYelton Mengapa Anda peduli berapa panjang kata sandi asli? Hash akan selalu berukuran sama. Saya tentu berharap Anda tidak menyimpannya dalam plaintext ...
Pewpewarrows

Jawaban:

27

Tidak

Tidak ada alasan bagus .

EDIT: Saya tidak dapat membuktikan bahwa tidak ada alasan yang baik, karena seseorang tidak dapat membuktikan yang negatif. Saya bisa memikirkan tidak ada alasan yang baik untuk ini - seperti yang orang lain tunjukkan, hash akan menjadi ukuran yang sama terlepas dari ukuran input, dan menghilangkan karakter yang valid (dari konteks pertanyaan) hanya mengurangi ruang-negara. Jawabannya tampak jelas di wajahnya: tidak ada alasan yang bagus . Mungkin ada sejumlah besar alasan yang terdengar bagus atau yang tampaknya bagus, tetapi tidak. Jika ya, seseorang pasti sudah mempostingnya di sini, atau jika tidak ada di sini maka tentu saja di security.stackexchange.com, dan jawaban ini tidak akan terlalu banyak diputuskan.

Steven A. Lowe
sumber
3
Saya setuju, tetapi komentar yang dibuat Kissaki tentang pengodean valid. Beberapa tumpukan / programmer sepertinya tidak bisa mendapatkan pengkodean yang benar, karena mereka membatasi ASCII adalah hack murah untuk membuatnya bekerja.
edA-qa mort-ora-y
10
Bisakah Anda setidaknya mencoba menguraikan? Entah Anda tidak tahu ini karena suatu fakta, atau Anda memiliki alasan untuk percaya bahwa alasan umum / yang ada tidak valid. Memberi Anda keuntungan dari keraguan dan mengasumsikan yang terakhir, Anda harus menjelaskan mengapa alasan itu tidak valid.
Aaronaught
8
-1 - Saya dapat memikirkan beberapa alasan bagus untuk membatasi kata sandi pada rangkaian karakter yang diberikan. Demikian juga, harus mendukung kata sandi telepon sentuhan-nada serta yang Anda ketik melalui keyboard juga merupakan situasi yang harus Anda ingat.
rjzii
9
-1. Tidak ada justifikasi, hanya opini. Jika Anda akan membuat pernyataan selimut, cadangkan.
Michael K
4
Ini sekarang sedang dibahas di situs meta-diskusi kami : akan sangat membantu untuk memahami mengapa satu kata jawaban sangat populer dan apa yang dapat kita lakukan untuk meningkatkan kualitas jawaban seperti ini.
25

Membatasi panjang dapat menjadi ukuran untuk membatasi waktu eksekusi dari hashing serta membatasi bandwidth (dan kedua dari mereka adalah benar-benar pula marginal). Selain itu, tidak ada alasan yang bagus, terutama dari sudut pandang keamanan.

Orang bisa mengatakan: "Orang-orang akan melupakan kata sandi yang lebih lama dengan lebih mudah" - tetapi itu benar-benar pernyataan yang bodoh dan tidak langsung sampai pada intinya.

Mengenai karakter, selama Anda mengetahui potensi masalah penyandian dengan transfer data dan / atau migrasi di masa mendatang (mis. Anda akan beralih dari ASCII ke UTF-8 dalam 2 tahun) memungkinkan lebih banyak karakter hanya akan bagus untuk kekuatan kata sandi.

Kissaki
sumber
4
Mengingat overhead dari panjang protokol modern sama sekali tidak bisa menjadi alasan yang baik - selain batas tinggi seperti 1K hanya untuk mencegah serangan / omong kosong.
edA-qa mort-ora-y
3
Membatasi waktu eksekusi hashing umumnya buruk. Semakin lama yang dibutuhkan untuk menghitung hash, semakin lama dibutuhkan untuk memaksa.
tdammers
Meskipun itu benar itu selalu merupakan trade-off. Anda tidak ingin selalu menghitung hash terbaik yang paling lama. Oleh karena itu jabat tangan asimetris vs aliran data simetris di VPN dll.
Kissaki
17

Ya , ada alasan untuk karakter khusus.

Menolak karakter khusus lebih merupakan hal yang berguna, bukan terkait keamanan. Pertama-tama mereka mungkin hancur oleh masalah pengkodean. Kedua, bahkan jika Anda menjamin untuk selalu menggunakan pengkodean yang sama, masih ada masalah dengan perangkat input. Anda akan bergantung pada memiliki keyboard lengkap (yang menghilangkan sebagian besar perangkat seluler), dengan tata letak keyboard yang sama. Nanti berbeda tidak hanya antara bahasa, tetapi juga antara OS, tata letak untuk Windows, Linux dan OSX mungkin sedikit berbeda. Jadi saya melihat alasan untuk tidak mengizinkan password seperti: √Ω≈ç∫∞§…¬å∑±.

vartec
sumber
3
kecuali jika Anda memberikan kata sandi kepada pengguna Anda, yaitu, jika mereka yang memasukkan kata sandi itu sendiri maka jika mereka memilih untuk menggunakan beberapa simbol matematika yang aneh adalah benar-benar urusan mereka. sekarang saya setuju dengan masalah pengkodean di sini meskipun menemukan lebih dari alasan untuk lulus di bawah ketidakmampuan radar daripada alasan sebenarnya untuk mencegah karakter tertentu secara sewenang-wenang.
Newtopian
2
@ baru: ini bukan urusan mereka. Jika mereka menembak diri mereka sendiri, mereka masih akan menganggap masalah dengan aplikasi Anda dan memanggil dukungan Anda.
vartec
7
@Newtopian: Saya benci ketika saya, sebagai pengguna, dibatasi oleh alasan ketidaktahuan (seperti tidak dapat menentukan "+" di alamat email saya). Namun, kadang-kadang, ada baiknya untuk tidak memberi pengguna banyak tali untuk digantung. Saya pikir ini adalah kesempatan seperti itu. Ini bukan tentang "sewenang-wenang" yang mencegah karakter tertentu.
Zano
1
Jadi Anda menganjurkan orang-orang Yunani, Arab, Cina, dan lainnya menggunakan US-ASCII?
l0b0
@ l0: tidak, saya menganjurkan agar mereka menggunakan karakter normal, yang umum digunakan dalam bahasa mereka, daripada beberapa karakter khusus, yang mungkin tidak ada di beberapa tata letak.
vartec
13

Ada sedikit kontroversi di dunia keamanan beberapa tahun yang lalu ketika pelanggan Chase menemukan bahwa kata sandi mereka tidak peka terhadap huruf besar-kecil. Ternyata halaman web mereka hanya sebuah frontend untuk sistem backend OS / 400 yang berusia 30 tahun, yang memiliki keterbatasan teknis sehingga mengabaikan case. Memperbaiki ini tampaknya akan menelan biaya jutaan dolar.

Intinya adalah, mungkin ada alasan warisan mahal untuk tidak mengizinkan kata sandi lebih dari panjang tertentu.
(Perhatikan bahwa saya tidak memaafkan alasan ini ...)

BlueRaja - Danny Pflughoeft
sumber
1
sejauh ini adalah satu-satunya alasan bagus untuk membatasi kata sandi dengan cara apa pun ... hanya jika sistem yang mendasarinya akan memegang batasan tersebut sejak awal.
Newtopian
8

Sebagian besar bank, departemen TI, dll. Siapa yang memberlakukan pembatasan kata sandi maksimum tidak melakukannya karena alasan teknis. Mereka sangat menyadari bagaimana hashing kata sandi bekerja, dan bagaimana cara menyimpan kata sandi yang kompleks. Mereka memberlakukan batasan ini karena mengurangi jumlah panggilan untuk mendukung orang-orang yang lupa kata sandi mereka. Apakah ini alasan yang bagus untuk menerapkan batasan seperti itu? Dengan tidak bermaksud. Tetapi, bagaimanapun, itu adalah alasan utama.

Greg Jackson
sumber
1
Saya melihat pengurangan panggilan dukungan sebagai valid Business reason(Secara pribadi saya tidak benar-benar percaya bahwa ada korelasi)
Martin York
2
Nah, ada cara lain untuk mengatur ulang kata sandi, atau mengedukasi pengguna tentang cara memilih kata sandi yang cukup rumit yang mudah diingat. Kata sandi terakhir saya di tempat kerja adalah> 25 karakter, dan saya tidak kesulitan mengingatnya. Juga, mungkin, orang yang mengalami kesulitan mengingat kata sandi yang panjang masih akan memilih kata sandi yang lebih pendek, meskipun saya tidak tahu seberapa sering itu benar. Mengurangi panggilan dukungan memang tampak seperti alasan bisnis yang valid di permukaan, tetapi masih merupakan alasan buruk untuk membatasi panjang kata sandi.
Greg Jackson
1
Saya pikir (dan banyak orang) saya akan menemukan mengetik akurat (tidak hanya mengingat) 25 karakter tanpa melihat output hampir mustahil. Sejauh ini saya telah memperbaiki 5 kesalahan ketik saat mengetik ini!
Gerry
Yah, mengingat tidak sama dengan mengetik. Mengingat kata sandi yang panjang sangat mudah jika Anda tahu cara memilihnya; cukup pilih garis dari cerita atau drama, atau bagian dari puisi atau lirik lagu. Selama Anda mengubah satu atau dua hal di sana (salah eja yang disengaja, mengubah satu kata ke kata lain yang terdengar seperti itu atau berarti hal yang sama, dll), itu cukup mudah dan sangat aman. Benar, mengetiknya mungkin lebih sulit, tetapi tidak ada alasan bagi bank untuk memaksa Anda mengetik kurang dari 8/10/12 karakter.
Greg Jackson
coba ketikkan kata sandi 25-huruf pada perangkat seluler
Lie Ryan
7

Tidak semua perangkat input (berdasarkan perangkat keras) sering memiliki semua karakter yang dimiliki keyboard lengkap, atau juga demikian. Jika seseorang tidak menggunakan pengelola kata sandi, orang dapat menemukan dirinya dalam kesulitan memasukkan kata sandi tersebut, bukan? Dan Unicode masih jauh dari standar.

Benteng
sumber
1
Biasanya orang yang memasukkan kata sandi akan menggunakan perangkat keras yang sama (atau kelas perangkat keras) untuk membuatnya dan mengautentikasi mereka. Saya tidak melihat bagaimana ini merupakan argumen dalam membatasi set karakter atau panjangnya. Adapun Unicode, ketika membangun sisi-server (bagian otentikasi) mengapa Anda membatasi ukuran atau set karakter? sistem apa pun yang memerlukan kata sandi untuk masuk harus dapat mengontrol bagaimana kata sandi ini dimasukkan dalam sistem, jadi, jika Anda memerlukan unicode untuk klien Anda, maka jadilah itu!
Newtopian
@Newtopian Anda menganggap Anda tidak perlu berinteraksi dengan sistem lama, atau sistem di luar kendali Anda.
grahamparks
1
mereka meminta alasan yang bagus , ini bukan alasan yang bagus
2
@Jarrod - Tidak bisa memasukkan kata sandi bukan alasan yang bagus ?! Bagaimanapun, saya tidak melihat Anda datang dengan yang lebih baik (atau sama sekali).
Benteng
3
@ Bangun Anda seharusnya tidak menggunakan karakter itu jika Anda tahu Anda tidak bisa mengambilnya dari perangkat, itu tidak membuatnya menjadi alasan yang baik untuk membatasi mereka untuk semua orang, itu membuat alasan yang baik bagi Anda secara pribadi untuk tidak menggunakannya.
7

Adakah alasan yang baik untuk menetapkan panjang bagian atas atau tidak termasuk karakter dalam kata sandi?

Saya akan membuat perkiraan dan mengatakan bahwa beberapa pembatasan ini disebabkan oleh pemfilteran karakter di situs web mereka ( & < > #) untuk mencegah peretas. Sementara yang lain adalah ide-ide berkepala dingin yang keluar dari komite bos berambut runcing.

Saya telah menemukan sejumlah keputusan "keamanan" yang benar-benar bodoh (menurut saya). Sebagai contoh, satu perusahaan investasi besar menangani akun IRA saya dan juga pensiun saya. Dalam rangka untuk melakukan setiap kontak dengan pensiun mengharuskan saya untuk mengetikkan password saya di telepon (Anda tidak dapat mencapai mereka sebaliknya). Akun pialang / IRA saya menggunakan huruf (huruf besar dan kecil) serta beberapa tanda baca - tidak ada karakter ini yang muncul di pad nomor telepon. Jika Anda tidak dapat masuk dengan kata sandi melalui telepon, ini memungkinkan Anda mereset kata sandi akun pialang Anda ke sesuatu yang dapat Anda ketik di telepon.

Sistem penggajian saya (untuk perusahaan konsultan tempat saya bekerja) memerlukan angka, dan hanya angka - ini memungkinkan mereka menggunakan basis data yang sama apakah pengguna menelepon (saya belum pernah melakukan ini) atau menggunakan antarmuka web (saya hanya menggunakan ini) .

Yang sedang berkata, sekarang saatnya untuk mengubah kata sandi saya di kantor. Mereka memiliki batasan gila yang saya perkirakan akan memakan waktu sekitar setengah hari untuk menemukan kata sandi yang dapat diterima oleh sistem: setidaknya 2 huruf besar, setidaknya 2 huruf kecil, setidaknya 2 digit (yang tidak dapat +/- 1 dari kata sandi sebelumnya), setidaknya 2 karakter non-alfa / non-numerik, tidak dapat cocok dengan salah satu dari 24 kata sandi terakhir, tidak dapat berisi string apa pun (maju atau mundur) yang terdiri dari kata (panjang 3 atau lebih huruf) dalam bahasa Inggris ( juga beberapa bahasa lain saya tidak punya izin untuk tahu). Saya pikir panjang minimumnya adalah 10-11 karakter.

Tangurena
sumber
Yap, saya sudah melihat karakter-karakter itu di daftar no.
chris
5
Serangan sederhana: temukan catatan tempel di bawah keyboard karena tidak ada yang dapat mengingat kata sandi mereka.
JeffO
@ Jeff, itu benar. Jika saya meninggalkan notebook di rumah, kata sandinya terlalu rumit untuk diingat, jadi saya tidak dapat login. Dan pada sistem penggajian, saya meletakkan nama pengguna dan kata sandi sebagai bagian dari bookmark.
Tangurena
"tidak dapat berisi string apa pun (maju atau mundur) yang merupakan kata (panjang 3 atau lebih) dalam bahasa Inggris" Ini adalah salah satu yang membuat saya. Serangan kamus tidak efektif jika kata sandi berisi seluruh kata, tetapi lebih tepatnya jika seluruh kata sandi terdiri dari kata-kata lengkap ... Yah, benar-benar satu kata lengkap atau frase yang sangat umum. Kata sandi yang paling aman yang praktis untuk digunakan tanpa menuliskannya adalah frasa sandi yang berasal dari buku, puisi, lirik lagu, dll. - ubah beberapa huruf menjadi angka, salah eja kata-kata, dan gunakan huruf kapital secara tak terduga dan tidak ada yang akan memecahkan kata sandi itu.
Greg Jackson
1
Pemfilteran karakter adalah tanda pasti dari kode sampah yang tidak teruji di latar belakang. Pengembang perlu belajar untuk melepaskan diri dari string.
l0b0
5

Salah satu alasan untuk membatasi karakter adalah karena cara memasukkan kata sandi.

Beberapa bank misalnya, dengan situs web Internet Banking mereka, meminta karakter tertentu dari kata sandi, dan Anda memilih karakter yang sesuai melalui kotak drop-down.

Mereka melakukan ini, mungkin, sehingga keyloggers tidak dapat mendeteksi penekanan tombol, dan dengan demikian mengetahui [karakter dari] kata sandi Anda. Sementara saya tahu bahwa ada banyak cara lain langkah-langkah seperti itu bisa dielakkan misalnya screencapture; masih efektif terhadap keyloggers.

Jika mereka harus mengizinkan semua karakter, maka panjang kotak dropdown akan menjadi rumit, dan juga memungkinkan untuk kebingungan antara karakter yang mirip.

Megan Walker
sumber
1
Tentunya orang (teknis) hanya akan memasukkan surat itu?
Gerry
@Gerry - itu adalah perilaku spesifik peramban alih-alih standar absolut dan itu juga bergantung pada pengetahuan pengguna untuk membuatnya bisa diterapkan.
Jon Hopkins
Bank saya menggunakan applet popup keyboard untuk alasan yang sama. Tapi itu terlalu sulit untuk digunakan dan mendapat banyak kritik karena tidak dapat diakses (tidak bekerja untuk pembaca layar, input alternatif dll)
jqa
1
@ Jon - Saya memang mengatakan orang teknis, dan saya tidak tahu ada browser windows yang tidak menerapkan setidaknya pencocokan karakter pertama, karena itu adalah perilaku Windows standar - tidak dapat berbicara untuk Mac dan * nix
Gerry
1
@Gerry Peramban di ponsel Android saya tidak mengizinkan ini. Saya berharap itu sama untuk banyak perangkat seluler.
RoundTower
2

Menolak karakter khusus seperti tab akan valid. Anda dapat masuk atau mengubah kata sandi dengan karakter tab dalam mode teks tetapi Anda tidak dapat menggunakannya di GUI atau lingkungan web. Sebuah backslash char juga akan menghadirkan beberapa masalah lintas platform.

btw kata sandi yang panjang bukan kata sandi - itu kata sandi. Pengguna rata-rata Anda tidak dapat mengingat 2Z8d!% G # x tetapi mereka dapat mengingat 'nama hewan peliharaan saya adalah anjing fido'. Teks yang lebih panjang lebih sulit dipecahkan melalui brute force dan jauh lebih kecil kemungkinannya untuk dituliskan pada catatan yang terpasang di layar.

jqa
sumber
Lihat juga xkcd.com/936
sergut
0

Ketika orang mengetik mereka membuat kesalahan, yang disebut "kesalahan ketik". Biasanya orang melihat kesalahan mereka dan memperbaikinya. Untuk entri kata sandi biasanya Anda tidak dapat melihat apa yang Anda ketikkan dan karena itu Anda tidak dapat memperbaiki kesalahan ketik Anda. Anda membuat kesalahan tanpa menyadarinya, mengirimkan kata sandi Anda, dan itu kembali sebagai "kata sandi tidak valid". Lalu kamu coba lagi. Lalu kamu coba lagi.

Anda dapat menganggapnya sebagai "3 kesalahan kecil kecil dan kemudian Anda tidak dapat dibedakan dari serangan brute force". Bagaimana sistem bertahan melawan serangan brute force? Respons eksplisit " Terlalu banyak upaya, pergilah, Anda tidak akan dapat masuk meskipun Anda telah melakukannya dengan benar "? Meningkat secara eksponensial pada entri kata sandi yang mengarah ke batas waktu browser ketika penundaan terlalu lama, sehingga mustahil untuk mencoba masuk lagi? Pendekatannya bervariasi, tetapi selalu ada konsekuensi dalam sistem yang dirancang dengan baik.

Anda dapat menganggapnya sebagai "3 kesalahan ketik kecil kecil dan kemudian Anda mendapatkan semacam penolakan layanan".

Ketika panjang kata sandi meningkatkan risiko kesalahan ketik (dan karena itu risiko menolak akses orang yang berwenang) meningkat. Lebih dari 20 karakter akan sering salah ketik (kecuali jika pengguna cerdas / malas dan menyimpan kata sandi mereka di suatu tempat sehingga mereka dapat "menyalin dan menempel" tanpa khawatir tentang kesalahan ketik, seperti file teks biasa di desktop yang disebut " kata sandi ") .txt ").

Brendan
sumber