Kutipan untuk ketidaksenangan kata sandi unik global


20

Saya memiliki ketidaksepakatan dengan seseorang (klien) tentang proses identifikasi / otentikasi pengguna untuk suatu sistem. Inti dari itu adalah bahwa mereka ingin setiap pengguna memiliki kata sandi unik global (yaitu tidak ada dua pengguna yang dapat memiliki kata sandi yang sama). Saya telah mencabut semua argumen yang jelas menentang ini (ini adalah kerentanan keamanan, ini membingungkan identifikasi dengan otentikasi, tidak ada gunanya, dll.) Tetapi mereka bersikeras bahwa tidak ada yang salah dengan pendekatan ini.

Saya telah melakukan berbagai pencarian google untuk mencari pendapat otoritatif (atau semi-otoritatif, atau bahkan hanya independen) tentang hal ini, tetapi tidak dapat menemukan (terutama itu hanya kecerobohan yang jelas sehingga sepertinya tidak layak diperingatkan, karena Sejauh yang saya tahu). Adakah yang bisa mengarahkan saya ke pendapat independen semacam itu?

[EDIT]
Terima kasih atas semua jawaban Anda, tetapi saya sudah memahami masalah dengan pendekatan / persyaratan yang diusulkan ini, dan bahkan dapat menjelaskannya kepada klien, tetapi klien tidak akan menerimanya, maka permintaan saya untuk sumber independen dan / atau otoritatif .

Saya juga menemukan artikel Daily WTF, tetapi menderita masalah yang ditunjukkan oleh Jon Hopkins - bahwa ini adalah WTF yang terbukti dengan sendirinya sehingga sepertinya tidak layak untuk menjelaskan alasannya .

Dan ya, kata sandi akan menjadi asin dan hash. Dalam hal mana keunikan global mungkin sulit untuk dipastikan, tetapi itu tidak menyelesaikan masalah saya - itu hanya berarti bahwa saya memiliki persyaratan bahwa klien tidak mau mengalah, itu tidak hanya keliru, tetapi juga sulit untuk dipastikan. melaksanakan. Dan jika saya berada dalam posisi untuk mengatakan "Saya tidak mengindahkan salting dan hashing", maka saya akan berada dalam posisi untuk mengatakan "Saya tidak menerapkan kata sandi yang unik secara global".

Setiap petunjuk ke sumber independen dan / atau otoritatif mengapa ini adalah ide yang buruk masih diterima dengan penuh syukur ...
[/ EDIT]


2
Ini adalah ide yang cukup aneh sehingga saya pikir Anda akan beruntung menemukan banyak tulisan tentang itu sama sekali. Dalam benak saya, hal itu sangat cacat sehingga tidak dianggap cukup serius untuk ditulis oleh para pakar keamanan.
Jon Hopkins

3
Saya benar-benar berharap Anda tidak menyimpan kata sandi plaintext, tetapi lebih asin dan hash. Jika mereka diasinkan dan di-hash, akan sulit untuk memastikan keunikan global. Jika tidak, maka saya tidak peduli dengan keamanan Anda, karena saya sudah tahu itu buruk.
David Thornley

1
Sekalipun ada kerentanan keamanan, tidak bisakah Anda menolak kata sandi hanya jika gagal untuk hash secara unik?
Robert Harvey

Posting edit, saya mengulangi jawaban saya - ini bukan "tidak akan" dan "tidak bisa" (karena cara kata sandi perlu disimpan) - jadi alih-alih menjelaskan mengapa itu buruk bagi seseorang yang tidak Anda tidak tertarik untuk kembali ke proses dan memahami mengapa klien merasa bahwa ini perlu di tempat pertama.
Murph

2
Menarik bahwa mereka cukup mempercayai Anda untuk mendesain sistem mereka, tetapi tidak cukup untuk memberi tahu mereka tentang desain sistem mereka.
Gary Rowe

Jawaban:


24

Setiap kali klien mencoba membuat kata sandi yang sudah ada, ia menerima umpan balik bahwa beberapa pengguna sudah menggunakan kata sandi itu, biasanya merupakan pelanggaran terhadap perjanjian privasi.

Selain itu, nama pengguna jauh lebih mudah ditebak (dan jika ada forum, Anda bisa menemukan banyak nama pengguna di sana) dan Anda mengisyaratkan cara pengguna untuk meretas situs web.

