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