Cryptology Academy · पाठ

libsodium: गलत उपयोग से सुरक्षित क्रिप्टो लाइब्रेरी

libsodium के सुविचारित API का अध्ययन कीजिए, जो असुरक्षित पैरामीटर चुनना कठिन बना देता है।

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

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

libsodium का दर्शन और उद्गम

libsodium को Frank Denis ने Daniel Bernstein, Tanja Lange और Peter Schwabe द्वारा विकसित NaCl (नेटवर्किंग और क्रिप्टोग्राफ़ी लाइब्रेरी) लाइब्रेरी के पोर्टेबल, विभिन्न प्लेटफ़ॉर्म पर चलने वाले संस्करण के रूप में बनाया था। इसका मूल दर्शन सही क्रिप्टोग्राफ़िक उपयोग को जितना संभव हो उतना आसान और गलत उपयोग को जितना संभव हो उतना कठिन बनाना है। सुरक्षित डिफ़ॉल्ट, सरल API और सोच-समझकर चुने गए एल्गोरिद्म विकल्प उन सामान्य गलतियों को रोकते हैं, जो निम्न-स्तरीय लाइब्रेरी में अक्सर होती हैं।

गुप्त-कुंजी प्रमाणित एन्क्रिप्शन

crypto_secretbox, XSalsa20-Poly1305 का उपयोग करके गुप्त-कुंजी प्रमाणित एन्क्रिप्शन प्रदान करता है। इंटरफ़ेस में एक संदेश, 24-बाइट का नॉन्स (यादृच्छिक रूप से बनाया गया) और 32-बाइट की कुंजी दी जाती है। परिणाम एक ऐसा सिफरटेक्स्ट होता है जो एन्क्रिप्टेड और प्रमाणित, दोनों होता है। crypto_secretbox_open एक ही परमाण्विक कार्रवाई में डिक्रिप्ट करके प्रमाणीकरण टैग की पुष्टि करता है और छेड़छाड़ का पता चलने पर त्रुटि लौटाता है। इससे दूषित या दुर्भावनापूर्ण ढंग से बदले गए सिफरटेक्स्ट का डिक्रिप्शन रुक जाता है।

सार्वजनिक-कुंजी प्रमाणित एन्क्रिप्शन

crypto_box, X25519-XSalsa20-Poly1305 का उपयोग करके दो पक्षों के बीच सार्वजनिक-कुंजी प्रमाणित एन्क्रिप्शन प्रदान करता है। प्रेषक की निजी कुंजी और प्राप्तकर्ता की सार्वजनिक कुंजी देने पर यह संदेश को एन्क्रिप्ट और प्रमाणित करता है, ताकि केवल इच्छित प्राप्तकर्ता ही उसे डिक्रिप्ट कर सके और प्राप्तकर्ता प्रेषक की पहचान की पुष्टि कर सके। crypto_box_seal इसका अनाम रूप है: इसमें प्रेषक की पहचान छिपी रहती है और केवल एन्क्रिप्शन, प्रेषक का प्रमाणीकरण नहीं, प्रदान किया जाता है।

Ed25519 से डिजिटल हस्ताक्षर

crypto_sign, Ed25519 का उपयोग करके डिजिटल हस्ताक्षर लागू करता है। कुंजी निर्माण से 64-बाइट की निजी कुंजी (वास्तव में एक बीज और सार्वजनिक कुंजी को जोड़कर बनाई गई) तथा 32-बाइट की सार्वजनिक कुंजी प्राप्त होती है। हस्ताक्षर करने पर 64-बाइट का हस्ताक्षर बनता है। इसकी पुष्टि तेज़ और नियत-समय वाली होती है। Ed25519 हस्ताक्षर नियतात्मक होते हैं (एक ही संदेश और कुंजी से हमेशा वही हस्ताक्षर बनता है), इसलिए उन यादृच्छिकता-विफलता संबंधी कमजोरियों से बचा जा सकता है जिनसे कुछ कार्यान्वयनों में ECDSA प्रभावित हुआ था।