Seharusnya ada beberapa halaman di internet di suatu tempat yang menggambarkan bagian pelanggaran perjanjian privasi, selain itu hanya akal sehat: mereka pada dasarnya akan memberi seseorang kunci dan daftar alamat rumah.

EDIT: Tidak dekat dengan otoritas, tetapi mungkin membantu setelah Anda menjelaskan kepada mereka apa yang dimaksud WTF: http://thedailywtf.com/Articles/Really_Unique_Passwords.aspx


+1 Juga, sebagian besar skema otentikasi memungkinkan Anda mencoba nama pengguna sebanyak yang Anda inginkan, sementara hanya memberi Anda tiga kali percobaan dengan kata sandi.
Michael K

1
WTF itu untuk menggunakan kata sandi sebagai kunci utama / asing lebih dari apa pun. Yah mungkin juga untuk kata sandi teks biasa.
Murph

2
+1: Anda seharusnya tidak pernah membiarkan pengguna lain memiliki kata sandi yang sama. Bicara tentang cacat keamanan besar-besaran ... Anda dapat menjalankan serangan kata sandi brute force dengan mengubah kata sandi Anda berulang kali. Itu akan terbang di bawah radar banyak sistem pemantauan.
Satanicpuppy

Sebenarnya, dalam beberapa konteks memiliki satu bidang untuk kredensial masuk akan masuk akal, jika kata sandi diminta untuk dipilih sehingga beberapa bagian tertentu [misalnya huruf pertama] unik. Jika seseorang memiliki 26 atau lebih sedikit pengguna, misalnya, dapat dikatakan bahwa setiap pengguna harus memilih kata sandi yang dimulai dengan huruf yang berbeda. Sistem seperti itu akan setara dengan memiliki 26 nama pengguna karakter tunggal yang berbeda, tetapi akan menghindari keharusan untuk menekan 'tab' atau 'masukkan' antara nama dan kata sandi.
supercat

10

Praktik terbaik menghalangi memenuhi persyaratan:

Anda tidak dapat melakukan ini karena Anda tidak tahu apa kata sandinya sehingga Anda tidak dapat membandingkannya karena semua yang Anda simpan adalah hash kata sandi dan garam (yang dapat Anda simpan di sebelah kata sandi hash). Ini adalah praktik terbaik, jadi itulah yang Anda lakukan. Selesai

Sunting lagi: Doh! Hindsight mudah - Anda masih bisa memeriksa keunikan karena (tentu saja) Anda punya garam ... tembak saja saya sekarang ... tentu saja Anda tidak perlu menyebutkan detail ini kepada klien.


FWIW, ini tidak sebodoh yang Anda pikirkan - tujuannya adalah untuk mencegah kelompok pengguna menyetujui dan berbagi kata sandi yang sama, yang orang akan lakukan dengan keyakinan bahwa itu akan membuat hidup mereka lebih mudah.

Jika diterapkan dengan persyaratan untuk mengubah kata sandi secara teratur dan kendala yang mencegah orang untuk menggunakan kembali kata sandi saat ini atau yang sebelumnya digunakan (sama sekali, pernah) dan persyaratan "kekuatan" yang masuk akal (atau setidaknya kamus yang sudah dimuat "diblokir") "kata sandi) Anda akan sampai pada titik, cukup cepat, di mana kemungkinannya tidak menguntungkan peretasan.


Oke, jawaban saya awalnya dimulai dengan:

Tidak ada yang salah dengan ini diberikan beberapa ketentuan - sebagian besar adalah bahwa saya menjadi tebal ...

Kelihatannya humor yang tidak pantas - intinya adalah bahwa jika Anda tidak memiliki kendala unik secara global, Anda menciptakan peluang berbeda, mungkin kurang berbahaya - Saya tidak tahu.


4
+1 untuk menawarkan beberapa wawasan mengapa seseorang mungkin meminta kata sandi unik
Michael Haren

