كيف تنشئ أجهزة الكمبيوتر أرقامًا عشوائية
تنشئ أجهزة الكمبيوتر أرقامًا عشوائية لكل شيء من التشفير إلى ألعاب الفيديو والمقامرة. هناك فئتان من الأرقام العشوائية - الأرقام العشوائية "الحقيقية" والأرقام العشوائية الزائفة - والفرق مهم لأمان أنظمة التشفير.
يمكن لأجهزة الكمبيوتر إنشاء أرقام عشوائية حقًا من خلال مراقبة بعض البيانات الخارجية ، مثل حركات الماوس أو ضوضاء المروحة ، والتي لا يمكن التنبؤ بها ، وإنشاء البيانات منها. يُعرف هذا بالانتروبيا. في أوقات أخرى ، يقومون بإنشاء أرقام "شبه عشوائية" باستخدام خوارزمية بحيث تظهر النتائج عشوائية ، على الرغم من أنها ليست كذلك.
أصبح هذا الموضوع أكثر إثارة للجدل مؤخرًا ، حيث يتساءل العديد من الأشخاص عما إذا كانت شريحة مولد الأرقام العشوائية المدمجة في Intel جديرة بالثقة. لفهم سبب عدم جدارة بالثقة ، سيتعين عليك فهم كيفية إنشاء الأرقام العشوائية في المقام الأول ، وما الغرض من استخدامها.
ما هي الأرقام العشوائية المستخدمة
تم استخدام الأرقام العشوائية لآلاف السنين. سواء كان الأمر يتعلق بقلب عملة معدنية أو رمي النرد ، فإن الهدف هو ترك النتيجة النهائية للصدفة العشوائية. مولدات الأرقام العشوائية في الكمبيوتر متشابهة - إنها محاولة لتحقيق نتيجة عشوائية غير متوقعة.
ذات صلة: ما هو التشفير ، وكيف يعمل؟
تعد مولدات الأرقام العشوائية مفيدة للعديد من الأغراض المختلفة. بصرف النظر عن التطبيقات الواضحة مثل إنشاء أرقام عشوائية لأغراض المقامرة أو إنشاء نتائج غير متوقعة في لعبة كمبيوتر ، فإن العشوائية مهمة للتشفير.
يتطلب التشفير أرقامًا لا يستطيع المهاجمون تخمينها. لا يمكننا استخدام نفس الأرقام مرارًا وتكرارًا. نريد إنشاء هذه الأرقام بطريقة غير متوقعة للغاية بحيث لا يستطيع المهاجمون تخمينها. هذه الأرقام العشوائية ضرورية للتشفير الآمن ، سواء كنت تقوم بتشفير ملفاتك الخاصة أو مجرد استخدام موقع HTTPS على الإنترنت.
أرقام عشوائية حقيقية
قد تتساءل كيف يمكن للكمبيوتر في الواقع إنشاء رقم عشوائي. من أين تأتي هذه "العشوائية". إذا كان مجرد جزء من رمز كمبيوتر ، فهل من الممكن توقع الأرقام التي يولدها الكمبيوتر؟
نقوم عمومًا بتجميع الأرقام العشوائية التي تنشئها أجهزة الكمبيوتر في نوعين ، اعتمادًا على كيفية إنشائها: أرقام عشوائية "حقيقية" وأرقام عشوائية شبه عشوائية.
لإنشاء رقم عشوائي "حقيقي" ، يقيس الكمبيوتر نوعًا من الظاهرة الفيزيائية التي تحدث خارج الكمبيوتر. على سبيل المثال ، يمكن للكمبيوتر قياس الانحلال الإشعاعي للذرة. وفقًا لنظرية الكم ، لا توجد طريقة لمعرفة على وجه اليقين متى سيحدث الانحلال الإشعاعي ، لذلك فهذه في الأساس "عشوائية نقية" من الكون. لن يكون المهاجم قادرًا على التنبؤ بموعد حدوث الانحلال الإشعاعي ، لذلك لن يعرفوا القيمة العشوائية.
للحصول على مثال أكثر يومًا بعد يوم ، يمكن للكمبيوتر الاعتماد على الضوضاء الجوية أو ببساطة استخدام الوقت المحدد الذي تضغط فيه على المفاتيح على لوحة المفاتيح كمصدر لبيانات غير متوقعة أو إنتروبيا. على سبيل المثال ، قد يلاحظ جهاز الكمبيوتر الخاص بك أنك قمت بالضغط على مفتاح في 0.23423523 ثانية بالضبط بعد الساعة 2 مساءً. احصل على عدد كافٍ من الأوقات المحددة المرتبطة بضغوط المفاتيح هذه وسيكون لديك مصدر إنتروبيا يمكنك استخدامه لإنشاء رقم عشوائي "حقيقي". أنت لست آلة يمكن التنبؤ بها ، لذلك لا يمكن للمهاجم تخمين اللحظة الدقيقة التي تضغط فيها على هذه المفاتيح. الجهاز / dev / random على نظام Linux ، الذي يولد أرقامًا عشوائية ، "يحجب" ولا يعرض نتيجة حتى يجمع ما يكفي من الانتروبيا لإرجاع رقم عشوائي حقيقي.
أرقام شبه عشوائية
الأرقام العشوائية الزائفة هي بديل للأرقام العشوائية "الحقيقية". يمكن أن يستخدم الكمبيوتر قيمة أولية وخوارزمية لتوليد أرقام تبدو عشوائية ، ولكنها في الواقع يمكن التنبؤ بها. لا يجمع الكمبيوتر أي بيانات عشوائية من البيئة.
هذا ليس بالضرورة أمرًا سيئًا في كل موقف. على سبيل المثال ، إذا كنت تلعب لعبة فيديو ، فلا يهم حقًا ما إذا كانت الأحداث التي تحدث في تلك اللعبة ناتجة عن أرقام عشوائية "حقيقية" أو أرقام عشوائية شبه. من ناحية أخرى ، إذا كنت تستخدم التشفير ، فأنت لا تريد استخدام أرقام شبه عشوائية يمكن للمهاجم تخمينها.
على سبيل المثال ، لنفترض أن المهاجم يعرف الخوارزمية والقيمة الأولية التي يستخدمها منشئ الأرقام العشوائية الزائفة. ودعنا نقول أن خوارزمية التشفير تحصل على رقم شبه عشوائي من هذه الخوارزمية وتستخدمه لإنشاء مفتاح تشفير دون إضافة أي عشوائية إضافية. إذا كان المهاجم يعرف ما يكفي ، فيمكنه العمل بشكل عكسي وتحديد الرقم العشوائي الزائف الذي يجب أن تختاره خوارزمية التشفير في هذه الحالة ، مما يؤدي إلى كسر التشفير.
مولد الأرقام العشوائي لأجهزة NSA و Intel
لتسهيل الأمور على المطورين والمساعدة في إنشاء أرقام عشوائية آمنة ، تشتمل رقائق Intel على مولد أرقام عشوائي قائم على الأجهزة يُعرف باسم RdRand. تستخدم هذه الشريحة مصدر إنتروبيا على المعالج وتوفر أرقامًا عشوائية للبرنامج عندما يطلبها البرنامج.
تكمن المشكلة هنا في أن مولد الأرقام العشوائية هو في الأساس صندوق أسود ولا نعرف ما الذي يحدث بداخله. إذا احتوت RdRand على باب خلفي لـ NSA ، فستكون الحكومة قادرة على كسر مفاتيح التشفير التي تم إنشاؤها باستخدام البيانات المقدمة فقط من خلال مولد الأرقام العشوائية هذا.
هذا مصدر قلق خطير. في ديسمبر 2013 ، أزال مطورو FreeBSD الدعم لاستخدام RdRand مباشرة كمصدر للعشوائية ، قائلين إنهم لا يستطيعون الوثوق به. [المصدر] سيتم إدخال إخراج جهاز RdRand في خوارزمية أخرى تضيف إنتروبيا إضافية ، مما يضمن عدم أهمية أي أبواب خلفية في مولد الأرقام العشوائية. لقد عمل Linux بالفعل بهذه الطريقة ، مما أدى إلى زيادة عشوائية البيانات العشوائية القادمة من RdRand بحيث لا يمكن التنبؤ بها حتى لو كان هناك باب خلفي. [المصدر] في AMA مؤخرًا ("اسألني أي شيء") على Reddit ، لم يُجب بريان كرزانيتش الرئيس التنفيذي لشركة Intel على أسئلة حول هذه المخاوف. [مصدر]
بالطبع ، من المحتمل ألا يكون هذا مجرد مشكلة في رقائق Intel. دعا مطورو FreeBSD رقائق فيا بالاسم أيضًا. يوضح هذا الجدل سبب أهمية إنشاء أرقام عشوائية عشوائية حقًا ولا يمكن التنبؤ بها.
لتوليد أرقام عشوائية "حقيقية" ، تجمع مولدات الأرقام العشوائية "إنتروبيا" ، أو بيانات تبدو عشوائية من العالم المادي المحيط بها. بالنسبة للأرقام العشوائية التي لا تحتاج حقًا إلى أن تكون عشوائية ، فقد يستخدمون فقط خوارزمية وقيمة أولية.
حقوق الصورة: rekre89 على فليكر ، ليزا بروستر على فليكر ، رايان سوما على فليكر ، هوانغجياهوي على فليكر