BLAKE2b से हैश निर्माण

crypto_generichash, BLAKE2b का उपयोग करके सामान्य-उद्देश्य वाला हैश निर्माण प्रदान करता है। SHA-256 के विपरीत, कुंजी-आधारित हैश निर्माण के लिए BLAKE2b को अलग HMAC संरचना की आवश्यकता नहीं होती; इसमें वैकल्पिक कुंजी सीधे दी जा सकती है। परिणाम की लंबाई 16 से 64 बाइट तक निर्धारित की जा सकती है। आधुनिक 64-बिट प्रोसेसरों पर BLAKE2b, SHA-256 और SHA-512 से तेज़ है तथा समान या बेहतर सुरक्षा गुण प्रदान करता है।

BLAKE2b से कुंजी व्युत्पत्ति

crypto_kdf, BLAKE2b का उपयोग करके मास्टर कुंजी से कुंजी व्युत्पन्न करता है। 32-बाइट की मास्टर कुंजी, एक संदर्भ स्ट्रिंग (उद्देश्य की पहचान करने वाली 8-बाइट की स्ट्रिंग) और सबकुंजी ID (64-बिट संख्या) देने पर यह निर्धारित की जा सकने वाली लंबाई की क्रिप्टोग्राफ़िक रूप से स्वतंत्र सबकुंजी बनाता है। इससे अलग-अलग उद्देश्यों के लिए एक ही मास्टर कुंजी से कई स्वतंत्र कुंजियाँ बनाई जा सकती हैं और व्युत्पन्न कुंजियों के बीच कोई संबंध नहीं रहता।

Argon2id से पासवर्ड हैश निर्माण

crypto_pwhash, पासवर्ड हैश निर्माण प्रतियोगिता के विजेता Argon2id का उपयोग करता है। Argon2id, अधिक मेमोरी की आवश्यकता वाली गणना (GPU हमलों का प्रतिरोध) और अधिक समय लेने वाली गणना (ASIC हमलों का प्रतिरोध) को मिलाता है। इसके मापदंडों में संचालन सीमा (समय लागत) और मेमोरी सीमा शामिल हैं, जिन्हें सुरक्षा आवश्यकताओं के अनुसार समायोजित किया जा सकता है। crypto_pwhash_str संग्रहण के लिए उपयुक्त एक मानक स्ट्रिंग बनाता है, जिसमें एल्गोरिदम और उसके मापदंड शामिल होते हैं।

अनाम एन्क्रिप्शन के लिए सीलबंद बॉक्स

crypto_box_seal, प्रेषक की पहचान बताए बिना प्राप्तकर्ता के लिए किसी संदेश को एन्क्रिप्ट करता है। यह एक अस्थायी क्षणिक कुंजी-युग्म बनाता है, प्राप्तकर्ता की सार्वजनिक कुंजी के साथ कुंजी-विनिमय करता है और फिर अस्थायी निजी कुंजी को हटा देता है। प्राप्तकर्ता अपनी निजी कुंजी से संदेश को डिक्रिप्ट कर सकता है, लेकिन प्रेषक की पहचान नहीं कर सकता। यह अनाम सबमिशन प्रणालियों और एकदिश एन्क्रिप्टेड चैनलों के लिए उपयुक्त है।

libsodium की भाषा बाइंडिंग

libsodium की बाइंडिंग लगभग हर प्रमुख प्रोग्रामिंग भाषा में उपलब्ध हैं। PyNaCl, Python की शैली के अनुरूप बाइंडिंग प्रदान करता है, जिनमें Python की विशिष्ट अपवाद-व्यवस्था और बाइट ऑब्जेक्ट शामिल हैं। libsodium-wrappers, JavaScript/Node.js की बाइंडिंग प्रदान करता है (ब्राउज़र के लिए WASM सहित)। libsodium.js, JavaScript में किया गया शुद्ध पोर्ट है। बाइंडिंग की गुणवत्ता अलग-अलग होती है; ऐसी आधिकारिक या व्यापक रूप से अनुरक्षित बाइंडिंग को प्राथमिकता दें जो C लाइब्रेरी को लपेटती हों, न कि एल्गोरिदम को फिर से लागू करती हों।

