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]
Jawaban:
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
sumber
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:
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.
sumber
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:
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:
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 .
sumber
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.
sumber
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.
sumber
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.
sumber
Dia mungkin ingin enkripsi dua faktor RSA. Jika Anda menggunakan Active Directory, atau keanggotaan ASP.NET ini adalah no-brainer.
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.
sumber