سؤال

آسف لأن هذا ليس سؤالًا "حقيقيًا"، ولكن في وقت ما أتذكر أنني رأيت منشورًا هنا حول توزيع أداة التوزيع بشكل عشوائي لإنشاء أرقام عشوائية حقيقية، وليس مجرد أرقام عشوائية زائفة.لا أراها إذا بحثت عنها.

هل يعرف أحد عن تلك المقالة؟

هل كانت مفيدة؟

المحلول

أعتقد أن ذلك كان قيد التشغيل thedailywtf.com - أي.ليس شيئًا تريد القيام به.

ليس من الممكن الحصول على رقم عشوائي حقيقي من أرقام عشوائية زائفة، بغض النظر عن عدد المرات التي تتصل فيها بـ Randomize().

أنت يستطيع الحصول على أرقام عشوائية "حقيقية" من Special المعدات.يمكنك أيضًا جمع الإنتروبيا من حركات الماوس وأشياء من هذا القبيل.

نصائح أخرى

يجب أن أختلف مع الكثير من الإجابات على هذا السؤال.

من الممكن جمع بيانات عشوائية على جهاز الكمبيوتر.لن تكون SSL وSSH وVPN آمنة إذا لم تتمكن من ذلك.

الطريقة التي يعمل بها برنامج مولد الأرقام العشوائية هي حمام سباحة من البيانات العشوائية التي يتم جمعها من العديد من الأماكن المختلفة، مثل انحراف الساعة، وتوقيت المقاطعة، وما إلى ذلك.

الحيلة في هذه المخططات هي في التقدير الصحيح لل إنتروبيا (الاسم الفاخر للعشوائية).لا يهم ما إذا كان المصدر متحيزًا، طالما أنك تقدر الإنتروبيا بشكل صحيح.

لتوضيح ذلك، فرصة أن أضرب الرسالة ه في هذا التعليق أعلى بكثير من ذلك ض ، لذلك إذا كنت سأستخدم المقاطعات الرئيسية كمصدر للإنتروبيا فسيكون ذلك بمثابة تحيز - ولكن لا يزال هناك بعض العشوائية في هذا الإدخال.لا يمكنك التنبؤ بالضبط بتسلسل الحروف الذي سيأتي بعد ذلك في هذه الفقرة.يمكنك استخراج الإنتروبيا من حالة عدم اليقين هذه واستخدامها كجزء من بايت عشوائي.

مولدات عشوائية حقيقية ذات نوعية جيدة مثل يارو تمتلك تقديرًا متطورًا للغاية للإنتروبيا مدمجًا فيها ولن ينبعث منها إلا أكبر عدد ممكن من البايتات التي يمكن أن تقول بشكل موثوق أنها موجودة في "مجموعة العشوائية" الخاصة بها.

في نهاية المنشور، سأجيب على سؤالك حول سبب رغبتك في استخدام مولدات أرقام عشوائية متعددة من أجل "مزيد من العشوائية".

هناك مناقشات فلسفية حول معنى العشوائية.هنا، سأعني "لا يمكن تمييزه من جميع النواحي عن التوزيع الموحد (0،1) iid على العينات المسحوبة" إنني أتجاهل تمامًا الأسئلة الفلسفية حول ماهية العشوائية.

يحتوي المجلد الثاني من Knuth على تحليل حيث يحاول إنشاء منشئ أرقام عشوائية كما تقترح، ثم يقوم بتحليل سبب فشله، وما هي العمليات العشوائية الحقيقية.يفحص المجلد الثاني RNGs بالتفصيل.

يوصي الآخرون باستخدام العمليات الفيزيائية العشوائية لإنشاء أرقام عشوائية.ومع ذلك، كما يمكننا أن نرى في تفاعل Espo/vt، يمكن أن تحتوي هذه العمليات على عناصر دورية دقيقة وعناصر أخرى غير عشوائية، ويرجع ذلك جزئيًا إلى عوامل خارجية ذات سلوك حتمي.بشكل عام، من الأفضل عدم افتراض العشوائية أبدًا، ولكن دائمًا اختبارها، ويمكنك عادةً تصحيح مثل هذه القطع الأثرية إذا كنت على علم بها.

