शैडोस्कॉक्स दस्तावेज

एईएडी

एईएडी एसोसिएटेड डेटा के साथ प्रमाणित एन्क्रिप्शन के लिए खड़ा है। AEAD सिफर एक साथ गोपनीयता, अखंडता और प्रामाणिकता प्रदान करते हैं। उनके पास आधुनिक हार्डवेयर पर उत्कृष्ट प्रदर्शन और शक्ति दक्षता है। उपयोगकर्ताओं को जब भी संभव हो एईएडी सिफर का उपयोग करना चाहिए।

निम्नलिखित एईएडी सिफर की सिफारिश की जाती है। अनुरूप शैडोस्क कार्यान्वयन को AEAD_CHACHA20_POLY1305 का समर्थन करना चाहिए। हार्डवेयर एईएस त्वरण वाले उपकरणों के कार्यान्वयन को AEAD_AES_128_GCM और AEAD_AES_256_GCM भी लागू करना चाहिए।

 

 

 

नाम

उर्फ

मुख्य आकार

नमक का आकार

गैर आकार

टैग आकार

AEAD_CHACHA20_POLY1305

चाचा20-आईईटीएफ-पॉली1305

32

32

12

16

AEAD_AES_256_GCM

एईएस-256-जीसीएम

32

32

12

16

AEAD_AES_128_GCM

एईएस-128-जीसीएम

16

16

12

16

को देखें IANA AEAD रजिस्ट्री नामकरण योजना और विशिष्टता के लिए।

कुंजी व्युत्पत्ति

मास्टर कुंजी उपयोगकर्ता द्वारा सीधे इनपुट की जा सकती है या पासवर्ड से उत्पन्न की जा सकती है।

एचकेडीएफ_एसएचए1 एक ऐसा कार्य है जो एक गुप्त कुंजी, एक गैर-गुप्त नमक, एक सूचना स्ट्रिंग लेता है, और एक उपकुंजी उत्पन्न करता है जो क्रिप्टोग्राफ़िक रूप से मजबूत है, भले ही इनपुट गुप्त कुंजी कमजोर हो।

HKDF_SHA1 (कुंजी, नमक, जानकारी) => उपकुंजी

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

हम HKDF_SHA1 का उपयोग करके पूर्व-साझा मास्टर कुंजी से प्रति-सत्र उपकुंजी प्राप्त करते हैं। नमक पूर्व-साझा मास्टर कुंजी के पूरे जीवन के दौरान अद्वितीय होना चाहिए।

प्रमाणित एन्क्रिप्शन / डिक्रिप्शन

AE_encrypt एक ऐसा फ़ंक्शन है जो एक गुप्त कुंजी, एक गैर-गुप्त गैर, एक संदेश लेता है, और सिफरटेक्स्ट और प्रमाणीकरण टैग उत्पन्न करता है। प्रत्येक मंगलाचरण में दी गई कुंजी के लिए गैर अद्वितीय होना चाहिए।

AE_encrypt(की, नॉन, मैसेज) => (सिफरटेक्स्ट, टैग)

 

AE_decrypt एक ऐसा फ़ंक्शन है जो एक गुप्त कुंजी, गैर-गुप्त गैर, सिफरटेक्स्ट, एक प्रमाणीकरण टैग लेता है और एक मूल संदेश उत्पन्न करता है। यदि किसी इनपुट के साथ छेड़छाड़ की जाती है, तो डिक्रिप्शन विफल हो जाएगा।

AE_decrypt (की, नॉन, सिफरटेक्स्ट, टैग) => संदेश

टीसीपी

एक एईएडी एन्क्रिप्टेड टीसीपी स्ट्रीम प्रति-सत्र उपकुंजी प्राप्त करने के लिए यादृच्छिक रूप से जेनरेट किए गए नमक के साथ शुरू होती है, इसके बाद किसी भी संख्या में एन्क्रिप्टेड चंक्स होते हैं। प्रत्येक चंक में निम्नलिखित संरचना होती है:

[एन्क्रिप्टेड पेलोड लंबाई] [लंबाई टैग] [एन्क्रिप्टेड पेलोड] [पेलोड टैग]

 

पेलोड की लंबाई 2x0FFF पर छाया हुआ 3-बाइट बड़ा-एंडियन अहस्ताक्षरित पूर्णांक है। उच्च दो बिट आरक्षित हैं और उन्हें शून्य पर सेट किया जाना चाहिए। इसलिए पेलोड 16*1024 - 1 बाइट तक सीमित है।

पहला AEAD एन्क्रिप्ट/डिक्रिप्ट ऑपरेशन 0 से शुरू होने वाली गिनती नॉन का उपयोग करता है। प्रत्येक एन्क्रिप्ट/डिक्रिप्ट ऑपरेशन के बाद, नॉन को एक से बढ़ा दिया जाता है जैसे कि यह एक अहस्ताक्षरित छोटा-एंडियन पूर्णांक हो। ध्यान दें कि प्रत्येक टीसीपी खंड में दो एईएडी एन्क्रिप्ट/डिक्रिप्ट ऑपरेशन शामिल होते हैं: एक पेलोड लंबाई के लिए, और एक पेलोड के लिए। इसलिए प्रत्येक चंक दो बार नॉन को बढ़ाता है।

टीसीपी

एक एईएडी एन्क्रिप्टेड टीसीपी स्ट्रीम प्रति-सत्र उपकुंजी प्राप्त करने के लिए यादृच्छिक रूप से जेनरेट किए गए नमक के साथ शुरू होती है, इसके बाद किसी भी संख्या में एन्क्रिप्टेड चंक्स होते हैं। प्रत्येक चंक में निम्नलिखित संरचना होती है:

[एन्क्रिप्टेड पेलोड लंबाई] [लंबाई टैग] [एन्क्रिप्टेड पेलोड] [पेलोड टैग]

 

पेलोड की लंबाई 2x0FFF पर छाया हुआ 3-बाइट बड़ा-एंडियन अहस्ताक्षरित पूर्णांक है। उच्च दो बिट आरक्षित हैं और उन्हें शून्य पर सेट किया जाना चाहिए। इसलिए पेलोड 16*1024 - 1 बाइट तक सीमित है।

पहला AEAD एन्क्रिप्ट/डिक्रिप्ट ऑपरेशन 0 से शुरू होने वाली गिनती नॉन का उपयोग करता है। प्रत्येक एन्क्रिप्ट/डिक्रिप्ट ऑपरेशन के बाद, नॉन को एक से बढ़ा दिया जाता है जैसे कि यह एक अहस्ताक्षरित छोटा-एंडियन पूर्णांक हो। ध्यान दें कि प्रत्येक टीसीपी खंड में दो एईएडी एन्क्रिप्ट/डिक्रिप्ट ऑपरेशन शामिल होते हैं: एक पेलोड लंबाई के लिए, और एक पेलोड के लिए। इसलिए प्रत्येक चंक दो बार नॉन को बढ़ाता है।

अपना 5-दिन का निःशुल्क परीक्षण प्रारंभ करें