Teks & alat sehari-hari · Generator Kata Sandi
PRNG vs CSPRNG: asal nomor acak browser Anda
· Latar belakang
kata sandi web-kripto cspng
Menjelaskan perbedaan antara generator pseudo-acak dan aman secara kriptografis, bagaimana sistem operasi mengumpulkan entropi dari peristiwa perangkat keras, dan bagaimana keacakan tersebut mencapai halaman web melalui Web Kripto API.
Komputer bersifat deterministik, jadi dari manakah datangnya keacakan? — teka-teki dasar di balik setiap generator
JavaScript berjalan di ToolAcre dimulai pada batas API. Ia dapat meminta byte dari `crypto.getRandomValues`, mengamati apakah panggilan itu berhasil dan menggunakan array yang dikembalikan. Itu tidak dapat memeriksa setiap peristiwa fisik, kumpulan kernel, atau komponen perangkat keras yang mungkin digunakan oleh platform tertentu di bawahnya. Oleh karena itu, cerita asal muasal buku kerja untuk keacakan melebihi bukti lokal.
Penjelasan yang jujur secara teknis dimulai saat observasi dimulai. Aplikasi menyelidiki Web Crypto, mesin membungkusnya dan semua pilihan menggunakan sumber itu. Internal khusus platform memerlukan dokumentasi dan audit platform, bukan pernyataan umum yang disimpulkan dari nama metode browser.
Repositori dimulai di browser API; itu tidak mengaudit sumber entropi fisik
Generator acak semu sering kali dideskripsikan berdasarkan benih dan status yang dapat direproduksi, tetapi mesin JavaScript tidak diperlukan oleh repositori ini untuk berbagi satu desain Math.random. ToolAcre menghindari ambiguitas dengan melarang API sepenuhnya dalam produksi kredensial. Pemindaian sumber menerapkan jaminan negatif tersebut.
Pengujian masih memerlukan byte deterministik, sehingga pengujian tersebut memasukkan objek yang mengekspos `getRandomValues` melalui parameter internal. Barang palsu tersebut berada dalam dukungan pengujian dan tidak diekspor sebagai mode produksi unggulan. Testabilitas tidak menciptakan opsi pengguna tersembunyi untuk kata sandi yang dapat diulang.
Math.random dilarang di sini, tanpa mengklaim satu desain PRNG universal
Produk ini menggunakan "kriptografi" secara terbatas: antarmuka browser yang diperlukan adalah Web Crypto, dan pembuatan gagal ditutup jika tidak ada atau tidak dapat digunakan. Aplikasi memanggil metode selama deteksi, bukan hanya memeriksa jenisnya, menangkap lingkungan terbatas tempat pemanggilan dilakukan.
Kontrak tersebut tidak menjanjikan penolakan terhadap setiap kompromi negara hipotetis atau sertifikasi implementasi browser. Ini membuktikan API halaman mana yang diminta dan tidak ada fallback yang lebih lemah yang dihubungkan dengannya. Integritas perangkat tetap berada di luar generator.
Properti kriptografi terverifikasi adalah sumber Kripto Web dan jalur penolakan yang diperlukan
Peristiwa pengaturan waktu, instruksi prosesor khusus, jadwal penyemaian ulang, dan kumpulan entropi sistem operasi semuanya ada di bawah permukaan Web API. Tidak ada yang dinyatakan di sini karena sumber paket tidak dapat memverifikasinya. Artikel khusus platform di masa mendatang memerlukan dokumentasi utama untuk setiap lingkungan yang dijelaskan.
Kelalaian ini memperkuat dan bukannya melemahkan klaim yang ada saat ini. ToolAcre dapat mengatakan dengan tepat apa yang diminta browser untuk dilakukan dan bagaimana browser memperlakukan byte. Mereka tidak perlu berpura-pura JavaScript dapat mengaudit seluruh rantai entropi untuk membenarkan penolakan Math.random.
Detail kejadian perangkat keras dan kumpulan sistem operasi adalah klaim implementasi yang tidak dibuktikan oleh sumber ini
`getRandomValues` mengisi ukuran `Uint8Array` dari batas eksklusif yang diminta. `secureRandomInt` merakit byte tersebut sebagai bilangan big-endian tak bertanda tangan, menghitung jendela penerimaan terbesar yang dapat dibagi, dan membuang nilai sisanya. Nilai yang diterima kemudian dikurangi menjadi indeks.
Kata-kata, pembatas, karakter, dan pertukaran acak semuanya menggunakan kembali jalur ini. Satu titik tersedak membuat rantai browser-ke-pilihan dapat ditinjau dan memastikan bahwa perbaikan pengurangan terbatas memengaruhi setiap mode pembangkitan, bukan satu pemanggil yang terlupakan.
Dari getRandomValues hingga secureRandomInt: jalur browser-ke-indeks yang terlihat
Untuk kumpulan kata 7,776, fungsi memilih byte yang cukup untuk mewakili setiap indeks yang valid. Ini membentuk bilangan bulat, menolak nilai apa pun pada atau di atas batas yang dihitung dan mengembalikan sisanya hanya setelah penerimaan. `secureRandomChoice` menggunakan hasil tersebut untuk membaca satu kata dari larik yang memenuhi syarat.
Indeks produksi tertentu bersifat pribadi dan tidak boleh direproduksi dalam dokumentasi. Pengujian deterministik malah memasukkan byte tail dan in-range yang diketahui untuk membuktikan aliran kontrol. Ini menelusuri satu pilihan tanpa mengubah frasa yang dihasilkan menjadi contoh publik.
Contoh praktis: melacak byte melalui pengambilan sampel penolakan ke satu indeks daftar
Desain generator nomor acak perangkat keras dan bukti kriptografi formal tidak tercakup dalam paket. Begitu juga dengan runtime server atau aplikasi asli. Implementasinya adalah generator browser dan jaminannya tidak boleh disalin ke sistem yang tidak terkait.
Itu juga tidak membahas penyimpanan atau penggunaan di kemudian hari. Nilai yang dipilih melalui Web Crypto masih dapat terekspos melalui penggunaan kembali, phishing, riwayat clipboard, atau malware. Pilihan CSPRNG memecahkan masalah sumber, tidak semua masalah penanganan kredensial.
Kesimpulannya — Generator Kata Sandi menanyakan generator kriptografi browser, yang merupakan sumber yang tepat untuk sebuah rahasia
Rantai yang dapat ditindaklanjuti pendek: uji apakah Web Crypto berfungsi, tolak pembuatan jika tidak berfungsi, isi byte, tolak ekor yang tidak rata, dan petakan nilai yang diterima ke indeks. ToolAcre membuat setiap langkah terlihat dan menguji batasan yang sulit.
Tinjau rantai tersebut alih-alih mengandalkan label “acak” yang tidak jelas. Kemudian tinjau titik akhir dan tujuan secara terpisah. Kriptografi browser API adalah sumber yang benar untuk produk ini, namun repositori tidak mengklaim untuk mengesahkan apa yang ada di bawahnya atau segala sesuatu yang mengikutinya.