कंप्यूटर कुछ बाहरी डेटा, जैसे माउस मूवमेंट्स या प्रशंसक शोर, जो अनुमानित नहीं है, और इससे डेटा बनाकर वास्तव में यादृच्छिक संख्या उत्पन्न कर सकते हैं। इसे एन्ट्रॉपी के रूप में जाना जाता है। अन्य बार, वे एक एल्गोरिदम का उपयोग करके "छद्म यादृच्छिक" संख्या उत्पन्न करते हैं, इसलिए परिणाम यादृच्छिक दिखाई देते हैं, भले ही वे नहीं हैं।
यह विषय हाल ही में और अधिक विवादास्पद हो गया है, कई लोगों ने सवाल किया है कि इंटेल के अंतर्निहित हार्डवेयर यादृच्छिक संख्या जनरेटर चिप भरोसेमंद है या नहीं। यह समझने के लिए कि यह भरोसेमंद क्यों नहीं हो सकता है, आपको समझना होगा कि यादृच्छिक संख्याओं को पहले स्थान पर कैसे बनाया जाता है, और उनके लिए क्या उपयोग किया जाता है।
क्या यादृच्छिक संख्या के लिए उपयोग किया जाता है
कई हजारों वर्षों के लिए यादृच्छिक संख्या का उपयोग किया गया है। चाहे वह एक सिक्का फिसल रहा हो या पासा रोल कर रहा हो, लक्ष्य अंतिम परिणाम को यादृच्छिक मौका तक छोड़ना है। कंप्यूटर में यादृच्छिक संख्या जनरेटर समान हैं - वे एक अप्रत्याशित, यादृच्छिक परिणाम प्राप्त करने का प्रयास कर रहे हैं।
यादृच्छिक संख्या जनरेटर कई अलग-अलग उद्देश्यों के लिए उपयोगी हैं। जुआ के प्रयोजनों के लिए यादृच्छिक संख्याएं उत्पन्न करने या कंप्यूटर गेम में अप्रत्याशित परिणाम बनाने जैसे स्पष्ट अनुप्रयोगों के अलावा, क्रिप्टोग्राफी के लिए यादृच्छिकता महत्वपूर्ण है।
क्रिप्टोग्राफी को उन संख्याओं की आवश्यकता होती है जो हमलावर अनुमान नहीं लगा सकते हैं। हम केवल उसी संख्या का उपयोग नहीं कर सकते हैं। हम इन संख्याओं को एक बहुत ही अप्रत्याशित तरीके से उत्पन्न करना चाहते हैं ताकि हमलावर उन्हें अनुमान न लगा सकें। ये यादृच्छिक संख्या सुरक्षित एन्क्रिप्शन के लिए आवश्यक हैं, भले ही आप अपनी फाइलें एन्क्रिप्ट कर रहे हों या इंटरनेट पर एक HTTPS वेबसाइट का उपयोग कर रहे हों।
सही यादृच्छिक संख्या
आप सोच रहे होंगे कि कंप्यूटर वास्तव में यादृच्छिक संख्या कैसे उत्पन्न कर सकता है। यह "यादृच्छिकता" कहां से आती है। यदि यह सिर्फ कंप्यूटर कोड का एक टुकड़ा है, तो क्या यह संभव नहीं है कि कंप्यूटर उत्पन्न करने वाली संख्या अनुमानित हो सके?
हम आमतौर पर यादृच्छिक संख्या कंप्यूटर को दो प्रकार में उत्पन्न करते हैं, इस पर निर्भर करते हैं कि वे कैसे उत्पन्न होते हैं: "सत्य" यादृच्छिक संख्याएं और छद्म-यादृच्छिक संख्याएं।
"सत्य" यादृच्छिक संख्या उत्पन्न करने के लिए, कंप्यूटर कुछ प्रकार की भौतिक घटनाओं को मापता है जो कंप्यूटर के बाहर होता है। उदाहरण के लिए, कंप्यूटर परमाणु के रेडियोधर्मी क्षय को माप सकता है। क्वांटम सिद्धांत के मुताबिक, यह सुनिश्चित करने का कोई तरीका नहीं है कि रेडियोधर्मी क्षय कब होगा, इसलिए यह ब्रह्मांड से अनिवार्य रूप से "शुद्ध यादृच्छिकता" है। एक हमलावर भविष्यवाणी करने में सक्षम नहीं होगा कि रेडियोधर्मी क्षय कब होगा, इसलिए वे यादृच्छिक मूल्य नहीं जान पाएंगे।
दिन-प्रतिदिन के उदाहरण के लिए, कंप्यूटर वायुमंडलीय शोर पर भरोसा कर सकता है या अप्रत्याशित डेटा, या एन्ट्रॉपी के स्रोत के रूप में बस अपने कीबोर्ड पर कुंजी दबाए जाने के सटीक समय का उपयोग कर सकता है। उदाहरण के लिए, आपका कंप्यूटर नोटिस कर सकता है कि आपने 2 बजे के बाद बिल्कुल 0.23423523 सेकेंड पर एक कुंजी दबाई है। इन महत्वपूर्ण प्रेस से जुड़े विशिष्ट समयों को पर्याप्त पकड़ें और आपके पास एंट्रॉपी का एक स्रोत होगा जिसका उपयोग आप "सत्य" यादृच्छिक उत्पन्न करने के लिए कर सकते हैं नंबर। आप एक अनुमानित मशीन नहीं हैं, इसलिए जब आप इन चाबियाँ दबाते हैं तो हमलावर सटीक पल का अनुमान नहीं लगा सकता है। लिनक्स पर / dev / random डिवाइस, जो यादृच्छिक संख्या उत्पन्न करता है, "ब्लॉक" करता है और जब तक यह वास्तव में यादृच्छिक संख्या वापस करने के लिए पर्याप्त एन्ट्रॉपी एकत्र नहीं करता तब तक परिणाम नहीं देता है।
छद्म यादृच्छिक संख्या
छद्म यादृच्छिक संख्या "सत्य" यादृच्छिक संख्याओं का एक विकल्प है। एक कंप्यूटर यादृच्छिक प्रतीत होने वाली संख्या उत्पन्न करने के लिए बीज मान और एल्गोरिदम का उपयोग कर सकता है, लेकिन वास्तव में अनुमानित है। कंप्यूटर पर्यावरण से कोई यादृच्छिक डेटा इकट्ठा नहीं करता है।
यह हर स्थिति में एक बुरी चीज नहीं है। उदाहरण के लिए, यदि आप एक वीडियो गेम खेल रहे हैं, तो इससे कोई फर्क नहीं पड़ता कि उस गेम में होने वाली घटनाओं को "सत्य" यादृच्छिक संख्या या छद्म यादृच्छिक संख्याओं द्वारा नियंत्रित किया जाता है या नहीं। दूसरी तरफ, यदि आप एन्क्रिप्शन का उपयोग कर रहे हैं, तो आप छद्म यादृच्छिक संख्याओं का उपयोग नहीं करना चाहते हैं जो हमलावर अनुमान लगा सकते हैं।
उदाहरण के लिए, मान लीजिए कि एक हमलावर एल्गोरिदम और बीज को एक छद्म यादृच्छिक संख्या जनरेटर का उपयोग करता है। और मान लीजिए कि एन्क्रिप्शन एल्गोरिदम को इस एल्गोरिदम से छद्म यादृच्छिक संख्या मिलती है और बिना किसी अतिरिक्त यादृच्छिकता को जोड़ने के लिए एन्क्रिप्शन कुंजी उत्पन्न करने के लिए इसका उपयोग किया जाता है। यदि कोई हमलावर पर्याप्त जानता है, तो वे पीछे की ओर काम कर सकते हैं और उस मामले में एन्क्रिप्शन एल्गोरिदम को चुने गए छद्म यादृच्छिक संख्या को निर्धारित कर सकते हैं, एन्क्रिप्शन तोड़ना।
एनएसए और इंटेल के हार्डवेयर रैंडम नंबर जनरेटर
डेवलपर्स के लिए चीजों को आसान बनाने और सुरक्षित यादृच्छिक संख्याएं उत्पन्न करने में मदद करने के लिए, इंटेल चिप्स में हार्डवेयर-आधारित यादृच्छिक संख्या जेनरेटर शामिल होता है जिसे आरडीआरएंड कहा जाता है। यह चिप प्रोसेसर पर एंट्रॉपी स्रोत का उपयोग करता है और सॉफ्टवेयर अनुरोध करते समय सॉफ़्टवेयर को यादृच्छिक संख्या प्रदान करता है।
यहां समस्या यह है कि यादृच्छिक संख्या जनरेटर अनिवार्य रूप से एक काला बॉक्स है और हम नहीं जानते कि इसके अंदर क्या हो रहा है।यदि आरडीआरएंड में एनएसए बैकडोर शामिल है, तो सरकार उस यादृच्छिक संख्या जेनरेटर द्वारा प्रदान किए गए डेटा के साथ उत्पन्न एन्क्रिप्शन कुंजी तोड़ने में सक्षम होगी।
यह एक गंभीर चिंता है। दिसंबर 2013 में, फ्रीबीएसडी के डेवलपर्स ने यादृच्छिकता के स्रोत के रूप में सीधे आरडीआरएंड का उपयोग करने के लिए समर्थन हटा दिया और कहा कि वे इस पर भरोसा नहीं कर सके। [स्रोत] RdRand डिवाइस का आउटपुट एक और एल्गोरिदम में खिलाया जाएगा जो अतिरिक्त एन्ट्रॉपी जोड़ता है, यह सुनिश्चित करता है कि यादृच्छिक संख्या जनरेटर में कोई भी बैकडोर्ड्स कोई फर्क नहीं पड़ता। लिनक्स पहले से ही इस तरह से काम करता है, आरडीआरएंड से आने वाले यादृच्छिक डेटा को और यादृच्छिक बनाता है ताकि यह पीछे की ओर न होने पर भी पूर्वानुमानित न हो। [स्रोत] रेडडिट पर हाल ही में एएमए ("मुझसे कुछ पूछो") में, इंटेल के सीईओ ब्रायन क्रज़ानिच ने इन चिंताओं के बारे में सवालों का जवाब नहीं दिया। [स्रोत]
बेशक, यह इंटेल चिप्स के साथ सिर्फ एक समस्या नहीं है। फ्रीबीएसडी के डेवलपर्स ने भी नाम से वाया चिप्स को बुलाया। यह विवाद दिखाता है कि यादृच्छिक संख्याएं क्यों उत्पन्न होती हैं जो वास्तव में यादृच्छिक हैं और अनुमानित नहीं हैं, यह बहुत महत्वपूर्ण है।
"सच्चे" यादृच्छिक संख्याएं उत्पन्न करने के लिए, यादृच्छिक संख्या जनरेटर उनके चारों ओर भौतिक दुनिया से "एन्ट्रॉपी" या प्रतीत होता है यादृच्छिक डेटा इकट्ठा करते हैं। यादृच्छिक संख्याओं के लिए जो नहीं करते हैं वास्तव में यादृच्छिक होने की आवश्यकता है, वे सिर्फ एक एल्गोरिदम और बीज मूल्य का उपयोग कर सकते हैं।