481 / 691RNG

Random Number Generator

Pembangkit bilangan acak

RNG merupakan bagian jalur dari ketidakpastian menuju nilai yang dapat digunakan. Kunci rahasia bergantung pada ketakterdugaan, inisialisasi dan penanganan kegagalan, bukan sekadar keluaran yang tampak acak.

Random Number Generator menyediakan nilai untuk tujuan tertentu. Penggunaan kriptografis menuntut agar lawan tidak dapat memprediksinya secara praktis berdasarkan asumsi yang dinyatakan. Sumber entropi fisik, pembangkit deterministik dan antarmuka sistem operasi adalah lapisan berbeda; label RNG saja tidak menjelaskan sifatnya.

Sumber entropi menyediakan ketidakpastian, pengondisian menyiapkan masukan, dan pembangkit deterministik menghasilkan keluaran dari keadaan internal. NIST SP 800-90C menggabungkan mekanisme 90A dengan sumber menurut 90B. Jadi setiap bit yang dikembalikan tidak harus berasal dari pengukuran fisik baru. [NIST SP 800-90C — RBG constructions]

Sebuah deret dapat lolos uji statistik tetapi sudah diketahui penyerang. RFC 4086 memperingatkan tentang jam, nomor seri dan nilai awal yang dapat diprediksi. Pembangkit simulasi tidak otomatis layak untuk kriptografi hanya karena nama atau distribusi keluarannya. [RFC 4086 — Unpredictability and weak inputs]

NIST SP 800-90B menilai sumber derau, pengondisian serta uji kesehatan saat mulai dan selama beroperasi. Uji ini mendeteksi kerusakan sumber, bukan membuktikan keamanan seluruh dompet. Penanganan kegagalan merupakan bagian desain: keluaran jalur rusak tidak boleh diam-diam dianggap sebagai keacakan yang telah divalidasi. [NIST SP 800-90B — Source health and failure handling]

Linux getrandom() biasanya menunggu inisialisasi sumber urandom. Dengan GRND_NONBLOCK, panggilan dapat mengembalikan EAGAIN alih-alih menunggu. Sesudah inisialisasi, permintaan urandom hingga 256 byte dijamin terbaca penuh tanpa terputus sinyal; permintaan lebih besar tidak mendapat jaminan ini. Aplikasi harus menangani status kembali. [Linux getrandom(2) — Initialization and return behavior]

Web Crypto getRandomValues() mengisi larik bilangan bulat yang didukung dengan nilai kuat secara kriptografis; lebih dari 65536 byte memicu QuotaExceededError. Spesifikasi menyarankan generateKey() untuk membuat kunci. Keberadaan antarmuka tidak membuktikan bahwa halaman dapat dipercaya atau melindungi rahasia dari kode yang bisa mengaksesnya. [W3C Web Crypto — getRandomValues and key generation]

BIP39 mula-mula mengodekan 128 hingga 256 bit entropi awal bersama checksum yang diturunkan. Kemudian seed 512-bit diturunkan dari kata dan passphrase opsional menggunakan PBKDF2. Checksum maupun keluaran lebih panjang tidak memperbaiki masukan yang dapat diprediksi; memilih kata sendiri tidak menggantikan pembangkitan acak. [BIP39 — Initial entropy and mnemonic-to-seed derivation]

Pembangkit deterministik memerlukan keadaan terlindungi dan inisialisasi yang benar. NIST SP 800-90A membedakan pembentukan instans, pembangkitan, reseeding dan penghapusan instans. Pemulihan setelah keadaan terungkap memerlukan mekanisme yang tepat dan entropi baru yang tidak diketahui penyerang; panggilan berikutnya saja bukan jaminan pemulihan umum. [NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseeding]

Peninjauan harus menjelaskan sumber, algoritme, inisialisasi, antarmuka dan perilaku saat kesalahan pada versi yang dinilai. Label perangkat keras atau offline tidak membuktikan rantai tersebut. Standar yang dikutip menjelaskan persyaratan pembangkitan; bukan sertifikat untuk dompet tertentu dan tidak mencegah kebocoran cadangannya di kemudian hari. [NIST SP 800-90C — RBG constructions] [RFC 4086 — Unpredictability and weak inputs]

Untuk gambaran yang lebih utuh, baca entri ini bersama Cryptographic Entropy, CSPRNG, Seed Generation, Brute Force Search Space. Entri ini juga dirujuk dari CSPRNG, Deterministic RNG, True Random Number Generator, Seed Generation.

DOC · 001NIST SP 800-90C — RBG constructionsSpesifikasi ↗DOC · 002RFC 4086 — Unpredictability and weak inputsSpesifikasi ↗DOC · 003NIST SP 800-90B — Source health and failure handlingSpesifikasi ↗DOC · 004Linux getrandom(2) — Initialization and return behaviorDokumentasi ↗DOC · 005W3C Web Crypto — getRandomValues and key generationSpesifikasi ↗DOC · 006BIP39 — Initial entropy and mnemonic-to-seed derivationSpesifikasi ↗DOC · 007NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseedingSpesifikasi ↗
Utamakan sumber · Bukan nasihat investasi