Jenis kata sandi yang harus Anda buat sangat berkaitan dengan cara penyimpanan kata sandi.

Bertahun-tahun yang lalu, kata sandi acak delapan karakter yang terdiri dari huruf besar dan kecil, simbol, dan angka sangat sulit dipecahkan. Dalam beberapa kasus, kata sandi semacam itu membutuhkan waktu bertahun-tahun untuk dipecahkan.

Berkat perubahan teknologi saat ini dan mesin yang dapat disewa, waktu ini telah dikurangi menjadi berjam-jam. Tapi bagaimana kata sandi ini disimpan?

Bagaimana Kata Sandi Disimpan Online

Sistem tidak menyimpan kata sandi pengguna secara langsung dalam file atau basis data, karena penyerang dapat mengambil alih basis data tempat sistem menyimpan kata sandi. Sebaliknya, sistem mengenkripsi kata sandi pengguna, dan penyerang menemukan versi terenkripsi dari setiap kata sandi.

Ada beberapa algoritme yang digunakan sistem untuk mengenkripsi kata sandi. Salah satu algoritma tersebut adalah algoritma simetris. Algoritma simetris adalah jenis enkripsi di mana Anda dapat menggunakan kunci yang sama untuk enkripsi dan dekripsi. Kunci yang akan Anda gunakan untuk mengenkripsi data adalah sama untuk enkripsi dan dekripsi. Keamanan algoritma simetris membawa beberapa risiko karena hanya ada satu kunci untuk dekripsi. Untuk alasan ini, sistem umumnya tidak menggunakan algoritma simetris untuk enkripsi kata sandi.

instagram viewer

Umumnya, metode yang digunakan sistem untuk enkripsi adalah algoritma hash. Algoritme hash adalah untuk memverifikasi dan mewakili integritas data, bukan untuk mengenkripsi data. Algoritme hash mengubah data menjadi hash berukuran tetap. Hash ini biasanya mewakili hash data yang unik.

Berkat algoritme hash, jika penyerang telah mengambil alih basis data kata sandi, penyerang tidak dapat mengakses kata sandi mundur dari sini. Ada nuansa yang sangat penting yang harus Anda perhatikan di sini. Secara teoritis, penyerang yang mengkompromikan sistem yang menggunakan algoritme hash yang sama untuk semua kombinasi kata sandi dapat membandingkan hasil yang diperoleh. Jika penyerang menghasilkan nilai yang sama sebagai hasil dari perbandingan ini, penyerang telah menemukan versi kata sandi yang terbuka. Metode ini adalah tentang coba-coba, dan bentuk serangan ini adalah umumnya disebut serangan brute force.

Pada awal tahun 2000-an, diperlukan waktu ratusan tahun untuk mencoba semua kombinasi kata sandi 8 karakter yang dienkripsi dengan algoritme hashing populer. Tentu saja, ini tidak termasuk kombinasi yang sangat sederhana seperti "123456" atau "mypassword" di set ini. Dengan perkembangan teknologi software dan hardware saat ini, metode cracking password juga banyak berubah.

Dampak Munculnya GPU

Kemampuan pemrosesan data paralel dari prosesor grafis (GPU) telah meningkat dari waktu ke waktu. GPU tidak mampu melakukan operasi serbaguna seperti CPU tujuan umum. Jadi meskipun ada begitu banyak inti dan kekuatan pemrosesan paralel, tidak masuk akal untuk menggunakannya untuk hampir setiap masalah CPU.

Namun dimungkinkan untuk melakukan beberapa algoritme hash yang digunakan untuk kata sandi dengan cukup efisien di GPU. Hash yang dapat dihitung per detik yang dapat Anda capai dengan CPU tradisional telah berkembang pesat dengan platform GPU baru.

Untuk mendapatkan gambaran, periksa angka hash per detik dari algoritme hash seperti NTLM, MD5, dan SHA1 pada tabel di bawah ini. Untuk saat ini, cukup mengetahui bahwa algoritme ini hanyalah algoritme hash. Untuk membuat tabel ini, saya menggunakan sistem cluster yang terdiri dari 25 GPU AMD Radeon.

Algoritma

Hashing Per Detik

NTLM

350.000.000.000

MD5

180.000.000.000

SHA1

63.000.000.000

SHA512Crypt

364.000

Bcrypt

71.000

Skripsi

33.000

Seperti yang Anda lihat, dengan sistem seperti itu, Anda dapat menghasilkan hash NTLM 350 miliar kali per detik. Artinya, Anda dapat mencoba semua kombinasi kata sandi 8 karakter dalam waktu kurang dari 6 jam. Selain itu, perangkat keras dalam contoh ini adalah milik bertahun-tahun yang lalu. Bayangkan kekuatan peretas kata sandi saat ini.