من الممكن إنشاء دفق "لا نهائي" من البتات التي تبدو عشوائية تمامًا وحتمية.ولسوء الحظ، فإن مثل هذه الأساليب تنمو في الذاكرة مع عدد البتات المطلوبة (كما ينبغي، لتجنب تكرار الدورات)، لذا فإن نطاقها محدود.

من الناحية العملية، من الأفضل دائمًا استخدام مولد أرقام عشوائي زائف ذي خصائص معروفة.الأرقام الأساسية التي يجب البحث عنها هي بعد مساحة الطور (الذي يتم إزاحته تقريبًا بين العينات التي لا يزال بإمكانك الاعتماد على توزيعها بشكل موحد) وعرض البت (عدد البتات في كل عينة والتي تكون عشوائية بشكل موحد فيما يتعلق ببعضها البعض )، وحجم الدورة (عدد العينات التي يمكنك أخذها قبل بدء التوزيع بالتكرار).

ومع ذلك، نظرًا لأن الأرقام العشوائية من مولد معين موجودة بشكل حتمي في تسلسل معروف، فقد يتم كشف الإجراء الخاص بك بواسطة شخص يبحث في المولد ويجد تسلسل محاذاة.لذلك، يمكنك على الأرجح تجنب التعرف على التوزيع الخاص بك على الفور على أنه قادم من مولد أرقام عشوائي معين إذا كنت تحتفظ بمولدين.من الأول، تقوم بأخذ عينة من i، ثم تقوم بتعيين هذا بشكل موحد عبر واحد إلى n، حيث n هو على الأكثر بُعد الطور.ثم، في الثانية، تقوم بأخذ عينات من i مرات، وتعيد النتيجة رقم i.سيؤدي هذا إلى تقليل حجم دورتك إلى (حجم الدورة الأصلية/n) في أسوأ الحالات، ولكن بالنسبة لهذه الدورة ستظل تولد أرقامًا عشوائية موحدة، ويتم ذلك بطريقة تجعل البحث عن المحاذاة أسيًا في n.كما أنه سوف يقلل من طول المرحلة المستقلة.لا تستخدم هذه الطريقة إلا إذا فهمت ما تعنيه الدورة المنخفضة وأطوال الطور المستقلة لتطبيقك.

لا يمكن أن توجد خوارزمية للأرقام العشوائية حقًا مثل تعريف من الأرقام العشوائية هي:

وجود نتائج غير متوقعة ، وفي الحالة المثالية ، كل النتائج محتملة على قدم المساواة ؛الناتج عن هذا الاختيار ؛تفتقر إلى الارتباط الإحصائي.

هناك مولدات أرقام عشوائية زائفة أفضل أو أسوأ (PRNGs)، أي.تسلسلات من الأرقام يمكن التنبؤ بها تمامًا ويصعب التنبؤ بها دون معرفة جزء من المعلومات، تسمى بذرة.

الآن، PRNGs التي من الصعب للغاية استنتاج البذور لها آمنة تشفيريا.قد ترغب في البحث عنها في Google إذا كان هذا هو ما تبحث عنه.

هناك طريقة أخرى (سواء كان هذا عشوائيًا حقًا أم لا، فهذا سؤال فلسفي) وهي استخدام مصادر عشوائية للبيانات.على سبيل المثال، الكميات الفيزيائية التي لا يمكن التنبؤ بها، مثل الضوضاء، أو قياس الانحلال الإشعاعي.

لا تزال هذه عرضة للهجمات لأنه يمكن قياسها بشكل مستقل، ولها تحيزات، وما إلى ذلك.لذا فالأمر صعب حقًا.ويتم ذلك باستخدام أجهزة مخصصة، والتي عادةً ما تكون باهظة الثمن.ليس لدي أي فكرة عن مدى جيدة /dev/random نعم، لكنني أراهن أنها ليست جيدة بما يكفي للتشفير (معظم برامج التشفير تأتي مع RNG الخاصة بها، ويبحث Linux أيضًا عن RNG للأجهزة عند بدء التشغيل).

