وثائق Shadowsocks

إيد

إيد لتقف على التشفير المصدق مع البيانات المرتبطة. توفر شفرات AEAD في الوقت نفسه السرية والنزاهة والأصالة. لديهم أداء ممتاز وكفاءة الطاقة على الأجهزة الحديثة. يجب على المستخدمين استخدام أصفار AEAD كلما أمكن ذلك.

يوصى باستخدام أصفار AEAD التالية. يجب أن تدعم تطبيقات Shadowsocks المتوافقة AEAD_CHACHA20_POLY1305. يجب أن تنفذ تطبيقات الأجهزة المزودة بتسريع AES للأجهزة أيضًا AEAD_AES_128_GCM و AEAD_AES_256_GCM.

 

 

 

الاسم

الاسم المستعار

حجم المفتاح

حجم الملح

حجم nonce

حجم العلامة

AEAD_CHACHA20_POLY1305

chacha20-ietf-poly1305

32

32

12

16

AED_AES_256_GCM

AES-256-جي سم

32

32

12

16

AED_AES_128_GCM

AES-128-جي سم

16

16

12

16

يرجى الرجوع إلى سجل IANA AEAD لمخطط التسمية والمواصفات.

اشتقاق المفتاح

يمكن إدخال المفتاح الرئيسي مباشرة من المستخدم أو يتم إنشاؤه من كلمة مرور.

HKDF_SHA1 هي وظيفة تأخذ مفتاحًا سريًا ، وملحًا غير سري ، وسلسلة معلومات ، وتنتج مفتاحًا فرعيًا قويًا من الناحية المشفرة حتى لو كان مفتاح الإدخال السري ضعيفًا.

HKDF_SHA1 (مفتاح ، ملح ، معلومات) => مفتاح فرعي

تربط سلسلة المعلومات المفتاح الفرعي الذي تم إنشاؤه بسياق تطبيق معين. في حالتنا ، يجب أن تكون السلسلة "ss-subkey" بدون علامات اقتباس.

نشتق مفتاحًا فرعيًا لكل جلسة من مفتاح رئيسي مشترك مسبقًا باستخدام HKDF_SHA1. يجب أن يكون الملح فريدًا طوال الحياة الكاملة للمفتاح الرئيسي المشترك مسبقًا.

تشفير / فك تشفير مصدق

AE_encrypt هي وظيفة تأخذ مفتاحًا سريًا ، ورسالة غير سرية ، وتنتج نصًا مشفرًا وعلامة مصادقة. يجب أن يكون Nonce فريدًا لمفتاح معين في كل استدعاء.

AE_encrypt (مفتاح ، nonce ، رسالة) => (نص مشفر ، علامة)

 

AE_decrypt هي وظيفة تأخذ مفتاحًا سريًا ، و nonce غير سري ، ونص مشفر ، وعلامة مصادقة ، وتنتج رسالة أصلية. إذا تم العبث بأي من المدخلات ، فسيفشل فك التشفير.

AE_decrypt (مفتاح ، nonce ، نص مشفر ، علامة) => message

TCP

يبدأ تدفق TCP المشفر AEAD بملح تم إنشاؤه عشوائيًا لاشتقاق المفتاح الفرعي لكل جلسة ، متبوعًا بأي عدد من القطع المشفرة. كل قطعة لها الهيكل التالي:

[طول الحمولة المشفرة] [علامة الطول] [الحمولة المشفرة] [علامة الحمولة]

 

طول الحمولة هو عدد صحيح بدون إشارة كبير الحجم مكون من 2 بايت متوجًا عند 0x3FFF. يتم حجز البتتين الأعلى ويجب ضبطهما على الصفر. لذلك فإن الحمولة تقتصر على 16 * 1024 - 1 بايت.

تستخدم أول عملية تشفير / فك تشفير من AEAD عددًا غير معدودًا يبدأ من 0. بعد كل عملية تشفير / فك تشفير ، يتم زيادة قيمة nonce بواحد كما لو كان عددًا صحيحًا صغيرًا بدون إشارة. لاحظ أن كل مقطع TCP يتضمن عمليتي تشفير / فك تشفير AEAD: واحدة لطول الحمولة ، والأخرى للحمولة. لذلك فإن كل قطعة تزيد من عدد مرات الظهور مرتين.

TCP

يبدأ تدفق TCP المشفر AEAD بملح تم إنشاؤه عشوائيًا لاشتقاق المفتاح الفرعي لكل جلسة ، متبوعًا بأي عدد من القطع المشفرة. كل قطعة لها الهيكل التالي:

[طول الحمولة المشفرة] [علامة الطول] [الحمولة المشفرة] [علامة الحمولة]

 

طول الحمولة هو عدد صحيح بدون إشارة كبير الحجم مكون من 2 بايت متوجًا عند 0x3FFF. يتم حجز البتتين الأعلى ويجب ضبطهما على الصفر. لذلك فإن الحمولة تقتصر على 16 * 1024 - 1 بايت.

تستخدم أول عملية تشفير / فك تشفير من AEAD عددًا غير معدودًا يبدأ من 0. بعد كل عملية تشفير / فك تشفير ، يتم زيادة قيمة nonce بواحد كما لو كان عددًا صحيحًا صغيرًا بدون إشارة. لاحظ أن كل مقطع TCP يتضمن عمليتي تشفير / فك تشفير AEAD: واحدة لطول الحمولة ، والأخرى للحمولة. لذلك فإن كل قطعة تزيد من عدد مرات الظهور مرتين.

ابدأ تجربتك المجانية لمدة 5 أيام