Cryptology Academy · Pelajaran

NIST SP 800-90A: Piawaian DRBG

Fahami rangka kerja DRBG NIST — instansiasi, pembenihan semula, ketahanan ramalan dan kekuatan keselamatan.

Pelajaran 1 daripada 413 langkah

NIST SP 800-90A: Piawaian DRBG ialah pelajaran Cryptology Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cryptology Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cryptology Academy merangkumi sejumlah 4 pelajaran.

Mengapa Penjana Bit Rawak Deterministik Diperlukan

Operasi kriptografi memerlukan nombor rawak berkualiti tinggi: penjanaan kunci, nilai sekali guna, vektor permulaan, nilai garam dan token sesi. Penjana nombor rawak sebenar mengumpulkan entropi daripada sumber fizikal (hingar perkakasan, gangguan dan hingar terma), tetapi penjana ini perlahan dan tidak sentiasa tersedia — khususnya dalam mesin maya atau semasa but awal. Penjana Bit Rawak Deterministik (DRBG) menyelesaikan masalah ini: semai DRBG dengan sedikit entropi sebenar dan gunakan algoritma kriptografi untuk mengembangkannya menjadi aliran bit pseudo-rawak yang tidak dapat dibezakan secara pengiraan daripada rawak sebenar. NIST SP 800-90A mentakrifkan tiga mekanisme DRBG yang diluluskan dan digunakan dalam hampir semua pelaksanaan kriptografi moden.

Kitar Hayat DRBG: Memulakan, Menjana, Menyemai Semula

DRBG beroperasi melalui tiga operasi asas. Memulakan: mulakan keadaan dalaman DRBG menggunakan entropy_input (daripada sumber entropi), nilai sekali guna (nilai satu kali yang memastikan keunikan), dan secara pilihan personalization_string (konteks khusus aplikasi). Menjana: hasilkan bilangan bit pseudo-rawak yang diminta dan kemas kini keadaan dalaman untuk menghalang pengiraan semula ke belakang. Menyemai semula: suntik entropi baharu ke dalam keadaan DRBG untuk menyediakan rintangan ramalan — selepas penyemaian semula, walaupun musuh mengetahui keadaan sebelumnya, musuh itu tidak dapat meramalkan keluaran masa hadapan. NIST menetapkan selang penjanaan maksimum (reseed_interval): 2^48 permintaan sebelum penyemaian semula wajib bagi ketiga-tiga jenis DRBG.

Kekuatan Keselamatan dan Pemilihan Parameter

NIST SP 800-90A mentakrifkan empat tahap kekuatan keselamatan: 112, 128, 192 dan 256 bit. Kekuatan keselamatan menentukan entropi minimum yang diperlukan semasa permulaan serta kualiti keluaran yang dijana. Untuk keselamatan 128 bit, masukan entropi mestilah menyediakan sekurang-kurangnya 128 bit entropi. Hubungannya: security_strength bit entropi menghasilkan keluaran DRBG yang secara pengiraan tidak dapat dibezakan daripada rawak oleh musuh yang melakukan 2^security_strength operasi. Pilihan panjang kunci (AES-128 berbanding AES-256) dan pilihan cincangan (SHA-256 berbanding SHA-512) dihadkan supaya sepadan dengan atau melebihi kekuatan keselamatan yang dikehendaki. Penggunaan parameter berlebihan (SHA-512 untuk keselamatan 128 bit) selamat tetapi membazir; penggunaan parameter yang tidak mencukupi menjejaskan keselamatan.

Pembinaan Hash_DRBG

Hash_DRBG mengekalkan dua nilai keadaan: V (nilai yang menjana keluaran) dan C (pemalar yang ditambah semasa penjanaan). Menjana: hash_gen menghasilkan bit dengan mengulangi H(0x01 || V), H(0x01 || V+1), ... sehingga keluaran yang mencukupi tersedia; kemudian V dikemas kini dengan V = V + H(0x03 || V) + C + reseed_counter. Menyemai semula: menggunakan Hash_df (fungsi terbitan cincangan) yang menggabungkan V semasa dengan entropi baharu untuk menghasilkan V dan C yang baharu. Hash_DRBG mudah dilaksanakan dan mempunyai analisis keselamatan yang ringkas, menjadikannya sesuai untuk persekitaran terhad. NIST mengesyorkan permulaan menggunakan SHA-256 atau SHA-512. Hash_DRBG digunakan dalam SHA1PRNG milik Java (versi lama) dan DRBG legasi milik OpenSSL.

Pembinaan HMAC_DRBG

