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