3
Tetapi ini adalah kerentanan keamanan - jika Anda adalah pengguna, masukkan kata sandi baru dan Anda diberitahu itu tidak valid, Anda sekarang tahu setidaknya satu pengguna memiliki kata sandi itu. Gabungkan bahwa dengan faktor-faktor lain (ucapkan bahasa tempat kata itu berada, atau konteks / makna yang mungkin dimiliki seseorang) dan Anda telah menemukan sejumlah opsi yang sangat terbatas yang dapat dengan mudah jatuh ke serangan brute force - bahkan berpotensi manual satu.
Jon Hopkins

Erm, saya tidak mengatakan itu bukan masalah potensial, saya mengatakan bahwa itu tidak sepenuhnya bodoh seperti yang disarankan dalam pertanyaan karena mencegah beberapa pengguna memiliki kata sandi yang sama (yang memang terjadi) dan yang lebih buruk jika kata sandi itu lemah sejak awal. Mengizinkan pengguna mengakses sistem sama sekali adalah kerentanan keamanan ... tetapi yang harus kami hadapi dan karenanya semuanya adalah kompromi.
Murph

+1 untuk menunjukkan bahwa Anda tidak dapat melakukannya jika Anda menangani kata sandi dengan benar.
David Thornley

Bisakah kami juga mencatat bahwa jawaban saya adalah bahwa Anda tidak dapat menguji keunikan karena Anda harus memilah-milah kata sandi? Jadi, jika saya punya downvote untuk menyarankan bahwa saya ingin tahu mengapa?
Murph

10

Menegakkan kata sandi yang tidak dapat diulang akan membocorkan informasi

Bagaimana? Karena setiap kali seorang cracker mencoba membuat pengguna baru dengan kata sandi sederhana yang dijawab oleh sistem Anda dengan "Tidak, tidak dapat memiliki kata sandi itu", cracker itu berkata "Goody, itu satu untuk daftar".

Membocorkan informasi tentang keamanan Anda umumnya adalah hal yang buruk. OK, pihak ketiga mengetahui algoritma itu baik-baik saja (perlu peer review) tetapi memungkinkan cracker yang berdedikasi untuk menyimpulkan kunci - buruk, benar-benar buruk.

Sumber daya yang menjelaskan kebijakan manajemen kata sandi yang baik dan buruk

Baca artikel ini oleh pakar keamanan Bruce Schneier untuk diskusi mendalam tentang kekuatan kata sandi.

Baca PDF ini oleh peneliti keamanan Philip Inglesant & M. Angela Sasse untuk diskusi mendalam tentang "Biaya Sejati dari Kebijakan Kata Sandi yang Tidak Dapat Digunakan". Mengutip dari kesimpulan:

Terhadap pandangan dunia bahwa "jika hanya [pengguna] memahami bahaya, mereka akan berperilaku berbeda" [12], kami berpendapat bahwa "jika hanya manajer keamanan yang memahami biaya sebenarnya untuk pengguna dan organisasi, mereka akan menetapkan kebijakan secara berbeda".

Rasa aman palsu

Jadi, klien menutup dengan, "Jika tidak ada yang memiliki kata sandi yang sama maka jika ada yang retak maka hanya satu orang yang terpengaruh." Tidak. Semua orang terpengaruh karena cracker telah menunjukkan bahwa sistem kata sandi Anda secara mendasar cacat: rentan terhadap serangan kamus dalam sistem online. Seharusnya cracker tidak mungkin mencoba beberapa tebakan terhadap kata sandi.

Untuk akses on-line 6 karakter sudah cukup

Keluar topik, tapi saya pikir itu akan layak disebut untuk pembaca yang tertarik. Dalam istilah keamanan, sistem on-line adalah sistem yang memiliki proses manajemen keamanan aktif yang memantau dan mengendalikan akses ke data. Sistem off-line adalah yang tidak (seperti memiliki data terenkripsi pada hard disk yang telah dicuri).

Jika Anda memiliki sistem kata sandi yang online maka Anda tidak perlu kata sandi keamanan yang tinggi. Kata sandi hanya harus cukup kompleks untuk mencegah tebakan dalam 20 upaya (sehingga serangan sederhana "nama pasangan / anak / hewan peliharaan" akan gagal). Pertimbangkan algoritma berikut:

  1. Cracker menebak kata sandi menggunakan pendekatan "root plus suffix" untuk meminimalkan tebakan
  2. Kredensial ditolak dan upaya login lebih lanjut dicegah selama N * 10 detik
  3. Jika N> 20 mengunci akun dan memberi tahu administrator
  4. N = N +1
  5. Memberitahu pengguna bahwa proses masuk berikutnya dapat terjadi pada waktu T (dihitung di atas)
  6. Pergi langkah 1

