✖

Keamanan kata sandi

Penyerang yang berusaha masuk ke aplikasi yang dilindungi kata sandi (arsip RAR yang dikunci, surel…) mempunyai beberapa cara untuk mencapai tujuannya tanpa mengetahui kata sandinya. Sebagian cara memerlukan kecerdasan, kecerdikan, dan pengetahuan, sebagian lagi memerlukan sedikit keberuntungan dan kekuatan fisik. Jadi, mari kita rangkum dulu pilihan apa saja yang dimiliki penyerang.

Cara membobol kata sandi orang lain

  • Menemukan orang yang tahu kata sandinya (misalnya pemilik akun surel) dan mendapatkan kata sandi darinya: membujuknya, menyuapnya, atau memukulinya. Cara ini tidak akan saya bahas lebih lanjut dalam artikel ini :-).
  • Mencoba memancing kata sandi dari pemiliknya secara diam-diam, misalnya dengan surel palsu. Istilah teknisnya phishing. Caranya, kamu mengirim surel kepada pemilik akun dan memintanya mengirimkan kembali nama pengguna dan kata sandinya. Semuanya bergantung pada seberapa meyakinkan pesan itu. Permintaan saja mungkin tidak cukup, jadi perlu ditambah suatu cerita. Sering kita jumpai cerita bahwa basis data rusak, sehingga semua pengguna diminta memasukkan lagi nama dan kata sandinya, jika tidak, akunnya akan dihapus, dan sebagainya. Jika pesan itu tampak benar-benar resmi, persentase keberhasilannya biasanya tidak kecil.
  • Serangan kamus: kita mengunduh dari internet kumpulan kata sandi yang paling sering dipakai dan mencoba semuanya. Jika kita beruntung dan pemiliknya memakai kata sandi yang umum, kita benar-benar mendapatkannya dengan mudah. Dari sini muncul pelajaran penting: jangan memakai kata sandi yang bermakna. Pakailah misalnya kata sandi rahasia, dan saya jamin peretas amatir pertama akan membobolnya dalam beberapa detik. Ini mungkin cara yang paling efektif. Jika kamu mempunyai kamus kata sandi yang benar-benar besar, kamu dapat menebak kata sandi sebagian besar pengguna tanpa banyak usaha.
  • Serangan brute force adalah cara yang paling bodoh, yaitu dengan kekuatan kasar. Caranya, semua susunan kata sandi yang mungkin dicoba satu per satu. Program menyusun huruf-huruf secara bertahap menurut algoritma tertentu dan memeriksa apakah kata sandinya sudah tertebak. Begitu menemukannya, program menyimpan kata sandi itu dan berhenti. Cara inilah yang akan kita bahas lebih lanjut.

Serangan brute force

Program yang memakai cara ini hanya membentuk berbagai susunan kata dan memeriksa apakah kebetulan sudah menebak kata sandinya. Mari kita hitung berapa lama percobaan seperti itu bisa berlangsung.

Misalkan kata sandi terdiri atas lima karakter dan hanya memakai huruf kecil alfabet Latin (tanpa huruf beraksen). Banyak huruf alfabet Latin adalah dua puluh enam. Sekarang kita hitung dengan mudah berapa banyak kata sandi berbeda yang dapat dibentuk dari lima huruf seperti itu. Kita memakai permutasi, karena urutan diperhatikan (kata sandi kasur tidak sama dengan rusak, meskipun hurufnya sama), dan lebih tepatnya susunan dengan pengulangan, karena huruf dalam kata sandi boleh berulang. Sekarang perhitungannya. Banyak susunan k unsur dari n unsur dengan pengulangan adalah nk. Untuk n kita masukkan banyak huruf yang dipilih, yaitu banyak huruf alfabet Latin, dan untuk k kita masukkan banyak huruf dalam kata sandi, dalam kasus kita lima. Diperoleh 265, yaitu sekitar dua belas juta susunan berbeda. Banyak atau sedikit?

Itu juga bergantung pada mesin yang kita punya. Komputer tua hanya mampu melakukan sedikit perbandingan per detik, komputer supermodern mampu sepuluh ribu kali lebih banyak. Dalam contoh-contoh ini saya mengasumsikan komputer yang mampu melakukan sepuluh juta perbandingan dan pemeriksaan per detik. Mungkin semua orang sudah menduga bahwa komputer seperti itu akan menemukan kata sandi lima karakter dalam waktu kurang dari dua detik. Hasil ini benar-benar tidak menggembirakan. Namun, jangan menyerah dulu.

Memperkuat kata sandi