بحسب ويكيبيديا /dev/random, ، في أنظمة التشغيل المشابهة لـ Unix، هو ملف خاص يعمل كمولد أرقام عشوائية حقيقية.

يقوم برنامج التشغيل /dev/random بتجميع الضوضاء البيئية من مصادر غير حتمية مختلفة بما في ذلك، على سبيل المثال لا الحصر، التوقيتات بين لوحة المفاتيح وتوقيت المقاطعات التي تحدث داخل بيئة نظام التشغيل.يتم أخذ عينات من بيانات الضوضاء ودمجها مع وظيفة خلط تشبه CRC في "تجمع الإنتروبيا" الذي يتم تحديثه باستمرار.يتم الحصول على سلاسل البت العشوائية عن طريق أخذ تجزئة MD5 لمحتويات هذا التجمع.تقوم وظيفة التجزئة أحادية الاتجاه بتقطير البتات العشوائية الحقيقية من بيانات المجمع وتخفي حالة المجمع من الخصوم.

يحتفظ روتين /dev/random بتقدير للعشوائية الحقيقية في التجمع ويقلله في كل مرة يتم فيها طلب سلاسل عشوائية للاستخدام.عندما ينخفض ​​التقدير إلى الصفر، يتم قفل الروتين وينتظر حدوث أحداث غير حتمية لتحديث التجمع.

توفر وحدة kernel /dev/random أيضًا واجهة أخرى، /dev/urandom، والتي لا تنتظر إعادة شحن مجمع الإنتروبيا وتعيد العديد من البايتات المطلوبة.ونتيجة لذلك، يكون /dev/urandom أسرع بكثير عند الإنشاء مقارنةً بـ /dev/random الذي يُستخدم فقط عند الرغبة في عشوائية عالية الجودة.

قال جون فون نيومان ذات مرة شيئًا مفاده أن "أي شخص يحاول توليد أرقام عشوائية عبر وسائل خوارزمية هو بالطبع يعيش في الخطيئة".

حتى /dev/random ليس عشوائيًا، بالمعنى الذي يعنيه عالم الرياضيات أو الفيزيائي.ولا حتى قياس اضمحلال النظائر المشعة يكون عشوائيًا.(معدل الاضمحلال هو.القياس ليس كذلك.تتمتع عدادات جايجر بفترة زمنية قصيرة لإعادة التعيين بعد كل حدث تم اكتشافه، وخلال هذه الفترة لا تتمكن من اكتشاف أحداث جديدة.وهذا يؤدي إلى تحيزات خفية.هناك طرق للتخفيف من هذه المشكلة بشكل كبير، ولكن ليس القضاء عليها بالكامل.)

توقف عن البحث عن العشوائية الحقيقية.إن مولد الأرقام العشوائية الزائفة الجيد هو ما تبحث عنه حقًا.

إذا كنت تؤمن بالكون الحتمي، فالعشوائية الحقيقية غير موجودة.:-) على سبيل المثال، اقترح أحدهم أن الاضمحلال الإشعاعي هو حقا عشوائي، لكن IMHO، لمجرد أن العلماء لم يتوصلوا بعد إلى النمط، لا يعني أنه لا يوجد نمط يمكن اكتشافه.عادةً، عندما تريد أرقامًا "عشوائية"، فإن ما تحتاجه هو أرقام للتشفير لن يتمكن أي شخص آخر من تخمينها.

