मैं सोच रहा हूं कि यादृच्छिक संख्या उत्पन्न करने के लिए सीपीयू विशिष्ट निर्देश तैयार करने के पीछे क्या कारण था?

Intel प्रोसेसर में RDRAND और RDSEED होते हैं। पीपीसी में भी एक समान निर्देश है।

क्या एक अलग चिप रखने और उन नंबरों को प्राप्त करने के लिए बस कुछ I/O करने का कोई मतलब नहीं होगा? मुझे ऐसा लगता है कि यह सीपीयू को एक बहुत ही विशिष्ट निर्देश के लिए और भी जटिल बनाता है (अधिकांश सॉफ़्टवेयर कभी भी यादृच्छिक संख्याओं का उपयोग नहीं करते हैं!) जब I/O उम्र के आसपास रहा है और ठीक काम करना चाहिए।

1
Alexis Wilke 11 सितंबर 2019, 05:01

1 उत्तर

सबसे बढ़िया उत्तर

हमारे पास दोनों हैं।
टीपीएम crypto-secure यादृच्छिक संख्याएं उत्पन्न कर सकता है। /a> (आखिरकार, यह एक "क्रिप्टो-चिप" है) और टीपीएम हैसवेल के बाद से कई, यदि सभी नहीं, तो इंटेल आधारित मदरबोर्ड पर मौजूद है।
मालिकाना सीएसआरएनजी पीसीआई (ई) कार्ड व्यावसायिक रूप से भी उपलब्ध हैं।

मैंने एक बार Arduino के साथ घर में बने CSRNG की प्रस्तुति में भाग लिया था।
उस आदमी को सांख्यिकी या बीजगणित की कोई धारणा नहीं थी। सच कहूं तो पूरी प्रस्तुति दयनीय थी।
आप केवल एक चिप नहीं बना सकते हैं और दावा कर सकते हैं कि यह एक सीएसआरएनजी है, आपको प्रमाणन प्राप्त करना होगा, मानक और विधियां हैं।
उन प्रमाणपत्रों को प्राप्त करना महंगा और कठिन है।

इसके अलावा, एक विस्तृत बैंडविड्थ को संभालने के लिए आपको एक तेज़ (यू) -प्रोसेसर की भी आवश्यकता होती है।
टीपीएम समिति का एक लक्ष्य इसे सस्ता बनाना था, जिसका अंतिम परिणाम यह था कि टीपीएम चिप्स धीमे होते हैं।

यदि आप ऐसे चिप्स की अपेक्षाकृत कम बाजार मांग को जोड़ दें तो हम स्पष्ट रूप से देख सकते हैं कि सीएसआरएनजी चिप वास्तव में महंगी हैं।

बाहरी उपकरणों पर भी शारीरिक हमले होने का खतरा होता है, चिप को आसानी से हटाया जा सकता है/डिकैप्ड किया जा सकता है या बस को टैप या बदला जा सकता है।
सीपीयू के अंदर सीएसआरएनजी के लिए भी यह सच है, हमले ज्ञात हैं, कोई इसके ट्रांजिस्टर को बदलकर इसकी एन्ट्रॉपी को कम करता है।
हालाँकि इसके लिए पूरी तरह से अलग तरह के उपकरणों की आवश्यकता होती है।

पीसीआई (ई) सीएसआरएनजी संभवतः एंट्रॉपी के बाइट्स की एक आवश्यक संख्या को स्थानांतरित करने के लिए डीएमए का उपयोग करेंगे, जिसके लिए ओएस के साथ कुछ समन्वय इंटरफ़ेस की आवश्यकता होती है, उदाहरण के लिए, जब एक स्थानांतरण प्रगति पर होता है।

और, ज़ाहिर है, पेलोड मेमोरी में होगा और इसका मतलब है कि एक बड़ा सॉफ़्टवेयर सरफेस अटैक और इसे रजिस्टरों में लाने के लिए एक अतिरिक्त कदम।
मेमोरी तक पहुंच ~ 200-300 चक्रों के क्रम में है।

पोर्ट-मैप्ड IO (यानी in निर्देश) का उपयोग करने से पेलोड सीधे एक रजिस्टर में आ जाएगा, लेकिन एक बार में केवल 32-बिट और यह सामान्य लोड से तेज नहीं है।

RDRAND एक उपयोगकर्ता-मोड निर्देश है, जो उपयोगकर्ता-मोड अनुप्रयोगों को बिना किसी अतिरिक्त बोझ के सीएसआरएनजी तक पहुंच की अनुमति देता है, लेकिन इसके समर्थन की जांच करता है।
यह लगभग सभी हालिया सीपीयू के साथ आता है, ऐसा लगता है कि यह मुफ़्त है।

अंत में, एक मार्केटिंग पहलू चल रहा है।
अगर आपकी निर्माण प्रक्रिया में सुधार हुआ है और आपको कुछ [insert-a-reasonable-length-unit-यहां] जगह का वर्ग दिया गया है, तो आप माइक्रो-आर्किटेक्चर में सुधार कर सकते हैं या एक नई सुविधा जोड़ सकते हैं।
पूर्व कठिन है, बाद वाला डिजाइन करना अपेक्षाकृत आसान है और यह आपको अपने प्रतिस्पर्धियों पर बढ़ावा दे सकता है: सामान्य उपकरण आपके सीपीयू पर तेजी से चलते हैं और सिर्फ इसलिए कि आप मरने में अधिक जगह ले सकते हैं।

7
Margaret Bloom 11 सितंबर 2019, 07:31