Bahasa Melayu

Teks & alat harian · Penjana Kata Laluan

PRNG lwn CSPRNG: asal nombor rawak pelayar anda sebenarnya

· Latar belakang

kata laluan web-crypto csprng

Bait kripto pelayar mengalir melalui pensampelan penolakan ke indeks satu perkataan
Ilustrasi vektor ToolAcre asal

Menjelaskan perbezaan antara penjana pseudo-rawak dan selamat secara kriptografi, cara sistem pengendalian mengumpulkan entropi daripada peristiwa perkakasan dan cara rawak itu mencapai halaman web melalui Web Crypto API.

Komputer adalah deterministik, jadi dari mana datangnya rawak? — teka-teki asas di sebalik setiap penjana

JavaScript berjalan dalam ToolAcre bermula pada sempadan API. Ia boleh meminta bait daripada `crypto.getRandomValues`, perhatikan sama ada panggilan itu berjaya dan gunakan tatasusunan yang dikembalikan. Ia tidak boleh memeriksa setiap peristiwa fizikal, kumpulan kernel atau komponen perkakasan yang mungkin digunakan oleh platform tertentu di bawahnya. Oleh itu, cerita asal buku kerja untuk rawak melebihi bukti tempatan.

Penjelasan secara teknikal yang jujur ​​bermula di mana pemerhatian bermula. Aplikasi itu menyiasat Web Crypto, enjin membungkusnya dan semua pilihan menggunakan sumber itu. Dalaman khusus platform memerlukan dokumentasi dan audit platform, bukan pernyataan generik yang disimpulkan daripada nama kaedah pelayar.

Repositori bermula pada pelayar API; ia tidak mengaudit sumber entropi fizikal

Penjana pseudo-rawak sering diterangkan oleh benih dan keadaan boleh dihasilkan semula, tetapi enjin JavaScript tidak diperlukan oleh repositori ini untuk berkongsi satu reka bentuk Math.random. ToolAcre mengelakkan kekaburan dengan melarang API sepenuhnya dalam pengeluaran bukti kelayakan. Imbasan sumber menguatkuasakan jaminan negatif itu.

Ujian masih memerlukan bait deterministik, jadi ia menyuntik objek yang mendedahkan `getRandomValues` melalui parameter dalaman. Tiruan tersebut hidup dalam sokongan ujian dan tidak dieksport sebagai mod pengeluaran benih. Kebolehujian tidak mencipta pilihan pengguna tersembunyi untuk kata laluan yang boleh diulang.

Math.random dilarang di sini, tanpa menuntut satu reka bentuk PRNG universal

Produk menggunakan "kriptografi" dalam cara berskop: antara muka pelayar yang diperlukan ialah Web Crypto, dan penjanaan gagal ditutup apabila ia tiada atau tidak boleh digunakan. Apl memanggil kaedah semasa pengesanan dan bukannya menyemak sahaja jenisnya, menangkap persekitaran terhad di mana seruan melontarkan.

Kontrak itu tidak menjanjikan penentangan terhadap setiap keadaan hipotesis yang berkompromi atau memperakui pelaksanaan pelayar. Ia membuktikan yang mana API permintaan halaman dan tiada sandaran yang lebih lemah disambungkan bersamanya. Integriti peranti kekal di luar penjana.

Harta kriptografi yang disahkan ialah sumber Web Crypto dan laluan penolakan yang diperlukan

Acara pemasaan, arahan pemproses khusus, jadual pembenihan semula dan kumpulan entropi sistem pengendalian semuanya berada di bawah permukaan API Web. Tiada yang ditegaskan di sini kerana sumber pakej tidak dapat mengesahkannya. Artikel khusus platform masa hadapan memerlukan dokumentasi utama untuk setiap persekitaran yang diterangkan.

Peninggalan itu menguatkan dan bukannya melemahkan tuntutan semasa. ToolAcre boleh menyatakan dengan tepat apa yang diminta pelayar lakukan dan cara ia mengendalikan bait. Ia tidak perlu berpura-pura JavaScript boleh mengaudit rantaian entropi penuh untuk membenarkan penolakan Math.random.

Butiran acara perkakasan dan kumpulan sistem pengendalian ialah dakwaan pelaksanaan yang tidak dibuktikan oleh sumber ini

`getRandomValues` mengisi saiz `Uint8Array` daripada sempadan eksklusif yang diminta. `secureRandomInt` memasang bait tersebut sebagai nombor big-endian yang tidak ditandatangani, mengira tetingkap penerimaan boleh bahagi terbesar dan membuang nilai dalam bakinya. Nilai yang diterima kemudiannya dikurangkan kepada indeks.

Perkataan, pembatas, aksara dan swap shuffle semuanya menggunakan semula laluan ini. Satu titik tercekik menjadikan rantaian pelayar-ke-pilihan boleh disemak dan memastikan bahawa penetapan pengurangan sempadan mempengaruhi setiap mod generasi dan bukannya satu pemanggil yang terlupa.

Daripada getRandomValues ​​kepada secureRandomInt: laluan pelayar-ke-indeks yang boleh dilihat

Untuk kumpulan 7,776-perkataan, fungsi memilih bait yang mencukupi untuk mewakili setiap indeks yang sah. Ia membentuk integer, menolak sebarang nilai pada atau melebihi had yang dikira dan mengembalikan baki sahaja selepas penerimaan. `secureRandomChoice` menggunakan hasil itu untuk membaca satu perkataan daripada tatasusunan yang layak.

Indeks pengeluaran tertentu adalah peribadi dan tidak boleh diterbitkan semula dalam dokumentasi. Ujian deterministik sebaliknya memberi suapan ekor dan bait dalam julat yang diketahui untuk membuktikan aliran kawalan. Ini mengesan satu pilihan tanpa mengubah frasa yang dijana menjadi contoh awam.

Contoh yang berjaya: jejak bait melalui pensampelan penolakan kepada satu indeks senarai

Reka bentuk penjana nombor rawak perkakasan dan bukti kriptografi formal tidak dilindungi oleh pakej. Begitu juga masa jalan pelayan atau aplikasi asli. Pelaksanaannya ialah penjana pelayar dan jaminannya tidak boleh disalin ke sistem yang tidak berkaitan.

Ia juga tidak menangani storan atau penggunaan kemudian. Nilai yang dipilih melalui Web Crypto masih boleh didedahkan melalui penggunaan semula, pancingan data, sejarah papan keratan atau perisian hasad. Pilihan CSPRNG menyelesaikan masalah sumber, bukan setiap masalah pengendalian kelayakan.

Bawa pulang — Penjana Kata Laluan bertanya kepada penjana kriptografi pelayar, yang merupakan sumber yang tepat untuk rahsia

Rantaian yang boleh diambil tindakan adalah pendek: menguji bahawa Web Crypto berfungsi, menolak penjanaan apabila tidak, mengisi bait, menolak ekor yang tidak sekata dan memetakan nilai yang diterima kepada indeks. ToolAcre menjadikan setiap langkah kelihatan dan menguji sempadan yang sukar.

Semak rantai itu dan bukannya bergantung pada label "rawak" yang samar-samar. Kemudian semak titik akhir dan destinasi secara berasingan. Kriptografi API pelayar ialah sumber yang betul untuk produk ini, tetapi repositori tidak menuntut untuk memperakui apa yang terdapat di bawahnya atau semua yang mengikutinya.