OpenSSL के निम्न-स्तरीय इंटरफ़ेस से तुलना

OpenSSL के निम्न-स्तरीय इंटरफ़ेस में एल्गोरिदम, कुंजी आकार, मोड, पैडिंग और IV प्रबंधन के बारे में स्पष्ट निर्णय लेने पड़ते हैं। गलत संयोजनों को भी बिना किसी सूचना के स्वीकार कर लिया जाता है। libsodium, हर उपयोग-स्थिति के लिए बिना किसी कॉन्फ़िगरेशन के एक सही कार्यान्वयन प्रदान करता है। उदाहरण के लिए, OpenSSL से एन्क्रिप्शन करते समय सिफर, मोड, कुंजी व्युत्पत्ति, IV निर्माण और पैडिंग चुननी पड़ती है; जबकि libsodium के crypto_secretbox में आप कुंजी, नॉन्स और संदेश देते हैं और बाकी काम सही ढंग से अपने-आप हो जाता है।

नई परियोजनाओं के लिए libsodium चुनना

समर्थित भाषाओं में क्रिप्टोग्राफ़िक संचालन की आवश्यकता वाली किसी भी परियोजना के लिए libsodium अनुशंसित प्रारंभिक विकल्प है। इसका छोटा इंटरफ़ेस गलत उपयोग की संभावना घटाता है, इसके एल्गोरिदम आधुनिक और अच्छी तरह विश्लेषित हैं, तथा इसका बहु-प्लैटफ़ॉर्म C कार्यान्वयन व्यापक रूप से परीक्षणित है। OpenSSL जैसी निम्न-स्तरीय लाइब्रेरी पर जाना केवल तब आवश्यक होना चाहिए जब आपको ऐसे विशिष्ट एल्गोरिदम चाहिए जो libsodium में उपलब्ध नहीं हैं या FIPS 140-2 सत्यापन आवश्यक है।

libsodium के संचालन

डेटाबेस में संग्रहित करने के लिए पासवर्ड का हैश बनाने हेतु आपको libsodium के किस फ़ंक्शन का उपयोग करना चाहिए?

libsodium का पुनरावलोकन

libsodium का पुनरावलोकन: सुरक्षित डिफ़ॉल्ट और ऐसा इंटरफ़ेस जिसका गलत उपयोग करना कठिन है; Bernstein और उनके सहयोगियों के NaCl प्रिमिटिव पर आधारित; गुप्त-कुंजी एन्क्रिप्शन (XSalsa20-Poly1305) के लिए crypto_secretbox; सार्वजनिक-कुंजी एन्क्रिप्शन (X25519) के लिए crypto_box; Ed25519 हस्ताक्षरों के लिए crypto_sign; BLAKE2b हैश निर्माण के लिए crypto_generichash; Argon2id पासवर्ड हैश निर्माण के लिए crypto_pwhash; अनाम एन्क्रिप्शन के लिए सीलबंद बॉक्स; और अधिकांश प्रमुख प्लैटफ़ॉर्म के लिए भाषा बाइंडिंग।

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

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

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

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

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

क्या “libsodium: गलत उपयोग से सुरक्षित क्रिप्टो लाइब्रेरी” पाठ निःशुल्क है?

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

“libsodium: गलत उपयोग से सुरक्षित क्रिप्टो लाइब्रेरी” में मैं क्या सीखूँगा?

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

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

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

“libsodium: गलत उपयोग से सुरक्षित क्रिप्टो लाइब्रेरी” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. libsodium: गलत उपयोग से सुरक्षित क्रिप्टो लाइब्रेरी
  2. OpenSSL API: मूल संरचनाएँ और जोखिम
  3. Google Tink: सुरक्षित उच्च-स्तरीय क्रिप्टो
  4. क्रिप्टोग्राफ़िक निर्भरताओं का ऑडिट और चयन
← Cryptology Academy पर वापस जाएँ