HMAC_DRBG mengekalkan keadaan (Kunci K, Nilai V). Menjana: mengulangi V = HMAC(K, V) sehingga keluaran yang mencukupi dihasilkan; kemudian K = HMAC(K, V || 0x00) dan V = HMAC(K, V). Mengemas kini: mengambil additional_input dan mengemas kini K serta V menggunakan operasi HMAC. HMAC_DRBG mempunyai bukti keselamatan yang jelas berdasarkan keselamatan HMAC (andaian PRF pada HMAC). DRBG ini merupakan DRBG yang paling banyak disyorkan: OpenSSL (sejak 1.1.1), mbedTLS, wolfSSL dan kebanyakan timbunan TLS menggunakan HMAC_DRBG. Pembinaan HMAC menyediakan pencampuran terbina dalam antara panggilan berturutan, lalu menjadikan serangan pengiraan balik lebih sukar dilaksanakan walaupun keadaan terdedah sebahagiannya.

Pembinaan CTR_DRBG

CTR_DRBG menggunakan sifir blok (AES) dalam mod pembilang. Keadaan: Kunci K dan pembilang V. Menjana: menyulitkan nilai pembilang berturutan E(K, V), E(K, V+1), ... dan menaikkan V. Mengemas kini: menggunakan Block_Cipher_df untuk menerbitkan K dan V baharu daripada additional_input. CTR_DRBG ialah DRBG yang terpantas — pemecutan perkakasan AES-NI menjadikannya beberapa magnitud lebih pantas daripada DRBG berasaskan cincangan pada pemproses moden. Ia merupakan DRBG lalai dalam Windows CNG (CryptGenRandom menggunakan CTR_DRBG dengan AES-256), OpenSSL 3.0 (lalai) dan RNG kernel Linux (panggilan sistem getrandom). Keselamatan CTR_DRBG bergantung pada AES sebagai pilih atur pseudo-rawak, yang disokong kukuh oleh analisis selama berdekad-dekad.

Rintangan Ramalan dan Penyemaian Semula

Rintangan ramalan ialah sifat yang menjadikan keluaran DRBG tidak dapat diramal walaupun oleh musuh yang pernah menjejaskan keadaan DRBG, dengan syarat entropi baharu dicampurkan melalui penyemaian semula. DRBG dengan prediction_resistance_flag=true memanggil sumber entropi sebelum setiap panggilan penjanaan untuk menyuntik entropi baharu. Tanpa rintangan ramalan, pengompromian keadaan pada masa T membolehkan semua keluaran masa hadapan dikira (keselamatan ke hadapan terjejas). Keselamatan ke belakang (juga dipanggil rintangan penjejakan balik) bermaksud keluaran masa lalu tidak dapat diramal walaupun keadaan semasa diketahui — HMAC_DRBG dan CTR_DRBG mencapainya melalui langkah pengemaskinian yang menerbitkan kunci baharu daripada keadaan semasa selepas setiap penjanaan.

Sumber Entropi: NIST SP 800-90B dan 90C

SP 800-90A menetapkan algoritma DRBG tetapi bukan sumber entropi. SP 800-90B mentakrifkan keperluan untuk sumber entropi: sumber hingar perkakasan hendaklah dicirikan dan disahkan, anggaran entropi hendaklah dibuat secara berhati-hati, dan ujian kesihatan hendaklah mengesan kegagalan sumber entropi. SP 800-90C menetapkan cara menggabungkan sumber entropi dengan DRBG untuk membentuk penjana bit rawak lengkap. Sumber entropi yang biasa termasuk CPU RDRAND/RDSEED (RNG perkakasan yang tersedia pada CPU Intel/AMD sejak 2012), entropi OS (/dev/urandom pada Linux, BCryptGenRandom pada Windows), modul keselamatan perkakasan, RNG TPM 2.0 dan hingar persekitaran (pemasaan cakera, turun naik masa rangkaian). Keadaan entropi rendah (mesin maya dan but awal) memerlukan pengendalian khusus untuk mengelakkan benih lemah.

Keperluan Pensijilan FIPS 140-3

FIPS 140-3 (standard semasa untuk pengesahan modul kriptografi) mewajibkan DRBG NIST SP 800-90A bagi semua penjanaan nombor rawak dalam modul yang diperakui. Modul tersebut hendaklah: menggunakan DRBG yang diluluskan (Hash, HMAC atau CTR), disemai daripada sumber entropi yang diluluskan dan memenuhi keperluan SP 800-90B, menjalankan ujian kendiri semasa dihidupkan (POST) yang mengesahkan operasi DRBG, melaksanakan ujian RNG berterusan (CRNGT) untuk mengesan kegagalan entropi yang tersekat pada sifar atau satu, serta menyokong penyemaian semula apabila sumber entropi menunjukkan bahawa entropi tersedia. Modul keselamatan perkakasan seperti Thales Luna, AWS CloudHSM dan Utimaco, kad pemecut TLS serta perkakas penyulitan rangkaian lazimnya memerlukan modul yang disahkan FIPS 140-3, sekali gus mendorong penggunaan SP 800-90A.

