RDRAND
आर. डी. आर. ए. एन. डी. ("रीड रैंडम" के लिए; जिसे इंटेल सिक्योर की टेक्नोलॉजी, कोडनेम बुल माउंटेन के रूप में जाना जाता है) एक इंटेल ऑन-चिप हार्डवेयर रैंडम नंबर जनरेटर से यादृच्छिक संख्याएँ वापस करने के लिए एक निर्देश है जिसे एक ऑन-चिप एन्ट्रापी स्रोत द्वारा बीजित किया गया है। इंटेल ने 2012 के आसपास इस सुविधा को पेश किया, और ए. एम. डी. ने जून 2015 में निर्देश के लिए समर्थन जोड़ा। (आर. डी. आर. ए. एन. डी. आइवी ब्रिज प्रोसेसर में उपलब्ध है और इंटेल 64 और आई. ए.-32 निर्देश सेट आर्किटेक्चर का हिस्सा है।) यादृच्छिक संख्या जनित्र एन. आई. एस. टी. एस. पी. 800-90 ए, एफ. आई. पी. एस. 140-2, और ए. एन. एस. आई. X9.82 जैसे सुरक्षा और क्रिप्टोग्राफिक मानकों के अनुरूप है। इंटेल ने 2012 में यादृच्छिक संख्या जनरेटर की समीक्षा करने के लिए क्रिप्टोग्राफी रिसर्च इंक. से भी अनुरोध किया, जिसके परिणामस्वरूप इंटेल के आइवी ब्रिज डिजिटल यादृच्छिक संख्या जनरेटर का पेपर विश्लेषण हुआ। आर. डी. एस. ई. डी. आर. डी. आर. ए. एन. डी. के समान है और एन्ट्रापी-जनरेटिंग हार्डवेयर तक निचले स्तर की पहुंच प्रदान करता है। आर. डी. एस. ई. ई. डी. जनरेटर और प्रोसेसर निर्देश आर. डी. सी. ई. डी. इंटेल ब्रॉडवेल सी. पी. यू. और ए. एम. डी. ज़ेन सी. पी. यू. के साथ उपलब्ध हैं। सी. पी. यू. आई. डी. निर्देश का उपयोग ए. एम. डी. और इंटेल सी. पी. यू. दोनों पर यह जांचने के लिए किया जा सकता है कि आर. डी. आर. ए. एन. डी. निर्देश समर्थित है या नहीं। यदि ऐसा है, तो ईसीएक्स रजिस्टर का बिट 30 सीपीयूआईडी मानक कार्य को 01एच कहने के बाद सेट किया जाता है। एएमडी प्रोसेसर को उसी परीक्षण का उपयोग करके सुविधा के लिए जांचा जाता है। आर. डी. एस. ई. ई. डी. की उपलब्धता की जाँच इसी तरह इंटेल सी. पी. यू. पर की जा सकती है। यदि आर. डी. एस. ई. ई. डी. समर्थित है, तो ई. बी. एक्स. रजिस्टर का बिट 18 सी. पी. यू. आई. डी. मानक फंक्शन 07एच. को कॉल करने के बाद सेट किया जाता है। आर. डी. आर. ए. एन. डी. के लिए ऑपकोड 0x0F 0xC7 है, जिसके बाद एक मॉड. आर. एम. बाइट है जो गंतव्य रजिस्टर को निर्दिष्ट करता है और वैकल्पिक रूप से 64-बिट मोड में आर. ई. एक्स. उपसर्ग के साथ जोड़ा जाता है। इंटेल सिक्योर की आर. डी. आर. ए. एन. डी. निर्देश और अंतर्निहित यादृच्छिक संख्या जनित्र (आर. एन. जी.) हार्डवेयर कार्यान्वयन दोनों के लिए इंटेल का नाम है, जिसे विकास के दौरान "बुल माउंटेन" कूटनाम दिया गया था। इंटेल उनके आर. एन. जी. को "डिजिटल यादृच्छिक संख्या जनरेटर" या डी. आर. एन. जी. कहता है। जनरेटर हार्डवेयर एन्ट्रापी स्रोत द्वारा उत्पन्न 256-बिट कच्चे एन्ट्रापी नमूनों के जोड़े लेता है और उन्हें एक उन्नत एन्क्रिप्शन मानक (एईएस) (सीबीसी-मैक मोड में) कंडीशनर पर लागू करता है जो उन्हें एकल 256-बिट वातानुकूलित एन्ट्रापी नमूने तक कम कर देता है। एन. आई. एस. टी. एस. पी. 800-90 ए. में परिभाषित सी. टी. आर. डी. आर. बी. जी. नामक एक नियतात्मक यादृच्छिक-बिट जनरेटर को कंडीशनर के आउटपुट द्वारा सीड किया जाता है, जो आर. डी. आर. ए. एन. डी. निर्देश के माध्यम से अनुरोध करने वाले अनुप्रयोगों को क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या प्रदान करता है। बीज मूल्य को बदलने से पहले हार्डवेयर अधिकतम 511 128-बिट नमूने जारी करेगा। आर. डी. एस. ई. डी. ऑपरेशन का उपयोग करके एईएस-सी. बी. सी.-एम. ए. सी. से वातानुकूलित 256-बिट नमूनों तक पहुंच प्रदान की जाती है। आर. डी. एस. ई. ई. डी. निर्देश को इंटेल सिक्योर की में जोड़ा गया था ताकि ब्रॉडवेल सी. पी. यू. में उपलब्ध एक अन्य स्यूडोरैंडम नंबर जनरेटर को जोड़ा जा सके। आर. डी. एस. ई. ई. डी. निर्देश के लिए एन्ट्रापी स्रोत एक स्व-समयबद्ध परिपथ पर अतुल्यकालिक रूप से चलता है और 3 गीगाहर्ट्ज़ की दर से बिट्स की यादृच्छिक धारा का उत्पादन करने के लिए सिलिकॉन के भीतर तापीय शोर का उपयोग करता है, जो आर. डी. आर. ए. एन. डी. से प्राप्त होने वाले प्रभावी 6,4 गीगाबिट/से. से धीमा है (दोनों दरें सभी कोर और धागे के बीच साझा की जाती हैं)। आर. डी. एस. ई. ई. डी. निर्देश मनमाने चौड़ाई के पी. आर. एन. जी. सॉफ्टवेयर को जोड़ने के लिए है, जबकि आर. डी. आर. ए. एन. डी. उन अनुप्रयोगों के लिए है जिनके लिए केवल उच्च गुणवत्ता वाले यादृच्छिक संख्याओं की आवश्यकता होती है। यदि क्रिप्टोग्राफिक सुरक्षा की आवश्यकता नहीं है, तो ज़ोर्शिफ्ट जैसे सॉफ्टवेयर पी. आर. एन. जी. आमतौर पर तेज होता है। एक इंटेल कोर आई 7-7700 के, 4500 मेगाहर्ट्ज (45 × 100 मेगाहर्ट्ज) प्रोसेसर (काबी लेक-एस माइक्रोआर्किटेक्चर) पर प्रदर्शन, एक एकल आर. डी. आर. ए. एन. डी. या आर. डी. एस. ई. डी. निर्देश 110 एनएस, या 463 घड़ी चक्र लेता है, चाहे ऑपरेंड का आकार (16/32/64 बिट्स) कुछ भी हो। घड़ी चक्रों की यह संख्या स्काईलेक या काबी लेक माइक्रोआर्किटेक्चर वाले सभी प्रोसेसरों पर लागू होती है। सिल्वरमॉन्ट माइक्रोआर्किटेक्चर प्रोसेसर पर, प्रत्येक निर्देश लगभग 1472 घड़ी चक्र लेता है, चाहे ऑपरेंड का आकार कुछ भी हो; और आइवी ब्रिज प्रोसेसर पर आर. डी. आर. ए. एन. डी. 117 घड़ी चक्र तक लेता है। एएमडी राइज़न सीपीयू पर, प्रत्येक निर्देश 16-बिट या 32-बिट ऑपरेंड के लिए लगभग 1200 घड़ी चक्र और 64-बिट ऑपरेंड के लिए लगभग 2500 घड़ी चक्र लेता है। एक खगोलीय भौतिक मोंटे कार्लो सिम्युलेटर ने क्वाड-कोर इंटेल i 7-3740 क्यू. एम. प्रोसेसर पर आर. डी. आर. ए. एन. डी. का उपयोग करके 107 64-बिट यादृच्छिक संख्याएँ उत्पन्न करने के लिए समय की जांच की। उन्होंने पाया कि आर. डी. आर. ए. एन. डी. का सी कार्यान्वयन सी में डिफ़ॉल्ट यादृच्छिक संख्या जनरेटर की तुलना में लगभग 2x धीमा और मर्सेन ट्विस्टर की तुलना में लगभग 20x धीमा था। हालाँकि आर. डी. आर. ए. एन. डी. के एक पायथन मॉड्यूल का निर्माण किया गया है, लेकिन यह पायथन में डिफ़ॉल्ट यादृच्छिक संख्या जनरेटर की तुलना में 20x धीमा पाया गया, हालाँकि पी. आर. एन. जी. और सी. एस. पी. आर. एन. जी. के बीच प्रदर्शन की तुलना नहीं की जा सकती है। जून 2020 में इंटेल द्वारा जारी एक माइक्रोकोड अद्यतन, जिसे क्रॉसटॉक भेद्यता को कम करने के लिए डिज़ाइन किया गया है (नीचे सुरक्षा मुद्दों के खंड को देखें), अतिरिक्त सुरक्षा नियंत्रणों के कारण आर. डी. आर. ए. एन. डी. और आर. डी. एस. ई. डी. के प्रदर्शन को नकारात्मक रूप से प्रभावित करता है। प्रयुक्त शमन वाले प्रोसेसर पर, प्रत्येक प्रभावित निर्देश में अतिरिक्त विलंबता होती है और कोर में आर. डी. आर. ए. एन. डी. या आर. डी. एस. ई. ई. डी. का एक साथ निष्पादन प्रभावी रूप से क्रमबद्ध किया जाता है। इंटेल ने इन सुरक्षा जाँचों को कम करने के लिए एक तंत्र पेश किया, इस प्रकार अधिकांश परिदृश्यों में प्रदर्शन प्रभाव को कम किया, लेकिन इंटेल प्रोसेसर डिफ़ॉल्ट रूप से इस सुरक्षा छूट को लागू नहीं करते हैं। कम्पाइलर विजुअल सी + + 2015 आर. डी. आर. ए. एन. डी. और आर. डी. एस. ई. डी. कार्यों के लिए आंतरिक आवरण समर्थन प्रदान करता है। जी. सी. सी. 4.6 + और क्लैंग 3.2 + आर. डी. आर. ए. एन. डी. के लिए आंतरिक कार्य प्रदान करते हैं जब-एम. आर. डी. आर. एन. डी. को फ्लैग में निर्दिष्ट किया जाता है, और सशर्त संकलन की अनुमति देने के लिए भी सेटिंग की जाती है। नए संस्करण अतिरिक्त रूप से इन अंतर्निहित कार्यों को इंटेल के सी कंपाइलर के संस्करण 12.1 + के साथ संगत कार्यों में लपेटने के लिए immintrin.h प्रदान करते हैं। ये कार्य अपने पैरामीटर द्वारा इंगित स्थान पर यादृच्छिक डेटा लिखते हैं, और सफलता पर 1 वापस करते हैं। अनुप्रयोग यह सुरक्षित संचार में मदद करने के लिए ओपनएसएसएल में आर. डी. आर. ए. एन. डी. और आर. डी. एस. ई. डी. का उपयोग करके क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या उत्पन्न करने का एक विकल्प है। मोंटे कार्लो सिम्युलेटर में आर. डी. आर. ए. एन. डी. के वैज्ञानिक अनुप्रयोग का मूल्यांकन किया गया था, जिसमें अन्य यादृच्छिक संख्या उत्पादकों की तुलना में प्रदर्शन और प्रजनन क्षमता पर ध्यान केंद्रित किया गया था। इसने यह निष्कर्ष निकाला कि मर्सेन ट्विस्टर के विपरीत आर. डी. आर. ए. एन. डी. का उपयोग करने से अलग-अलग परिणाम नहीं मिलते हैं, लेकिन खराब प्रदर्शन और प्रजनन क्षमता होती है। सितंबर 2013 में, न्यूयॉर्क टाइम्स के एक लेख के जवाब में एन्क्रिप्शन को कमजोर करने के एनएसए के प्रयास का खुलासा करते हुए, थियोडोर त्सो ने सार्वजनिक रूप से लिनक्स कर्नेल में/देव/यादृच्छिक के लिए आरडीआरएएनडी के उपयोग के बारे में पोस्ट कियाः लिनस टोरवाल्ड्स ने लिनक्स कर्नेल में आरडीआरएएनडी के उपयोग के बारे में चिंताओं को खारिज कर दिया और बताया कि इसका उपयोग/देव/यादृच्छिक के लिए एन्ट्रापी के एकमात्र स्रोत के रूप में नहीं किया जाता है, बल्कि इसका उपयोग आरडीआरएएनडी से प्राप्त मूल्यों को यादृच्छिकता के अन्य स्रोतों के साथ जोड़कर एन्ट्रापी में सुधार करने के लिए किया जाता है। हालांकि, डिफ्यूज सिक्योरिटी के टेलर हॉर्नबी ने प्रदर्शित किया कि लिनक्स यादृच्छिक संख्या जनरेटर असुरक्षित हो सकता है यदि आर. डी. आर. ए. एन. डी. निर्देश में एक पिछले दरवाजे को पेश किया जाता है जो विशेष रूप से इसका उपयोग करके कोड को लक्षित करता है। हॉर्नबी का प्रूफ-ऑफ-कॉन्सेप्ट कार्यान्वयन संस्करण 3.13 से पहले एक अपरिवर्तित लिनक्स कर्नेल पर काम करता है। 2013 में लिनक्स कर्नेल में इस समस्या को कम किया गया था। डेवलपर्स ने फ्रीबीएसडी कर्नेल को आरडीआरएएनडी और वीआईए पैडलॉक का उपयोग करने से सीधे इस टिप्पणी के साथ बदल दिया कि "फ्रीबीएसडी 10 के लिए, हम आरडीआरएएनडी और पैडलॉक बैकएंड को हटाने जा रहे हैं और उन्हें सीधे/देव/यादृच्छिक रूप से उनके आउटपुट को वितरित करने के बजाय यारो में फीड करने जा रहे हैं। हार्डवेयर यादृच्छिक संख्या जनरेटर, अर्थात आर. डी. आर. ए. एन. डी., पैडलॉक आदि तक सीधे इनलाइन असेंबली द्वारा या यदि आवश्यक हो तो यूजरलैंड से ओपन. एस. एस. एल. का उपयोग करके पहुंचना अभी भी संभव होगा, लेकिन हम उन पर और भरोसा नहीं कर सकते। फ्रीबीएसडी/देव/यादृच्छिक उपयोग फॉर्च्यून और आरडीआरएएनडी फ्रीबीएसडी 11 से शुरू हुआ। सुरक्षा मुद्दे 9 जून 2020 को, व्रिजे यूनिवर्सिटाइट एम्स्टर्डम के शोधकर्ताओं ने क्रॉसटॉक (सीवीई-2020-0543) नामक एक साइड-चैनल हमले को प्रकाशित किया, जिसने कई इंटेल प्रोसेसरों पर आरडीआरएएनडी को प्रभावित किया। उन्होंने पाया कि हार्डवेयर डिजिटल यादृच्छिक संख्या जनरेटर (डी. आर. एन. जी.) से आउटपुट को एक स्टेजिंग बफर में संग्रहीत किया गया था जिसे सभी कोर में साझा किया गया था। भेद्यता ने एक प्रभावित प्रोसेसर पर चलने वाले दुर्भावनापूर्ण कोड को उसी प्रोसेसर के दूसरे कोर पर चलने वाले पीड़ित एप्लिकेशन से आर. डी. आर. ए. एन. डी. और आर. डी. एस. ई. डी. निर्देश परिणामों को पढ़ने की अनुमति दी, जिसमें इंटेल एस. जी. एक्स. एन्क्लेव के अंदर चलने वाले एप्लिकेशन भी शामिल थे। शोधकर्ताओं ने एक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट विकसित किया जिसने केवल एक सिग्नेचर ऑपरेशन के बाद एक अलग सीपीयू कोर पर चलने वाले एसजीएक्स एन्क्लेव से एक पूर्ण ईसीडीएसए कुंजी निकाली। भेद्यता उन परिदृश्यों को प्रभावित करती है जहां अविश्वसनीय कोड एक ही प्रोसेसर पर विश्वसनीय कोड के साथ चलता है, जैसे कि साझा होस्टिंग वातावरण में। इंटेल क्रॉसटॉक भेद्यता को स्पेशल रजिस्टर बफर डेटा सैंपलिंग (एस. आर. बी. डी. एस.) के रूप में संदर्भित करता है। शोध के जवाब में, इंटेल ने समस्या को कम करने के लिए माइक्रोकोड अपडेट जारी किए। अद्यतन माइक्रोकोड यह सुनिश्चित करता है कि ऑफ-कोर अभिगमों में तब तक देरी हो रही है जब तक कि संवेदनशील संचालन विशेष रूप से आर. डी. आर. ए. एन. डी., आर. डी. एस. ई. डी. और ई. जी. ई. टी. के. ई. निर्देश पूरे नहीं हो जाते और स्टेजिंग बफर को अधिलेखित कर दिया जाता है। एस. आर. बी. डी. एस. हमला अन्य निर्देशों को भी प्रभावित करता है, जैसे कि एम. एस. आर. पढ़ने वाले, लेकिन इंटेल ने प्रदर्शन संबंधी चिंताओं और उन निर्देशों के परिणामों की गोपनीयता की कम आवश्यकता के कारण उन पर अतिरिक्त सुरक्षा सुरक्षा लागू नहीं की। 2012 और 2019 के बीच जारी किए गए इंटेल प्रोसेसरों की एक विस्तृत श्रृंखला प्रभावित हुई, जिसमें डेस्कटॉप, मोबाइल और सर्वर प्रोसेसर शामिल थे। प्रभावित निर्देशों का उपयोग करते समय शमन के परिणामस्वरूप नकारात्मक प्रदर्शन प्रभाव पड़ता है, विशेष रूप से जब बहु-थ्रेडेड अनुप्रयोगों द्वारा समानांतर रूप से निष्पादित किया जाता है, सुरक्षा जांच द्वारा शुरू की गई विलंबता में वृद्धि और कोर में प्रभावित निर्देशों के प्रभावी क्रमिककरण के कारण। इंटेल ने एक ऑप्ट-आउट विकल्प पेश किया, जो प्रत्येक लॉजिकल प्रोसेसर पर आई. ए. 32 _ एम. सी. यू. _ ओ. पी. टी. _ सी. टी. आर. एल. एम. एस. आर. के माध्यम से कॉन्फ़िगर किया जा सकता है, जो एस. जी. एक्स. एन्क्लेव के बाहर निष्पादित निर्देशों के लिए अतिरिक्त सुरक्षा जांच को अक्षम करके प्रदर्शन में सुधार करता है। एईएस निर्देश सेट बुलरन (डिक्रिप्शन प्रोग्राम) वुल्फएसएसएल नोट्स संदर्भ बाहरी लिंक आरडीआरएंड. नेट ओपन सोर्स प्रोजेक्ट एक्स86 माइक्रोप्रोसेसर एक्स86 निर्देश मशीन कोड यादृच्छिक संख्या पीढ़ी एक्स86 वास्तुकला देखें।