FlowingDev

Kekuatan Password, dijelaskan: bahan rahasia sandimu adalah... matematika

Pelajari bagaimana kekuatan password diukur menggunakan entropi, sebuah konsep dari teori informasi yang mengukur ketidakpastian dan memperkirakan waktu peretasan.

Coba tool-nya: Kekuatan Kata Sandi

Dalam satu kalimat

Kekuatan password mengukur seberapa banyak tebakan (atau "entropi") yang dibutuhkan penyerang untuk membobol rahasia kamu, lalu mengubah upaya komputasi mentah itu menjadi perkiraan waktu yang bisa dipahami manusia.

Masalah yang dipecahkannya

Pada mulanya, ada komputer, dan komputer itu punya data, dan semuanya baik-baik saja. Tapi kemudian orang lain ingin melihat data itu, jadi kita menciptakan password. Awalnya, semua serba simpel. root, admin, guest. Tujuannya bukan keamanan, tapi lebih ke kontrol akses dasar, ibarat lemari arsip dengan kunci seadanya.

Lalu internet muncul. Tiba-tiba, komputer-komputer itu tidak lagi hanya ada di ruangan terkunci; mereka terhubung ke setiap komputer lain di planet ini. Kunci seadanya itu sekarang menjaga pintu depan kehidupan digitalmu, dan para penyerang jadi makin jago membobolnya.

Pertama, muncul serangan brute-force: mencoba setiap kombinasi yang ada. 'a', 'b', 'c', ... 'aa', 'ab', ... dan seterusnya. Cara ini berhasil, tapi lambat. Jadi penyerang jadi lebih pintar. Mereka sadar kalau manusia itu pemalas dan mudah ditebak. Inilah yang melahirkan serangan kamus (dictionary attack): daripada mencoba axfsvj, kenapa tidak coba password, sunshine, atau 123456? Serangan ini sangat efektif.

Para administrator sistem melawan balik dengan kebijakan: "Password Anda harus 8 karakter, mengandung satu angka dan satu huruf kapital!" Para pengguna, yang selalu kreatif dalam mengikuti aturan, merespons dengan Password1, Password2, dan yang paling legendaris P@$$w0rd1. Aturan kompleksitas ini malah menciptakan rasa aman yang palsu.

Kita butuh cara yang lebih baik untuk mengukur kualitas password. Bukan dengan mencentang kotak untuk tipe karakter, tapi dengan mengukur keacakannya yang sesungguhnya dan tak terduga. Kita perlu cara untuk mengukur "susah ditebak". Di sinilah konsep kekuatan password, yang berakar pada bidang matematika teori informasi, masuk. Konsep ini menyediakan metrik formal—entropi—untuk memperkirakan berapa lama sebuah password bisa bertahan dari gempuran penyerang yang gigih dengan superkomputer.

Cara kerjanya di bawah kap mesin

Pada intinya, estimasi kekuatan password adalah permainan angka. Kita mencoba menghitung seberapa besar tumpukan jerami yang harus digeledah penyerang untuk menemukan sebatang jarum password-mu.

### Entropi: Angka Ajaib

Satuan ukuran untuk kekuatan password adalah entropi, diukur dalam "bit". Dalam teori informasi, entropi adalah ukuran ketidakpastian atau keacakan. Untuk password, entropi mengukur seberapa tak terduganya password-mu.

Rumus dasarnya sangat sederhana:

Entropi = log₂(Ruang Pencarian)

"Ruang Pencarian" (Search Space) adalah jumlah total kemungkinan password dengan aturan tertentu. Untuk password sederhana yang dibuat secara acak, ruang pencarian dihitung sebagai:

Ruang Pencarian = N ^ L

Di mana:

  • N adalah jumlah kemungkinan karakter dalam set karakter (kumpulan simbol yang bisa kamu pilih).
  • L adalah panjang password.

Mari kita masukkan kembali ke rumus utama: Entropi = log₂(N ^ L), yang bisa disederhanakan menjadi Entropi = L * log₂(N).

Beberapa ukuran set karakter (N) yang umum:

  • Hanya angka (0-9): N = 10
  • Huruf kecil bahasa Inggris (a-z): N = 26
  • Huruf campuran bahasa Inggris (a-z, A-Z): N = 52
  • Alfanumerik + huruf campuran (a-z, A-Z, 0-9): N = 62
  • Simbol keyboard ASCII penuh: N ≈ 95

Jadi, untuk password 8 karakter yang hanya menggunakan huruf kecil, entropinya adalah 8 * log₂(26), yaitu sekitar 8 * 4.7 = 37.6 bit.

Apa sih artinya "37.6 bit"? Setiap bit entropi menggandakan ruang pencarian. Jadi, password dengan entropi 38 bit dua kali lebih sulit diretas daripada yang 37 bit. Pertumbuhan eksponensial inilah yang membuat penambahan satu atau dua karakter acak saja bisa meningkatkan kekuatan secara dramatis.

### Dari Entropi ke Waktu Retas

Bit itu bagus untuk komputer, tapi manusia berpikir dalam satuan menit, tahun, dan zaman. Untuk mendapatkan perkiraan waktu retas, kita butuh satu bahan lagi: kecepatan menebak si penyerang.