DRBG dalam Sistem Pengendalian

Sistem pengendalian moden mengekalkan DRBG pada peringkat teras yang dimulakan dengan benih daripada sumber entropi perkakasan. Linux menggunakan DRBG berasaskan ChaCha20 (sejak versi 5.17 bagi teras, menggantikan reka bentuk lama yang menyerupai Fortuna) yang dimulakan dengan benih daripada RDRAND, gangguan serta peristiwa cakera dan rangkaian. /dev/urandom mengembalikan keluaran DRBG dan tidak menyekat selepas pembenihan awal. /dev/random menyekat sehingga entropi yang mencukupi tersedia (tingkah laku lama yang sebahagian besarnya telah dibuang dalam teras terkini). Panggilan sistem getrandom(2) ialah antara muka moden yang hanya menyekat semasa but awal sebelum DRBG menerima benih. Windows menggunakan CTR_DRBG (AES-256) dalam RNG teras, dengan benih daripada TPM dan peristiwa perkakasan. Aplikasi hendaklah menggunakan DRBG sistem pengendalian melalui antara muka aras tinggi, bukannya menjana benih bagi DRBG sendiri daripada cap masa atau PID.

Kesilapan Lazim dalam Pelaksanaan DRBG

Kelemahan DRBG dalam dunia sebenar berpunca daripada ralat pelaksanaan, bukannya kelemahan algoritma. (1) Pembenihan tidak mencukupi: pembenihan menggunakan hanya cap masa semasa atau PID memberikan penyerang benih yang mudah diteka. (2) Ketidakpekaan terhadap percabangan: apabila proses bercabang, proses induk dan proses anak berkongsi keadaan DRBG yang sama — kedua-duanya menjana nombor rawak yang sama. Pembetulan: jana benih semula selepas percabangan (pthread_atfork atau panggilan getrandom eksplisit). (3) Penggunaan semula petikan VM: jika petikan VM dipulihkan, keadaan DRBG kembali kepada keadaan petikan tersebut lalu menjana keluaran yang pernah dilihat sebelum ini. Pembetulan: suntik entropi unik semasa VM dimulakan (VIRTIO RNG). (4) Gagal menjalankan ujian kesihatan secara senyap: DRBG yang terus menjana keluaran selepas mengesan kegagalan entropi memberikan keluaran yang boleh diramal penyerang. (5) Menggunakan semula nilai sekali guna merentas instans DRBG.

Kuiz Pembenihan Semula DRBG

Apakah sifat yang diberikan oleh pembenihan semula DRBG dengan entropi baharu?

Imbas Kembali NIST SP 800-90A

NIST SP 800-90A mentakrifkan tiga mekanisme DRBG yang diluluskan: Hash_DRBG (cincangan berulang, ringkas), HMAC_DRBG (berasaskan HMAC, pembuktian keselamatan yang jelas dan digunakan secara meluas) serta CTR_DRBG (mod pembilang AES, paling pantas melalui AES-NI dan lalai dalam Windows/OpenSSL). Ketiga-tiganya berkongsi kitar hayat Instantiate/Generate/Reseed dengan had reseed_interval sebanyak 2^48. Kekuatan keselamatan (112–256 bit) menentukan keperluan entropi. Rintangan ramalan memerlukan pembenihan semula sebelum setiap panggilan Generate. FIPS 140-3 mewajibkan DRBG SP 800-90A dengan sumber entropi SP 800-90B. Ketidakpekaan terhadap percabangan, penggunaan semula petikan VM dan pembenihan yang tidak mencukupi ialah perangkap pelaksanaan utama dalam dunia sebenar.

Percuma untuk bermula

Pelajari Cryptology Academy dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
67
Pelajaran
261

Soalan Lazim

Adakah pelajaran “NIST SP 800-90A: Piawaian DRBG” percuma?

Ya — teks penuh “NIST SP 800-90A: Piawaian DRBG” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Cryptology Academy, tingkat taraf kepada CoddyKit PRO. Kursus Cryptology Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “NIST SP 800-90A: Piawaian DRBG”?

Fahami rangka kerja DRBG NIST — instansiasi, pembenihan semula, ketahanan ramalan dan kekuatan keselamatan. Anda berlatih Cryptology Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Cryptology Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Cryptology Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “NIST SP 800-90A: Piawaian DRBG” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cryptology Academy ini?

Ya. Setiap pelajaran Cryptology Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. NIST SP 800-90A: Piawaian DRBG
  2. Dalaman Hash-DRBG, HMAC-DRBG dan CTR-DRBG
  3. Insiden Pintu Belakang Dual EC DRBG
  4. Menguji dan Mengesahkan Pelaksanaan RNG
← Kembali ke Cryptology Academy