Cryptology Academy · पाठ

RNG कार्यान्वयनों का परीक्षण और सत्यापन

RNG output की गुणवत्ता सत्यापित करने और कार्यान्वयन की कमियाँ पहचानने के लिए NIST statistical test suites और TestU01 लागू कीजिए।

पाठ 4, कुल 4 में से13 चरण

RNG कार्यान्वयनों का परीक्षण और सत्यापन, CoddyKit पर Cryptology Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Cryptology Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Cryptology Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

RNG परीक्षण कठिन क्यों है

यादृच्छिक संख्या जनित्र का परीक्षण एक मूलभूत चुनौती का सामना करता है: सच्चे यादृच्छिक अनुक्रम और अच्छे PRNG से बने छद्म-यादृच्छिक अनुक्रम सांख्यिकीय परीक्षणों को एक जैसे दिखाई देते हैं। सीमित लंबाई का कोई भी परीक्षण यह सिद्ध नहीं कर सकता कि कोई अनुक्रम यादृच्छिक है—सांख्यिकी केवल कुछ विश्वास-स्तर के साथ गैर-यादृच्छिकता का पता लगा सकती है। परीक्षण यह सत्यापित करता है कि किसी RNG में स्पष्ट पक्षपात या प्रतिरूप नहीं हैं, लेकिन क्रिप्टोग्राफ़िक सुरक्षा सिद्ध नहीं कर सकता। क्रिप्टोग्राफ़िक RNG परीक्षण के दो अलग-अलग लक्ष्य हैं: (1) सांख्यिकीय गुणवत्ता—यह सत्यापित करना कि आउटपुट का वितरण लगभग एकसमान और स्वतंत्र दिखाई देता है; (2) क्रिप्टोग्राफ़िक सामर्थ्य—यह सत्यापित करना कि DRBG एल्गोरिदम सही ढंग से लागू किया गया है और सुरक्षा दावे सही हैं। इनके लिए अलग-अलग परीक्षण विधियों की आवश्यकता होती है।

NIST सांख्यिकीय परीक्षण-संग्रह (SP 800-22)

NIST SP 800-22 बिट अनुक्रमों के मूल्यांकन के लिए 15 सांख्यिकीय परीक्षण प्रदान करता है। इनमें शामिल हैं: आवृत्ति (एकल-बिट) परीक्षण—1 बिटों का अनुपात 0.5 के निकट होना चाहिए। ब्लॉक आवृत्ति परीक्षण—प्रत्येक m-बिट ब्लॉक में 1 बिटों की आवृत्ति। रन परीक्षण—समान बिटों के बिना किसी रुकावट वाले लगातार खंडों की संख्या। सबसे लंबे रन का परीक्षण—1 बिटों के सबसे लंबे लगातार खंड की लंबाई। बाइनरी मैट्रिक्स रैंक परीक्षण—अनुक्रम से बनाए गए बाइनरी मैट्रिक्सों की रैंक। स्पेक्ट्रल परीक्षण (DFT)—आवर्ती प्रतिरूपों का पता लगाना। अतिव्यापी टेम्पलेट मिलान—विशिष्ट प्रतिरूपों की घटनाओं की गणना। Maurer का सार्वत्रिक सांख्यिकीय परीक्षण—अनुक्रम को संपीड़ित करना और यह मापना कि वह कितना छोटा हो जाता है। प्रत्येक परीक्षण p-मान देता है; p < 0.01 गैर-यादृच्छिकता का संकेत देता है। परीक्षण 10 लाख से 1 अरब बिट पर चलाए जाते हैं।

TestU01: Crush और BigCrush

