“Database kata sandi kami dicuri kemarin. Tapi jangan khawatir: sandi Anda telah dienkripsi. " Kami sering melihat pernyataan seperti ini secara online, termasuk kemarin, dari Yahoo . Tetapi haruskah kita benar-benar menerima jaminan ini begitu saja?
Kenyataannya adalah bahwa basis data kata sandi dikompromikan adalah kekhawatiran, tidak peduli bagaimana perusahaan mencoba memutarnya. Namun ada beberapa hal yang dapat Anda lakukan untuk melindungi diri Anda sendiri, tidak peduli seberapa buruk praktik keamanan perusahaan.
Bagaimana Kata Sandi Harus Disimpan
Berikut adalah cara perusahaan menyimpan sandi di dunia yang ideal: Anda membuat akun dan memberikan sandi. Alih-alih menyimpan kata sandi itu sendiri, layanan menghasilkan "hash" dari kata sandi. Ini adalah sidik jari unik yang tidak dapat dibalik. Misalnya, sandi "sandi" dapat berubah menjadi sesuatu yang lebih mirip "4jfh75to4sud7gh93247g…". Saat Anda memasukkan kata sandi untuk masuk, layanan menghasilkan hash darinya dan memeriksa apakah nilai hash cocok dengan nilai yang disimpan dalam database. Layanan tidak pernah menyimpan sandi Anda sendiri ke disk.
Untuk menentukan kata sandi Anda yang sebenarnya, penyerang dengan akses ke database harus menghitung hash untuk kata sandi umum terlebih dahulu dan kemudian memeriksa apakah ada di database. Penyerang melakukan ini dengan tabel pencarian — daftar besar hash yang cocok dengan sandi. Hash kemudian dapat dibandingkan dengan database. Misalnya, penyerang akan mengetahui hash untuk "password1" dan kemudian melihat apakah ada akun dalam database yang menggunakan hash tersebut. Jika ya, penyerang tahu sandi mereka adalah "sandi1".
Untuk mencegah hal ini, layanan harus “menggarami” hash mereka. Alih-alih membuat hash dari kata sandi itu sendiri, mereka menambahkan string acak ke depan atau akhir kata sandi sebelum mencirikannya. Dengan kata lain, pengguna akan memasukkan sandi "sandi" dan layanan akan menambahkan salt dan hash sandi yang lebih mirip "sandi35s2dg." Setiap akun pengguna harus memiliki garam uniknya sendiri, dan ini akan memastikan bahwa setiap akun pengguna akan memiliki nilai hash yang berbeda untuk kata sandinya di database. Meskipun beberapa akun menggunakan sandi "password1", mereka akan memiliki hash yang berbeda karena nilai salt yang berbeda. Ini akan mengalahkan penyerang yang mencoba melakukan pra-komputasi hash untuk kata sandi. Alih-alih dapat membuat hash yang diterapkan ke setiap akun pengguna di seluruh database sekaligus, mereka harus membuat hash unik untuk setiap akun pengguna dan salt uniknya. Ini akan membutuhkan lebih banyak waktu komputasi dan memori.
Inilah sebabnya mengapa layanan sering mengatakan jangan khawatir. Sebuah layanan yang menggunakan prosedur keamanan yang tepat seharusnya mengatakan bahwa mereka menggunakan hash kata sandi yang diasinkan. Jika mereka hanya mengatakan bahwa sandi "di-hash", itu lebih mengkhawatirkan. LinkedIn mencirikan sandi mereka, misalnya, tetapi mereka tidak mengasinkannya — jadi itu masalah besar ketika LinkedIn kehilangan 6,5 juta kata sandi yang di-hash pada tahun 2012 .
Praktik Sandi Buruk
Ini bukanlah hal yang paling sulit untuk diterapkan, tetapi banyak situs web yang masih berhasil mengacaukannya dengan berbagai cara:
- Menyimpan Kata Sandi dalam Teks Biasa : Daripada repot-repot melakukan hashing, beberapa pelanggar terburuk mungkin hanya membuang kata sandi dalam bentuk teks biasa ke dalam database. Jika database seperti itu dikompromikan, kata sandi Anda jelas-jelas dikompromikan. Tidak peduli seberapa kuat mereka.
- Hashing Kata Sandi Tanpa Salting Mereka : Beberapa layanan mungkin meng-hash kata sandi dan menyerah di sana, memilih untuk tidak menggunakan garam. Database kata sandi seperti itu akan sangat rentan terhadap tabel pemeta. Seorang penyerang dapat membuat hash untuk banyak kata sandi dan kemudian memeriksa apakah mereka ada di database - mereka dapat melakukan ini untuk setiap akun sekaligus jika tidak ada garam yang digunakan.
- Menggunakan kembali Garam : Beberapa layanan mungkin menggunakan salt, tetapi mereka mungkin menggunakan kembali salt yang sama untuk setiap sandi akun pengguna. Ini tidak ada gunanya — jika salt yang sama digunakan untuk setiap pengguna, dua pengguna dengan sandi yang sama akan memiliki hash yang sama.
- Menggunakan Garam Pendek : Jika garam yang hanya terdiri dari beberapa digit digunakan, dimungkinkan untuk membuat tabel pencarian yang menggabungkan setiap kemungkinan garam. Misalnya, jika satu digit digunakan sebagai garam, penyerang dapat dengan mudah membuat daftar hash yang menggabungkan setiap kemungkinan garam.
Perusahaan tidak akan selalu memberi tahu Anda keseluruhan cerita, jadi meskipun mereka mengatakan bahwa sandi telah di-hash (atau di-hash dan diasinkan), mereka mungkin tidak menggunakan praktik terbaik. Selalu lakukan kesalahan di sisi kehati-hatian.
Kekhawatiran Lainnya
Kemungkinan nilai garam juga ada di basis data kata sandi. Ini tidak terlalu buruk — jika nilai garam unik digunakan untuk setiap pengguna, penyerang harus menghabiskan banyak daya CPU untuk memecahkan semua sandi tersebut.
Dalam praktiknya, begitu banyak orang menggunakan sandi yang jelas sehingga mungkin mudah untuk menentukan sandi banyak akun pengguna. Misalnya, jika penyerang mengetahui hash Anda dan mengetahui salt Anda, mereka dapat dengan mudah memeriksa untuk melihat apakah Anda menggunakan beberapa sandi yang paling umum.
TERKAIT: Bagaimana Penyerang Sebenarnya "Meretas Akun" Online dan Cara Melindungi Diri Anda
Jika penyerang mengeluarkannya untuk Anda dan ingin memecahkan sandi Anda, mereka dapat melakukannya dengan kekerasan selama mereka mengetahui nilai garam — yang mungkin mereka lakukan. Dengan akses offline lokal ke database kata sandi, penyerang dapat menggunakan semua yang kasar serangan paksa mereka ingin.
Data pribadi lainnya juga mungkin bocor saat basis data kata sandi dicuri: Nama pengguna, alamat email, dan lainnya. Dalam kasus kebocoran Yahoo, pertanyaan dan jawaban keamanan juga dibocorkan — yang, seperti yang kita semua tahu, memudahkan untuk mencuri akses ke akun seseorang.
Tolong, Apa yang Harus Saya Lakukan?
Apa pun yang dikatakan layanan saat basis data sandinya dicuri, sebaiknya asumsikan bahwa setiap layanan sama sekali tidak kompeten dan bertindak sesuai dengan itu.
Pertama, jangan gunakan kembali sandi di beberapa situs web. Gunakan pengelola kata sandi yang menghasilkan kata sandi unik untuk setiap situs web . Jika penyerang berhasil menemukan bahwa sandi Anda untuk layanan adalah "43 ^ tSd% 7uho2 # 3" dan Anda hanya menggunakan sandi tersebut di satu situs web tertentu, mereka tidak mempelajari apa pun yang berguna. Jika Anda menggunakan kata sandi yang sama di mana-mana, mereka dapat mengakses akun Anda yang lain. Ini adalah berapa banyak akun orang yang "diretas".
Jika suatu layanan menjadi terganggu, pastikan untuk mengubah kata sandi yang Anda gunakan di sana. Anda juga harus mengubah sandi di situs lain jika Anda menggunakannya kembali di sana - tetapi Anda tidak boleh melakukannya sejak awal.
Anda juga harus mempertimbangkan menggunakan otentikasi dua faktor , yang akan melindungi Anda bahkan jika penyerang mengetahui sandi Anda.
TERKAIT: Mengapa Anda Harus Menggunakan Pengelola Kata Sandi, dan Cara Memulai
Hal terpenting adalah tidak menggunakan kembali kata sandi. Basis data sandi yang disusupi tidak akan merugikan Anda jika Anda menggunakan sandi unik di mana pun - kecuali jika database tersebut menyimpan sesuatu yang penting dalam basis data, seperti nomor kartu kredit Anda.
Kredit Gambar: Marc Falardeau di Flickr , Wikimedia Commons