Ini sangat bervariasi. Serangan online (menebak di formulir login langsung) mungkin dibatasi hingga 10 tebakan per detik. Tapi skenario yang lebih realistis adalah serangan offline, di mana penyerang telah mencuri database berisi hash password. Dengan GPU modern, mereka bisa melakukan miliaran atau bahkan triliunan hash per detik.

Mari kita asumsikan penyerang yang kuat bisa membuat 10 miliar (10¹⁰) tebakan per detik. Jumlah tebakan yang diperlukan untuk menjamin password ditemukan adalah 2^Entropi. Rata-rata, mereka akan menemukannya di tengah jalan, jadi kita bisa memperkirakan waktunya:

Waktu Retas = (2^Entropi / 2) / TebakanPerDetik

Begini cepatnya eskalasi terjadi:

Entropi (bit) Total Tebakan Waktu Retas Rata-rata @ 10¹⁰ H/s Tingkat Keamanan
30 ~1 miliar < 0.1 detik Sangat Mudah
40 ~1 triliun ~1 menit Sangat Lemah
50 ~1 kuadriliun ~15 jam Lemah
60 ~1 kuintiliun ~1.8 tahun Cukup
70 ~1 sekstiliun ~1,800 tahun Kuat
80 ~1 septiliun > Usia alam semesta Sangat Kuat

Tabel ini menunjukkan mengapa beberapa bit entropi tambahan saja bisa membuat perbedaan yang luar biasa besar.

### Lebih dari Sekadar Brute Force: Masalah Pola

Rumus sederhana L * log₂(N) punya kelemahan besar: ia mengasumsikan setiap karakter dipilih dengan keacakan sempurna. Manusia tidak bekerja seperti itu. Kita menggunakan kata, tanggal, dan substitusi yang bisa ditebak. P@$$w0rd1 bukanlah urutan acak dari 9 karakter ASCII.

Di sinilah alat pengukur kekuatan password modern jadi sangat pintar. Yang terbaik, seperti pustaka zxcvbn dari Dropbox yang terkenal, tidak hanya menghitung entropi secara naif. Mereka bertindak seperti penyerang dan mencoba menemukan cara "termurah" untuk menyusun password-mu.

  1. Pemecahan (Chunking): Mereka memecah password menjadi beberapa bagian. Tr0ub4dor&3! menjadi Tr0ub4dor, &, 3, !.
  2. Pencocokan Pola: Mereka menganalisis setiap bagian dengan berbagai pola:
    • Kata kamus: Apakah troubador ada di kamus bahasa Inggris? (Ya). Apakah itu kata umum? (Ya).
    • Substitusi umum: Apakah Tr0ub4dor terlihat seperti troubador dengan o -> 0 dan a -> 4? (Ya).
    • Pola keyboard: Apakah itu urutan seperti qwerty atau asdfg?
    • Tanggal: Apakah terlihat seperti 1999 atau 2024?
    • Karakter berulang: Apakah itu sesuatu seperti aaaaaa?
  3. Analisis Biaya: Mereka menghitung entropi untuk setiap bagian berdasarkan polanya. Kata kamus yang umum memiliki entropi jauh lebih rendah daripada string acak dengan panjang yang sama. Entropi dari password bukanlah 8 * log₂(52); lebih dekat ke log₂(20000), karena itu adalah satu tebakan dari daftar password umum.
  4. Penjumlahan: Mereka menjumlahkan entropi dari bagian-bagian "termurah" untuk mendapatkan perkiraan kekuatan yang realistis dan teruji di lapangan. Inilah mengapa correct-horse-battery-staple mendapat skor jauh lebih tinggi daripada Tr0ub4dor&3, meskipun yang terakhir "terlihat" lebih kompleks.

Kisah nyata

### Kebijakan Perusahaan yang Jadi Bumerang

Sebuah perusahaan teknologi menengah meluncurkan kebijakan password baru yang ketat: minimal 10 karakter, satu huruf kapital, satu angka, satu simbol. Tujuannya adalah untuk memaksa penggunaan password dengan entropi tinggi. Apa yang mereka dapatkan adalah karyawan yang membuat password seperti Summer2024!, Fall2024!, dan Winter2025!. Pengukur kekuatan naif akan memberikan skor yang lumayan untuk password-password ini. Tapi ketika seorang penyerang berhasil membobol akun level rendah dan mempelajari polanya, mereka tidak perlu melakukan brute-force. Mereka hanya menulis skrip untuk mencoba setiap kombinasi musim dan tahun, dan dengan cepat mendapatkan akses ke puluhan akun.

Pelajaran: Kompleksitas yang dipaksakan sering kali melahirkan pola yang mudah ditebak. Pengukur kekuatan yang baik harus mendeteksi dan memberi penalti untuk skema umum seperti ini.

### Pencerahan XKCD 'Correct Horse Battery Staple'

