Cryptology Academy · Pelajaran

Kekurangan Entropi & Pepijat Kunci Lemah

Kaji pepijat RNG Debian OpenSSL dan kegagalan kerawakan sebenar yang lain.

Pelajaran 3 daripada 413 langkah

Kekurangan Entropi & Pepijat Kunci Lemah ialah pelajaran Cryptology Academy percuma di CoddyKit. Ini ialah pelajaran 3 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.

Apakah Kekurangan Entropi?

Kekurangan entropi berlaku apabila sistem tidak mempunyai masukan tidak boleh diramalkan yang mencukupi untuk mengisi benih CSPRNGnya. Keadaan ini berlaku pada peranti terbenam yang baru dimulakan, pelayan tervirtualisasi atau sistem tanpa masukan pengguna. Keluaran RNG menjadi boleh diramalkan.

Pepijat OpenSSL Debian (CVE-2008-0166)

Pada tahun 2006, pembangun Debian membuang satu baris yang ditandai oleh Valgrind: MD_Update(&m, buf, j). Baris ini ialah sumber entropi. Akibatnya: OpenSSL pada Debian hanya diisi benih dengan PID (maksimum 32,768 nilai). Semua kunci yang dijana pada 2006–2008 berada dalam set yang mengandungi 32,768 kemungkinan.

Kesan Pepijat Debian

Kunci RSA, DSA dan ECDSA, kunci hos SSH, sijil TLS serta kunci VPN SSL yang dijana pada sistem Debian/Ubuntu pada 2006–2008 telah terjejas. Sistem yang terjejas: Debian Etch, Debian Lenny dan Ubuntu 7.04–8.04. Senarai penolakan diterbitkan; sijil dibatalkan.

Masalah RNG Mesin Maya

Mesin maya boleh diklon dengan keadaan cakera yang sama. Jika kedua-dua mesin maya menjana kunci daripada keadaan CSPRNG yang sama, kedua-duanya menghasilkan kunci yang sama. Penyelia mesin maya kini menyuntik entropi melalui RNG VirtIO atau jadual ACPI, tetapi mesin maya yang tidak dikonfigurasikan dengan baik masih menghadapi risiko ini semasa dimulakan.

Sistem Terbenam dan IoT

Peranti IoT (penghala, kamera) sering menjana kunci SSH/TLS pada permulaan pertama sebelum mengumpulkan entropi. Kajian mendapati berjuta-juta peranti berkongsi beberapa ribu pasangan kunci RSA kerana semuanya diisi benih daripada keadaan permulaan yang mempunyai entropi rendah.

Serangan GCD terhadap Kunci RSA

Lenstra et al. (2012) mengumpulkan 11.7 juta sijil TLS dan mengira GCD secara berpasangan. Mereka menemui 12,720 kunci RSA yang berkongsi faktor perdana — bermakna kedua-dua kunci boleh difaktorkan sepenuhnya. Sebanyak 0.2% daripada semua kunci awam telah dipecahkan. Puncanya: entropi permulaan yang tidak mencukupi.

Penggunaan Semula Nombor Sekali Guna dalam ECDSA

ECDSA memerlukan nombor sekali guna rawak yang unik, k, bagi setiap tandatangan. Jika k digunakan semula (atau lemah), kunci peribadi boleh dipulihkan serta-merta: d = (s1-s2)^{-1} * (z1-z2) * k / (r1-r2) mod n. PS3 Sony menggunakan k=constant — semua permainan boleh ditandatangani dengan kunci yang dipulihkan.

Pepijat Dompet Bitcoin Android (2013)

Java SecureRandom pada Android 4.x diisi benih dengan masa sistem dalam keadaan tertentu. Berbilang aplikasi dompet Bitcoin menjana tandatangan dengan nombor sekali guna k yang sama, lalu membocorkan kunci peribadi. Jutaan dolar telah dicuri. Google menampal pelaksanaan SecureRandom.

Mengesan Kunci Lemah

Alat: ssh-vulnkey (menyemak berdasarkan senarai penolakan kunci lemah Debian), badkeys (menyemak sijil TLS untuk faktor perdana yang diketahui lemah) dan algoritma kelompok GCD untuk pengauditan kunci RSA secara pukal. Log Ketelusan Sijil membolehkan analisis pada skala keseluruhan populasi.

Langkah Pengurangan Risiko

Gunakan getrandom(GRND_RANDOM) semasa penjanaan kunci pertama. Baca daripada /dev/urandom selepas menunggu pengisian benih awal (semak /proc/sys/kernel/random/entropy_avail > 128). Gunakan RNG perkakasan (RDRAND) sebagai entropi tambahan. Jangan sekali-kali menjana kunci semasa permulaan pertama tanpa kelewatan.

Kekekalan Fail Benih

Kekalkan keadaan CSPRNG merentas but semula: simpan 32 bait daripada /dev/urandom ke dalam fail benih semasa penutupan; baca dan masukkan semula nilai itu semasa but. Ini menyediakan kesinambungan entropi merentas but sejuk. Linux melakukan perkara ini secara automatik; sistem terbenam sering tidak melakukannya.

Semakan Pantas

Apakah punca utama pepijat entropi OpenSSL Debian?

Ulang Kaji

Kekurangan entropi menyebabkan kunci boleh diramalkan. Pemecahan sebenar: OpenSSL Debian (benih PID sahaja), serangan GCD IoT, penggunaan semula nombor sekali guna ECDSA PS3 dan dompet Bitcoin Android. Sentiasa isi benih daripada entropi OS; audit penjanaan kunci sistem terbenam dengan teliti. Seterusnya: menjana kunci, nombor sekali guna dan IV dengan selamat.

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 “Kekurangan Entropi & Pepijat Kunci Lemah” percuma?

Ya — teks penuh “Kekurangan Entropi & Pepijat Kunci Lemah” 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 “Kekurangan Entropi & Pepijat Kunci Lemah”?

Kaji pepijat RNG Debian OpenSSL dan kegagalan kerawakan sebenar yang lain. 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 3 daripada 4.

Berapa lamakah pelajaran “Kekurangan Entropi & Pepijat Kunci Lemah” 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. Rawak Sebenar berbanding Pseudosrawak
  2. PRNG Selamat Secara Kriptografi
  3. Kekurangan Entropi & Pepijat Kunci Lemah
  4. Menjana Kunci, Nonce & IV dengan Selamat
← Kembali ke Cryptology Academy