Perlakukan nomor akun rahasia sebagai kredensial: auditlah
Jika mengetahui nomor itu membuat seseorang masuk atau menarik konfigurasi, itu kredensial. Jalankan pemeriksaan otoritas, penyimpanan, laju tebakan, dan rotasi.
Kolom berlabel nomor akun tidak otomatis menjadi referensi publik, dan labelnya bukan ujian. Ujiannya adalah apa yang diizinkan oleh kepemilikan: jika mengetahui nomor itu membuat seseorang masuk, mengunduh profil koneksi, atau mengotorisasi perangkat, nomor itu adalah kredensial dengan siklus hidup. Saya menjalankan lima pemeriksaan di bawah setiap kali sebuah layanan menerbitkan identitas numerik dan menyebutnya tidak berbahaya. Masing-masing menghasilkan satu baris dalam catatan singkat, dan catatan itulah hasil serah terima, bukan putusan tentang produk.
Inventarisasi apa yang sebenarnya diberikan kepemilikan
Tuliskan setiap tindakan yang dibuka nomor itu secara terpisah. Masuk ke portal, mengambil file konfigurasi, mengotorisasi perangkat baru, dan menyediakan login terowongan yang diterima adalah otoritas berbeda, dan layanan dapat menerapkan satu tanpa yang lain. Portal yang menerima nomor sebagai satu-satunya kolom tidak memberi tahu apa pun tentang bagaimana terowongan mengautentikasi pasangannya nanti atau bagaimana kunci lalu lintas diturunkan.
Model umumnya mudah dinyatakan: kredensial bearer adalah kredensial yang dapat digunakan pemegangnya tanpa membuktikan kepemilikan kunci kriptografis terpisah, dan itulah perbedaan yang RFC 6750 tarik untuk token. Ini perbandingan, bukan klaim bahwa layanan berbasis nomor menerapkan OAuth. Jika pemegang tidak memerlukan hal lain, perlakukan nomor itu sebagai rahasia bearer dan klasifikasikan sisa desain sesuai dengan itu.
Lindungi sebagai rahasia, bukan sebagai referensi
Penyimpanan mengikuti klasifikasi. Nilai yang membuat masuk berada di pengelola kata sandi, bukan di tangkapan layar, riwayat papan klip, pesan obrolan, atau catatan peramban. Tangkapan layar adalah kebocoran biasa: nomornya pendek dan tampak tidak berbahaya, sehingga berakhir di utas dukungan yang bertahan lebih lama daripada perangkat asalnya.
Phishing adalah mode kegagalan lainnya, dan tidak peduli seberapa acak nomornya. Penipu yang menginginkan nilainya akan meminta Anda menempelkannya ke formulir, dan kredensial yang tidak pernah kedaluwarsa serta tidak memiliki faktor kedua layak untuk diusahakan. Capai jalur masuk dari markah atau alamat yang dikenal, bukan dari tautan dalam pesan yang juga meminta nomor.
Perlakukan materi pemulihan sebagai bagian dari rahasia. Jika operator juga menerbitkan kode pemulihan, PIN, atau alamat email yang dapat mengatur ulang akun, itu kredensial terpisah dengan persyaratan perlindungan yang sama. Satu saluran atur ulang yang tidak terlindungi mengubah setiap kontrol lain menjadi hiasan.
Periksa ketahanan tebakan dan pembatasan laju bersama-sama
Panjang hanya bermakna di samping metode pembuatan. Nomor panjang dari urutan yang dapat diprediksi lebih lemah daripada nilai pendek dari generator kriptografis, dan jumlah digit yang mengesankan tidak membuktikan ketakterdugaan. Tanyakan bagaimana nilainya dibuat sebelum menalar seberapa sulit menebaknya.
Ketahanan tebakan saja juga tidak bertahan terhadap laju percobaan tanpa batas. Kontrol yang penting adalah yang diterapkan operator: penghitung percobaan gagal, penguncian, pembatasan per sumber, dan apakah nomor salah dapat dibedakan dari yang tidak ada. Jika layanan mendukungnya, satu percobaan gagal menunjukkan seperti apa galatnya dan apakah penghitung coba ulang muncul:
# one attempt, then read the response and any counter or delay
# do not script repeated guesses against a live account
curl -i -X POST https://portal.example.invalid/login -d "account=000000000000"
Catat apa yang diungkapkan respons. Galat terpisah untuk akun tak dikenal adalah oracle enumerasi bahkan ketika nomornya tak tertebak, dan temuan itu masuk ke catatan, baik Anda dapat memperbaikinya dari sisi klien maupun tidak.
Rencanakan rotasi dan pencabutan sebelum dibutuhkan
Temukan proses yang didukung untuk nomor yang hilang atau terekspos dan tuliskan saat semuanya berfungsi. Apakah kredensial akun dapat diganti sama sekali? Apakah penggantian membatalkan perangkat yang sudah terdaftar, sesi aktif, atau konfigurasi yang diunduh? Materi pemulihan apa yang diminta proses itu? Layanan tanpa ketergantungan email dapat memindahkan lebih banyak tanggung jawab pemulihan ke pengguna, yang membuat prosedurnya lebih penting, bukan kurang.
Pisahkan penggantian akun dari pencabutan kredensial. Jika nomor mengotorisasi pengunduhan kunci, sertifikat, atau profil, mengganti nomor dapat membuat materi yang diunduh itu tetap valid, dan mencabut materi yang diunduh dapat menjadi operasi lain dengan pemilik lain. Jangan menganggap satu kolom yang berubah mengakhiri setiap koneksi; periksa model sebenarnya operator dan catat di mana Anda memverifikasinya.
Dokumentasikan keputusan dan periksa ulang nanti
Simpan catatan satu halaman per layanan: otoritas apa yang diberikan nomor, di mana disimpan, siapa yang dapat mengatur ulangnya, bukti penggunaan apa yang ada, dan apa yang akan Anda lakukan pada jam pertama setelah pengungkapan. Catatan itulah yang mengubah perdebatan tentang terminologi menjadi keputusan yang dapat diaudit seseorang.
Klaim privasi memerlukan cakupannya sendiri. Nomor yang dibuat secara acak tetap bisa menjadi pengenal stabil yang menautkan peristiwa akun sepanjang waktu; ketakterdugaan bukanlah ketaktertautan, dan tidak ada sifat yang mengatakan apa pun tentang metadata jaringan yang disimpan. Bandingkan desain lengkap alih-alih menghitung kolom di layar masuk.
Sebelum Anda mencatatnya:
- Setiap otoritas yang diberikan nomor tercantum, termasuk unduhan dan otorisasi perangkat.
- Saluran penyimpanan dan pemulihan dilindungi dengan standar yang sama seperti nomor itu sendiri.
- Metode pembuatan dan batas laju diketahui, bukan diasumsikan dari panjang.
- Ada prosedur penggantian dan prosedur pencabutan, dan Anda tahu mana yang membatalkan mana.
- Catatan menyebutkan siapa yang dapat mengatur ulang nilai dan bukti apa yang tersisa setelah penggunaan.