Random Number Generator किसी निर्धारित उद्देश्य के लिए मान देता है। क्रिप्टोग्राफिक उपयोग में बताई गई धारणाओं के अंतर्गत विरोधी उनका व्यावहारिक रूप से अनुमान न लगा सके, यह आवश्यक है। भौतिक एंट्रॉपी स्रोत, नियतात्मक जनित्र और ऑपरेटिंग सिस्टम का इंटरफ़ेस अलग परतें हैं; केवल RNG नाम से उनके गुण तय नहीं होते।
एंट्रॉपी स्रोत अनिश्चितता देता है, कंडीशनिंग इनपुट तैयार करती है और नियतात्मक जनित्र आंतरिक अवस्था से आउटपुट बनाता है। NIST SP 800-90C, 90A के तंत्रों को 90B के अनुसार स्रोतों से जोड़ता है। इसलिए हर लौटाया गया बिट किसी नए भौतिक माप के बराबर होना आवश्यक नहीं है। [NIST SP 800-90C — RBG constructions]
कोई क्रम सांख्यिकीय परीक्षण पास कर सकता है, फिर भी हमलावर को पहले से ज्ञात हो सकता है। RFC 4086 घड़ियों, सीरियल नंबरों और अनुमानित आरंभिक मानों के प्रति चेताता है। इसलिए सिमुलेशन जनित्र का नाम या परिणामों का वितरण ही उसे क्रिप्टोग्राफी के योग्य नहीं बनाता। [RFC 4086 — Unpredictability and weak inputs]
NIST SP 800-90B शोर स्रोत, कंडीशनिंग और आरंभ तथा संचालन के दौरान स्वास्थ्य परीक्षणों का मूल्यांकन करता है। ये स्रोत की खराबियाँ खोजते हैं, पूरे वॉलेट की सुरक्षा प्रमाणित नहीं करते। विफलता प्रबंधन डिज़ाइन का हिस्सा है; खराब मार्ग के आउटपुट को चुपचाप सत्यापित यादृच्छिकता नहीं माना जाना चाहिए। [NIST SP 800-90B — Source health and failure handling]
Linux getrandom() सामान्यतः urandom स्रोत के आरंभीकरण की प्रतीक्षा करता है। GRND_NONBLOCK के साथ वह प्रतीक्षा के बजाय EAGAIN लौटा सकता है। आरंभीकरण के बाद urandom से अधिकतम 256 बाइट के अनुरोध में सिग्नल से बाधित हुए बिना पूरा पढ़ना सुनिश्चित है; बड़े अनुरोधों में नहीं। ऐप को लौटाई गई स्थिति संभालनी चाहिए। [Linux getrandom(2) — Initialization and return behavior]
Web Crypto getRandomValues() समर्थित पूर्णांक ऐरे में क्रिप्टोग्राफिक रूप से मजबूत मान भरता है; 65536 बाइट से अधिक पर QuotaExceededError देता है। विनिर्देश कुंजियाँ बनाने के लिए generateKey() की सलाह देता है। इंटरफ़ेस की मौजूदगी पृष्ठ की विश्वसनीयता साबित नहीं करती और न ही पहुँच रखने वाले कोड से रहस्य बचाती है। [W3C Web Crypto — getRandomValues and key generation]
BIP39 पहले 128 से 256 बिट आरंभिक एंट्रॉपी को व्युत्पन्न चेकसम के साथ एन्कोड करता है। फिर शब्दों और वैकल्पिक passphrase से PBKDF2 द्वारा 512-बिट seed निकालता है। चेकसम या लंबा व्युत्पन्न आउटपुट अनुमानित इनपुट को नहीं सुधारता; स्वयं शब्द चुनना यादृच्छिक निर्माण का विकल्प नहीं है। [BIP39 — Initial entropy and mnemonic-to-seed derivation]
नियतात्मक जनित्र को सुरक्षित अवस्था और सही आरंभीकरण चाहिए। NIST SP 800-90A इंस्टेंस बनाना, आउटपुट निर्माण, फिर से सीड करना और इंस्टेंस समाप्त करना अलग करता है। अवस्था खुल जाने के बाद सुरक्षा लौटाने के लिए उचित तंत्र और हमलावर से अज्ञात ताज़ी एंट्रॉपी चाहिए; अगला कॉल अकेले सामान्य पुनर्प्राप्ति की गारंटी नहीं है। [NIST SP 800-90A Rev. 1 — DRBG lifecycle and reseeding]
समीक्षा में जाँचे गए संस्करण का स्रोत, एल्गोरिदम, आरंभीकरण, इंटरफ़ेस और त्रुटि के समय व्यवहार स्पष्ट होना चाहिए। हार्डवेयर या ऑफलाइन का लेबल इस श्रृंखला को अपने आप प्रमाणित नहीं करता। उद्धृत मानक निर्माण की आवश्यकताएँ बताते हैं; किसी खास वॉलेट को प्रमाणित नहीं करते और न ही बाद में उसके बैकअप का रिसाव रोकते हैं। [NIST SP 800-90C — RBG constructions] [RFC 4086 — Unpredictability and weak inputs]
पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Cryptographic Entropy, CSPRNG, Seed Generation, Brute Force Search Space. इस प्रविष्टि का उल्लेख यहाँ भी है CSPRNG, Deterministic RNG, True Random Number Generator, Seed Generation.