أقرب ما يمكنك الوصول إليه بشكل عشوائي هو قياس شيء طبيعي لا يستطيع أي عدو قياسه.عادةً ما تتخلص من البتات الأكثر أهمية من القياس الخاص بك، مما يؤدي إلى احتمال توزيع الأرقام بشكل متساوٍ.يحصل مستخدمو الأرقام العشوائية الأساسية على أجهزة خاصة تقيس الأحداث الإشعاعية، لكن يمكنك الحصول على بعض العشوائية من الإنسان باستخدام الكمبيوتر من أشياء مثل فترات الضغط على المفاتيح وحركات الماوس، وإذا لم يكن لدى الكمبيوتر مستخدمين مباشرين، من مستشعرات درجة حرارة وحدة المعالجة المركزية، ومن حركة مرور الشبكة.يمكنك أيضًا استخدام أشياء مثل كاميرات الويب والميكروفونات المتصلة ببطاقات الصوت، لكنني لا أعرف إذا كان أي شخص يفعل ذلك.

لتلخيص بعض ما قيل، فإن تعريفنا العملي لماهية المصدر الآمن للعشوائية يشبه تعريفنا للتأمين المشفر:يبدو الأمر عشوائيًا إذا نظر إليه الأشخاص الأذكياء ولم يتمكنوا من إظهار أنه لا يمكن التنبؤ به تمامًا.

هنالك لا نظام لتوليد أرقام عشوائية لا يمكن التنبؤ بها، تمامًا كما لا يوجد تشفير مشفر لا يمكن فكه.إن الحلول الموثوقة المستخدمة في الأعمال المهمة هي مجرد تلك التي ثبت أنه من الصعب هزيمتها حتى الآن.إذا أخبرك أي شخص بخلاف ذلك، فهو يبيع لك شيئًا ما.

نادراً ما تتم مكافأة البراعة في التشفير.اذهب مع الحلول المجربة والحقيقية.

عادةً ما يحتوي الكمبيوتر على العديد من المصادر المادية المتاحة بسهولة للضوضاء العشوائية:

  • الميكروفون (نأمل أن يكون في مكان صاخب)
  • فيديو مضغوط من كاميرا ويب (يُشير إلى شيء متغير، مثل مصباح الحمم البركانية أو الشارع)
  • توقيت لوحة المفاتيح والماوس
  • محتوى حزمة الشبكة وتوقيتها (يساهم العالم كله)

وأحيانا

  • الأجهزة القائمة على الانجراف على مدار الساعة
  • عدادات جيجر وغيرها من أجهزة الكشف عن الأحداث النادرة
  • جميع أنواع الحساسات الملحقة بمحولات A/D

والأمر الصعب هو تقدير إنتروبيا هذه المصادر، والتي تكون في معظم الحالات منخفضة على الرغم من معدلات البيانات العالية والمتغيرة للغاية؛لكن يمكن تقدير الإنتروبيا بافتراضات متحفظة، أو على الأقل عدم إهدارها، لتغذية أنظمة مثل يارو أو فورتونا.

ليس من الممكن الحصول على أرقام عشوائية "حقيقية"، فالكمبيوتر عبارة عن بناء منطقي لا يمكنه إنشاء أي شيء عشوائي "حقيقي"، فقط عشوائي زائف.ومع ذلك، هناك خوارزميات عشوائية زائفة أفضل وأسوأ.

من أجل الحصول على رقم عشوائي "حقيقي"، تحتاج إلى مصدر عشوائي فعلي، وبعض آلات القمار تحتوي بالفعل على هذه المصادر - غالبًا ما يكون مصدرًا مشعًا، والتحلل الإشعاعي (والذي على حد علمي هو حقا عشوائي) يستخدم لتوليد الأرقام.

واحدة من أفضل الطرق لتوليد رقم عشوائي هي من خلال الانجراف على مدار الساعة.يعمل هذا في المقام الأول مع اثنين من المذبذبات.

تشبيه لكيفية عمل ذلك هو تخيل سيارة سباق على حلبة بيضاوية بسيطة مع خط في بداية اللفة وأيضًا خط في أحد الإطارات.عندما تكمل السيارة دورة، سيتم إنشاء رقم بناءً على الفرق بين موضع الخط الأبيض على الطريق وعلى الإطار.

من السهل جدًا توليدها ومن المستحيل التنبؤ بها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top