Berapa panjang kata sandi yang optimal?

Tentu saja, lebih banyak lebih baik. Dan dengan pengelola kata sandi, sangat mudah untuk membuat dan melengkapi otomatis kata sandi dengan panjang berapa pun. Tetapi apakah perlu membuat sandi ratusan karakter, atau adakah nilai minimum empiris yang masuk akal?



Berikut adalah antarmuka penghasil kata sandi biasa :





Perhatikan bilah geser Panjang: di sini ini dapat mengubah panjang kata sandi dari 8 menjadi 100 karakter, dan di alat lain dapat lebih banyak lagi. Apa nilai terbaik untuk kata sandi?



Hanya kata sandi yang bagus yang Anda miliki saat Anda diretas



Untuk memahami apa itu kata sandi yang baik, mari kita lihat apa yang terjadi di kamp musuh!



Saat Anda membuat akun, layanan menyimpan kata sandi Anda dalam salah satu dari banyak format. Layanan dapat memasukkan kata sandi langsung ke dalam database (dalam teks biasa) atau menghasilkan hash darinya menggunakan salah satu dari banyak algoritme . Terpopuler:



  • MD5
  • SHA-1
  • Bcrypt
  • Scrypt
  • Argon2


Keuntungan menyimpan hash daripada kata sandi itu sendiri adalah tidak ada kata sandi di database . Dan itu benar, karena Anda hanya perlu membuktikan bahwa Anda mengetahui kata sandi Anda, tetapi itu tidak masalah. Saat Anda login, kata sandi yang dimasukkan di-hash menggunakan algoritma yang sama, dan jika hasilnya sesuai dengan nilai yang tercatat di database, maka Anda telah membuktikan bahwa Anda mengetahui kata sandinya. Dan jika database diretas, maka tidak mungkin memulihkan kata sandi.





Menyimpan hash.



Memecahkan kata sandi



Peretasan kata sandi adalah saat penyerang mencoba membalikkan fungsi hash dan memulihkan kata sandi dari hash. Ini tidak mungkin dilakukan dengan algoritme hashing yang baik. Tetapi tidak ada yang mencegah penyerang untuk mencoba memasukkan nilai yang berbeda dengan harapan mendapatkan hash yang sama. Jika terjadi kecocokan, maka kata sandi telah dipulihkan dari hash.





Memecahkan kata sandi.



Dan di sini pilihan algoritme yang baik itu penting . SHA-1 dirancang dengan hashing yang cepat, membuat hidup lebih mudah bagi penyerang. Bcrypt, Scrypt dan Argon2 dirancang dengan mempertimbangkan biaya komputasi yang tinggi untuk memperlambat cracking sebanyak mungkin, terutama pada mesin khusus. Dan ini adalah aspek yang sangat penting.



Jika Anda fokus hanya pada kecepatan, password SHA-1, yang tidak mungkin untuk memecahkan, sebagai berikut: 0OVTrv62y2dLJahXjd4FVg81.



Sebuah password yang aman yang Anda buat menggunakan Argon2 dikonfigurasi dengan benar, terlihat seperti ini: Pa$$w0Rd1992.



Seperti yang Anda lihat, memilih algoritme hashing yang benar mengubah kata sandi yang lemah menjadi kata sandi yang tidak bisa dipecahkan.



Dan jangan lupakan ituitu hanya bergantung pada implementasi layanan yang Anda daftarkan . Dan Anda tidak dapat mengetahui kualitas implementasinya. Anda dapat bertanya, tetapi mereka tidak akan menjawab Anda, atau mereka akan berhenti berlangganan bahwa "kami serius tentang keamanan".



Apakah menurut Anda perusahaan menganggap serius keamanan dan menggunakan algoritme hashing yang baik? Lihatlah daftar database yang disusupi, terutama hash yang digunakan di dalamnya. Dalam banyak kasus, MD5 digunakan, paling sering SHA-1, dan bcrypt digunakan di beberapa tempat. Beberapa sandi disimpan dalam teks biasa . Ini adalah kenyataan yang harus dipertimbangkan.



Selain itu, kami hanya mengetahui hash mana yang digunakan dalam database yang disusupi, dan kemungkinan besar perusahaan yang menggunakan algoritme lemah juga tidak dapat melindungi infrastruktur mereka. Coba lihat daftarnya, saya yakin Anda akan menemukan nama yang familiar. Hanya karena perusahaan terlihat besar dan terhormat, bukan berarti melakukan segalanya dengan benar.



Anda memilih kata sandi



