كيف أجهزة الكمبيوتر توليد أرقام عشوائية
أجهزة الكمبيوتر توليد رقم عشوائي لكل شيء من التشفير إلى ألعاب الفيديو والمقامرة. هناك فئتان من الأرقام العشوائية - الأرقام العشوائية "الحقيقية" والأرقام شبه العشوائية - والفرق مهم لأمان أنظمة التشفير.
يمكن لأجهزة الكمبيوتر توليد أرقام عشوائية فعلية من خلال مراقبة بعض البيانات الخارجية ، مثل حركات الماوس أو ضوضاء المروحة ، والتي لا يمكن التنبؤ بها ، وإنشاء بيانات منها. هذا هو المعروف باسم الانتروبيا. في أوقات أخرى ، تقوم بتوليد أرقام "شبه عشوائية" باستخدام خوارزمية حتى تظهر النتائج عشوائية ، على الرغم من أنها ليست.
أصبح هذا الموضوع أكثر إثارة للجدل في الآونة الأخيرة ، مع العديد من الناس يتساءلون ما إذا كانت رقاقة مولد رقم عشوائي للأجهزة المدمجة من إنتل جديرة بالثقة. لفهم سبب عدم الوثوق بها ، سيتعين عليك فهم كيفية تكوين الأرقام العشوائية في المقام الأول ، وما يتم استخدامه.
ما هي ارقام عشوائية تستخدم ل
تم استخدام أعداد عشوائية لعدة آلاف من السنين. سواء كان ذلك من خلال تقليب قطعة نقود معدنية أو رمي النرد ، فإن الهدف هو ترك النتيجة النهائية حتى فرصة عشوائية. تتشابه مولدات الأرقام العشوائية في الكمبيوتر - إنها محاولة لتحقيق نتيجة عشوائية غير متوقعة.
مولدات الأرقام العشوائية مفيدة للعديد من الأغراض المختلفة. بصرف النظر عن التطبيقات الواضحة مثل توليد أرقام عشوائية لأغراض المقامرة أو خلق نتائج غير متوقعة في لعبة كمبيوتر ، فإن العشوائية مهمة في التشفير.
يتطلب التشفير أرقامًا لا يستطيع المهاجمون تخمينها. لا يمكننا استخدام نفس الأرقام مرارًا وتكرارًا. نريد توليد هذه الأرقام بطريقة لا يمكن التنبؤ بها بحيث لا يستطيع المهاجمون تخمينها. هذه الأرقام العشوائية ضرورية للتشفير الآمن ، سواء كنت تشفر ملفاتك الخاصة أو تستخدم فقط موقع HTTPS على الإنترنت.
أرقام عشوائية حقيقية
قد تتسائل كيف يمكن لجهاز الكمبيوتر توليد رقم عشوائي. من أين تأتي هذه "العشوائية". إذا كان مجرد جزء من رمز الكمبيوتر ، أليس من الممكن التنبؤ بالأرقام التي يولدها الكمبيوتر?
نقوم بشكل عام بتجميع الأرقام العشوائية التي تولدها الحواسيب إلى نوعين ، اعتمادًا على كيفية إنشائها: الأرقام العشوائية "الحقيقية" والأرقام العشوائية الزائفة.
لإنشاء رقم عشوائي "حقيقي" ، يقيس الكمبيوتر نوعًا من الظواهر الفيزيائية التي تحدث خارج الكمبيوتر. على سبيل المثال ، يمكن للكمبيوتر قياس الانحطاط الإشعاعي للذرة. وفقا لنظرية الكم ، لا توجد طريقة لمعرفة على وجه اليقين عندما يحدث الاضمحلال الإشعاعي ، لذلك هذا هو في الأساس "عشوائية نقية" من الكون. لن يتمكن المهاجم من التنبؤ بالوقت الذي يحدث فيه الاضمحلال الإشعاعي ، لذلك لن يعرفوا القيمة العشوائية.
للحصول على مثال أكثر يومًا ، يمكن للكمبيوتر الاعتماد على الضوضاء الجوية أو ببساطة استخدام الوقت الدقيق الذي تضغط فيه المفاتيح على لوحة المفاتيح كمصدر للبيانات غير المتوقعة أو الإنتروبيا. على سبيل المثال ، قد يلاحظ الكمبيوتر أنك قمت بالضغط على مفتاح في تمام الساعة 0،23423523 بعد الساعة 2 مساءً ... انتزاع ما يكفي من الأوقات المحددة المرتبطة بضغوط المفاتيح هذه وسيكون لديك مصدر للإنتروبيا يمكنك استخدامه لإنشاء عشوائي "حقيقي" رقم. أنت لست آلة يمكن التنبؤ بها ، لذلك لا يمكن للمهاجم تخمين اللحظة الدقيقة عند الضغط على هذه المفاتيح. جهاز / dev / random على Linux ، الذي يولد أرقامًا عشوائية ، "كتل" ولا يعيد نتيجة حتى يجمع الإنتروبيا الكافية لإرجاع رقم عشوائي حقاً.
أرقام Pseudorandom
الأرقام شبه العشوائية هي بديل للأرقام العشوائية "الحقيقية". يمكن أن يستخدم الكمبيوتر قيمة بذرة وخوارزمية لإنشاء أرقام تبدو عشوائية ، ولكن يمكن توقعها بالفعل. لا يجمع الكمبيوتر أي بيانات عشوائية من البيئة.
هذا ليس بالضرورة أمرا سيئا في كل حالة. على سبيل المثال ، إذا كنت تلعب لعبة فيديو ، فلا يهم ما إذا كانت الأحداث التي تحدث في تلك اللعبة مصنفة بأرقام عشوائية "حقيقية" أو أرقام عشوائية زائفة. من ناحية أخرى ، إذا كنت تستخدم التشفير ، فأنت لا تريد استخدام أرقام شبه عشوائية يمكن لأحد المهاجمين تخمينها.
على سبيل المثال ، لنفترض أن المهاجم يعرف الخوارزمية وقيمة البذور التي يستخدمها مُولِّد رقم شبه عشوائي. ودعنا نقول أن خوارزمية التشفير تحصل على رقم شبه عشوائي من هذه الخوارزمية ويستخدمها لإنشاء مفتاح تشفير بدون إضافة أي عشوائية إضافية. إذا كان المهاجم يعرف ما يكفي ، فيمكنه العمل إلى الخلف وتحديد رقم pseudorandom الذي يجب أن تختاره خوارزمية التشفير في هذه الحالة ، مما يؤدي إلى كسر التشفير.
NSA ومولد إنتل رقم عشوائي للأجهزة
لجعل الأمور أسهل للمطورين وتساعد على توليد أرقام عشوائية آمنة ، تشمل رقائق إنتل مولد رقم عشوائي قائم على الأجهزة يعرف باسم RdRand. تستخدم هذه الشريحة مصدر إنتروبيا على المعالج وتوفر أرقامًا عشوائية للبرامج عندما يطلبها البرنامج.
المشكلة هنا هي أن مولد الأرقام العشوائية هو في الأساس صندوق أسود ولا نعرف ما يجري داخله. إذا كان RdRand يحتوي على مستتر NSA ، فإن الحكومة ستكون قادرة على كسر مفاتيح التشفير التي تم إنشاؤها فقط مع البيانات المقدمة من ذلك مولد الأرقام العشوائية.
هذا هو مصدر قلق خطير. في ديسمبر 2013 ، أزال مطورو FreeBSD الدعم لاستخدام RdRand مباشرة كمصدر للعشوائية ، قائلين أنهم لا يستطيعون الوثوق به. [المصدر] سيتم تغذية خرج جهاز RdRand إلى خوارزمية أخرى تضيف إنتروبيا إضافية ، مما يضمن عدم أهمية أي خلفي في مولد الأرقام العشوائية. لقد عمل لينكس بالفعل بهذه الطريقة ، وزاد من عشوائية البيانات العشوائية القادمة من RdRand بحيث لا يمكن التنبؤ بها حتى لو كان هناك باب خلفي. [المصدر] في AMA الأخيرة ("اسألني عن أي شيء") على Reddit ، لم يجيب الرئيس التنفيذي لشركة إنتل بريان Krzanich أسئلة حول هذه المخاوف. [مصدر]
بالطبع ، هذا ليس مجرد مشكلة مع رقائق إنتل. دعا مطوري FreeBSD من رقائق فيا بالاسم أيضا. يوضح هذا الجدل سبب أهمية توليد أرقام عشوائية عشوائية حقاً ولا يمكن التنبؤ بها.
لإنشاء أرقام عشوائية "حقيقية" ، تجمع مولدات الأرقام العشوائية "الإنتروبيا" أو البيانات التي تبدو عشوائية من العالم المادي من حولهم. للأرقام العشوائية التي لا تفعل ذلك هل حقا يجب أن تكون عشوائية ، قد تستخدم فقط خوارزمية وقيمة بذور.
Image Credit: rekre89 on Flickr، Lisa Brewster on Flickr، Ryan Somma on Flickr، huangjiahui on Flickr