توليد أرقام عشوائية

إن توليد الأرقام العشوائية هو عملية يتم من خلالها توليد تسلسل من الأرقام أو الرموز التي لا يمكن التنبؤ بها بشكل أفضل من خلال الصدفة العشوائية ، وذلك غالبًا عن طريق مولد الأرقام العشوائية . وهذا يعني أن تسلسل النتائج المعين سوف يحتوي على بعض الأنماط التي يمكن اكتشافها بأثر رجعي ولكن من المستحيل التنبؤ بها. يمكن أن تكون مولدات الأرقام العشوائية الحقيقية عبارة عن مولدات أرقام عشوائية للأجهزة (HRNGs)، حيث يكون كل جيل دالة للقيمة الحالية لخاصية البيئة المادية التي تتغير باستمرار بطريقة من المستحيل عمليًا نمذجتها. وهذا يتناقض مع ما يسمى "توليد الأرقام العشوائية" الذي يتم بواسطة مولدات الأرقام العشوائية الزائفة (PRNGs)، والتي تولد أرقامًا تبدو عشوائية فقط ولكنها في الواقع محددة مسبقًا - يمكن إعادة إنتاج هذه الأجيال ببساطة عن طريق معرفة حالة مولد الأرقام العشوائية الزائفة. [1]
أدت التطبيقات المختلفة للعشوائية إلى تطوير طرق مختلفة لتوليد البيانات العشوائية . وقد وُجدت بعض هذه الطرق منذ العصور القديمة، بما في ذلك أمثلة معروفة مثل رمي النرد ، ورمي العملة المعدنية ، وخلط أوراق اللعب ، واستخدام سيقان اليارو ( للتكهن ) في كتاب التغييرات الصيني ، فضلاً عن عدد لا يحصى من التقنيات الأخرى. ونظرًا للطبيعة الميكانيكية لهذه التقنيات، فإن توليد كميات كبيرة من الأرقام العشوائية الكافية (المهمة في الإحصاء) يتطلب الكثير من العمل والوقت. وبالتالي، يتم أحيانًا جمع النتائج وتوزيعها على شكل جداول أرقام عشوائية .
توجد عدة طرق حسابية لتوليد الأرقام شبه العشوائية. وكلها تفشل في تحقيق هدف العشوائية الحقيقية، على الرغم من أنها قد تلبي، بدرجات متفاوتة من النجاح، بعض الاختبارات الإحصائية للعشوائية التي تهدف إلى قياس مدى عدم القدرة على التنبؤ بنتائجها (أي إلى أي مدى يمكن تمييز أنماطها). وهذا يجعلها عمومًا غير قابلة للاستخدام في تطبيقات مثل التشفير . ومع ذلك، توجد أيضًا مولدات أرقام شبه عشوائية مصممة بعناية وآمنة تشفيريًا (CSPRNGS)، مع ميزات خاصة مصممة خصيصًا للاستخدام في التشفير.
التطبيقات والاستخدامات العملية
تستخدم مولدات الأرقام العشوائية في المقامرة ، والعينات الإحصائية ، والمحاكاة الحاسوبية ، والتشفير ، والتصميم العشوائي الكامل ، وغيرها من المجالات حيث يكون إنتاج نتيجة غير متوقعة أمرًا مرغوبًا فيه. بشكل عام، في التطبيقات التي تتميز بعدم القدرة على التنبؤ باعتبارها السمة الأساسية، مثل تطبيقات الأمان، يتم تفضيل مولدات الأجهزة بشكل عام على الخوارزميات شبه العشوائية، حيثما كان ذلك ممكنًا.
تعتبر مولدات الأرقام العشوائية الزائفة مفيدة جدًا في تطوير عمليات المحاكاة بطريقة مونت كارلو ، حيث يتم تسهيل تصحيح الأخطاء من خلال القدرة على تشغيل نفس تسلسل الأرقام العشوائية مرة أخرى من خلال البدء من نفس البذرة العشوائية . كما تُستخدم أيضًا في التشفير - طالما أن البذرة سرية. يمكن للمرسل والمستقبل إنشاء نفس مجموعة الأرقام تلقائيًا لاستخدامها كمفاتيح.
إن توليد أرقام شبه عشوائية يعد مهمة مهمة وشائعة في برمجة الكمبيوتر. وفي حين تتطلب التشفير وبعض الخوارزميات العددية درجة عالية جدًا من العشوائية الظاهرة ، فإن العديد من العمليات الأخرى لا تحتاج إلا إلى قدر متواضع من عدم القدرة على التنبؤ. ومن الأمثلة البسيطة تقديم "اقتباس عشوائي لهذا اليوم" للمستخدم، أو تحديد الاتجاه الذي قد يتحرك فيه خصم يتحكم فيه الكمبيوتر في لعبة كمبيوتر. وتُستخدم أشكال أضعف من العشوائية في خوارزميات التجزئة وفي إنشاء خوارزميات البحث والفرز المطفأة .
إن بعض التطبيقات التي تبدو للوهلة الأولى مناسبة للتوزيع العشوائي ليست في الواقع بهذه البساطة. على سبيل المثال، يجب أن يظهر النظام الذي يختار "عشوائيًا" مسارات موسيقية لنظام موسيقى خلفية بشكل عشوائي فقط، وقد يكون لديه طرق للتحكم في اختيار الموسيقى: لن يكون للنظام العشوائي حقًا أي قيود على ظهور نفس العنصر مرتين أو ثلاث مرات متتالية.
الأرقام الحقيقية مقابل الأرقام العشوائية الزائفة
هناك طريقتان رئيسيتان تستخدمان لتوليد أرقام عشوائية. الطريقة الأولى تقيس بعض الظواهر الفيزيائية التي من المتوقع أن تكون عشوائية ثم تعوض عن التحيزات المحتملة في عملية القياس. تشمل المصادر النموذجية قياس الضوضاء الجوية والضوضاء الحرارية وغيرها من الظواهر الكهرومغناطيسية والكمية الخارجية. على سبيل المثال، يمثل الإشعاع الكوني الخلفي أو الاضمحلال الإشعاعي كما تم قياسه على مدى فترات زمنية قصيرة مصادر للإنتروبيا الطبيعية (كمقياس لعدم القدرة على التنبؤ أو المفاجأة في عملية توليد الأرقام).
تعتمد السرعة التي يمكن بها الحصول على الإنتروبيا من المصادر الطبيعية على الظواهر الفيزيائية الأساسية التي يتم قياسها. وبالتالي، يُقال إن مصادر الإنتروبيا "الحقيقية" التي تحدث بشكل طبيعي تكون مانعة - فهي محدودة السرعة حتى يتم حصاد كمية كافية من الإنتروبيا لتلبية الطلب. في بعض الأنظمة الشبيهة بنظام يونكس، بما في ذلك معظم توزيعات لينكس ، سيعمل ملف الجهاز الزائف /dev/random على الحجب حتى يتم حصاد كمية كافية من الإنتروبيا من البيئة. [2] وبسبب سلوك الحجب هذا، يمكن أن تكون عمليات القراءة الكبيرة من /dev/random ، مثل ملء محرك الأقراص الثابتة ببتات عشوائية، بطيئة في كثير من الأحيان على الأنظمة التي تستخدم هذا النوع من مصادر الإنتروبيا.
الطريقة الثانية تستخدم خوارزميات حسابية يمكنها إنتاج تسلسلات طويلة من النتائج العشوائية ظاهريًا، والتي يتم تحديدها في الواقع تمامًا من خلال قيمة أولية أقصر، تُعرف باسم قيمة البذرة أو المفتاح . ونتيجة لذلك، يمكن إعادة إنتاج التسلسل العشوائي ظاهريًا بالكامل إذا كانت قيمة البذرة معروفة. غالبًا ما يُطلق على هذا النوع من مولدات الأرقام العشوائية اسم مولد الأرقام العشوائية الزائفة . لا يعتمد هذا النوع من المولدات عادةً على مصادر الإنتروبيا الطبيعية، على الرغم من أنه قد يتم زرعها بشكل دوري من مصادر طبيعية. هذا النوع من المولدات غير مانع، لذلك فهي ليست محدودة بالسرعة بواسطة حدث خارجي، مما يجعل عمليات القراءة الجماعية الكبيرة ممكنة.
تتبع بعض الأنظمة نهجًا هجينًا، حيث توفر عشوائية يتم حصادها من مصادر طبيعية عند توفرها، ثم تعود إلى مولدات الأرقام العشوائية الزائفة (CSPRNGs) التي يتم إعادة زراعتها بشكل دوري والمبنية على البرامج والمؤمنة تشفيريًا. يحدث التراجع عندما يتجاوز معدل القراءة المطلوب للعشوائية قدرة نهج الحصاد الطبيعي على مواكبة الطلب. يتجنب هذا النهج سلوك الحظر المحدود بالمعدل لمولدات الأرقام العشوائية القائمة على أساليب أبطأ وبيئية بحتة.
في حين أن مولد الأرقام شبه العشوائية الذي يعتمد فقط على المنطق الحتمي لا يمكن اعتباره أبدًا مصدرًا "حقيقيًا" للأرقام العشوائية بالمعنى الأكثر نقاءً للكلمة، إلا أنه في الممارسة العملية يكون كافيًا بشكل عام حتى للتطبيقات الحرجة أمنيًا. يمكن اعتماد مولدات الأرقام شبه العشوائية المصممة والمنفذة بعناية لأغراض تشفيرية حرجة أمنيًا، كما هو الحال مع خوارزمية يارو وفورتونا . الأول هو أساس مصدر /dev/random للإنتروبيا على FreeBSD و AIX و macOS و NetBSD وغيرها. يستخدم OpenBSD خوارزمية أرقام شبه عشوائية تُعرف باسم arc4random . [ مشكوك فيه - ناقش ] [3]
طرق التوليد
الأساليب الفيزيائية
لا تزال أقدم الطرق لتوليد أرقام عشوائية، مثل النرد ورمي العملة المعدنية وعجلات الروليت، مستخدمة حتى يومنا هذا، وخاصة في الألعاب والمقامرة لأنها تميل إلى أن تكون بطيئة للغاية بالنسبة لمعظم التطبيقات في الإحصاء والتشفير.
يمكن أن يعتمد مولد الأرقام العشوائية للأجهزة على ظاهرة فيزيائية ذرية أو دون ذرية عشوائية بشكل أساسي يمكن إرجاع عدم القدرة على التنبؤ بها إلى قوانين ميكانيكا الكم . [4] [5] تشمل مصادر الإنتروبيا الاضمحلال الإشعاعي والضوضاء الحرارية وضوضاء الطلقات وضوضاء الانهيار في ثنائيات زينر وانجراف الساعة وتوقيت الحركات الفعلية لرأس القراءة والكتابة على القرص الصلب وضوضاء الراديو . ومع ذلك، تتميز الظواهر الفيزيائية والأدوات المستخدمة لقياسها عمومًا بعدم التماثل والتحيزات المنهجية التي تجعل نتائجها غير عشوائية بشكل موحد. يمكن استخدام مستخرج العشوائية ، مثل دالة التجزئة التشفيرية ، للتعامل مع توزيع موحد للبتات من مصدر عشوائي غير موحد، وإن كان بمعدل بت أقل.
يساعد ظهور مصادر الإنتروبيا الفوتونية ذات النطاق العريض، مثل الفوضى البصرية وضوضاء الانبعاث التلقائي المضخمة ، بشكل كبير في تطوير مولد الأرقام العشوائية الفيزيائي. ومن بينها، تتمتع الفوضى البصرية [6] [7] بإمكانية عالية لإنتاج أرقام عشوائية عالية السرعة ماديًا بسبب نطاقها الترددي العالي وسعتها الكبيرة. تم بناء نموذج أولي لمولد بتات عشوائية فيزيائي عالي السرعة وفي الوقت الفعلي يعتمد على ليزر فوضوي في عام 2013. [8]
تم ابتكار طرق مبتكرة مختلفة لجمع هذه المعلومات الإنتروبية. إحدى التقنيات هي تشغيل دالة تجزئة على إطار من دفق فيديو من مصدر غير متوقع. استخدم لافاران هذه التقنية مع صور عدد من مصابيح الحمم البركانية . قام موقع HotBits بقياس الاضمحلال الإشعاعي باستخدام أنابيب جايجر-مولر ، [9] بينما يستخدم موقع Random.org اختلافات في سعة الضوضاء الجوية المسجلة بجهاز راديو عادي.
مصدر شائع آخر للإنتروبيا هو سلوك المستخدمين البشر للنظام. في حين لا يُعتبر البشر مولدين جيدين للعشوائية عند الطلب، فإنهم يولدون سلوكًا عشوائيًا جيدًا في سياق لعب ألعاب الإستراتيجية المختلطة . [10] تتطلب بعض برامج الكمبيوتر المتعلقة بالأمان من المستخدم إجراء سلسلة طويلة من حركات الماوس أو إدخالات لوحة المفاتيح لإنشاء كمية كافية من الإنتروبيا اللازمة لتوليد مفاتيح عشوائية أو لتهيئة مولدات أرقام عشوائية زائفة. [11]
الأساليب الحسابية
تستخدم معظم الأرقام العشوائية المولدة بواسطة الكمبيوتر مولدات الأرقام العشوائية ذات الأعداد الحقيقية (PRNGs) وهي خوارزميات يمكنها إنشاء سلاسل طويلة من الأرقام تلقائيًا بخصائص عشوائية جيدة ولكن في النهاية تتكرر التسلسلات (أو ينمو استخدام الذاكرة دون حدود). هذه الأرقام العشوائية جيدة في العديد من المواقف ولكنها ليست عشوائية مثل الأرقام المولدة من الضوضاء الجوية الكهرومغناطيسية المستخدمة كمصدر للإنتروبيا. [12] يتم تحديد سلسلة القيم التي تولدها مثل هذه الخوارزميات بشكل عام بواسطة رقم ثابت يسمى البذرة . أحد أكثر مولدات الأرقام العشوائية شيوعًا هو المولد المتطابق الخطي ، والذي يستخدم التكرار
لتوليد أرقام، حيث a و b و m أعداد صحيحة كبيرة، و هي التالية في X كسلسلة من الأرقام العشوائية الزائفة. الحد الأقصى لعدد الأرقام التي يمكن أن تنتجها الصيغة هو معامل ، m . يمكن تمديد علاقة التكرار إلى المصفوفات للحصول على فترات أطول بكثير وخصائص إحصائية أفضل. [13] لتجنب بعض الخصائص غير العشوائية لمولد متطابق خطي واحد، يمكن استخدام العديد من مولدات الأرقام العشوائية هذه بقيم مختلفة قليلاً لمعامل المضاعف، a ، بالتوازي، مع مولد أرقام عشوائية "رئيسي" يختار من بين العديد من المولدات المختلفة.
هناك طريقة بسيطة لتوليد أرقام عشوائية باستخدام القلم والورق، وهي ما يسمى بطريقة المربع الأوسط التي اقترحها جون فون نيومان . ورغم سهولة تنفيذها، فإن مخرجاتها رديئة الجودة. فهي ذات فترة قصيرة للغاية ونقاط ضعف شديدة، مثل تقارب تسلسل المخرجات دائمًا تقريبًا إلى الصفر. ومن بين الابتكارات الحديثة الجمع بين المربع الأوسط ومتتالية ويل . وتنتج هذه الطريقة مخرجات عالية الجودة خلال فترة طويلة. [14]
تتضمن أغلب لغات برمجة الكمبيوتر وظائف أو روتينات مكتبية توفر مولدات أرقام عشوائية. وغالبًا ما تكون مصممة لتوفير بايت أو كلمة عشوائية، أو رقم فاصلة عائمة موزع بشكل موحد بين 0 و1.
تختلف جودة مثل هذه الوظائف المكتبية، أي عشوائيتها، بشكل كبير من الناتج المتوقع تمامًا إلى الأمان التشفيري. يعتمد مولد الأرقام العشوائية الافتراضي في العديد من اللغات، بما في ذلك Python وRuby وR وIDL وPHP، على خوارزمية Mersenne Twister ولا يكفي لأغراض التشفير، كما هو مذكور صراحةً في وثائق اللغة. غالبًا ما يكون لهذه الوظائف المكتبية خصائص إحصائية ضعيفة وبعضها يكرر الأنماط بعد عشرات الآلاف من المحاولات فقط. غالبًا ما يتم تهيئتها باستخدام ساعة الوقت الفعلي للكمبيوتر كبذرة، لأن هذه الساعة 64 بت وتقيس بالنانوثانية، وهو ما يتجاوز دقة الشخص بكثير . قد توفر هذه الوظائف عشوائية كافية لمهام معينة (على سبيل المثال ألعاب الفيديو) ولكنها غير مناسبة حيث تكون العشوائية عالية الجودة مطلوبة، مثل تطبيقات التشفير أو الإحصائيات. [15]
تتوفر مصادر أرقام عشوائية ذات جودة أعلى بكثير على معظم أنظمة التشغيل؛ على سبيل المثال /dev/random على إصدارات BSD المختلفة، وLinux، وMac OS X، وIRIX، وSolaris، أو CryptGenRandom لنظام التشغيل Microsoft Windows. توفر معظم لغات البرمجة، بما في ذلك تلك المذكورة أعلاه، وسيلة للوصول إلى هذه المصادر ذات الجودة الأعلى.
بواسطة البشر
يمكن أيضًا أن يقوم البشر بتوليد الأرقام العشوائية، في شكل جمع مدخلات مختلفة من المستخدمين النهائيين واستخدامها كمصدر عشوائي. ومع ذلك، وجدت معظم الدراسات أن البشر لديهم درجة ما من عدم العشوائية عند محاولة إنتاج تسلسل عشوائي من الأرقام أو الحروف على سبيل المثال. قد يتناوبون كثيرًا بين الخيارات عند مقارنتهم بمولد عشوائي جيد؛ [16] وبالتالي، فإن هذا النهج غير مستخدم على نطاق واسع. ومع ذلك، وللسبب نفسه الذي يجعل البشر يؤدون بشكل سيئ في هذه المهمة، يمكن استخدام توليد الأرقام العشوائية البشرية كأداة لاكتساب رؤى حول وظائف المخ التي لا يمكن الوصول إليها بخلاف ذلك. [17]
مرحلة ما بعد المعالجة والفحوصات الإحصائية
حتى مع وجود مصدر لأرقام عشوائية معقولة (ربما من مولد أجهزة قائم على ميكانيكا الكم)، فإن الحصول على أرقام غير متحيزة تمامًا أمر مهم. بالإضافة إلى ذلك، غالبًا ما يتغير سلوك هذه المولدات مع درجة الحرارة أو جهد مصدر الطاقة أو عمر الجهاز أو أي تدخل خارجي آخر.
تخضع الأرقام العشوائية المولدة أحيانًا لاختبارات إحصائية قبل الاستخدام للتأكد من أن المصدر الأساسي لا يزال يعمل، ثم تتم معالجتها لاحقًا لتحسين خصائصها الإحصائية. ومن الأمثلة على ذلك مولد الأرقام العشوائية للأجهزة TRNG9803 [18] ، والذي يستخدم قياس الإنتروبيا كاختبار للأجهزة، ثم يعالج التسلسل العشوائي لاحقًا باستخدام تشفير تدفق سجل الإزاحة. من الصعب عمومًا استخدام الاختبارات الإحصائية للتحقق من صحة الأرقام العشوائية المولدة. اقترح وانج ونيكول [19] تقنية اختبار إحصائي تعتمد على المسافة تُستخدم لتحديد نقاط الضعف في العديد من المولدات العشوائية. اقترح لي ووانج [20] طريقة لاختبار الأرقام العشوائية بناءً على مصادر الإنتروبيا الفوضوية بالليزر باستخدام خصائص الحركة البراونية.
تُستخدم الاختبارات الإحصائية أيضًا لإضفاء الثقة على أن الناتج النهائي الذي تتم معالجته لاحقًا من مولد الأرقام العشوائية غير متحيز حقًا، مع تطوير العديد من مجموعات اختبار العشوائية .
اعتبارات أخرى
إعادة تشكيل التوزيع
توزيعات موحدة
تعمل معظم مولدات الأرقام العشوائية بشكل طبيعي مع الأعداد الصحيحة أو البتات الفردية، لذا يلزم اتخاذ خطوة إضافية للوصول إلى التوزيع الموحد "القياسي" بين 0 و1. التنفيذ ليس بسيطًا مثل قسمة العدد الصحيح على أقصى قيمة ممكنة له. على وجه التحديد: [21] [22]
- يجب أن يوفر العدد الصحيح المستخدم في التحويل عددًا كافيًا من البتات للدقة المقصودة.
- إن طبيعة الرياضيات ذات الفاصلة العائمة تعني أن الدقة تزداد كلما اقترب الرقم من الصفر. ولا تُستخدم هذه الدقة الإضافية عادةً بسبب العدد الهائل من البتات المطلوبة.
- قد يؤدي خطأ التقريب في القسمة إلى تحيز النتيجة. وفي أسوأ الأحوال، قد يتم رسم حد مستبعد على عكس التوقعات القائمة على الرياضيات القائمة على الأعداد الحقيقية.
تم وصف الخوارزمية الرئيسية، التي تستخدمها OpenJDK و Rust و NumPy ، في اقتراح لـ STL في C++ . لا تستخدم الدقة الإضافية وتعاني من التحيز فقط في البت الأخير بسبب التقريب إلى الزوجي. [23] هناك مخاوف رقمية أخرى مبررة عند تحويل هذا التوزيع الموحد "التقليدي" إلى نطاق مختلف. [24] تدعي طريقة مقترحة للغة برمجة Swift استخدام الدقة الكاملة في كل مكان. [25]
تُستخدم الأعداد الصحيحة الموزعة بشكل موحد بشكل شائع في خوارزميات مثل خلط فيشر-ياتس . مرة أخرى، قد يؤدي التنفيذ الساذج إلى تحيز معياري في النتيجة، لذا يجب استخدام خوارزميات أكثر تعقيدًا. تم وصف طريقة لا تؤدي القسمة أبدًا تقريبًا في عام 2018 بواسطة دانييل ليمير، [26] مع كون أحدث التقنيات الحالية هي "الخوارزمية المثلى" المستوحاة من الترميز الحسابي لعام 2021 بواسطة ستيفن كانون من شركة Apple Inc. [27]
تتضمن معظم مولدات الأرقام العشوائية 0 إلى 1 الرقم 0 ولكنها تستبعد الرقم 1، في حين تتضمن مولدات الأرقام العشوائية الأخرى كليهما أو تستبعدهما.
توزيعات أخرى
بالنظر إلى مصدر الأرقام العشوائية المنتظمة، توجد طريقتان لإنشاء مصدر عشوائي جديد يتوافق مع دالة كثافة الاحتمال . إحدى الطرق تسمى طريقة العكس ، وتتضمن التكامل حتى منطقة أكبر من أو تساوي الرقم العشوائي (الذي يجب أن يتم إنشاؤه بين 0 و1 للتوزيعات المناسبة). تتضمن الطريقة الثانية تسمى طريقة القبول والرفض ، اختيار قيمة x وy واختبار ما إذا كانت دالة x أكبر من قيمة y. إذا كانت كذلك، يتم قبول قيمة x. وإلا، يتم رفض قيمة x وتحاول الخوارزمية مرة أخرى. [28] [29]
كمثال على أخذ العينات المرفوضة، لتوليد زوج من الأرقام العشوائية المعيارية المستقلة إحصائيًا والموزعة بشكل طبيعي ( x ، y )، قد يتم أولاً إنشاء الإحداثيات القطبية ( r ، θ )، حيث r 2 ~ χ 2 2 و θ ~ UNIFORM(0,2π) (انظر تحويل بوكس-مولر ).
تبييض
يمكن دمج مخرجات مولدات الأرقام العشوائية المستقلة المتعددة (على سبيل المثال، باستخدام عملية XOR لكل بت ) لتوفير مولد أرقام عشوائية مجمع لا يقل جودة عن أفضل مولد أرقام عشوائية مستخدم. ويشار إلى هذا باسم التبييض البرمجي .
في بعض الأحيان يتم الجمع بين مولدات الأرقام العشوائية الحاسوبية والمادية لتعكس فوائد كلا النوعين. يمكن لمولدات الأرقام العشوائية الحاسوبية عادةً توليد أرقام عشوائية زائفة أسرع كثيرًا من المولدات المادية، بينما يمكن للمولدات المادية توليد "عشوائية حقيقية".
تسلسلات ذات تباين منخفض كبديل
يمكن تلخيص بعض العمليات الحسابية التي تستخدم مولد الأرقام العشوائية على أنها حساب القيمة الإجمالية أو المتوسطة، مثل حساب التكاملات بطريقة مونت كارلو . بالنسبة لمثل هذه المشكلات، قد يكون من الممكن إيجاد حل أكثر دقة باستخدام ما يسمى بالتسلسلات منخفضة التباين ، والتي تسمى أيضًا بالأرقام شبه العشوائية . تتمتع مثل هذه التسلسلات بنمط محدد يملأ الفجوات بالتساوي، من الناحية النوعية؛ قد يترك التسلسل العشوائي حقًا فجوات أكبر، وعادة ما يفعل ذلك.
الأنشطة والعروض التوضيحية
توفر المواقع التالية عينات من الأرقام العشوائية:
- تحتوي صفحات موارد SOCR على عدد من الأنشطة التفاعلية العملية والعروض التوضيحية لتوليد الأرقام العشوائية باستخدام تطبيقات Java.
- تقوم مجموعة البصريات الكمومية في الجامعة الوطنية الأسترالية بتوليد أرقام عشوائية مستمدة من الفراغ الكمومي. تتوفر عينات من الأرقام العشوائية على صفحة أبحاث مولد الأرقام العشوائية الكمومية.
- يوفر موقع Random.org أرقامًا عشوائية يتم الحصول عليها من عشوائية الضوضاء الجوية.
- تستخرج خدمة مولد البتات العشوائية الكمومية في معهد رودر بوسكوفيتش العشوائية من العملية الكمومية للانبعاث الفوتوني في أشباه الموصلات. وتوفر الخدمة مجموعة متنوعة من الطرق لجلب البيانات، بما في ذلك المكتبات للعديد من لغات البرمجة.
- تقوم مجموعة جامعة تاييوان للتكنولوجيا بتوليد أرقام عشوائية مستمدة من ليزر فوضوي. تتوفر عينات من الأرقام العشوائية في خدمة مولد الأرقام العشوائية المادية الخاصة بهم.
الأبواب الخلفية
نظرًا لأن الكثير من التشفير يعتمد على مولد أرقام عشوائية آمن تشفيريًا لتوليد المفتاح والرقم العشوائي التشفيري ، فإذا كان من الممكن جعل مولد الأرقام العشوائية قابلاً للتنبؤ، فيمكن للمهاجم استخدامه كباب خلفي لكسر التشفير.
يُقال إن وكالة الأمن القومي قد أدخلت بابًا خلفيًا في مولد الأرقام العشوائية الزائفة Dual EC DRBG المعتمد من NIST والمؤمن تشفيريًا . على سبيل المثال، إذا تم إنشاء اتصال SSL باستخدام مولد الأرقام العشوائية هذا، فوفقًا لماثيو جرين ، سيسمح ذلك لوكالة الأمن القومي بتحديد حالة مولد الأرقام العشوائية، وبالتالي تكون قادرة في النهاية على قراءة جميع البيانات المرسلة عبر اتصال SSL. [30] على الرغم من أنه كان من الواضح أن Dual_EC_DRBG كان مولدًا سيئًا للغاية وربما به باب خلفي قبل فترة طويلة من تأكيد الباب الخلفي لوكالة الأمن القومي في عام 2013، فقد شهد استخدامًا كبيرًا في الممارسة العملية حتى عام 2013، على سبيل المثال من قبل شركة الأمن البارزة RSA Security . [31] كانت هناك اتهامات لاحقًا بأن شركة RSA Security أدخلت عن علم بابًا خلفيًا لوكالة الأمن القومي في منتجاتها، ربما كجزء من برنامج Bullrun . أنكرت شركة RSA إدخال باب خلفي عن علم في منتجاتها. [32]
وقد تم طرح نظرية مفادها أن أجهزة توليد الأرقام العشوائية يمكن تعديلها سراً بحيث يكون لديها إنتروبيا أقل مما هو مذكور، مما يجعل التشفير باستخدام أجهزة توليد الأرقام العشوائية عرضة للهجوم. تعمل إحدى هذه الطرق التي تم نشرها عن طريق تعديل قناع الشوائب للشريحة، والذي سيكون غير قابل للكشف عن الهندسة العكسية البصرية. [33] على سبيل المثال، لتوليد الأرقام العشوائية في لينكس، يُنظر إلى استخدام أجهزة توليد الأرقام العشوائية RDRAND من إنتل دون خلط مخرجات RDRAND مع مصادر أخرى للإنتروبيا لمواجهة أي أبواب خلفية في أجهزة توليد الأرقام العشوائية، خاصة بعد الكشف عن برنامج NSA Bullrun. [34] [35]
في عام 2010، تم تزوير سحب اليانصيب الأمريكي من قبل مدير أمن المعلومات في رابطة اليانصيب متعددة الولايات (MUSL)، الذي قام بتثبيت برامج ضارة خفية على جهاز الكمبيوتر RNG الآمن الخاص بـ MUSL أثناء الصيانة الروتينية. [36] خلال عمليات الاختراق، فاز الرجل بمبلغ إجمالي قدره 16.500.000 دولار على مدار عدة سنوات.
انظر أيضا
- فليبسم
- عصبة الانتروبيا
- قائمة مولدات الأرقام العشوائية
- PP (التعقيد)
- التوليد الإجرائي
- خوارزمية عشوائية
- مولد كلمة مرور عشوائي
- متغير عشوائي يحتوي على قيمة تعتمد على الصدفة
مراجع
- ^ لوغرين، توماس (2023)، مولدر، فالنتين؛ ميرمو، آلان؛ لندرس، فينسينت؛ تيلينباخ، بيرنهارد (المحررون)، "مولد الأرقام العشوائية"، الاتجاهات في حماية البيانات وتقنيات التشفير ، شام: سبرينغر نيتشر سويسرا، ص. 31-34، doi : 10.1007/978-3-031-33386-6_7 ، ISBN 978-3-031-33386-6
- ^ – دليل مبرمج لينكس – ملفات خاصة
- ^ – دليل وظائف مكتبة OpenBSD
- ^ هيريرو كولانتس ، ميغيل. غارسيا اسكارتين، خوان كارلوس (2016). “مولدات الأرقام العشوائية الكمومية”. مراجعات للفيزياء الحديثة . 89 : 015004. أرخايف : 1604.03304 . دوى :10.1103/RevModPhys.89.015004. S2CID 118592321.
- ^ جاكاك، مارسين م. جوزوياك، بيوتر؛ نيمشوك، جاكوب؛ جاكاك، يانوش إي. (2021). “المولدات الكمومية للأرقام العشوائية”. التقارير العلمية . 11 (1): 16108. دوى : 10.1038 / s41598-021-95388-7 . بمك 8352985 . بميد 34373502.
- ^ لي، بو؛ وانغ، يون كاي؛ تشانغ، جيان تشونج (2010-09-13). "مولد الأرقام العشوائية السريع البصري بالكامل". Optics Express . 18 (19): 20360–20369. Bibcode :2010OExpr..1820360L. doi : 10.1364/OE.18.020360 . ISSN 1094-4087. PMID 20940928.
- ^ لي، بو؛ صن، يوان يوان؛ ليو، شيانغ ليان؛ يي، شياو قانغ؛ تشانغ، جيانجو؛ قوه شياومين. قوه، يانكيانغ؛ وانغ ، يونكاي (2016/07/15). “مولد البتات العشوائية المادية القائم على الضوئيات بالكامل”. رسائل البصريات . 41 (14): 3347-3350. بيب كود :2016OptL...41.3347L. دوى :10.1364/OL.41.003347. ISSN 1539-4794. بميد 27420532. S2CID 2909061.
- ^ وانج، أنبانج؛ لي، بو؛ تشانغ، جيانجو؛ تشانغ، جيانزونغ؛ لي، لي؛ وانج، يونكاي (2013-08-26). "مولد بت عشوائي فعلي عالي السرعة في الوقت الحقيقي بسرعة 4.5 جيجابت في الثانية". Optics Express . 21 (17): 20452–20462. Bibcode :2013OExpr..2120452W. doi : 10.1364/OE.21.020452 . ISSN 1094-4087. PMID 24105589. S2CID 10397141.
- ^ Walker, John. "HotBits: Genuine Random Numbers" . تم الاسترجاع في 2009-06-27 .
- ^ Halprin, Ran; Naor, Moni . "Games for Extracting Randomness" (PDF) . معهد وايزمان للعلوم . مؤرشف من الأصل (PDF) في 2011-08-07 . تم الاسترجاع في 2009-06-27 .
- ^ مؤسسة TrueCrypt. "TrueCrypt Beginner's Tutorial, Part 3" . تم الاسترجاع في 2009-06-27 .
- ^ "RANDOM.ORG – خدمة الأرقام العشوائية الحقيقية". www.random.org . تم الاسترجاع في 2016-01-14 .
- ^ "مولدات الأرقام العشوائية الزائفة عالية الأبعاد" . تم الاسترجاع في 2018-11-21 .
- ^ Widynski, Bernard (19 May 2020). "Middle-Square Weyl Sequence RNG". arXiv : 1704.00358 [cs.CR].
- ^ ماتسوموتو، م.؛ نيشيمورا، ت. (1998). "MersenneTwister: مولد أرقام عشوائية زائفة موحد موزع بالتساوي في 623 بعدًا". معاملات ACM للنمذجة والمحاكاة الحاسوبية . 8 (1): 3-30. CiteSeerX 10.1.1.215.1141 . doi :10.1145/272991.272995. S2CID 3332028.
- ^ واجينار (1972). “توليد تسلسلات عشوائية بواسطة موضوعات بشرية: دراسة نقدية للأدبيات”. النشرة النفسية . 77 (1): 65-72. سيتيسيركس 10.1.1.211.9085 . دوى :10.1037/h0032060.
- ^ واجينار (1972). “توليد تسلسلات عشوائية بواسطة موضوعات بشرية: دراسة نقدية للأدبيات”. النشرة النفسية . 77 (1): 65-72. سيتيسيركس 10.1.1.211.9085 . دوى :10.1037/h0032060.
- ^ Dömstedt, B. (2009). "مولد الأرقام العشوائية الحقيقي TRNG9803". الشركة المصنعة: www.TRNG98.se.
- ^ وانج، يونج (2014). "الخصائص الإحصائية للتسلسلات العشوائية الزائفة والتجارب مع PHP وDebian OpenSSL". أمان الكمبيوتر - ESORICS 2014. مذكرات محاضرات في علوم الكمبيوتر. المجلد 8712. هايدلبرج: Springer LNCS. ص 454-471. doi :10.1007/978-3-319-11203-9_26. ISBN 978-3-319-11202-2.
- ^ لي، بو؛ يي، شياوغانغ؛ ليو، شيانغليان؛ وانغ، يونكاي؛ وانغ، يونغجي (2016-07-11). "خصائص الحركة البراونية لمولدات البتات العشوائية الضوئية الإلكترونية القائمة على فوضى الليزر". Optics Express . 24 (14): 15822–15833. Bibcode :2016OExpr..2415822L. doi : 10.1364/OE.24.015822 . ISSN 1094-4087. PMID 27410852.
- ^ Goualard, F. (2020). "Generating Random Floating-Point Numbers by Dividing Integers: A Case Study". Computational Science – ICCS 2020. ICCS. Lecture Notes in Computer Science. المجلد 12138. ص 15-28. doi : 10.1007/978-3-030-50417-5_2 . ISBN 978-3-030-50416-8. S2CID 219889587.
- ^ كامبل، تايلور ر. (2014). "الأعداد العائمة العشوائية المنتظمة: كيفية توليد رقم فاصل عائم بدقة مزدوجة في [0، 1] بشكل عشوائي موحد مع الأخذ في الاعتبار مصدر عشوائي موحد للبتات" . تم الاسترجاع في 4 سبتمبر 2021 .
- ^ "مواصفات جديدة لـ std::generate_canonical". www.open-std.org .
- ^ Goualard, Frédéric (يوليو 2021). "رسم أرقام عشوائية ذات فاصلة عائمة من فاصل". HAL . تم الاسترجاع في 4 سبتمبر 2021 .
- ^ NevinBR. "[stdlib] تحسينات الأرقام العشوائية ذات الفاصلة العائمة بواسطة NevinBR · طلب سحب #33560 · apple/swift". GitHub .
- ^ Lemire, Daniel (23 فبراير 2019). "Fast Random Integer Generation in an Interval". ACM Transactions on Modeling and Computer Simulation . 29 (1): 1–12. arXiv : 1805.10941 . doi :10.1145/3230636. S2CID 44061046.
- ^ "خوارزمية مثالية للأعداد الصحيحة العشوائية المحدودة بواسطة stephentyrone · طلب سحب #39143 · apple/swift". GitHub .
- ^ The MathWorks. "Common generation methods" . تم الاسترجاع في 2024-09-08 .
- ^ مجموعة الخوارزميات العددية. "G05 – مولدات الأرقام العشوائية" (PDF) . دليل مكتبة NAG، مرقس 23. تم الاسترجاع في 2012-02-09 .
- ^ ماثيو جرين (2013-09-18). "العيوب العديدة في Dual_EC_DRBG".
- ^ ماثيو جرين (2013-09-20). "RSA تحذر المطورين من استخدام منتجات RSA".
- ^ "لا نقوم بتمكين الأبواب الخلفية في منتجاتنا المشفرة، RSA تخبر العملاء". Ars Technica . 2013-09-20.
- ^ "باحثون يتمكنون من إدخال فيروس حصان طروادة غير قابل للكشف إلى معالجات Ivy Bridge من إنتاج شركة Intel". Ars Technica . 18 سبتمبر 2013.
- ^ ثيودور تسو. "أنا سعيد للغاية لأنني قاومت ضغوط مهندسي إنتل للسماح لـ /dev/random بالاعتماد فقط على تعليمات RDRAND". Google Plus.
- ^ ثيودور تسو. "رد: [تصحيح] /dev/random: عدم كفاية الإنتروبيا في العديد من المعماريات". LWN.
- ^ Nestel, ML (7 يوليو 2015). "Inside the Biggest Lottery Scam Ever". The Daily Beast . تم الاسترجاع في 10 يوليو 2015 .
قراءة إضافية
- دونالد كنوث (1997). "الفصل 3 - الأعداد العشوائية". فن برمجة الكمبيوتر . المجلد 2: الخوارزميات شبه الرقمية (الطبعة الثالثة).
- L'Ecuyer, Pierre (2017). "History of Uniform Random Number Generation" (PDF) . وقائع مؤتمر المحاكاة الشتوي لعام 2017. مطبعة معهد مهندسي الكهرباء والإلكترونيات. ص 202-230.
- L'Ecuyer, Pierre (2012). "Random Number Generation" (PDF) . في JE Gentle؛ W. Haerdle؛ Y. Mori (المحررون). Handbook of Computational Statistics: Concepts and Methods . Handbook of Computational Statistics (الطبعة الثانية). Springer-Verlag. ص. 35–71. doi :10.1007/978-3-642-21551-3_3. hdl : 10419/22195 . ISBN 978-3-642-21550-6.
- كروس، دي بي ؛ تايمري، تي؛ بوتيف، زي (2011). "الفصل الأول - توليد الأرقام العشوائية المنتظمة". دليل طرق مونت كارلو . نيويورك: جون وايلي وأولاده. ص. 772. رقم ISBN 978-0-470-17793-8.
- Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). "الفصل 7. الأعداد العشوائية". وصفات عددية: فن الحوسبة العلمية (الطبعة الثالثة). نيويورك: مطبعة جامعة كامبريدج. ISBN 978-0-521-88068-8.
- سلسلة NIST SP800-90A وB وC حول توليد الأرقام العشوائية
- م. توماسيني؛ م. سيبر؛ م. بيرينود (أكتوبر 2000). "حول توليد أرقام عشوائية عالية الجودة بواسطة أتمتة خلوية ثنائية الأبعاد". معاملات معهد مهندسي الكهرباء والإلكترونيات على أجهزة الكمبيوتر . 49 (10): 1146-1151. doi :10.1109/12.888056. S2CID 10139169.
روابط خارجية
- خدمة الأرقام العشوائية الحقيقية RANDOM.ORG
- مولد الأرقام العشوائية الكمومية في الجامعة الوطنية الأسترالية
- العشوائية والزائفة في برنامج In Our Time على قناة BBC
- jRand إطار عمل قائم على Java لتوليد تسلسلات المحاكاة، بما في ذلك تسلسلات شبه عشوائية من الأرقام
- مولدات الأرقام العشوائية في مكتبة NAG Fortran
- منارة عشوائية في المعهد الوطني للمعايير والتكنولوجيا ، تبث سلاسل بتات كاملة الإنتروبيا في كتل من 512 بت كل 60 ثانية. مصممة لتوفير عدم القدرة على التنبؤ والاستقلالية والاتساق.
- نداء نظام للأرقام العشوائية: getrandom()، مقالة في LWN.net تصف نداء نظام Linux مخصصًا
- الخصائص الإحصائية للتسلسلات العشوائية الزائفة والتجارب باستخدام PHP وDebian OpenSSL
- مولد تسلسل عشوائي يعتمد على ضوضاء الانهيار