Apa yang dapat Anda lakukan sebagai pengguna? Jika kata sandi disimpan dalam teks biasa, maka tidak ada yang bisa dilakukan. Setelah database dicuri, kerumitan kata sandi Anda tidak akan menjadi masalah.



Dengan algoritma yang dikonfigurasi dengan benar, kompleksitas kata sandi Anda juga tidak penting, bisa jadi 12345atau asdf.



Namun, dalam kasus menengah , terutama saat menggunakan SHA-1, kerumitan sandi itu penting . Fungsi hashing pada umumnya tidak dirancang untuk kata sandi, tetapi jika Anda menggunakan kata sandi yang kompleks, itu mengkompensasi kelemahan algoritme.





Tergantung pada konfigurasi. Algoritme ini memiliki berbagai komponen keamanan dan, jika dikonfigurasi dengan benar, dapat mencegah peretasan.



Kesimpulan: dengan kata sandi yang kuat, Anda terlindungi dari lebih banyak peretasan daripada dengan kata sandi yang lemah. Dan karena Anda tidak tahu seberapa aman penyimpanan kata sandi, Anda tidak dapat mengetahui seberapa "cukup aman" layanan itu nantinya. Jadi asumsikan yang terburuk ketika pilihan kata sandi Anda masih penting.



Keunikan kata sandi saja tidak cukup



Oke, tapi mengapa Anda berpikir tentang menggunakan pengelola kata sandi dan membuat kata sandi unik untuk setiap situs? Dalam hal ini, Anda kebal terhadap penjejalan kredensial - ketika sepasang kotak surat dan kata sandi yang diketahui diperiksa pada layanan yang berbeda dengan harapan orang tersebut menggunakan data ini di tempat yang berbeda. Ini adalah ancaman serius karena penggunaan ulang sandi adalah salah satu masalah keamanan utama. Anda akan dilindungi dari ini dengan membuat sandi unik untuk setiap situs.





Isian kredensial.



Dan jika database dicuri dan semua isinya diketahui oleh peretas, lalu mengapa Anda masih melindungi kata sandi Anda?



Faktanya adalah Anda tidak tahu apakah database telah diretas dan Anda terus menggunakan layanan tersebut. Kemudian peretas akan memiliki akses ke semua aktivitas Anda di masa mendatang di situs ini. Anda dapat menambahkan detail kartu bank Anda nanti dan mereka akan mengetahuinya. Kata sandi yang kuat berarti bahwa peretas tidak akan dapat masuk dengan akun Anda dan tidak akan dapat membahayakan tindakan Anda di masa mendatang.





Menggunakan layanan setelah peretasan.



Bagaimana mengevaluasi kekuatan kata sandi menggunakan entropi



Kekuatan kata sandi dicirikan oleh entropi, representasi numerik dari jumlah keacakan yang terkandung dalam kata sandi. Karena kita berbicara tentang bilangan besar, 1 099 511 627 776 (2^40)lebih mudah bagi kita untuk mengatakan “40 bit entropi” sebagai gantinya . Dan karena meretas kata sandi adalah penghitungan opsi, semakin banyak opsi, semakin banyak waktu yang Anda butuhkan untuk meretas.



Untuk karakter acak yang dihasilkan password manager, entropi dihitung dengan rumus berikut: log2(< > ^ <>).



Jelas dengan panjangnya, tetapi berapa jumlah karakter yang berbeda? Itu tergantung pada kelas karakter yang termasuk dalam kata sandi.





Misalnya, kata sandi yang terdiri dari 10 huruf besar dan kecil acak memiliki log2(52 ^ 10) = 57 sedikit entropi.



Untuk menghitung entropi spesifik (jumlahnya dalam satu simbol kelas tertentu), Anda dapat menggunakan persamaan tersebut log2(n ^ m) = m * log2(n). Kami mendapatkan :, di <> * log2(< >)mana bagian kedua adalah entropi spesifik. Mari kita hitung ulang tabel sebelumnya menggunakan rumus ini:





Untuk menghitung kekuatan kata sandi, Anda perlu mengambil kelas karakter yang termasuk dalam kata sandi, mengambil nilai entropi untuk kelas ini dan mengalikan dengan panjangnya. Untuk contoh di atas, kami mendapat 10 kata sandi huruf besar dan kecil 5.7 * 10 = 57 . Tetapi jika Anda menambah panjangnya menjadi 14, maka entropinya akan melonjak menjadi 79,8 bit. Dan jika Anda meninggalkan 10 karakter, tetapi menambahkan kelas karakter khusus, maka total entropi akan menjadi 64 bit.