TestU01 (L'Ecuyer और Simard, 2007) सांख्यिकीय परीक्षणों का एक व्यापक संग्रह है, जिसका RNG समुदाय में व्यापक रूप से उपयोग किया जाता है। SmallCrush: 10 परीक्षण, लगभग 35 सेकंड, त्वरित जाँच के लिए उपयुक्त। Crush: 144 परीक्षण, लगभग 2 घंटे। BigCrush: 160 परीक्षण, लगभग 24 घंटे। BigCrush ऐसे सूक्ष्म सहसंबंधों का पता लगाता है जिन्हें NIST SP 800-22 नहीं पकड़ पाता। अच्छी तरह अभिकल्पित क्रिप्टोग्राफ़िक DRBG (HMAC_DRBG, CTR_DRBG) BigCrush में आसानी से उत्तीर्ण होते हैं—बहुपद-समय एल्गोरिदमों के लिए उनका आउटपुट यादृच्छिक आउटपुट से संगणकीय रूप से अप्रभेद्य होता है। गैर-क्रिप्टोग्राफ़िक PRNG (Mersenne Twister, रैखिक सर्वांगसम जनित्र) BigCrush के कुछ परीक्षणों में विफल होते हैं। BigCrush में विफलता इस बात का मजबूत संकेत है कि RNG का उपयोग क्रिप्टोग्राफ़िक उद्देश्यों के लिए नहीं किया जाना चाहिए।

NIST DRBG स्वास्थ्य परीक्षण

SP 800-90B और 90A में ऐसे स्वास्थ्य परीक्षण निर्दिष्ट हैं जिन्हें DRBG को संचालन के दौरान लगातार करना आवश्यक है। सतत RNG परीक्षण (CRNGT): प्रत्येक उत्पन्न ब्लॉक की तुलना पिछले ब्लॉक से की जाती है—यदि वे समान हों (RNG अटक गया हो), तो DRBG को त्रुटि अवस्था में जाकर उत्पादन रोक देना चाहिए। पुनरावृत्ति-गणना परीक्षण: यदि लगातार नमूनों में समान मान की पुनरावृत्ति एंट्रॉपी अनुमान के आधार पर सांख्यिकीय रूप से अपेक्षित संख्या से अधिक बार हो, तो परीक्षण विफल घोषित किया जाता है। अनुकूली अनुपात परीक्षण: यदि किसी विंडो में सबसे अधिक बार आने वाला मान निर्धारित सीमा से अधिक बार आता है, तो परीक्षण विफल घोषित किया जाता है। ये स्वास्थ्य परीक्षण एंट्रॉपी स्रोत की विफलताओं (अटका हुआ सेंसर, HWRNG हार्डवेयर दोष) का पता लगाते हैं, इससे पहले कि वे क्रिप्टोग्राफ़िक कुंजी निर्माण से चुपचाप समझौता कर सकें।

PractRand: ऑनलाइन परीक्षण

PractRand एक आधुनिक RNG परीक्षण उपकरण है, जिसे ऑनलाइन (स्ट्रीमिंग) मूल्यांकन के लिए बनाया गया है। यह पहले से निर्धारित लंबाई की आवश्यकता के बजाय अनुक्रम के उत्पन्न होते समय उसका विश्लेषण करता है। इसमें अंतराल परीक्षण, बिट-वितरण परीक्षण और अनुकूली परिशुद्धता वाले स्पेक्ट्रल परीक्षण शामिल हैं। PractRand ऐसे RNG का पता लगाने में विशेष रूप से प्रभावी है जो छोटे अनुक्रमों के लिए अच्छे परिणाम देते हैं, लेकिन अरबों बिट के बाद प्रतिरूप प्रकट करते हैं। क्रिप्टोग्राफ़िक DRBG ऐसा आउटपुट उत्पन्न करते हैं जिसे PractRand लंबाई चाहे जितनी हो, यादृच्छिक आउटपुट से अलग नहीं कर सकता—यही संगणकीय अप्रभेद्यता की व्यावहारिक परिभाषा है। PractRand का उपयोग एंट्रॉपी स्रोतों के मूल्यांकन के लिए भी किया जाता है, जैसे हार्डवेयर विफलताओं या व्यवस्थित पक्षपात का पता लगाने के लिए /dev/urandom और RDRAND के आउटपुट का परीक्षण।

FIPS के लिए CAVP सत्यापन

Cryptographic Algorithm Validation Program (CAVP), SP 800-90A DRBG के लिए आधिकारिक परीक्षण सदिश प्रदान करता है। CAVP परीक्षण में किसी कार्यान्वयन को NIST की स्वचालित परीक्षण प्रणाली में ज्ञात-उत्तर परीक्षण (KAT) सदिशों के साथ प्रस्तुत करना शामिल है: एक विशिष्ट एंट्रॉपी इनपुट, नॉन्स, निजीकरण स्ट्रिंग और अतिरिक्त इनपुट दिए जाने पर कार्यान्वयन को अपेक्षित आउटपुट बिट्स का बिल्कुल वही क्रम उत्पन्न करना चाहिए। CAVP सांख्यिकीय गुणों का परीक्षण नहीं करता—यह एल्गोरिदम की शुद्धता का परीक्षण करता है। FIPS 140-3 प्रमाणन के लिए मॉड्यूल सीमा के भीतर उपयोग किए जाने वाले सभी क्रिप्टोग्राफ़िक एल्गोरिदमों का CAVP सत्यापन आवश्यक है। CAVP परीक्षण सदिश NIST के ACVP सर्वर से सार्वजनिक रूप से उपलब्ध हैं और OpenSSL, mbedTLS तथा BoringSSL के परीक्षण-संग्रहों में एकीकृत किए गए हैं।

एंट्रॉपी स्रोत का सत्यापन: SP 800-90B

किसी DRBG को सुरक्षित रूप से आरंभ करने से पहले उसके एंट्रॉपी स्रोत का सत्यापन आवश्यक है। SP 800-90B में ये बातें परिभाषित की गई हैं: (1) एंट्रॉपी अनुमान—सांख्यिकीय परीक्षणों का उपयोग करके प्रति बिट वास्तविक एंट्रॉपी मापना (न्यूनतम-एंट्रॉपी अनुमान)। (2) प्रारंभिक परीक्षण—पहली बार उपयोग से पहले यह सत्यापित करना कि एंट्रॉपी स्रोत मान्य आउटपुट उत्पन्न करता है। (3) मांग पर किए जाने वाले परीक्षण—अनुप्रयोग द्वारा शुरू किए जाने वाले वैकल्पिक परीक्षण। (4) शोर स्रोत स्वास्थ्य परीक्षण—हार्डवेयर में होने वाली गिरावट का पता लगाना। सामान्य एंट्रॉपी स्रोत और उनकी अनुमानित प्रति-बिट एंट्रॉपी इस प्रकार हैं: CPU RDRAND/RDSEED (लगभग 1 बिट/बिट, हार्डवेयर द्वारा प्रमाणित); /dev/urandom (कई स्रोतों को मिलाता है, एंट्रॉपी अनुमान रूढ़िवादी होता है); रिंग ऑसिलेटर TRNG (अभिकल्प के आधार पर 0.5–0.9 बिट/बिट); ADC शोर (0.1–0.5 बिट/बिट)। SP 800-90B सत्यापन के लिए विशेष उपकरणों से प्रयोगशाला परीक्षण आवश्यक है।

VM और कंटेनर RNG का परीक्षण

आभासी वातावरण RNG परीक्षण के लिए विशिष्ट चुनौतियाँ उत्पन्न करते हैं। VM को स्टार्टअप पर कम-एंट्रॉपी वाली स्थितियाँ दिखाई दे सकती हैं (हार्डवेयर घटनाएँ न होने पर) या स्नैपशॉट पुनर्स्थापित होने के बाद स्थिति रीसेट हो सकती है। Docker कंटेनर होस्ट कर्नेल RNG साझा करते हैं — कोई कंटेनर अंतर्निहित एंट्रॉपी की गुणवत्ता का सीधे परीक्षण नहीं कर सकता। VM परिनियोजनों के परीक्षण: (1) /dev/random से पठन पूरा होने तक का समय मापें — लंबे इंतज़ार अपर्याप्त एंट्रॉपी दर्शाते हैं। (2) समानांतर VM इंस्टेंस में उत्पन्न डुप्लिकेट UUID या कुंजियों के लिए परीक्षण करें (क्लाउड परिनियोजनों में दर्ज की गई वास्तविक विफलता)। (3) सत्यापित करें कि VIRTIO-RNG (virtio_rng.ko) VM में लोड है — यह होस्ट से गेस्ट में एंट्रॉपी प्रविष्ट कराता है। (4) अनुप्रयोग के आरंभ अनुक्रम का लेखा-परीक्षण करें: क्या पर्याप्त एंट्रॉपी उपलब्ध होने से पहले कुंजी-निर्माण हो जाता है?

फोर्क-सुरक्षा परीक्षण

RNG की फोर्क-सुरक्षा का परीक्षण एक सूक्ष्म भेद्यता को रोकता है: जब कोई प्रक्रिया फोर्क होती है, तब जनक और संतति दोनों समान DRBG स्थिति साझा करते हैं, जिससे वे समान क्रम उत्पन्न कर सकते हैं। पहचान: N संतति प्रक्रियाएँ उत्पन्न करें, प्रत्येक में एक UUID उत्पन्न करें, और सत्यापित करें कि सभी UUID अलग-अलग हैं। यदि कोई भी दो समान हों, तो RNG फोर्क-सुरक्षित नहीं है। OpenSSL ने 2020 में फोर्क-सुरक्षा की एक त्रुटि ठीक की (CVE-2020-1971 सीधे DRBG से संबंधित नहीं था, लेकिन पैटर्न समान है)। वर्तमान OpenSSL PID-आधारित बीज अद्यतन का उपयोग करता है: यदि पिछले आह्वान के बाद से PID बदल गया हो (जो फोर्क का संकेत है), तो DRBG का स्वतः पुनःबीजीकरण हो जाता है। इसका परीक्षण करने के लिए: फोर्क से पहले और बाद में परीक्षण चलाएँ, और अलग-अलग परिणामों की पुष्टि करके सुनिश्चित करें कि पुनःबीजीकरण हुआ।

RNG कार्यान्वयनों की लेखा-परीक्षण जाँच-सूची

RNG कार्यान्वयनों के लिए एक व्यावहारिक लेखा-परीक्षण जाँच-सूची: (1) क्या RNG को समय-आधारित बीजों के बजाय OS (getrandom, BCryptGenRandom) से आरंभ किया जाता है? (2) क्या DRBG प्रकार NIST SP 800-90A द्वारा अनुमोदित कोई तंत्र (Hash, HMAC, CTR) है? (3) क्या बीज की लंबाई दावा की गई सुरक्षा-शक्ति के लिए पर्याप्त है? (4) क्या निश्चित अंतराल पर या जनरेट आह्वानों की निश्चित संख्या के बाद पुनःबीजीकरण शुरू होता है? (5) क्या कार्यान्वयन फोर्क-सुरक्षा संभालता है (फोर्क के बाद पुनःबीजीकरण)? (6) क्या स्वास्थ्य परीक्षण सक्षम हैं और विफलता पर क्या वे प्रणाली को रोक देते हैं? (7) क्या बंद करते समय स्थिति को शून्यीकृत किया जाता है? (8) क्या CI/CD में CAVP परीक्षण वेक्टर चलाए जाते हैं? (9) क्या एंट्रॉपी के अनुमान दर्ज और सत्यापित किए गए हैं? (10) FIPS आवश्यकताओं के लिए: क्या मॉड्यूल FIPS 140-3 प्रमाणित है?

वास्तविक दुनिया में RNG की विफलताएँ

ऐतिहासिक RNG विफलताएँ जोखिम की गंभीरता दिखाती हैं। Debian OpenSSL (2006-2008): एक पैच ने गलती से एंट्रॉपी एकत्र करने वाले कोड की दो पंक्तियाँ हटा दीं, जिससे बीज-पूल 15-बिट PID क्षेत्र तक सीमित हो गया — पूरे Debian उपयोगकर्ता आधार के लिए केवल 32,767 संभावित SSH कुंजियाँ उत्पन्न हुईं। Debian द्वारा उत्पन्न सभी SSH होस्ट कुंजियों और उपयोगकर्ता कुंजियों को बदलना पड़ा। Android Bitcoin वॉलेट (2013): Android के SecureRandom में Java स्तर पर किया गया बीज-निर्धारण कुछ उपकरणों पर विफल रहा, जिससे ECDSA हस्ताक्षरों में k के समान मान उत्पन्न हुए — और निजी कुंजियाँ सीधे प्रकट हो गईं। Sony PS3 (2010): अपने ECDSA फ़र्मवेयर हस्ताक्षर-निर्माण में एक स्थिर nonce का उपयोग करता था, जिससे दो हस्ताक्षरों से निजी कुंजी निकालना संभव हो गया (अलग-अलग संदेशों में समान k होने पर सरल बीजगणित से कुंजी प्रकट हो जाती है)।

RNG परीक्षण प्रश्नोत्तरी

निम्नलिखित में से कौन-सा परीक्षण यह पता लगाता है कि कोई DRBG एक ही परिणाम को बार-बार उत्पन्न करके अटके हुए परिणाम दे रहा हो सकता है?

RNG परीक्षण का पुनरावलोकन

सांख्यिकीय परीक्षण (NIST SP 800-22, TestU01 BigCrush, PractRand) परिणाम की गुणवत्ता की जाँच करते हैं, लेकिन क्रिप्टोग्राफ़िक सुरक्षा सिद्ध नहीं कर सकते। ज्ञात-उत्तर परीक्षण SP 800-90A कार्यान्वयनों की कलनविधिक शुद्धता की जाँच करते हैं। SP 800-90B एंट्रॉपी स्रोत परीक्षण (न्यूनतम-एंट्रॉपी आकलन, स्वास्थ्य परीक्षण) बीज के रूप में प्राप्त डेटा को मान्य करते हैं। सतत RNG परीक्षण (CRNGT) वास्तविक समय में एक ही मान पर अटके परिणामों का पता लगाता है। VM और कंटेनर परिनियोजनों के लिए एंट्रॉपी प्रविष्टि (VIRTIO-RNG) और आरंभिक एंट्रॉपी जाँच आवश्यक हैं। फोर्क-सुरक्षा परीक्षण यह सत्यापित करता है कि संतति प्रक्रियाएँ जनक DRBG स्थिति प्राप्त नहीं करतीं। वास्तविक दुनिया की विफलताएँ (Debian, Android) दिखाती हैं कि RNG की त्रुटियाँ सीधे क्रिप्टोग्राफ़िक कुंजी के समझौते तक ले जाती हैं। लेखा-परीक्षण जाँच-सूचियाँ उत्पादन परिनियोजनों के लिए इन जाँचों को औपचारिक रूप देती हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Cryptology Academy सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
67
पाठ
261

अक्सर पूछे जाने वाले प्रश्न

क्या “RNG कार्यान्वयनों का परीक्षण और सत्यापन” पाठ निःशुल्क है?

हाँ—“RNG कार्यान्वयनों का परीक्षण और सत्यापन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Cryptology Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Cryptology Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“RNG कार्यान्वयनों का परीक्षण और सत्यापन” में मैं क्या सीखूँगा?

RNG output की गुणवत्ता सत्यापित करने और कार्यान्वयन की कमियाँ पहचानने के लिए NIST statistical test suites और TestU01 लागू कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Cryptology Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Cryptology Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Cryptology Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“RNG कार्यान्वयनों का परीक्षण और सत्यापन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Cryptology Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Cryptology Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. NIST SP 800-90A: DRBG मानक
  2. Hash-DRBG, HMAC-DRBG और CTR-DRBG की आंतरिक कार्यप्रणाली
  3. Dual EC DRBG backdoor घटना
  4. RNG कार्यान्वयनों का परीक्षण और सत्यापन
← Cryptology Academy पर वापस जाएँ