Webcomic XKCD menerbitkan sebuah strip yang kini legendaris yang mengilustrasikan kekuatan password. Strip itu membandingkan Tr0ub4dor&3, password "kompleks" yang khas, dengan correct horse battery staple, sebuah passphrase dari empat kata umum namun acak. Meskipun Tr0ub4dor&3 sulit diingat oleh manusia, campuran substitusi dan polanya memberinya entropi yang bisa dihitung dan dapat dipecahkan oleh peretas yang berdedikasi dalam beberapa hari. Namun, passphrase empat kata tersebut mudah diingat oleh manusia. Dengan asumsi kamus berisi 2048 kata umum, entropinya adalah log₂(2048^4), yaitu 4 * 11 = 44 bit entropi yang bermakna. Untuk melakukan brute-force per karakter, penyerang dihadapkan pada string 28 karakter, sebuah tugas yang mustahil.

Pelajaran: Panjang sering kali menjadi pertahanan yang lebih kuat dan ramah pengguna daripada kompleksitas berbasis simbol. Passphrase adalah teman baikmu.

### Password 'Acak' yang Ternyata Tidak Acak

Seorang developer ditugaskan untuk membuat sistem yang menghasilkan password awal yang aman dan acak untuk pengguna baru. Dia menggunakan fungsi random() bawaan bahasanya dalam sebuah skrip sederhana. Passwordnya terlihat bagus: j8sL2!kP. Apa yang tidak disadari oleh developer itu adalah bahwa fungsi random() standar adalah Pseudorandom Number Generator (PRNG) yang seed-nya diambil dari waktu jam sistem. Seorang penyerang, setelah mendapatkan hanya satu dari password ini dan waktu pembuatannya (dari email, misalnya), mampu mengetahui seed-nya. Mereka kemudian bisa meregenerasi seluruh urutan password "acak" untuk setiap pengguna yang dibuat sekitar waktu yang sama.

Pelajaran: Sumber keacakan itu sangat-sangat penting. Untuk apa pun yang berhubungan dengan keamanan, selalu gunakan generator angka pseudorandom yang aman secara kriptografis (CSPRNG), seperti window.crypto.getRandomValues() di browser atau /dev/urandom di Linux.

Kesalahan dan jebakan umum

  • Mencampuradukkan kompleksitas dengan kekuatan. P@$$w0rd! terlihat kompleks, tapi itu adalah password buruk yang diakui secara global. empat kata acak digabung konsepnya sederhana tetapi jauh lebih kuat dalam praktiknya karena tidak memiliki pola yang dapat ditebak dan jauh lebih panjang.
  • Percaya buta pada 'bilah hijau'. Banyak pengukur kekuatan di web yang sangat naif. Mereka hanya melakukan perhitungan panjang * set_karakter sederhana dan tidak memeriksa kamus, pola, atau data pelanggaran publik. Peringkat "kuat" dari pengukur yang lemah adalah sebuah kebohongan.
  • Mengabaikan vektor serangan offline. Jangan mengukur kekuatan password Anda terhadap formulir login yang mengunci Anda setelah tiga kali percobaan. Asumsikan penyerang memiliki hash password Anda dan sedang mengujinya dengan rak GPU di ruang bawah tanah mereka. Selalu rancang untuk skenario terburuk.
  • Menggunakan kembali password. Password paling brilian dengan entropi 128-bit sekalipun menjadi tidak berharga saat terekspos dalam pelanggaran data situs web lain. Penyerang tidak akan meretasnya; mereka hanya akan mencarinya di daftar dan langsung masuk.
  • Berpikir password pendek tidak masalah selama acak. Password 8 karakter yang benar-benar acak menggunakan semua simbol keyboard memiliki entropi yang lumayan (~53 bit). Tapi "lumayan" tidak seperti dulu lagi. Mengingat biaya komputasi yang terus menurun, password itu bisa diretas dalam hitungan minggu atau bulan. Panjang memberikan margin keamanan yang jauh lebih nyaman.

Kenapa ini penting buat kamu

Memahami kekuatan password bukan hanya untuk para profesional keamanan.

Sebagai developer, jika kamu membangun sistem otentikasi apa pun, kamu berada di garis depan. Alih-alih memberlakukan aturan sewenang-wenang (harus mengandung karakter dari alfabet Kiril yang diucapkan hanya pada hari Selasa), kamu harus mengarahkan pengguna ke apa yang benar-benar efektif: panjang dan ketidakpastian. Mengintegrasikan pengukur kekuatan yang cerdas dapat memberikan umpan balik real-time yang benar-benar membantu pengguna, dan mengetahui prinsip-prinsipnya memungkinkan kamu membuat keputusan arsitektur yang lebih baik (seperti memilih algoritma hashing yang lambat dan mahal seperti Argon2).

Sebagai pengguna, pengetahuan ini mengubahmu dari pengikut aturan yang pasif menjadi pembela data pribadimu yang aktif. Ini memberimu intuisi untuk menciptakan rahasia yang mudah diingat olehmu dan sangat sulit bagi mereka. Ini adalah fondasi teoretis untuk seluruh postur keamanan digitalmu.

Pelajari lebih dalam

Teori beres. Saatnya praktik — 100% di browser kamu.

Coba tool-nya: Kekuatan Kata Sandi