Bahasa Indonesia

Teks & alat sehari-hari · Generator Kata Sandi

Bias modulo menjelaskan: memilih kata acak dari daftar tanpa distorsi

· Cara kerjanya

kata sandi keserampangan kriptografi

Ember bernomor tidak genap di samping set genap diproduksi setelah menolak satu ekor
Ilustrasi vektor ToolAcre asli

Menunjukkan mengapa 'panjang daftar modulo bilangan acak' lebih menyukai beberapa kata dibandingkan kata lain ketika rentangnya tidak terbagi rata, seberapa besar kemiringannya, dan bagaimana pengambilan sampel penolakan menghilangkannya.

Dadu yang adil dan jalan pintas yang tidak adil — mengapa mengambil modulo angka acak 7,776 tidak sama dengan melempar dadu

Sumber yang adil masih bisa memicu rutinitas seleksi yang tidak adil. Jika suatu program membaca bilangan bulat dan segera mengambil sisanya setelah pembagian dengan panjang daftar, beberapa indeks menerima nilai sumber lebih banyak setiap kali rentang sumber tidak habis dibagi dengan panjang tersebut. Cacatnya ada pada langkah reduksi, belum tentu dalam byte. ToolAcre hindari jalan pintas tersebut sebelum memilih kata EFF apa pun.

Dadu fisik memberikan perbandingan intuitif hanya ketika kelompok hasil lengkap dipetakan secara merata. Implementasi browser memiliki rentang mentah yang berbeda, sehingga ia menghitung jendela penerimaan untuk batasan yang diminta. Artikel ini membahas mekanisme yang dikirimkan daripada mengklaim bahwa byte browser benar-benar mereproduksi lima dadu. Keduanya dapat memilih indeks, namun prosedur dan bukti auditnya berbeda.

Dari mana bias berasal — nilai 32-bit tidak terbagi rata ke dalam keranjang 7,776, jadi beberapa kata pertama mendapat satu peluang ekstra

Untuk satu byte dan batas 100, rentang mentah memiliki 256 nilai yang mungkin. Dua kelompok lengkap 100 cocok, meninggalkan nilai 56. Mengurangi setiap modul byte 100 memberikan indeks nol hingga 55 masing-masing tiga gambar awal, sedangkan indeks 56 hingga 99 hanya menerima dua. Byte masukan mungkin seragam, namun distribusi keranjang yang dipilih tidak.

Komentar implementasi juga memperoleh masalah rentang terbatas yang sesuai untuk daftar entri 7,776 ketika dua byte dikurangi secara langsung. Angka-angka tersebut berasal dari rentang sebenarnya yang disebutkan dalam sumber, bukan dari asumsi tingkat serangan. Pertanyaan peninjauan yang penting adalah apakah nilai sisa digunakan, bukan apakah kemiringannya terlihat kecil dalam beberapa frasa yang dihasilkan.

Seberapa besar pengaruhnya — kecil untuk rentang acak yang besar, tetapi bukan nol, dan mengapa kode kriptografi menolak menerimanya

Uji deterministik membuat ekor yang tidak rata dapat diamati. Batas 3, 5, 7, 100 dan 7,776 sengaja dibuat canggung, sedangkan ikatan pangkat dua menunjukkan kasus tidak ada penolakan. Kontrol statistik lainnya menggunakan sumber Web Crypto yang sama untuk fungsi yang benar dan pembantu modulo yang naif, sehingga pengujian ini mengisolasi strategi pengurangan daripada menyalahkan sumber entropi.

ToolAcre tidak mengubah pemeriksaan distribusi tersebut menjadi prediksi waktu retak. Bias mengurangi keseragaman, namun menerjemahkan pengurangan tersebut menjadi kerugian bagi penyerang tertentu memerlukan model ancaman yang lengkap. Persyaratan tekniknya lebih jelas: setiap indeks yang memenuhi syarat harus memiliki jumlah nilai mentah yang diterima sama, dan kode dapat menerapkannya dengan tepat.

Contoh kemiringan yang terverifikasi dalam komentar implementasi dan pengujian deterministik

`secureRandomInt` menemukan jumlah byte terkecil yang mampu mewakili indeks valid tertinggi. Ini menghitung rentang byte, mengurangi sisa setelah pembagian dengan batas, dan memanggil hasilnya `limit`. Nilai di bawah batas tersebut termasuk dalam kelompok lengkap; nilai pada atau di atasnya dibuang sebelum operasi modulo diizinkan dijalankan.

