استنزاف الإنتروبيا وأخطاء المفاتيح الضعيفة
ادرس خطأ مولّد الأرقام العشوائية في Debian OpenSSL وغيرها من إخفاقات العشوائية الواقعية
استنزاف الإنتروبيا وأخطاء المفاتيح الضعيفة درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ما نقص الإنتروبيا؟
يحدث نقص الإنتروبيا عندما يفتقر النظام إلى مدخلات غير قابلة للتنبؤ تكفي لتهيئة مولد CSPRNG ببذرته. ويحدث ذلك في الأجهزة المضمنة حديثة الإقلاع، أو الخوادم الافتراضية، أو الأنظمة التي لا تتلقى إدخالًا من المستخدم. عندها تصبح مخرجات RNG قابلة للتنبؤ.
خلل Debian OpenSSL (CVE-2008-0166)
في عام 2006، أزال أحد مطوري Debian سطرًا أبلغ عنه Valgrind: MD_Update(&m, buf, j). كان هذا السطر مصدر الإنتروبيا. وكانت النتيجة أن OpenSSL على Debian لم يُهيّأ إلا باستخدام PID، أي بحد أقصى 32,768 قيمة. وأصبحت جميع المفاتيح المولدة بين عامي 2006 و2008 ضمن مجموعة من 32,768 احتمالًا.
تأثير خلل Debian
تعرضت مفاتيح RSA وDSA وECDSA، ومفاتيح مضيفي SSH، وشهادات TLS، ومفاتيح SSL VPN المولدة على أنظمة Debian/Ubuntu بين عامي 2006 و2008 للاختراق. والأنظمة المتأثرة هي Debian Etch وDebian Lenny وUbuntu 7.04-8.04. نُشرت القوائم السوداء وأُلغيت الشهادات.
مشكلة مولد الأرقام العشوائية في الآلات الافتراضية
يمكن استنساخ الآلات الافتراضية مع حالة قرص متطابقة. وإذا ولّدت الآلتان مفاتيح انطلاقًا من حالة CSPRNG نفسها، فستنتجان المفاتيح نفسها. يحقن مشرفو الآلات الافتراضية الآن الإنتروبيا عبر VirtIO RNG أو جداول ACPI، لكن الآلات الافتراضية سيئة الإعداد تظل معرضة لهذا الخطر عند الإقلاع.
الأنظمة المضمنة وإنترنت الأشياء
غالبًا ما تولد أجهزة إنترنت الأشياء، مثل أجهزة التوجيه والكاميرات، مفاتيح SSH/TLS عند الإقلاع الأول قبل تراكم قدر كافٍ من الإنتروبيا. وقد وجدت الدراسات ملايين الأجهزة التي تشترك في بضعة آلاف من أزواج مفاتيح RSA، لأنها جميعًا أُهيئت من حالة إقلاع منخفضة الإنتروبيا نفسها.
هجوم GCD على مفاتيح RSA
جمع Lenstra وآخرون (2012) عددًا قدره 11.7 مليون شهادة TLS وحسبوا القواسم المشتركة الأكبر لكل زوج. ووجدوا 12,720 مفتاح RSA يشترك في عامل أولي، ما يعني إمكانية تحليل المفتاحين بالكامل. وقد كُسر 0.2% من جميع المفاتيح العامة. والسبب هو عدم كفاية إنتروبيا الإقلاع.
إعادة استخدام nonce في ECDSA
يتطلب ECDSA قيمة nonce عشوائية وفريدة k لكل توقيع. وإذا أُعيد استخدام k (أو كانت ضعيفة)، يمكن استرداد المفتاح الخاص فورًا: d = (s1-s2)^{-1} * (z1-z2) * k / (r1-r2) mod n. استخدمت PS3 من Sony قيمة k=constant، ولذلك أمكن توقيع جميع الألعاب باستخدام المفتاح المسترد.
خلل محفظة Bitcoin على Android (2013)
كانت Java SecureRandom على Android 4.x تُهيّأ باستخدام وقت النظام في ظروف معينة. وقد ولّدت عدة تطبيقات لمحافظ Bitcoin توقيعات باستخدام قيمة nonce k نفسها، مما أدى إلى تسريب المفاتيح الخاصة. وسُرقت ملايين الدولارات. وأصلحت Google تنفيذ SecureRandom.
اكتشاف المفاتيح الضعيفة
الأدوات: ssh-vulnkey (يفحص مقابل القائمة السوداء لمفاتيح Debian الضعيفة)، وbadkeys (يفحص شهادات TLS بحثًا عن العوامل الأولية المعروفة بضعفها)، وخوارزمية GCD-batch لتدقيق مفاتيح RSA على نطاق واسع. وتتيح سجلات Certificate Transparency إجراء تحليل على مستوى مجموعة المستخدمين بأكملها.
التخفيف من المخاطر
استخدموا getrandom(GRND_RANDOM) عند توليد أول مفتاح. واقرؤوا من /dev/urandom بعد انتظار التهيئة الأولية للبذرة (تحققوا من أن /proc/sys/kernel/random/entropy_avail > 128). واستخدموا مولدًا عتاديًا للأرقام العشوائية (RDRAND) بوصفه إنتروبيا إضافية. لا تولدوا مفاتيح عند الإقلاع الأول دون تأخير مطلقًا.
استمرارية ملف البذرة
احتفظوا بحالة CSPRNG عبر عمليات إعادة الإقلاع: احفظوا 32 بايت من /dev/urandom في ملف بذرة عند إيقاف التشغيل، ثم اقرأوها وأعيدوا إدخالها عند الإقلاع. يوفر ذلك استمرارية للإنتروبيا عبر عمليات الإقلاع البارد. ينفذ Linux ذلك تلقائيًا، لكن الأنظمة المضمنة غالبًا لا تفعل ذلك.
اختبار سريع
ما السبب الجذري لخلل إنتروبيا Debian OpenSSL؟
مراجعة
يؤدي نقص الإنتروبيا إلى مفاتيح قابلة للتنبؤ. ومن حالات الاختراق الفعلية: OpenSSL على Debian (بذرة تعتمد على PID فقط)، وهجمات GCD على أجهزة إنترنت الأشياء، وإعادة استخدام nonce في ECDSA على PS3، ومحفظة Bitcoin على Android. احرصوا دائمًا على التهيئة من إنتروبيا نظام التشغيل، ودققوا بعناية في توليد المفاتيح على الأنظمة المضمنة. التالي: توليد المفاتيح وقيم nonce وIV بأمان.
تعلم Cryptology Academy مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 67
- الدروس
- 261
الأسئلة الشائعة
هل درس «استنزاف الإنتروبيا وأخطاء المفاتيح الضعيفة» مجاني؟
نعم — نص درس «استنزاف الإنتروبيا وأخطاء المفاتيح الضعيفة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ماذا ستتعلم في «استنزاف الإنتروبيا وأخطاء المفاتيح الضعيفة»؟
ادرس خطأ مولّد الأرقام العشوائية في Debian OpenSSL وغيرها من إخفاقات العشوائية الواقعية تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟
لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «استنزاف الإنتروبيا وأخطاء المفاتيح الضعيفة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟
نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- العشوائية الحقيقية مقابل شبه العشوائية
- مولّدات PRNG الآمنة تشفيريًا
- استنزاف الإنتروبيا وأخطاء المفاتيح الضعيفة
- إنشاء المفاتيح وNonces وIVs بأمان