Permainan kata sandi, dan aturan yang tidak melindungi

Diterbitkan oleh David Carrero

Pada Juni 2023, seorang pemrogram bernama Neal Agarwal merilis di situsnya, neal.fun, sesuatu berjudul The Password Game. Kamu diminta mengetik kata sandi. Lalu diminta panjangnya minimal lima karakter. Lalu satu angka. Lalu satu huruf besar. Lalu satu karakter khusus.

Sampai di situ ini bukan permainan. Ini formulir bankmu.

Setelah itu barulah bagian yang lain. Jumlah digitnya harus 25. Harus memuat nama bulan. Harus memuat angka Romawi yang hasil kalinya 35. Harus memuat jawaban Wordle hari ini. Harus mengenali negara pada sebuah foto. Harus memuat langkah terbaik dari sebuah posisi catur, dalam notasi aljabar. Ada tiga puluh lima aturan, dan di tengah jalan di dalam kata sandimu menetas emoji telur bernama Paul, yang harus diberi makan ulat, sementara nyala api melahap karaktermu kalau tidak segera kamu padamkan.

Permainan itu berhasil karena satu alasan yang tidak nyaman: tidak ada yang perlu menjelaskan lelucunya kepadamu. Kamu menangkapnya dalam satu detik, karena mekanisme itu sudah kamu tanggung separuh hidupmu. Yang dilakukan Agarwal cuma menarik benangnya lebih jauh.

Dan di situlah kita perlu pelan-pelan. Empat aturan pertama bukan dia yang mengarang.

Dari mana asal aturan yang sudah kamu kenal

Satu huruf besar, satu angka, satu simbol, dan panjang minimum bukan folklor internet: itu terjemahan praktis dari sebuah dokumen NIST Amerika Serikat yang terbit pada 2003, SP 800-63, ditulis Bill Burr. Dari sana ia turun ke formulir separuh dunia, dan dari sana ke kepalamu.

Kami menceritakannya utuh di apa itu kata sandi: Burr tidak punya data kata sandi nyata — nyaris tidak ada — jadi ia menalar ke arah yang tampak masuk akal. Makin beragam karakternya, makin banyak kombinasinya, makin aman. Pada 2017 NIST sendiri berbalik arah, dan Burr mengatakan kepada Wall Street Journal bahwa ia menyesali sebagian besar yang ia tulis.

Jadi permainan Agarwal tidak melebih-lebihkan kebijakan keamanan. Ia melanjutkan daftar yang sudah salah sejak baris pertama. Satu-satunya beda antara “harus memuat simbol” dan “digitnya harus berjumlah 25” adalah bahwa kamu sudah terbiasa dengan yang pertama.

Yang tidak pernah diukur aturan-aturan itu

Di sinilah leluconnya berhenti lucu, karena bisa diukur.

Angka-angka ini keluar dari pemeriksa situs ini, dengan model yang ia nyatakan sendiri: serangan luring terhadap hash cepat, pada 10¹² percobaan per detik. Ini bukan taksiran brosur; ini yang akan kamu lihat kalau kamu mengetik untaian yang sama di sana.

kata sandi aturan yang dipenuhi percobaan bertahan
Katasandi1! keempatnya 1,4 × 10⁹ < 1 detik
Musim2026! keempatnya 5,8 × 10⁷ < 1 detik
Zx9#kQ2m keempatnya 3,3 × 10¹⁵ 55 menit
enam kata hasil lemparan dadu, huruf kecil tidak satu pun 1,1 × 10²³ 3.500 tahun

Baris terakhir bukan dari pemeriksa melainkan dari aritmetika, dan itu disengaja: pemeriksa tidak bisa tahu bahwa enam kata itu keluar dari dadu, jadi ia akan menghitung hal lain. Enam lemparan tepat 77,5 bit, dan 77,5 bit pada 10¹² percobaan per detik kira-kira tiga ribu lima ratus tahun. Kita kembali ke sana di bagian akhir.

Baca lagi. Katasandi1! lolos formulir mana pun di planet ini dan jatuh sebelum kamu melepas tombol, karena katanya ada di kamus dan sisanya adalah hiasan yang dipasang semua orang: huruf besar di depan, angka dan simbol di belakang. Dan baris terakhir, enam kata biasa dengan huruf kecil, akan ditolak separuh situs tempat kamu punya akun: tanpa huruf besar, tanpa angka, tanpa simbol.

Zx9#kQ2m layak dihentikan sejenak, karena itu kasus terbaik yang mungkin dari aturan tersebut. Delapan karakter yang benar-benar acak, dengan keempat jenisnya — persis yang dianggap kebijakan 2003 sebagai kata sandi teladan. Lima puluh lima menit. Dan itu plafon: pemeriksa tidak bisa tahu kamu mengetiknya secara acak, jadi ia memberimu keuntungan dari keraguan dan menghitung skenario terbaik. Lagi pula tidak ada yang mengetik begitu. Minta seseorang delapan karakter dengan simbol dan yang keluar adalah Halo123! — 6,9 × 10⁶ percobaan, kurang dari satu detik.

Aturan itu tidak membedakan keduanya. Bagi formulir, Halo123! dan Zx9#kQ2m adalah kata sandi yang sama. Itulah cacatnya secara utuh: aturan komposisi mengukur bentuk untaian, sedangkan ketahanannya tidak ada pada bentuk.

Aturan 90 hari, atau bagaimana Hujan2026! tercipta