Apa yang Harus Dilakukan Pengembang Perangkat Lunak?

Cara yang harus dilakukan pemrogram cukup sederhana: mereka harus memilih algoritme yang membutuhkan waktu lebih lama untuk menghitung nilai hash saat mengenkripsi kata sandi. Pengembang perlu belajar tidak hanya tentang kinerja algoritme yang mereka gunakan pada CPU, tetapi juga tentang seberapa tangguh algoritme tersebut terhadap dunia GPU.

Jika pengembang bekerja dengan kerangka perangkat lunak yang juga membahas proses enkripsi kata sandi seperti Django, Ruby on Rails, dan Spring Security, mereka harus memeriksa apakah keputusan yang tepat telah dibuat dalam kerangka kerja keamanan.

Misalnya, Merancang, salah satu pustaka yang paling banyak digunakan untuk operasi pengguna di Ruby on Rails, menggunakan Bcrypt sebagai algoritme hash default. Ini juga memungkinkan Anda untuk menggunakan metode lain sebagai algoritma hash. Algoritme Bcrypt dapat diandalkan karena GPU masih membutuhkan waktu yang sangat lama untuk rusak.

Singkatnya, semakin lama perhitungan nilai hash, semakin aman Anda.

Berapa Banyak Karakter yang Harus Dimiliki Kata Sandi Anda?

Setiap karakter tambahan yang Anda gunakan secara geometris akan meningkatkan jumlah percobaan dan kesalahan yang diperlukan untuk memecahkan kata sandi Anda dan membuat kata sandi Anda lebih aman.

Mari pertimbangkan situasi ini melalui dua skenario berbeda. Pertimbangkan nilai dalam tabel di atas untuk algoritme hash NTLM dan bayangkan Anda akan mencoba memecahkan kata sandi. Bayangkan menargetkan kata sandi delapan karakter atau lebih.

Jumlah Karakter

Huruf besar/kecil dan angka

Huruf besar/kecil, angka, dan simbol khusus

8

kurang dari 1 menit

2 menit

9

2 menit

2 jam

10

2 jam

1 minggu

11

6 hari

2 tahun

12

1 tahun

200 tahun

13

lebih dari 100 tahun

lebih dari 1000 tahun

Saat Anda memeriksa tabel, Anda dapat melihat bahwa penggunaan kata sandi minimal 12 karakter aman jika Anda menggunakan semua kombinasi huruf besar/kecil, angka, dan simbol khusus. Jika Anda tidak menggunakan simbol khusus, ternyata Anda perlu menggunakan 13 karakter sebagai panjang kata sandi yang aman. Jika Anda menggunakan metode hash Bcrypt alih-alih hash NTLM dalam sistem ini, 8 karakter sudah cukup. Namun, Anda tidak memiliki kesempatan untuk mengetahui dengan metode hash mana sistem yang Anda masukkan melalui web menyimpan kata sandi Anda. Itu sebabnya Anda harus mempertimbangkan semua kemungkinan.

Masalah utama pengembang perangkat lunak adalah hampir tidak mungkin meyakinkan pengguna untuk memiliki kata sandi minimal 12 karakter. Saat ini, dapat dikatakan bahwa tingkat penggunaan kata sandi dengan panjang ini rendah. Oleh karena itu, sesuai dengan skenario penggunaan sistem yang dikembangkan, perlu dicari jalan tengah yang dapat diterima oleh pengguna. untuk meningkatkan keamanan kata sandi mereka.

saran terakhir untuk pengembang adalah untuk memeriksa tidak hanya panjang minimum tetapi juga panjang maksimum input yang masuk melalui formulir yang telah Anda berikan kepada pengguna. Terutama ketika Anda mengaktifkan penggunaan algoritme hash yang lambat dihitung seperti Bcrypt untuk keamanan tujuan, Anda mungkin menghadapi beberapa risiko jika Anda tidak mengontrol panjang maksimum kata sandi yang dimasukkan oleh pengguna. Misalnya, penyerang dapat melakukan serangan dengan mencoba puluhan kata sandi 100 ribu karakter sekaligus dengan beberapa permintaan yang disiapkan khusus. Dalam kasus seperti itu, kemungkinan besar sistem Anda akan menjadi tidak responsif terhadap pengguna lain.

Saran untuk Pengguna Akhir

Buat kata sandi Anda minimal 12 karakter dan pastikan untuk memasukkan kombinasi huruf besar dan kecil, angka, dan simbol. Jangan pernah lupa bahwa sistem yang menyimpan kata sandi Anda dapat diretas, dan informasi Anda dapat disalahgunakan. Anda tidak dapat mengetahui algoritme mana yang digunakan sistem untuk mengenkripsi kata sandi Anda, jadi sepenuhnya terserah Anda untuk mengambil tindakan pencegahan dan membuat kata sandi yang kuat.