✖

Keselamatan kata laluan

Penyerang yang cuba memasuki aplikasi yang dilindungi kata laluan (fail RAR berkata laluan, e-mel…) mempunyai beberapa cara untuk mencapai matlamatnya tanpa mengetahui kata laluan. Sesetengah cara memerlukan kecerdasan, kepintaran dan pengetahuan, manakala cara lain memerlukan sedikit nasib dan kekuatan fizikal. Jadi, mari kita ringkaskan dahulu pilihan yang ada pada penyerang.

Cara memecahkan kata laluan seseorang

  • Mencari orang yang mengetahui kata laluan itu (contohnya pemilik e-mel) dan mendapatkan kata laluan daripadanya: memujuknya, merasuahnya atau memukulnya. Cara ini tidak akan dibincangkan dalam artikel ini :-).
  • Cuba memperdaya pemilik supaya memberikan kata laluannya secara halus, contohnya melalui e-mel palsu. Istilah teknikalnya ialah pancingan data (phishing). Kaedah ini dilakukan dengan menghantar e-mel kepada pemilik akaun dan memintanya menghantar semula nama pengguna dan kata laluannya. Semuanya bergantung pada sejauh mana mesej itu kelihatan boleh dipercayai, kerana permintaan sahaja mungkin tidak mencukupi dan perlu disertakan dengan sesuatu cerita. Contohnya, mesej sering mendakwa bahawa pangkalan data telah rosak, jadi semua pengguna diminta memasukkan semula nama pengguna dan kata laluan, jika tidak peti mel mereka akan dibatalkan. Jika mesej itu kelihatan benar-benar sahih, kadar kejayaannya biasanya tidak kecil.
  • Serangan kamus: kita muat turun senarai kata laluan yang paling kerap digunakan dari internet dan mencuba kesemuanya. Jika kita bernasib baik dan pemilik menggunakan kata laluan yang biasa, kita memang dapat memperolehnya dengan mudah. Daripada sini terdapat satu pengajaran penting: jangan gunakan kata laluan yang bermakna. Gunakan kata laluan seperti rahsia, dan saya jamin penggodam amatur yang pertama akan memecahkannya dalam beberapa saat. Kaedah ini mungkin yang paling berkesan. Jika anda mempunyai kamus kata laluan yang benar-benar besar, anda dapat meneka kata laluan sebahagian besar pengguna tanpa banyak usaha.
  • Serangan kekerasan (brute force) ialah kaedah yang paling bodoh. Kaedah ini mencuba semua susunan kata laluan yang wujud. Program menyusun huruf satu demi satu mengikut algoritma tertentu dan menyemak sama ada kata laluan yang dicari telah ditemui. Apabila kata laluan itu dijumpai, program menyimpannya dan berhenti. Kaedah inilah yang akan kita bincangkan seterusnya.

Serangan kekerasan

Program yang menggunakan kaedah ini hanya membentuk susunan perkataan yang berbeza dan menyemak sama ada salah satunya ialah kata laluan. Mari kita kira berapa lama masa yang diperlukan.

Andaikan kita mempunyai kata laluan lima aksara yang hanya terdiri daripada huruf kecil abjad Inggeris (tanpa huruf beraksen). Bilangan huruf abjad Inggeris ialah dua puluh enam. Sekarang kita mudah sahaja mengira berapa banyak kata laluan berbeza yang boleh dibentuk daripada lima huruf seperti ini. Kita menggunakan pilih atur kerana susunan penting (kata laluan batik tidak sama dengan kitab walaupun terdiri daripada huruf yang sama), dan kita juga perlu menggunakan susunan dengan ulangan kerana huruf dalam kata laluan boleh berulang. Sekarang pengiraannya. Bilangan susunan dengan ulangan ialah nk. Bagi n, kita gantikan bilangan huruf yang boleh dipilih, iaitu bilangan huruf abjad Inggeris, dan bagi k, kita gantikan bilangan huruf dalam kata laluan, iaitu lima. Kita memperoleh 265, iaitu kira-kira dua belas juta susunan yang berbeza. Adakah bilangan ini banyak atau sedikit?

Hal itu juga bergantung pada mesin yang kita ada. Komputer lama mampu melakukan sedikit perbandingan sesaat, manakala komputer yang sangat moden mampu melakukan sepuluh ribu kali ganda jumlah itu. Dalam contoh-contoh ini, saya menganggap bahawa komputer mampu melakukan sepuluh juta perbandingan dan penilaian sesaat. Mungkin semua orang sudah dapat mengagak bahawa komputer seperti ini akan menemui kata laluan lima aksara dalam masa kurang daripada dua saat, dan itu sememangnya bukan keputusan yang baik. Tetapi jangan berputus asa.

Menguatkan kata laluan

