NIST SP 800-90A: Standar DRBG
Pahami kerangka kerja DRBG NIST—instansiasi, penyemaian ulang, ketahanan terhadap prediksi, dan kekuatan keamanan.
NIST SP 800-90A: Standar DRBG adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.
Mengapa RBG Deterministik Diperlukan
Operasi kriptografis memerlukan bilangan acak berkualitas tinggi: untuk pembuatan kunci, nilai sekali pakai, IV, salt, dan token sesi. Generator bilangan acak sejati memanen entropi dari sumber fisik, seperti derau perangkat keras, interupsi, dan derau termal, tetapi prosesnya lambat dan tidak selalu tersedia, terutama dalam mesin virtual atau pada tahap awal boot. Deterministic Random Bit Generators (DRBG) mengatasi masalah ini: DRBG diberi seed berupa sedikit entropi sejati, lalu menggunakan algoritma kriptografis untuk mengembangkannya menjadi aliran besar bit semu-acak yang secara komputasional tidak dapat dibedakan dari bit yang benar-benar acak. NIST SP 800-90A mendefinisikan tiga mekanisme DRBG yang disetujui dan digunakan dalam hampir semua implementasi kriptografi modern.
Siklus Hidup DRBG: Inisialisasi, Pembangkitan, Penyemaian Ulang
DRBG beroperasi melalui tiga operasi dasar. Inisialisasi: menginisialisasi keadaan internal DRBG menggunakan entropy_input dari sumber entropi, nonce, yaitu nilai satu kali yang memastikan keunikan, dan secara opsional personalization_string, yaitu konteks khusus aplikasi. Pembangkitan: menghasilkan jumlah bit semu-acak yang diminta dan memperbarui keadaan internal untuk mencegah penelusuran balik. Penyemaian ulang: memasukkan entropi baru ke dalam keadaan DRBG untuk menyediakan resistansi terhadap prediksi — setelah penyemaian ulang, bahkan penyerang yang mengetahui keadaan sebelumnya tidak dapat memprediksi keluaran mendatang. NIST menetapkan interval pembangkitan maksimum (reseed_interval): 2^48 permintaan sebelum penyemaian ulang wajib dilakukan untuk ketiga jenis DRBG.
Tingkat Kekuatan Keamanan dan Pemilihan Parameter
NIST SP 800-90A mendefinisikan empat tingkat kekuatan keamanan: 112, 128, 192, dan 256 bit. Tingkat kekuatan keamanan menentukan entropi minimum yang diperlukan saat inisialisasi dan kualitas keluaran yang dihasilkan. Untuk keamanan 128 bit, masukan entropi harus menyediakan sedikitnya 128 bit entropi. Hubungannya: security_strength bit entropi menghasilkan keluaran DRBG yang secara komputasional tidak dapat dibedakan dari keluaran acak oleh penyerang dengan 2^security_strength operasi. Pilihan panjang kunci, seperti AES-128 dan AES-256, serta pilihan hash, seperti SHA-256 dan SHA-512, dibatasi agar sama atau melebihi tingkat keamanan yang diinginkan. Penggunaan parameter berlebihan, seperti SHA-512 untuk keamanan 128 bit, aman tetapi boros; penggunaan parameter yang kurang akan merusak keamanan.
Konstruksi Hash_DRBG
Hash_DRBG mempertahankan dua nilai keadaan: V, yaitu nilai yang menghasilkan keluaran, dan C, yaitu konstanta yang ditambahkan selama pembangkitan. Pembangkitan: hash_gen menghasilkan bit dengan mengiterasikan H(0x01 || V), H(0x01 || V+1), ... hingga tersedia keluaran yang cukup; kemudian V diperbarui dengan V = V + H(0x03 || V) + C + reseed_counter. Penyemaian ulang menggunakan Hash_df, yaitu fungsi derivasi hash, yang menggabungkan V saat ini dengan entropi baru untuk menghasilkan V dan C yang baru. Hash_DRBG mudah diimplementasikan dan memiliki analisis keamanan yang sederhana, sehingga cocok untuk lingkungan dengan sumber daya terbatas. NIST merekomendasikan inisialisasi dengan SHA-256 atau SHA-512. Hash_DRBG digunakan dalam SHA1PRNG milik Java, versi lama, dan DRBG lama milik OpenSSL.
Konstruksi HMAC_DRBG
HMAC_DRBG mempertahankan keadaan berupa Kunci K dan Nilai V. Pembangkitan: mengiterasikan V = HMAC(K, V) hingga keluaran yang cukup dihasilkan; kemudian K = HMAC(K, V || 0x00) dan V = HMAC(K, V). Pembaruan: menggunakan additional_input lalu menyemai ulang K dan V melalui operasi HMAC. HMAC_DRBG memiliki bukti keamanan yang jelas berdasarkan keamanan HMAC, dengan asumsi PRF pada HMAC. HMAC_DRBG merupakan DRBG yang paling luas direkomendasikan: OpenSSL sejak 1.1.1, mbedTLS, wolfSSL, dan sebagian besar tumpukan TLS menggunakannya. Konstruksi HMAC menyediakan pencampuran bawaan di antara pemanggilan berurutan, sehingga serangan penelusuran balik lebih sulit dilakukan meskipun keadaan hanya sebagian terekspos.
Konstruksi CTR_DRBG
CTR_DRBG menggunakan sandi blok AES dalam mode penghitung. Keadaan: Kunci K dan penghitung V. Pembangkitan: mengenkripsi nilai penghitung berturut-turut E(K, V), E(K, V+1), ... lalu menaikkan V. Pembaruan: menggunakan Block_Cipher_df untuk menurunkan K dan V baru dari additional_input. CTR_DRBG merupakan DRBG tercepat — akselerasi perangkat keras AES-NI membuatnya jauh lebih cepat daripada DRBG berbasis hash pada prosesor modern. CTR_DRBG merupakan DRBG bawaan di Windows CNG, karena CryptGenRandom menggunakan CTR_DRBG dengan AES-256, di OpenSSL 3.0 sebagai bawaan, dan di RNG kernel Linux melalui panggilan sistem getrandom. Keamanan CTR_DRBG bergantung pada AES sebagai permutasi semu-acak, yang didukung dengan baik oleh penelitian selama puluhan tahun.
Resistansi Prediksi dan Penyemaian Ulang
Resistansi prediksi adalah sifat ketika keluaran DRBG tetap tidak dapat diprediksi bahkan oleh penyerang yang sebelumnya membobol keadaan DRBG, asalkan entropi baru dicampurkan melalui penyemaian ulang. DRBG dengan prediction_resistance_flag=true memanggil sumber entropi sebelum setiap pemanggilan pembangkitan untuk memasukkan entropi baru. Tanpa resistansi prediksi, pembobolan keadaan pada waktu T memungkinkan penghitungan semua keluaran mendatang, sehingga keamanan maju rusak. Keamanan mundur, yang juga disebut resistansi penelusuran balik, berarti keluaran masa lalu tidak dapat diprediksi meskipun keadaan saat ini diketahui — HMAC_DRBG dan CTR_DRBG mencapainya melalui langkah pembaruan yang menurunkan kunci baru dari keadaan saat ini setelah setiap pembangkitan.
Sumber Entropi: NIST SP 800-90B dan 90C
SP 800-90A menetapkan algoritma DRBG, tetapi bukan sumber entropinya. SP 800-90B menetapkan persyaratan untuk sumber entropi: sumber derau perangkat keras harus dikarakterisasi dan divalidasi, perkiraan entropi harus konservatif, dan pengujian kesehatan harus mendeteksi kegagalan sumber entropi. SP 800-90C menetapkan cara menggabungkan sumber entropi dengan DRBG menjadi generator bit acak yang lengkap. Sumber entropi yang umum meliputi RDRAND/RDSEED CPU, yaitu RNG perangkat keras yang tersedia pada CPU Intel/AMD sejak 2012; entropi OS, seperti /dev/urandom di Linux dan BCryptGenRandom di Windows; modul keamanan perangkat keras; RNG TPM 2.0; serta derau lingkungan, seperti pengaturan waktu disk dan jitter jaringan. Kondisi entropi rendah, seperti mesin virtual dan tahap awal boot, memerlukan penanganan khusus untuk menghindari nilai awal yang lemah.
Persyaratan Sertifikasi FIPS 140-3
FIPS 140-3, standar terkini untuk validasi modul kriptografis, mewajibkan DRBG NIST SP 800-90A untuk semua pembangkitan bilangan acak di dalam modul tersertifikasi. Modul harus: menggunakan DRBG yang disetujui, yaitu Hash, HMAC, atau CTR; mendapatkan nilai awal dari sumber entropi yang disetujui dan memenuhi persyaratan SP 800-90B; melakukan pengujian mandiri saat dinyalakan (POST) untuk memverifikasi operasi DRBG; menerapkan pengujian RNG berkelanjutan (CRNGT) yang mendeteksi kegagalan entropi yang macet pada nol atau satu; serta mendukung penyemaian ulang saat sumber entropi menunjukkan tersedianya entropi. HSM, seperti Thales Luna, AWS CloudHSM, dan Utimaco, kartu akselerator TLS, serta perangkat enkripsi jaringan biasanya memerlukan modul tervalidasi FIPS 140-3, sehingga mendorong penggunaan SP 800-90A.
DRBG pada Sistem Operasi
Sistem operasi modern mempertahankan DRBG tingkat inti yang diisi benih dari sumber entropi perangkat keras. Linux menggunakan DRBG berbasis ChaCha20 (sejak inti 5.17, menggantikan desain lama yang mirip Fortuna) yang diisi benih dari RDRAND, interupsi, serta peristiwa cakram dan jaringan. /dev/urandom mengembalikan keluaran DRBG dan tidak memblokir setelah awalnya diisi benih. /dev/random memblokir hingga entropi yang memadai tersedia (perilaku warisan yang sebagian besar telah dihapus pada inti terbaru). Panggilan sistem getrandom(2) adalah antarmuka modern yang hanya memblokir saat boot awal, sebelum DRBG diisi benih. Windows menggunakan CTR_DRBG (AES-256) dalam RNG inti, yang diisi benih dari TPM dan peristiwa perangkat keras. Aplikasi sebaiknya menggunakan DRBG sistem operasi melalui API tingkat tinggi, bukan mengisi benih DRBG-nya sendiri dari cap waktu atau PID.
Kesalahan Umum dalam Implementasi DRBG
Kerentanan DRBG di dunia nyata muncul karena kesalahan implementasi, bukan kelemahan algoritme. (1) Pengisian benih yang tidak memadai: pengisian benih hanya dengan cap waktu saat ini atau PID memberi penyerang benih yang mudah ditebak. (2) Ketidakmampuan mengenali percabangan proses: ketika suatu proses bercabang, proses induk dan anak berbagi keadaan DRBG yang sama—keduanya menghasilkan angka acak yang identik. Perbaikan: lakukan pengisian benih ulang setelah percabangan (pthread_atfork atau panggilan getrandom eksplisit). (3) Penggunaan ulang cuplikan VM: jika cuplikan VM dipulihkan, keadaan DRBG kembali ke keadaan saat cuplikan dibuat dan menghasilkan keluaran yang pernah terlihat sebelumnya. Perbaikan: masukkan entropi unik saat VM dimulai (VIRTIO RNG). (4) Gagal menjalankan pengujian kesehatan secara diam-diam: DRBG yang terus menghasilkan keluaran setelah mendeteksi kegagalan entropi menyediakan keluaran yang dapat diprediksi penyerang. (5) Menggunakan ulang nilai sekali pakai di berbagai instans DRBG.
Kuis Pengisian Benih Ulang DRBG
Sifat apa yang diberikan oleh pengisian benih ulang DRBG dengan entropi baru?
Ringkasan NIST SP 800-90A
NIST SP 800-90A menetapkan tiga mekanisme DRBG yang disetujui: Hash_DRBG (hash iteratif, sederhana), HMAC_DRBG (berbasis HMAC, dengan pembuktian keamanan yang jelas, digunakan secara luas), dan CTR_DRBG (mode penghitung AES, tercepat melalui AES-NI, menjadi bawaan pada Windows/OpenSSL). Ketiganya memiliki siklus hidup Instantiate/Generate/Reseed dengan batas reseed_interval sebesar 2^48. Kekuatan keamanan (112–256 bit) menentukan kebutuhan entropi. Ketahanan terhadap prediksi mengharuskan pengisian benih ulang sebelum setiap panggilan Generate. FIPS 140-3 mewajibkan DRBG SP 800-90A dengan sumber entropi SP 800-90B. Ketidakmampuan mengenali percabangan proses, penggunaan ulang cuplikan VM, dan pengisian benih yang tidak memadai merupakan kesalahan implementasi utama di dunia nyata.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “NIST SP 800-90A: Standar DRBG” gratis?
Ya — teks lengkap “NIST SP 800-90A: Standar DRBG” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “NIST SP 800-90A: Standar DRBG”?
Pahami kerangka kerja DRBG NIST—instansiasi, penyemaian ulang, ketahanan terhadap prediksi, dan kekuatan keamanan. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cryptology Academy?
Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “NIST SP 800-90A: Standar DRBG” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?
Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- NIST SP 800-90A: Standar DRBG
- Struktur Internal Hash-DRBG, HMAC-DRBG, dan CTR-DRBG
- Insiden Pintu Belakang Dual EC DRBG
- Menguji dan Memvalidasi Penerapan RNG