Separuh warisan 2003 yang lain adalah masa kedaluwarsa. Ganti tiap sembilan puluh hari.

Tidak ada yang mengarang kata sandi baru tiap sembilan puluh hari. Yang orang lakukan — yang kamu lakukan, dan aku juga — adalah menaikkan yang lama satu tingkat. Musim2026! menjadi Hujan2026! dan urusan selesai. Keduanya bertahan kurang dari satu detik, dan kalau penyerang punya yang pertama, menebak yang kedua bukan serangan: itu mengisi ruang kosong.

NIST mencabut rotasi wajib dalam SP 800-63B, pada 2017. Dalam revisi Agustus 2025 nadanya mengeras: di tempat yang dulu berbunyi bahwa verifikator sebaiknya tidak memaksakan aturan komposisi atau menuntut perubahan berkala, sekarang tertulis bahwa mereka tidak boleh melakukan keduanya. Perubahan hanya dipaksakan kalau ada indikasi kata sandi sudah bocor.

Sembilan tahun setelah pencabutan pertama, perusahaanmu masih meminta satu huruf besar tiap triwulan.

Batas jumlah karakter adalah pertanda terburuk

Agarwal bercerita bahwa titik puncaknya — yang mendorongnya membuat permainan itu — adalah saat ia mencoba membuat akun dan diberi tahu bahwa kata sandinya terlalu panjang.

Dari semua aturan absurd, hanya itu yang sekaligus merupakan pertanda buruk.

Sistem yang menyimpan kata sandimu sebagaimana mestinya justru tidak menyimpannya: ia menyimpan hash-nya, dan sebuah hash selalu berukuran sama, mau kamu beri delapan karakter atau delapan ratus. Tidak ada alasan penyimpanan apa pun untuk batas enam belas. Ada tepat satu pengecualian teknis yang sah dan dikenal — bcrypt mengabaikan apa pun di atas 72 bita — dan itu tidak menjelaskan formulir yang berhenti di dua belas.

Plafon yang pendek tidak membuktikan mereka menyimpan kata sandimu dalam bentuk terbaca, tetapi itu jenis detail yang hanya muncul kalau seseorang memasukkannya ke kolom basis data berlebar tetap. SP 800-63B justru meminta sebaliknya: agar sekurang-kurangnya 64 karakter diterima.

Aturan yang benar-benar bekerja tidak muat di formulir

Ketidaknyamanan mendasarnya: praktik yang baik tidak bisa dirumuskan sebagai kotak validasi. Tidak ada yang bisa menulis ekspresi reguler untuk “kamu belum memakainya di tempat lain” atau untuk “ia tidak ada di kebocoran terakhir”.

Yang bisa dilakukan adalah menghitung. Frasa dari kata-kata yang dipilih dengan dadu — Diceware — menambah 12,9 bit bersih per kata, dan bit-bit itu memang benar-benar bit. Dengan model yang sama, 10¹² percobaan per detik:

  • Lima kata adalah 64,6 bit: sekitar 164 hari.
  • Enam kata adalah 77,5 bit: sekitar 3.500 tahun.

Dua angka itu perlu disebut, bukan cuma yang kedua. Sering diulang bahwa frasa lima kata “bertahan berabad-abad”; melawan hash cepat ia tidak bertahan berabad-abad: ia bertahan lima setengah bulan. Karena itu Reinhold menyarankan lima sebagai batas bawah dan enam untuk hal yang benar-benar penting. Kata keenam itulah yang mengubah skalanya, dan itu gratis.

Keduanya sama-sama tidak akan lolos formulir bankmu.

Kenapa permainan itu lucu

Ketika permainan menuntut jumlah digitmu 25, kamu tertawa karena itu syarat sembarang yang tidak ada hubungannya dengan apa yang membuat kata sandi aman.

Menuntut simbol juga syarat sembarang yang tidak ada hubungannya dengan apa yang membuat kata sandi aman. Bedanya, yang satu itu disajikan separuh internet, dan pada yang satu itu kita sudah telanjur sayang.

Kalau kamu mau ringkasan praktisnya, muat dalam tiga baris: pakai generator atau sepasang dadu, simpan hasilnya di pengelola kata sandi, dan penuhi aturan formulir dengan menambahkan apa yang ia minta, tanpa percaya bahwa itu melindungimu dari apa pun. Huruf besar di depan dan ! di belakang itu karcis tol, bukan pertahanan.

Sisanya adalah permainan. Dibuatnya bagus sekali, dan sayang sekali ia tidak berhenti sebagai permainan.


Sumber: Neal Agarwal, “The Password Game” (neal.fun, 27 Juni 2023), 35 aturannya dan cerita penulisnya sendiri tentang formulir yang mengatakan kata sandinya terlalu panjang · NIST SP 800-63 (2003), SP 800-63B (2017) dan SP 800-63B-4 (Agustus 2025), yang untuk aturan komposisi dan kedaluwarsa beralih dari “sebaiknya tidak” menjadi “tidak boleh”, dan meminta agar sekurang-kurangnya 64 karakter diterima · pernyataan Bill Burr kepada Wall Street Journal, Agustus 2017 · Arnold G. Reinhold, Diceware (1995), asal angka 12,9 bit per kata. Waktu pada tabel diukur dengan pemeriksa situs ini, dengan model yang ia nyatakan, 10¹² percobaan per detik melawan hash cepat; angka Diceware dihitung pada laju yang sama dari log₂(7.776) per kata.

Foto oleh Olha Ruskykh · Pexels

← Kembali ke blog