Persamaan di atas memungkinkan Anda menghitung entropi kata sandi dengan cepat, tetapi ada kendala. Rumusnya benar hanya jika simbol tidak bergantung satu sama lain . Ini hanya berlaku untuk sandi yang dibuat. Kombinasi tersebut H8QavhV2gumemenuhi kriteria ini dan memiliki entropi 57 bit.



Tetapi jika Anda menggunakan kata sandi yang lebih mudah diingat sepertiPa$$word11, maka entropinya akan jauh lebih rendah dengan jumlah simbol yang sama. Cracker tidak harus melalui semua kemungkinan kombinasi; dia hanya perlu membaca kata-kata dari kamus dengan beberapa perubahan.



Jadi, semua kalkulasi dengan mengalikan panjang dengan entropi spesifik hanya valid untuk sandi yang dihasilkan .



Panduan Entropi



Semakin banyak entropi yang dimiliki kata sandi, semakin sulit untuk memecahkannya. Tetapi seberapa banyak entropi yang cukup? Secara umum, sekitar 16 karakter akan berada di belakang mata, kata sandi tersebut memiliki 95-102 bit entropi, tergantung pada kelas karakter. Berapa ambang minimum? 80 bit? 60? Atau bahkan 102 bit terlalu kecil?



Ada algoritme yang menyaingi algoritme hashing yang buruk dalam hal kecepatan, tetapi jauh lebih baik dipelajari: ini adalah AES.



Ini digunakan di semua organisasi pemerintah dan militer, yang berarti daya tahannya cukup. Dan itu bekerja dengan cepat. Jadi jika kunci AES dengan jumlah entropi tertentu tidak dapat dipecahkan, maka kata sandi dengan hash yang buruk (tetapi tidak dipecahkan) akan menguntungkan.



Institut Standar dan Teknologi Nasional telah menentukan ukuran kunci yang akan cukup untuk masa mendatang. Sanamerekomendasikan menggunakan AES-128 selama periode "2019-2030 dan lebih baru". Sesuai dengan namanya, kita berbicara tentang entropi 128 bit.





Rekomendasi lain merekomendasikan membuat kunci berukuran setidaknya 112 bit:



Untuk memberikan kekuatan kriptografik untuk kebutuhan Pemerintah Federal, setidaknya diperlukan 112 bit saat ini (misalnya, untuk mengenkripsi atau menandatangani data).


Untuk mendapatkan 128 bit entropi menggunakan huruf besar dan kecil serta angka, Anda memerlukan panjang kata sandi 22 ((5.95 * 22 = 131 ).



Pertimbangan lainnya



Mengapa tidak menggunakan karakter khusus? Saya mencoba untuk tidak menggunakannya karena melanggar batasan kata. Artinya, diperlukan tiga klik untuk memilih karakter khusus, bukan dua, dan ini dapat menyebabkan kesalahan jika saya tidak sengaja memasukkan sisa kata sandi ke dalam bidang.



Dan jika Anda hanya menggunakan huruf dan angka, maka dengan klik dua kali, seluruh kata sandi akan disorot.



Bagaimana jika ada batasan panjang? Di beberapa situs, sandi tidak boleh sampai 22 karakter. Terkadang kata sandi hanya bisa sangat pendek, misalnya tidak lebih dari 5 digit. Maka yang tersisa hanyalah menggunakan kata sandi selama mungkin.



Ada juga pedoman untuk situs untuk bekerja dengan kata sandi, dan batasan panjang jelas bertentangan dengan pedoman ini. Inilah yang dikatakan Institut Standar dan Teknologi Nasional:



Anda harus mendukung kata sandi hingga setidaknya 64 karakter. Dorong pengguna untuk membuat rahasia yang mudah diingat dengan panjang berapa pun, menggunakan karakter apa pun (termasuk spasi) untuk membantu mereka mengingat.


Dan ingat, perlindungan kata sandi situs berkisar dari mengerikan hingga sangat baik, dan mereka tidak akan memberi tahu Anda seperti apa situasi sebenarnya. Jika panjang kata sandi maksimum yang diizinkan kecil, maka tampaknya situs seperti itu berada pada skala yang buruk.



Kesimpulan



Kata sandi harus kuat, meskipun Anda tidak menggunakan kombinasi yang sama di tempat yang berbeda. Kekuatan kata sandi diukur dengan entropi, dan Anda perlu berusaha untuk mendapatkan nilai 128 bit. Kata sandi dengan panjang 22 karakter, terdiri dari huruf besar dan huruf kecil serta angka, sudah cukup untuk ini.



Ini akan melindungi Anda jika layanan diretas dan algoritma hashing yang lemah tetapi tidak diretas digunakan.



All Articles