Shadowsocks कागजात

AEAD

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

निम्न AEAD सिफरहरू सिफारिस गरिएका छन्। अनुरूप Shadowsocks कार्यान्वयनहरूले AEAD_CHACHA20_POLY1305 लाई समर्थन गर्नुपर्छ। हार्डवेयर AES एक्सेलेरेशन भएका यन्त्रहरूका लागि कार्यान्वयनहरूले AEAD_AES_128_GCM र AEAD_AES_256_GCM पनि लागू गर्नुपर्छ।

 

 

 

नाम

उपनाम

कुञ्जी आकार

नुन आकार

नन्स साइज

ट्याग आकार

AEAD_CHACHA20_POLY1305

chacha20-ietf-poly1305

32

32

12

16

AEAD_AES_256_GCM

aes-256-gcm

32

32

12

16

AEAD_AES_128_GCM

aes-128-gcm

16

16

12

16

कृपया उल्लेख गर्नुहोस् IANA AEAD रजिस्ट्री नामकरण योजना र विशिष्टताको लागि।

कुञ्जी व्युत्पन्न

मास्टर कुञ्जी प्रयोगकर्ताबाट सीधा इनपुट वा पासवर्डबाट उत्पन्न हुन सक्छ।

HKDF_SHA1 एउटा प्रकार्य हो जसले गोप्य कुञ्जी, गैर-गोप्य नुन, जानकारी स्ट्रिङ लिन्छ, र इनपुट गोप्य कुञ्जी कमजोर भए पनि क्रिप्टोग्राफिक रूपमा बलियो उपकुञ्जी उत्पादन गर्छ।

HKDF_SHA1(कुञ्जी, नुन, जानकारी) => उपकुञ्जी

जानकारी स्ट्रिङले उत्पन्न उपकुञ्जीलाई विशेष अनुप्रयोग सन्दर्भमा बाँध्छ। हाम्रो अवस्थामा, यो उद्धरण बिना स्ट्रिङ "ss-subkey" हुनुपर्छ।

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

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

AE_encrypt एउटा प्रकार्य हो जसले गोप्य कुञ्जी, गैर-गोपनीय नोन्स, सन्देश लिन्छ, र सिफरटेक्स्ट र प्रमाणीकरण ट्याग उत्पादन गर्दछ। प्रत्येक आह्वानमा दिइएको कुञ्जीको लागि Nonce अद्वितीय हुनुपर्छ।

AE_encrypt(कुञ्जी, nonce, सन्देश) => (सिफरटेक्स्ट, ट्याग)

 

AE_decrypt एउटा प्रकार्य हो जसले गोप्य कुञ्जी, गैर-गोपनीय नोन्स, सिफरटेक्स्ट, एक प्रमाणीकरण ट्याग लिन्छ, र मौलिक सन्देश उत्पादन गर्दछ। यदि कुनै पनि इनपुटसँग छेडछाड गरिएको छ भने, डिक्रिप्शन असफल हुनेछ।

AE_decrypt(कुञ्जी, nonce, ciphertext, ट्याग) => सन्देश

टीसीपी

एउटा AEAD इन्क्रिप्टेड TCP स्ट्रिम प्रति-सत्र उपकुञ्जी प्राप्त गर्न अनियमित रूपमा उत्पन्न नुनबाट सुरु हुन्छ, त्यसपछि कुनै पनि सङ्ख्यामा इन्क्रिप्टेड खण्डहरू हुन्छन्। प्रत्येक टुक्रामा निम्न संरचना छ:

[इन्क्रिप्टेड पेलोड लम्बाइ][लम्बाइ ट्याग][इन्क्रिप्टेड पेलोड][पेलोड ट्याग]

 

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

पहिलो AEAD इन्क्रिप्ट/डिक्रिप्ट अपरेसनले ० बाट सुरु हुने काउन्टिंग नोन्स प्रयोग गर्दछ। प्रत्येक इन्क्रिप्ट/डिक्रिप्ट अपरेसन पछि, नोन्सलाई एकद्वारा बढाइन्छ मानौं यो एक हस्ताक्षर नगरिएको सानो-एन्डियन पूर्णांक हो। नोट गर्नुहोस् कि प्रत्येक TCP खण्डमा दुई AEAD इन्क्रिप्ट/डिक्रिप्ट कार्यहरू समावेश हुन्छन्: एउटा पेलोड लम्बाइको लागि, र अर्को पेलोडको लागि। त्यसैले प्रत्येक टुक्राले नन्सलाई दुई पटक बढाउँछ।

टीसीपी

एउटा AEAD इन्क्रिप्टेड TCP स्ट्रिम प्रति-सत्र उपकुञ्जी प्राप्त गर्न अनियमित रूपमा उत्पन्न नुनबाट सुरु हुन्छ, त्यसपछि कुनै पनि सङ्ख्यामा इन्क्रिप्टेड खण्डहरू हुन्छन्। प्रत्येक टुक्रामा निम्न संरचना छ:

[इन्क्रिप्टेड पेलोड लम्बाइ][लम्बाइ ट्याग][इन्क्रिप्टेड पेलोड][पेलोड ट्याग]

 

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

पहिलो AEAD इन्क्रिप्ट/डिक्रिप्ट अपरेसनले ० बाट सुरु हुने काउन्टिंग नोन्स प्रयोग गर्दछ। प्रत्येक इन्क्रिप्ट/डिक्रिप्ट अपरेसन पछि, नोन्सलाई एकद्वारा बढाइन्छ मानौं यो एक हस्ताक्षर नगरिएको सानो-एन्डियन पूर्णांक हो। नोट गर्नुहोस् कि प्रत्येक TCP खण्डमा दुई AEAD इन्क्रिप्ट/डिक्रिप्ट कार्यहरू समावेश हुन्छन्: एउटा पेलोड लम्बाइको लागि, र अर्को पेलोडको लागि। त्यसैले प्रत्येक टुक्राले नन्सलाई दुई पटक बढाउँछ।

तपाईंको 5-दिनको नि:शुल्क परीक्षण सुरु गर्नुहोस्