Untuk kata sandi 6 karakter yang sederhana, algoritma di atas akan mencegah serangan kamus, sementara pada akhirnya memungkinkan pengguna yang paling tidak mahir pada keypad ponsel untuk melewatinya. Tidak ada yang akan mencegah apa yang disebut "serangan selang karet" di mana Anda mengalahkan pemegang kata sandi dengan selang karet sampai mereka memberi tahu Anda.

Untuk sistem off-line ketika data terenkripsi ada di flash drive dan cracker bebas untuk mencoba apa pun yang menentangnya, Anda tentu menginginkan kunci yang paling tangguh yang dapat Anda temukan. Tapi masalah itu sudah terpecahkan .


1
Apa yang Anda maksud dengan akses "online"? Apakah ada jenis lain?
Robert Harvey

Lihat kalimat terakhir untuk perbedaan dalam hal keamanan.
Gary Rowe

4

Jika Anda telah menyarankan mereka untuk tidak melakukan tindakan ini, dan memberi mereka alasan, saya akan mengambil kata-kata mereka dan hanya menerapkan sistem seperti yang mereka sarankan. Mungkin tidak memuaskan, tetapi Anda telah melakukan pekerjaan Anda, dan mereka membayar tagihan, jadi mereka harus mendapatkan apa yang mereka inginkan.

Ada satu pengecualian. Jika konsekuensi negatif dari pelanggaran sistem akan parah (mis. Jika informasi yang sangat pribadi kemungkinan akan dikompromikan oleh pelanggaran keamanan) Anda mungkin sebenarnya memiliki tugas profesional untuk tidak mengimplementasikan sistem yang mereka inginkan. Jangan berharap itu akan membuat Anda populer jika Anda menolak, tetapi jangan biarkan itu menjadi panduan Anda.


4

Saya hanya ingin memperkuat jawaban Murph. Ya, ini masalah keamanan dan ada kerentanan pengungkapan informasi dalam mengimplementasikannya. Tapi dari sudut pandang klien, dia sepertinya tidak terlalu khawatir tentang itu.

Apa yang harus Anda tunjukkan adalah bahwa secara fisik tidak mungkin untuk benar-benar menerapkan cek "kata sandi unik". Jika Anda salting dan hashing password, dan tidak menyimpannya sebagai teks yang jelas, maka itu operasi O (n) (mahal) untuk benar-benar melakukan pemeriksaan keunikan.

Bisakah Anda bayangkan jika Anda memiliki 10.000 pengguna, dan perlu 30 detik untuk memeriksa setiap kata sandi pengguna untuk memeriksa keunikan setiap kali seseorang mendaftar baru atau mengubah kata sandi mereka?

Saya pikir ini adalah respons yang perlu Anda ambil untuk klien Anda.


Ya. Ini akan menjadi poin yang bagus.
PeterAllenWebb

1

Hanya berpikir dalam hal tempat yang tepat untuk mengajukan pertanyaan, bagian keamanan TI dari Stack Exchange harus menjadi poin yang berguna untuk Anda. Coba /security/tagged/passwords - sejumlah individu yang berfokus pada Keamanan TI harus dapat memberikan jawaban spesifik.


0

Dia mungkin ingin enkripsi dua faktor RSA. Jika Anda menggunakan Active Directory, atau keanggotaan ASP.NET ini adalah no-brainer.

teks alternatif

Token perangkat keras atau perangkat lunak menghasilkan kata sandi unik yang tergantung waktu yang diikuti oleh kode PIN. Ini bersama-sama memberikan kata sandi unik untuk setiap pengguna.


Two-factor tidak berguna untuk mencegah serangan man-in-the-middle.
BryanH

Benar, tetapi pernyataan itu sepertinya tidak berhubungan dengan pertanyaan yang ada.
goodguys_activate

Tapi sekarang saya tahu faktor kedua Anda !!! Oh, tunggu ... perbarui fotomu
Michael Haren

2
Hmm, saya pikir akan keren kalau membuat animasi GIF
goodguys_activate
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.