Cryptology Academy · पाठ

कुंजियाँ, nonces और IV सुरक्षित रूप से बनाना

Python और Node में secrets, os.urandom और सुरक्षित wrappers का उपयोग करें।

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

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

तीन श्रेणियाँ

तीन अलग-अलग क्रिप्टोग्राफ़िक मानों को सुरक्षित रूप से उत्पन्न करना आवश्यक है: (1) कुंजियाँ — लंबे समय तक उपयोग की जाती हैं, इसलिए उनका अप्रत्याशित और गुप्त होना आवश्यक है। (2) IV — प्रत्येक संदेश के लिए होते हैं, सार्वजनिक हो सकते हैं, लेकिन उनका अप्रत्याशित (CBC) या अद्वितीय (GCM) होना आवश्यक है। (3) नॉन्स — प्रत्येक उपयोग के लिए अद्वितीय होने चाहिए; उनका यादृच्छिक होना आवश्यक भी हो सकता है और नहीं भी।

सममित कुंजियाँ

AES-128: secrets.token_bytes(16)। AES-256: secrets.token_bytes(32)। ChaCha20: secrets.token_bytes(32)। KDF (PBKDF2/Argon2) के बिना कभी भी पासवर्ड से कुंजियाँ प्राप्त न करें। अलग-अलग एल्गोरिदम या उद्देश्यों के बीच कुंजियों का कभी पुनःउपयोग न करें।

असममित कुंजी निर्माण

from cryptography.hazmat.primitives.asymmetric import ec, rsa rsa_key = rsa.generate_private_key(public_exponent=65537, key_size=2048) ec_key = ec.generate_private_key(ec.SECP256R1()) # The library handles entropy sourcing internally

AES-CBC के लिए IV

AES-CBC को प्रत्येक संदेश के लिए समान रूप से यादृच्छिक 16-बाइट IV चाहिए। एक ही कुंजी के साथ किसी IV का कभी पुनःउपयोग न करें। CBC मोड में IV के रूप में कभी काउंटर का उपयोग न करें। उत्पन्न करें: iv = os.urandom(16)। IV को सिफरटेक्स्ट के आगे जोड़ें — इसे गुप्त होने की आवश्यकता नहीं, केवल अप्रत्याशित होना आवश्यक है।

AES-GCM के लिए नॉन्स

AES-GCM को प्रत्येक (कुंजी, संदेश) युग्म के लिए एक अद्वितीय 96-बिट नॉन्स चाहिए। नॉन्स का पुनःउपयोग GCM को विनाशकारी रूप से तोड़ देता है: हमलावर प्रमाणीकरण कुंजी प्राप्त कर सकता है और संदेशों में जालसाज़ी कर सकता है। या तो यादृच्छिक 12-बाइट नॉन्स (2^32 संदेशों पर बर्थडे सीमा) या काउंटर का उपयोग करें।

काउंटर-आधारित नॉन्स

एक ही कुंजी से बड़ी मात्रा में एन्क्रिप्शन के लिए: प्रत्येक कुंजी के लिए एक स्थायी काउंटर बनाए रखें। nonce = counter.to_bytes(12, "big")। प्रत्येक एन्क्रिप्शन के बाद काउंटर बढ़ाएँ। काउंटर को स्थायी भंडारण में सहेजें — रीस्टार्ट पर रीसेट होने से पुनःउपयोग होता है।

नॉन्स के गलत उपयोग के प्रति प्रतिरोधी AEAD

AES-GCM-SIV और Deoxys-II नॉन्स के गलत उपयोग के प्रति प्रतिरोधी हैं: नॉन्स का पुनःउपयोग सुरक्षा को नियतात्मक एन्क्रिप्शन के स्तर तक घटा देता है (प्रमाणीकरण कुंजी उजागर नहीं होती)। जब नॉन्स की अद्वितीयता की गारंटी देना कठिन हो (वितरित सिस्टम, क्रैश के बाद रीस्टार्ट होने वाली परिस्थितियाँ), तब इनकी अनुशंसा की जाती है।

