True Random Number Generator, यानी TRNG, भौतिक प्रक्रिया को मापकर नए, अप्रत्याशित इनपुट प्राप्त करता है। यह उस जनरेटर से अलग है जो केवल संग्रहीत अवस्था से अगले मानों की गणना करता है। व्यवहार में दोनों साथ काम कर सकते हैं। लेकिन नाम में “true” गुणवत्ता की गारंटी नहीं है: भौतिक स्रोत का डिज़ाइन भी खराब हो सकता है या उसमें खराबी आ सकती है।
एक सर्किट छोटे विद्युत उतार-चढ़ाव मापकर उन्हें संख्याओं में बदल सकता है। अहम बात यह है कि परिणाम का कितना हिस्सा हमलावर नहीं बता सकता। तेज़ी से बहुत सारा डेटा बनाना पर्याप्त नहीं है। इसलिए NIST SP 800-90B विशिष्ट शोर स्रोत, उसके नमूने लेने के तरीके, संभावित प्रसंस्करण और काम करने की जाँचों का मूल्यांकन करता है। भौतिक घटना का नाम बता देना इस मूल्यांकन की जगह नहीं लेता। [1]
कोई स्रोत एक की तुलना में शून्य अधिक बार दे सकता है। conditioning नाम की प्रक्रिया इस झुकाव को घटाने और उपलब्ध एंट्रॉपी, यानी हमलावर की नज़र से अनिश्चितता, को छोटे आउटपुट में केंद्रित करने में मदद करती है। लेकिन वह अनुपस्थित अनिश्चितता पैदा नहीं कर सकती। इसलिए NIST SP 800-90B आउटपुट में मानी जाने वाली एंट्रॉपी को इनपुट और इस्तेमाल की गई विधि से जोड़ता है। हैश, यानी डेटा से गणना करके बनाई गई पहचान, भी यह साबित नहीं करता कि मूल मान अप्रत्याशित थे। इनपुट पता हो तो वही पहचान दोबारा निकाली जा सकती है। [1]
स्रोत बार-बार एक ही मान लौटाने लगे तो उपकरण को इसे अनदेखा नहीं करना चाहिए। NIST SP 800-90B दोहराव देखने के लिए Repetition Count Test और असामान्य आवृत्तियाँ देखने के लिए Adaptive Proportion Test इस्तेमाल करता है। ये जाँचें कुछ खास खराबियाँ खोजती हैं; हर हमले या दोष को अपने आप नहीं पकड़तीं। लगातार खराबी मिलने पर स्रोत को सामान्य संचालन की तरह आउटपुट देते नहीं रहना चाहिए। [1]
केवल TRNG मौजूद होने से वॉलेट सुरक्षित साबित नहीं होता। यह भी मायने रखता है कि उसका वह संस्करण डेटा कैसे इस्तेमाल करता है और त्रुटि आने पर क्या करता है। इसलिए NIST SP 800-90C स्रोतों को आगे के जनरेटरों के साथ देखता है। एक पुर्ज़े का मूल्यांकन पूरे वॉलेट का मूल्यांकन नहीं है। बेहतरीन यादृच्छिकता स्रोत भी उस बैकअप को सुरक्षित नहीं रख सकता जिसे आप बाद में उजागर कर दें। [4]
चलते हुए उपकरण का लंबा रिकॉर्ड उसके व्यवहार का वह हिस्सा दिखाता है जो बार-बार बंद करके चालू करने से अलग है। इसलिए NIST SP 800-90B में रीस्टार्ट परीक्षण भी हैं। मूल्यांकन उस खास स्रोत और उसके संचालन की परिस्थितियों के अनुरूप होना चाहिए। एक नमूने के परिणाम सभी उपकरणों या वातावरणों पर अपने आप लागू नहीं होते। फ़र्मवेयर, यानी उपकरण के अंदर चलने वाला प्रोग्राम, बदलने पर भी दोबारा मूल्यांकन ज़रूरी हो सकता है। [1]
तकनीकी दस्तावेज़ों में RDRAND और RDSEED निर्देश मिलते हैं। Intel इन्हें अपने हार्डवेयर यादृच्छिक संख्या जनरेटर DRNG की मार्गदर्शिका में समझाता है। RDRAND उस नियतात्मक जनरेटर के परिणाम देता है जो अपनी आंतरिक अवस्था से अगले मानों की गणना करता है। RDSEED आरंभीकरण, यानी जनरेटर की शुरुआती अवस्था बनाने के लिए संसाधित एंट्रॉपी देता है। दोनों रास्ते भौतिक स्रोत से शुरू हो सकते हैं, लेकिन इससे असंसाधित शोर को सीधे पढ़ पाने की गारंटी नहीं मिलती। [2]
प्रोसेसर के पास हर अनुरोध के लिए परिणाम तैयार हो, यह ज़रूरी नहीं है। इसलिए Intel, RDRAND और RDSEED दोनों के साथ स्थिति बताने वाला CF फ़्लैग जाँचने को कहता है: 1 का अर्थ है परिणाम उपलब्ध है, 0 का अर्थ है उपलब्ध नहीं है। गंतव्य रजिस्टर, यानी प्रोसेसर के भीतर छोटी भंडारण जगह, में केवल संख्यात्मक शून्य देखना पर्याप्त नहीं है। प्रोग्राम को सफलता का फ़्लैग पढ़ना चाहिए। प्रोसेसर किसी निर्देश का समर्थन करता है, इससे यह साबित नहीं होता कि कोई खास अनुरोध सफल हुआ। [2]
Linux में hw_random इंटरफ़ेस, /dev/hwrng के ज़रिए हार्डवेयर स्रोत का डेटा फ़ाइल की तरह पढ़ने देता है। लेकिन उसका दस्तावेज़ साफ़ चेतावनी देता है कि यह इंटरफ़ेस खुद डेटा की गुणवत्ता के परीक्षण नहीं करता। इसलिए खराब या बदला हुआ हार्डवेयर गलत डेटा दे सकता है, जिसे अनुप्रयोग फिर भी पढ़ ले। सफलतापूर्वक पढ़ना पर्याप्त एंट्रॉपी का प्रमाण नहीं है। स्रोत और प्रोग्राम उसके परिणामों को कैसे इस्तेमाल करता है, दोनों का मूल्यांकन चाहिए। [3]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Cryptographic Entropy, Random Number Generator, CSPRNG, Entropy Mixing. इस प्रविष्टि का उल्लेख यहाँ भी है Entropy Mixing.