483 / 736PRNG

Deterministic RNG

Pembangkit bilangan pseudoacak deterministik

Prosedur, keadaan awal, dan masukan yang sama menghasilkan keluaran yang sama. Pada pembangkit deterministik, ini merupakan sifatnya, bukan kerusakan. Keamanan juga bergantung pada apakah keluaran dapat ditebak tanpa mengetahui bahan rahasia awalnya.

Deterministic RNG adalah pembangkit bilangan pseudoacak: ia menghitung nilai dengan prosedur tetap, bukan mengukur kejadian fisik acak baru untuk setiap nilai. Ia berawal dari masukan bernama seed dan menyimpan keadaan internal, yaitu informasi untuk perhitungan berikutnya. Mengulang seluruh prosedur dengan masukan yang sama akan mengulang hasilnya, sehingga berguna untuk pengujian. Pembangkit yang aman secara kriptografis juga membutuhkan rancangan yang tepat dan entropi yang cukup: ketidakpastian mengenai masukan dari sudut pandang penyerang.

Bayangkan suatu perhitungan dijeda lalu memorinya disimpan. Melanjutkannya dari titik yang sama dengan masukan berikutnya yang sama dapat mengulang proses tersebut. NIST SP 800-90A menjelaskan pembangkit ini sebagai DRBG. Algoritme, pengaturan, dan urutan permintaan semuanya penting. Penambahan entropi baru, disebut reseeding, mengubah keadaan. Jadi, seed yang sama saja tidak menjamin keluaran yang sama dari program berbeda. [1]

Program simulasi sederhana pun dapat membuat angka yang tampak acak. Itu belum cukup untuk melindungi dompet. RFC 4086 memperingatkan bahwa penyerang dapat memperkirakan sebagian deret tersebut meskipun lolos uji statistik. Pembangkit yang kuat secara kriptografis harus tetap sulit diprediksi dalam praktik setelah sebagian keluarannya diketahui. Yang penting adalah rancangan, mutu, dan kerahasiaan bahan awal, bukan sekadar kata “deterministik”. [2]

Saat mencari bug, mengulang situasi yang persis sama sangat membantu. Karena itu, fungsi randombytes_buf_deterministic() dalam libsodium mengembalikan deret yang sama untuk seed yang sama. Pengembang dapat menerbitkan hasil yang diharapkan agar orang lain memeriksanya. Justru karena itu, seed pengujian yang dipublikasikan tidak boleh dipakai untuk dompet sungguhan: siapa pun dapat menghitung “rahasia” yang sama. [3]

BIP32 memakai kemampuan pengulangan serupa untuk menurunkan kunci, tetapi prosedurnya bukan pembangkitan data acak untuk keperluan umum. Dari satu seed, ia membuat pohon kunci bercabang. Jalur derivasi menentukan cabang yang digunakan. Seed dan jalur yang sama dapat menghasilkan kembali kunci yang sama. Namun, menurunkan alamat tambahan tidak dengan sendirinya menambah entropi baru yang independen pada rahasia awal. [4]

Dalam BIP39, kata-kata pemulihan yang disebut mnemonic hanyalah sebagian masukan. PBKDF2 menggabungkannya dengan passphrase, rahasia tambahan opsional, untuk menghitung seed bagi derivasi berikutnya. Passphrase berbeda memberi hasil berbeda meskipun kata-katanya sama. Jadi, pemulihan kunci yang sama memerlukan seluruh masukan awal dan metode derivasi yang sesuai. Kesamaan kata saja belum memastikan itu. [5]

Tanda tangan digital membuktikan bahwa pemegang kunci rahasia terkait mengizinkan transaksi. RFC 6979 menjelaskan cara menghitung nilai bantu k untuk tanda tangan dari kunci tersebut dan pesan yang ditandatangani. Langkah ini tidak harus memperoleh nilai acak baru setiap kali. Namun, keacakan yang baik tetap diperlukan saat kunci pertama kali dibuat. Prosedur penandatanganan yang benar tidak memperbaiki kunci yang sejak awal mudah ditebak. [6]

Memulihkan kunci yang sama melalui BIP32 memang diinginkan. Mengulang tanpa sengaja nilai yang seharusnya baru bukanlah hal yang sama. Snapshot mesin virtual menyimpan keadaan komputer, termasuk memorinya. Seperti diperingatkan libsodium, pemulihannya dapat mengulang keadaan serta keluaran pembangkit. Karena itu, menyalin lingkungan tidak berarti setiap salinan yang berjalan otomatis menghasilkan rahasia yang independen. [3] [4]

Pengembang membandingkan hasil dengan vektor uji, yaitu pasangan masukan yang diketahui dan keluaran yang diharapkan. Kecocokan menunjukkan bahwa program menghitung contoh tersebut dengan benar. Itu tidak membuktikan mutu entropi yang diperoleh perangkat nyata. NIST SP 800-90A membahas mekanisme dan persyaratan masukannya secara terpisah. Versi program, pengaturan, dan penambahan entropi juga penting. Label Deterministic RNG saja tidak membuktikan keamanan dompet. [1]

Untuk gambaran yang lebih utuh, baca entri ini bersama CSPRNG, Random Number Generator, HD Wallet, Seed Generation. Entri ini juga dirujuk dari CSPRNG, COLDCARD RNG Incident (2026).

DOC · 001NIST SP 800-90A Rev. 1 — State, inputs and reseedingSpesifikasi DOC · 002RFC 4086 — Pseudorandom sequences and unpredictabilitySpesifikasi DOC · 003libsodium — Deterministic output and VM snapshotsDokumentasi DOC · 004BIP32 — Hierarchical deterministic key derivationSpesifikasi DOC · 005BIP39 — Mnemonic and passphrase to seedSpesifikasi DOC · 006RFC 6979 — Deterministic signing and initial key generationSpesifikasi
Direvisi: Utamakan sumber · Bukan nasihat investasi