कुंजी प्राप्त करने के लिए HKDF

कच्ची कुंजी सामग्री का सीधे कई उद्देश्यों के लिए उपयोग न करें। उद्देश्य-विशिष्ट कुंजियाँ प्राप्त करें: from cryptography.hazmat.primitives.kdf.hkdf import HKDF। hkdf = HKDF(SHA256(), 32, salt, info=b"enc_key")। key = hkdf.derive(master_key)। प्रत्येक उद्देश्य के लिए अलग info का उपयोग करें।

सत्र कुंजियाँ

HKDF का उपयोग करके किसी साझा रहस्य (जैसे, ECDH आउटपुट) से सत्र-विशिष्ट कुंजियाँ प्राप्त करें। TLS 1.3 हैंडशेक और अनुप्रयोग डेटा के लिए अलग-अलग क्लाइंट/सर्वर कुंजियाँ प्राप्त करता है। सत्र कुंजियाँ समझौते के प्रभाव को अलग रखती हैं: किसी एक सत्र की कुंजी जानने से अन्य सत्रों के बारे में कुछ पता नहीं चलता।

कुंजी रैपिंग

किसी कुंजी को सुरक्षित रूप से संग्रहीत करने के लिए, AES-KW (RFC 3394) या AES-GCM का उपयोग करके उसे Key Encryption Key (KEK) से रैप करें। रैप की गई कुंजी को डेटाबेस में संग्रहीत या प्रसारित किया जा सकता है। KEK को HSM या हार्डवेयर-समर्थित कीस्टोर (Android Keystore, Apple Secure Enclave) में संग्रहीत किया जाता है।

ऑडिट जाँच-सूची

परिनियोजन से पहले जाँचें: (1) सभी कुंजियाँ os.urandom/secrets से प्राप्त हों। (2) कोई हार्डकोड की गई कुंजी/IV न हो। (3) एक ही कुंजी के साथ IV का कभी पुनःउपयोग न हो। (4) प्रत्येक संदेश के लिए GCM नॉन्स अद्वितीय हों। (5) कुंजी रोटेशन की समय-सारणी निर्धारित हो। (6) कुंजी प्राप्त करने के लिए अलग-अलग info स्ट्रिंग के साथ HKDF का उपयोग हो।

त्वरित जाँच

AES-GCM में नॉन्स का पुनःउपयोग करने का क्या परिणाम होता है?

पुनरावलोकन

कुंजियों को वास्तविक यादृच्छिकता से उत्पन्न करना आवश्यक है; CBC IV को यादृच्छिकता चाहिए; GCM नॉन्स को अद्वितीय होना चाहिए। os.urandom/secrets का उपयोग करें, HKDF से कुंजियाँ प्राप्त करें और KEK से रैप करें। नॉन्स के गलत उपयोग के प्रति प्रतिरोधी AEAD आकस्मिक पुनःउपयोग से सुरक्षा प्रदान करते हैं। अगला विषय: शून्य-ज्ञान प्रमाण।

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

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

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

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

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

क्या “कुंजियाँ, nonces और IV सुरक्षित रूप से बनाना” पाठ निःशुल्क है?

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

“कुंजियाँ, nonces और IV सुरक्षित रूप से बनाना” में मैं क्या सीखूँगा?

Python और Node में secrets, os.urandom और सुरक्षित wrappers का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Cryptology Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

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

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

“कुंजियाँ, nonces और IV सुरक्षित रूप से बनाना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. वास्तविक randomness बनाम pseudorandomness
  2. क्रिप्टोग्राफ़िक रूप से सुरक्षित PRNG
  3. Entropy की कमी और कमज़ोर-कुंजी बग
  4. कुंजियाँ, nonces और IV सुरक्षित रूप से बनाना
← Cryptology Academy पर वापस जाएँ