Kata sandi lima karakter sama sekali tidak aman, dan beberapa sistem yang lebih masuk akal bahkan tidak mengizinkan kata sandi sependek itu. Konon kata sandi sebaiknya tidak kurang dari delapan karakter. Sekarang kita hitung berapa banyak susunan untuk kata sandi delapan karakter. Seperti tadi, kita hanya memperhatikan huruf kecil alfabet Latin. Kita masukkan ke rumus dan diperoleh 268, yaitu sekitar dua ratus miliar susunan. Bilangan ini sudah lebih baik. Komputer akan memeriksa semua susunan dalam waktu kurang dari enam jam. Ini lebih baik daripada tadi, tetapi mari kita lihat seberapa kuat kata sandi jika kamu juga memakai huruf besar, angka, dan karakter khusus seperti garis bawah, tanda hubung, dan sebagainya.

Ada 26 huruf kecil dan juga 26 huruf besar, sehingga seluruhnya ada 52 karakter. Ditambah lagi 10 angka dan beberapa karakter khusus. Tidak semua karakter khusus diizinkan di mana-mana, jadi agar sederhana saya hanya menghitung delapan karakter khusus, supaya banyak karakter menjadi 70 yang bulat. Panjang kata sandi tetap delapan. Setelah dimasukkan ke rumus, diperoleh bilangan 708. Agar lebih terbayang, bilangan ini kira-kira 5,8 · 1014, dengan kata-kata hampir enam ratus triliun susunan. Bilangan ini sudah cukup mengesankan. Komputer kita akan memeriksa semua susunan dalam waktu enam belas ribu jam! Itu hampir dua tahun. Penyerang harus sangat beruntung untuk menemukan kata sandi dalam waktu yang wajar. Lagi pula, ia harus tahu panjang kata sandimu. Jika tidak tahu, ia masih harus memeriksa susunan dengan jumlah karakter yang lebih sedikit.

Sebagian orang begitu khawatir akan datanya sehingga memakai kata sandi berupa angka. Kata sandi seperti itu sangat tahan terhadap serangan kamus, karena hampir tidak mungkin 41.274.390.553 ada dalam kamus kata sandi yang sering dipakai. Sayangnya, kata sandi seperti itu memang tahan terhadap serangan kamus, tetapi kurang tahan terhadap serangan brute force. Angka hanya ada sepuluh, artinya banyak susunan selalu 10k. Kekuatan kata sandi hanya bergantung pada panjangnya. Kata sandi delapan karakter kita sebelumnya, dengan semua jenis karakter, mempunyai sekitar 5,8 · 1014 susunan. Agar kata sandi angka mencapai setidaknya jumlah yang sama, kata sandi itu harus terdiri atas lima belas angka, hampir dua kali lebih banyak karakter. Jelas terlihat bahwa lebih efektif memilih kata sandi yang lebih pendek, tetapi dengan lebih banyak jenis karakter.

Jangan meremehkan penyerang

Penyerang bisa saja cerdik. Misalkan setelah membaca uraian di atas kamu memutuskan untuk mengubah kata sandimu sekarang, “semangat”, setidaknya menjadi “Semangat”. Dengan begitu banyak susunan yang mungkin naik berkali-kali lipat, karena penyerang sekarang juga harus memasukkan huruf besar ke dalam algoritmanya. Namun, penyerang dapat mengasumsikan bahwa huruf besar hanya ada di posisi pertama, karena lebih mudah diingat dan tidak lazim menaruh huruf besar di tengah kata. Jadi, ia menulis algoritma yang memeriksa semua susunan kata berhuruf kecil, dan juga kata yang huruf pertamanya huruf besar.

Kerumitan kata sandi semulamu (maksud saya, banyak semua susunan yang mungkin jika bentuk kata sandi dipertahankan, yaitu delapan huruf kecil) adalah 268. Jika penyerang tidak berpikir, kerumitan kata sandi baru menjadi 528. Namun, jika ia memakai algoritma yang dijelaskan di atas, kerumitan kata sandi itu adalah 52 · 267. Di posisi pertama kata sandi dapat muncul huruf kecil atau huruf besar, yang seluruhnya ada 52, dan di tujuh posisi berikutnya hanya dapat muncul huruf kecil, yang merupakan susunan dengan pengulangan biasa.

Selain itu, penyerang mungkin tahu bahwa kata sandimu terdiri atas empat huruf dan empat angka yang tidak diacak: semua angka berurutan dan semua huruf berurutan. Kerumitan kata sandi seperti itu kita hitung sebagai berikut: kelompok empat huruf pertama mempunyai 264 susunan, kelompok empat angka mempunyai 104 susunan. Kedua hasil ini lalu kita kalikan: 264 · 104. Jika penyerang tidak tahu apakah yang lebih dulu angka atau huruf, hasil tadi masih harus dikalikan dua.

Kamu juga dapat melihat tabel-tabel ini, yang memuat kecepatan pembobolan kata sandi.