Kenapa Anda Perlu Bimbang Bilamana Pangkalan Data Kata Sandi Perkhidmatan Terlepas
"Pangkalan data kata laluan kami dicuri semalam. Tetapi jangan risau: kata laluan anda disulitkan. "Kami sering melihat kenyataan seperti ini dalam talian, termasuk semalam, dari Yahoo. Tetapi jika kita benar-benar mengambil jaminan ini pada nilai muka?
Kenyataannya ialah kompromi pangkalan data kata laluan adalah kebimbangan, tidak kira bagaimana syarikat boleh cuba untuk memutarnya. Tetapi ada beberapa perkara yang boleh anda lakukan untuk melindungi diri anda, tidak kira betapa buruknya amalan keselamatan syarikat.
Bagaimana Kata Laluan Harus Disimpan
Begini bagaimana syarikat harus menyimpan kata laluan dalam dunia yang ideal: Anda membuat akaun dan memberikan kata laluan. Daripada menyimpan kata laluan itu sendiri, perkhidmatan itu menghasilkan "hash" daripada kata laluan. Ini adalah cap jari yang unik yang tidak dapat diterbalikkan. Sebagai contoh, kata laluan "kata laluan" boleh berubah menjadi sesuatu yang kelihatan seperti "4jfh75to4sud7gh93247g ...". Apabila anda memasukkan kata laluan anda untuk log masuk, perkhidmatan menjana hash daripadanya dan memeriksa jika nilai hash sepadan dengan nilai yang disimpan dalam pangkalan data. Tidak dinafikan bahawa perkhidmatan itu pernah menyimpan kata laluan anda sendiri ke cakera.
Untuk menentukan kata laluan sebenar anda, penyerang dengan akses kepada pangkalan data harus mengira prefiks untuk kata laluan yang sama dan kemudian periksa apakah ia ada dalam pangkalan data. Penyerang melakukan ini dengan jadual carian senarai besar hash yang sepadan dengan kata laluan. Hab yang boleh dibandingkan dengan pangkalan data. Sebagai contoh, penyerang akan tahu hash untuk "password1" dan kemudian melihat jika mana-mana akaun dalam pangkalan data menggunakan hash itu. Jika mereka, penyerang tahu kata laluan mereka adalah "password1".
Untuk mengelakkan ini, perkhidmatan harus "garam" hash mereka. Daripada mencipta hash dari kata laluan itu sendiri, mereka menambah rentetan rawak ke bahagian depan atau akhir kata laluan sebelum hashing. Dengan kata lain, pengguna akan memasukkan kata laluan "kata laluan" dan perkhidmatan tersebut akan menambahkan garam dan hash kata laluan yang kelihatan seperti "password35s2dg." Setiap akaun pengguna harus mempunyai garam unik mereka sendiri, dan ini akan memastikan bahawa setiap akaun pengguna akan mempunyai nilai hash yang berbeza untuk kata laluan mereka dalam pangkalan data. Walaupun beberapa akaun menggunakan kata laluan "password1", mereka akan mempunyai hash yang berbeza kerana nilai garam yang berbeza. Ini akan mengalahkan seorang penyerang yang cuba menghitung kuil untuk kata laluan. Sebaliknya dapat menghasilkan punca yang digunakan untuk setiap account pengguna di seluruh pangkalan data sekaligus, mereka harus menghasilkan hash unik untuk setiap akaun pengguna dan garamnya yang unik. Ini akan mengambil lebih banyak masa dan memori pengiraan.
Inilah sebab mengapa perkhidmatan sering mengatakan tidak perlu bimbang. Perkhidmatan yang menggunakan prosedur keselamatan yang betul harus mengatakan bahawa mereka menggunakan hash kata laluan asin. Jika mereka hanya mengatakan kata laluan itu "sudah hilang," itu lebih membimbangkan. LinkedIn mempunyai kata laluan mereka sebagai contoh, tetapi mereka tidak garam mereka-jadi itu adalah masalah besar apabila LinkedIn kehilangan 6.5 juta kata laluan yang telah dihidupkan pada 2012.
Amalan Kata Laluan Bad
Ini bukanlah perkara yang paling sukar untuk dilaksanakan, tetapi banyak laman web masih dapat mengacaukannya dengan pelbagai cara:
- Menyimpan Kata Laluan dalam Teks Biasa: Daripada mengganggu dengan hashing, beberapa pesalah terburuk hanya boleh membuang kata laluan dalam bentuk teks biasa ke pangkalan data. Jika pangkalan data sedemikian dikompromikan, kata laluan anda jelas dikompromikan. Ia tidak kira betapa kuatnya mereka.
- Hashing the Sandi Tanpa Salting Mereka: Sesetengah perkhidmatan mungkin mempunyai kata laluan dan menyerah di sana, memilih untuk tidak menggunakan garam. Pangkalan data kata laluan sedemikian akan sangat terdedah kepada jadual carian. Seorang penyerang boleh menjana hash untuk banyak kata laluan dan kemudian memeriksa sama ada mereka wujud dalam pangkalan data - mereka boleh melakukan ini untuk setiap akaun sekaligus jika tiada garam digunakan.
- Menggunakan semula Garam: Beberapa perkhidmatan mungkin menggunakan garam, tetapi mereka boleh menggunakan semula garam yang sama untuk setiap kata laluan akaun pengguna. Ini tidak bermakna - jika garam yang sama digunakan untuk setiap pengguna, dua pengguna dengan kata laluan yang sama akan mempunyai hash yang sama.
- Menggunakan Garam Pendek: Jika garam hanya beberapa digit yang digunakan, ia mungkin untuk menjana jadual carian yang memasukkan setiap garam yang mungkin. Sebagai contoh, jika satu digit digunakan sebagai garam, penyerang dengan mudah boleh menghasilkan senarai hash yang memasukkan setiap garam yang mungkin.
Syarikat-syarikat tidak akan selalu memberitahu anda keseluruhan cerita, jadi walaupun mereka kata kata laluan telah hilang (atau haus dan asin), mereka mungkin tidak menggunakan amalan terbaik. Sentiasa sesat di sisi berhati-hati.
Lain-lain Keprihatinan
Ia mungkin nilai garam juga terdapat dalam pangkalan data kata laluan. Ini tidak begitu buruk-jika nilai garam unik digunakan untuk setiap pengguna, penyerang perlu menghabiskan sejumlah besar kuasa CPU memecah semua kata laluan itu.
Dalam praktiknya, begitu ramai orang menggunakan kata laluan yang jelas bahawa kemungkinan besar akan mudah untuk menentukan kata laluan pengguna banyak kata sandi. Sebagai contoh, jika penyerang tahu hash anda dan mereka tahu garam anda, mereka dengan mudah boleh menyemak sama ada anda menggunakan beberapa kata laluan yang paling biasa.
Sekiranya penyerang mengeluarkannya untuk anda dan ingin memecahkan kata laluan anda, mereka boleh melakukannya dengan kekerasan selagi mereka tahu nilai garam-yang mungkin mereka lakukan. Dengan akses dalam talian, pangkalan data pangkalan data kata laluan, penyerang boleh menggunakan semua serangan kekerasan yang mereka mahukan.
Data peribadi lain juga mungkin berlaku apabila pangkalan data kata laluan dicuri: Nama pengguna, alamat e-mel, dan banyak lagi. Dalam kes kebocoran Yahoo, soalan dan jawapan keselamatan turut dibocorkan-yang, seperti yang kita semua ketahui, memudahkan untuk mencuri akses ke akaun seseorang.
Bantuan, Apa yang Harus Saya Lakukan?
Apa pun perkhidmatan dikatakan apabila pangkalan data kata laluan dicuri, adalah lebih baik untuk menganggap bahawa setiap perkhidmatan adalah benar-benar tidak cekap dan bertindak dengan sewajarnya.
Pertama, jangan gunakan semula kata laluan di beberapa laman web. Gunakan pengurus kata laluan yang menghasilkan kata laluan yang unik untuk setiap laman web. Sekiranya penyerang berjaya mengetahui bahawa kata laluan anda untuk perkhidmatan adalah "43 ^ tSd% 7uho2 # 3" dan anda hanya menggunakan kata laluan itu pada satu laman web tertentu, mereka telah belajar apa-apa yang berguna. Jika anda menggunakan kata laluan yang sama di mana-mana, mereka boleh mengakses akaun anda yang lain. Ini adalah berapa banyak akaun orang yang menjadi "digodam."
Jika perkhidmatan menjadi berkompromi, pastikan anda menukar kata laluan yang anda gunakan di sana. Anda juga harus menukar kata laluan pada tapak lain jika anda menggunakannya semula - tetapi anda tidak sepatutnya melakukannya di tempat pertama.
Anda juga harus mempertimbangkan menggunakan pengesahan dua faktor, yang akan melindungi anda walaupun penyerang mengetahui kata laluan anda.
Perkara yang paling penting ialah tidak menggunakan kata laluan. Pangkalan data kata laluan yang dikompromi tidak boleh mencederakan anda jika anda menggunakan kata laluan yang unik di mana-mana - kecuali mereka menyimpan sesuatu yang penting dalam pangkalan data, seperti nombor kad kredit anda.
Kredit Imej: Marc Falardeau di Flickr, Wikimedia Commons