Kata laluan lima aksara langsung tidak selamat, malah sesetengah sistem yang lebih bijak tidak membenarkan kata laluan sependek itu. Kata laluan dikatakan tidak sepatutnya lebih pendek daripada lapan aksara. Mari kita kira berapa banyak susunan yang wujud bagi kata laluan lapan aksara. Seperti dalam kes sebelumnya, kita hanya mengambil kira huruf kecil abjad Inggeris. Gantikan ke dalam rumus dan kita memperoleh 268, iaitu kira-kira dua ratus bilion susunan. Bilangan ini sudah lebih baik. Komputer akan menyemak semua susunan dalam masa kurang daripada enam jam. Hal ini lebih baik daripada sebelumnya, tetapi mari kita lihat bagaimana kekuatan kata laluan bertambah jika anda juga menggunakan huruf besar, digit dan aksara khas seperti garis bawah, sempang dan sebagainya.

Terdapat 26 huruf kecil dan 26 huruf besar, jadi kesemuanya 52 aksara. Kita perlu menambah 10 digit dan beberapa aksara khas. Tidak semua aksara khas dibenarkan di semua tempat, jadi untuk memudahkan, saya hanya mengambil kira lapan aksara khas supaya bilangan aksara menjadi 70 yang bulat. Panjang kata laluan sekali lagi lapan. Selepas digantikan, kita memperoleh nombor 708, iaitu kira-kira 5.8 · 1014, atau hampir enam ratus trilion susunan. Bilangan ini sudah agak mengagumkan. Komputer kita akan menyemak semua susunan dalam masa enam belas ribu jam! Ini hampir dua tahun. Penyerang perlu sangat bernasib baik untuk menemui kata laluan dalam masa yang munasabah. Tambahan pula, dia perlu mengetahui panjang kata laluan anda. Jika tidak, dia juga perlu menyemak susunan dengan bilangan aksara yang lebih kecil.

Sesetengah orang sangat bimbang akan keselamatan data mereka sehingga mereka menggunakan kata laluan yang terdiri daripada nombor sahaja. Kata laluan seperti ini sangat tahan terhadap serangan kamus kerana sukar untuk nombor 41 274 390 553 terdapat dalam kamus kata laluan yang kerap digunakan. Malangnya, walaupun tahan terhadap serangan kamus, kata laluan seperti ini kurang tahan terhadap serangan kekerasan. Hanya terdapat sepuluh digit, jadi bilangan susunan sentiasa 10k. Kekuatan kata laluan hanya bergantung pada panjangnya. Kata laluan lapan aksara kita sebelum ini, dengan semua jenis aksara, mempunyai kira-kira 5.8 · 1014 susunan. Untuk mencapai sekurang-kurangnya bilangan yang sama, kata laluan nombor perlu mempunyai lima belas digit, iaitu hampir dua kali ganda bilangan aksara. Jelas sekali bahawa lebih berkesan untuk memilih kata laluan yang lebih pendek tetapi dengan lebih banyak jenis aksara.

Jangan memandang rendah penyerang

Penyerang mungkin bijak. Katakan selepas membaca baris-baris di atas, anda memutuskan untuk menukar kata laluan anda sekarang, “rambutan”, sekurang-kurangnya kepada “Rambutan”. Hal ini menambahkan bilangan susunan yang mungkin beberapa kali ganda kerana penyerang kini perlu memasukkan huruf besar ke dalam algoritmanya. Tetapi penyerang boleh mengandaikan bahawa huruf besar hanya berada di tempat pertama kerana lebih mudah diingat, dan huruf besar biasanya tidak diletakkan di tengah-tengah perkataan. Jadi, dia menulis algoritma yang menyemak semua susunan perkataan dengan huruf kecil dan, jika perlu, dengan satu huruf besar di hadapan sahaja.

Kerumitan kata laluan asal anda (maksudnya, jumlah susunan yang mungkin jika bentuk kata laluan yang sama dikekalkan, iaitu lapan huruf kecil) ialah 268. Jika penyerang tidak berfikir, kerumitan kata laluan baharu ialah 528, tetapi jika dia menggunakan algoritma yang diterangkan di atas, kerumitan kata laluan itu ialah 52 · 267. Tempat pertama kata laluan boleh diisi dengan huruf kecil atau huruf besar, iaitu 52 kesemuanya, manakala tujuh tempat yang lain hanya boleh diisi dengan huruf kecil, dan itu ialah susunan dengan ulangan yang biasa.

Selain itu, penyerang mungkin tahu bahawa kata laluan anda terdiri daripada empat huruf dan empat digit yang tidak bercampur, iaitu semua huruf berturutan dan semua digit berturutan. Kerumitan kata laluan seperti ini dikira seperti berikut: empat huruf yang pertama mempunyai 264 susunan, manakala empat digit yang kedua mempunyai 104 susunan. Kedua-dua hasil ini kemudian didarab: 264 · 104. Jika penyerang tidak tahu sama ada digit atau huruf yang berada di hadapan, hasil sebelumnya perlu didarab dengan dua.