Hasil imbang baru mengikuti setiap penolakan. Loop memiliki plafon tetap yang tinggi sehingga sumber injeksi yang rusak tidak dapat menggantung tab selamanya; setelah mengulangi nilai-nilai di luar jangkauan, ia malah mengembalikan jawaban yang bias. Jalur kegagalan ini adalah bagian dari kebenaran: menolak sumber yang mencurigakan mempertahankan janji bahwa indeks yang dikembalikan berasal dari jendela penerimaan seragam.

Alternatif — menggambar bit secukupnya dan membuang nilai di luar rentang, atau menggunakan fungsi integer seragam perpustakaan

Desain bilangan bulat seragam lainnya dimungkinkan, tetapi hal tersebut bukan merupakan perilaku paket ini dan oleh karena itu tidak disajikan sebagai opsi ToolAcre yang dapat dipertukarkan. Mesin memperlihatkan satu jalur yang diaudit. `secureRandomChoice` memvalidasi bahwa inputnya adalah array yang tidak kosong dan mendelegasikan ke `secureRandomInt(items.length)`, menjadikan pemilihan kata sebagai konsumen langsung dari kontrak bilangan bulat terikat.

Generator kata sandi acak menggunakan jalur yang sama untuk karakter, lalu memanggil pengacakan Fisher–Yates yang didorong oleh pertukaran berbatas aman. Itu tidak menggunakan `sort` dengan pembanding acak. Mempertahankan satu primitif di bawah beberapa fitur membuat tinjauan sumber dapat dilakukan: perbaiki atau uji pengurangan seragam satu kali, lalu ikuti pemanggilnya.

Desain alternatif berada di luar modul ini; jalur yang dikirimkan menggunakan pengambilan sampel penolakan

Uji regresi terikat-100 memasok setiap byte ekor dari 200 hingga 255 dan kemudian 42 terakhir. Kode yang benar menghabiskan semua 56 byte yang ditolak dan jawaban dari 42. Kasus terfokus kedua memasok 200 dan 7; karena 200 modulo 100 akan menjadi nol, mengembalikan 7 membuktikan bahwa byte pertama ditolak daripada dikurangi secara diam-diam.

Contoh yang berfungsi ini bersifat deterministik dan tidak mengandung kredensial. Byte produksi tetap bersifat pribadi untuk panggilan browser dan tidak dicatat. Sumber pengujian hanya dapat disuntikkan sehingga perilaku dapat dipaksakan pada batasnya; paket publik tidak menawarkan mode unggulan produksi yang dapat mereproduksi frasa sandi yang dihasilkan.

Contoh praktis: terikat 100 menolak byte 200 dan menerima 7 berikut

Pengurangan acak floating-point, API seragam khusus perpustakaan, dan algoritme pengacakan yang tidak terkait tidak termasuk dalam penerapan ini. Mengevaluasi mereka memerlukan sumber dan kontrak mereka. Kode ToolAcre berbasis bilangan bulat dan dibatasi secara eksplisit, jadi menambahkan survei alternatif akan mengaburkan klaim sempit yang sebenarnya dibuktikan oleh pengujian tersebut.

Artikel tersebut juga tidak menyimpulkan bahwa kata sandi yang dibuat secara seragam cocok untuk setiap kebijakan atau perangkat. Pemilihan indeks seragam membahas satu mekanisme. Batasan penyimpanan, penggunaan kembali, penanganan clipboard, malware, dan tujuan tetap menjadi pertanyaan terpisah bahkan ketika setiap elemen daftar memiliki peluang pemilihan yang sama.

Kesimpulannya — generator frasa sandi harus memilih kata-kata secara seragam; periksa catatan Teknis alat tersebut untuk mengetahui cara Generator Kata Sandi melakukannya

Generator frasa sandi tidak boleh mendukung entri awal hanya karena rentang mentahnya menyisakan sisa. ToolAcre mengambil byte dari Web Crypto, menolak bagian yang tidak lengkap dan hanya mengurangi nilai di dalam grup lengkap berukuran sama. Pengujian tersebut memaksakan batasan penolakan dan penerimaan sehingga klaim tidak didasarkan pada inspeksi visual terhadap keluaran.

Saat meninjau kode serupa, hitung rentang mentah untuk lebar byte yang dipilih, bagi dengan batas yang diminta, dan cari sisa yang dibuang. Jika tidak ada ekor yang ditolak, minta bukti keseragaman lainnya. Daftar kata dapat bersifat publik dan kriptografi sumber, sementara pengurangan yang ceroboh masih menimbulkan distorsi yang dapat dihindari.