تم إنشاء هذه الترجمة باستخدام التعلم الآلي وقد لا تكون دقيقة بنسبة 100%. عرض النسخة الإنجليزية

مواصفات رسائل الأنفاق

مواصفات تنسيق رسائل الأنفاق في I2P

نظرة عامة

تحدد هذه الوثيقة تنسيق رسائل tunnel. للحصول على معلومات عامة حول tunnels انظر وثائق tunnel .

معالجة الرسائل المسبقة

بوابة tunnel هي المدخل، أو القفزة الأولى، للـ tunnel. بالنسبة للـ tunnel الصادر، البوابة هي منشئ الـ tunnel. بالنسبة للـ tunnel الوارد، البوابة تقع في الطرف المقابل لمنشئ الـ tunnel.

البوابة تعالج مسبقاً رسائل I2NP عن طريق تجزئتها ودمجها في رسائل tunnel.

بينما رسائل I2NP متغيرة الحجم من 0 إلى حوالي 64 كيلوبايت، فإن رسائل tunnel ثابتة الحجم، حوالي 1 كيلوبايت. الحجم الثابت للرسائل يقيد عدة أنواع من الهجمات التي تكون ممكنة من خلال مراقبة حجم الرسالة.

بعد إنشاء رسائل tunnel، يتم تشفيرها كما هو موضح في وثائق tunnel .

رسالة Tunnel (مشفرة)

هذه محتويات رسالة بيانات tunnel بعد التشفير.

+----+----+----+----+----+----+----+----+
|    Tunnel ID      |       IV          |
+----+----+----+----+                   +
|                                       |
+                   +----+----+----+----+
|                   |                   |
+----+----+----+----+                   +
|                                       |
+           Encrypted Data              +
~                                       ~
|                                       |
+                   +-------------------+
|                   |
+----+----+----+----+

معرف النفق :: TunnelId : 4 بايت. معرف القفزة التالية، غير صفر.

IV :: : 16 بايت. متجه التهيئة.

البيانات المشفرة :: : 1008 بايت. رسالة النفق المشفرة.

الحجم الإجمالي: 1028 بايت

رسالة Tunnel (مفكوكة التشفير)

هذه هي محتويات رسالة بيانات tunnel عند فك تشفيرها.

+----+----+----+----+----+----+----+----+
|    Tunnel ID      |       IV          |
+----+----+----+----+                   +
|                                       |
+                   +----+----+----+----+
|                   |     Checksum      |
+----+----+----+----+----+----+----+----+
|          nonzero padding...           |
~                                       ~
|                                       |
+                                  +----+
|                                  |zero|
+----+----+----+----+----+----+----+----+
|                                       |
|       Delivery Instructions  1        |
~                                       ~
|                                       |
+----+----+----+----+----+----+----+----+
|                                       |
+       I2NP Message Fragment 1         +
|                                       |
~                                       ~
|                                       |
+----+----+----+----+----+----+----+----+
|                                       |
|       Delivery Instructions 2...      |
~                                       ~
|                                       |
+----+----+----+----+----+----+----+----+
|                                       |
+       I2NP Message Fragment 2...      +
|                                       |
~                                       ~
|                                       |
+                   +-------------------+
|                   |
+----+----+----+----+

معرف النفق :: TunnelId : 4 بايت. معرف القفزة التالية، غير صفر.

IV :: : 16 بايت. متجه التهيئة.

Checksum :: : 4 بايت. أول 4 بايتات من hash SHA256 لـ (محتويات الرسالة (بعد البايت الصفري) + IV).

حشو غير صفري :: : 0 أو أكثر من البايتات. بيانات عشوائية غير صفرية للحشو.

صفر :: : 1 بايت. القيمة 0x00.

تعليمات التسليم :: TunnelMessageDeliveryInstructions : الطول متغير ولكنه عادة 7، 39، 43، أو 47 بايت. يشير إلى الجزء والتوجيه للجزء.

جزء الرسالة :: : من 1 إلى 996 بايت، الحد الأقصى الفعلي يعتمد على حجم تعليمات التسليم. رسالة I2NP جزئية أو كاملة.

الحجم الإجمالي: 1028 بايت

ملاحظات

  • الحشو، إن وجد، يجب أن يكون قبل أزواج التعليمات/الرسائل. لا يوجد نص على الحشو في النهاية.
  • المجموع الاختباري لا يغطي الحشو أو البايت الصفري. خذ الرسالة بدءاً من تعليمات التسليم الأولى، واربطها مع IV، وخذ Hash لذلك.

تعليمات تسليم رسائل Tunnel

يتم ترميز التعليمات بواسطة بايت تحكم واحد، يتبعه أي معلومات إضافية ضرورية. البت الأول (البت الأكثر أهمية) في بايت التحكم ذلك يحدد كيفية تفسير باقي الرأس - إذا لم يتم تعيينه، فإن الرسالة إما غير مجزأة أو هذه هي الجزء الأول في الرسالة. إذا تم تعيينه، فهذا جزء تالي.

هذه المواصفة مخصصة لتعليمات التسليم داخل رسائل الأنفاق فقط. لاحظ أن “تعليمات التسليم” تُستخدم أيضاً داخل Garlic Cloves، حيث يكون التنسيق مختلفاً بشكل كبير. انظر وثائق I2NP للتفاصيل. لا تستخدم المواصفة التالية لتعليمات التسليم في Garlic Clove!

تعليمات تسليم الجزء الأول

إذا كان البت الأكثر أهمية (MSB) للبايت الأول يساوي 0، فهذا يعني أن هذه هي جزء رسالة I2NP أولي، أو رسالة I2NP كاملة (غير مجزأة)، والتعليمات هي:

+----+----+----+----+----+----+----+----+
|flag|  Tunnel ID (opt)  |              |
+----+----+----+----+----+              +
|                                       |
+                                       +
|         To Hash (optional)            |
+                                       +
|                                       |
+                        +--------------+
|                        |dly | Message
+----+----+----+----+----+----+----+----+
 ID (opt) |extended opts (opt)|  size   |
+----+----+----+----+----+----+----+----+

flag :: : 1 بايت. ترتيب البت: 76543210 - البت 7: 0 لتحديد جزء أولي أو رسالة غير مجزأة - البتات 6-5: نوع التسليم

- 0x0 = LOCAL
- 0x01 = TUNNEL
- 0x02 = ROUTER
- 0x03 = unused, invalid
- Note: LOCAL is used for inbound tunnels only, unimplemented for outbound tunnels
  • البت 4: هل التأخير مضمن؟ غير مُنفذ، دائماً 0. إذا كان 1، فإن بايت التأخير مُضمن.
    • البت 3: مُجزأ؟ إذا كان 0، الرسالة غير مُجزأة، ما يتبع هو الرسالة الكاملة. إذا كان 1، الرسالة مُجزأة، والتعليمات تحتوي على Message ID.
    • البت 2: خيارات موسعة؟ غير مُنفذ، دائماً 0. إذا كان 1، الخيارات الموسعة مُضمنة.
    • البتات 1-0: محجوزة، يتم تعيينها إلى 0 للتوافق مع الاستخدامات المستقبلية

معرف النفق :: TunnelId : 4 بايتات. اختياري، موجود إذا كان نوع التسليم هو TUNNEL. معرف tunnel الوجهة، غير صفري.

To Hash :: : 32 بايت. اختياري، موجود إذا كان نوع التسليم ROUTER أو TUNNEL. إذا كان ROUTER، فهو SHA256 Hash الخاص بالـ router. إذا كان TUNNEL، فهو SHA256 Hash الخاص بـ gateway router.

التأخير :: : 1 بايت. اختياري، موجود إذا تم تعيين علامة تضمين التأخير. في رسائل tunnel: غير مُنفذ، غير موجود أبداً؛ المواصفة الأصلية: البت 7: النوع (0 = صارم، 1 = عشوائي)، البتات 6-0: أس التأخير (2^القيمة دقائق).

معرف الرسالة :: : 4 بايت. اختياري، موجود إذا كانت هذه الرسالة هي الأولى من 2 أو أكثر من الأجزاء (أي إذا كان بت التجزئة 1). معرف يحدد بشكل فريد جميع الأجزاء كمنتمية لرسالة واحدة (التنفيذ الحالي يستخدم I2NPMessageHeader.msg_id).

الخيارات الموسعة :: : 2 بايت أو أكثر. اختيارية، موجودة إذا تم تعيين علم الخيارات الموسعة. غير مُنفذة، غير موجودة أبداً؛ المواصفة الأصلية: بايت واحد للطول ثم عدد البايتات المقابل.

size :: : 2 بايت. طول الجزء الذي يلي. القيم الصالحة: من 1 إلى حوالي 960 في رسالة tunnel.

الطول الإجمالي: الطول النموذجي هو: - 3 بايت لتسليم LOCAL (رسالة tunnel) - 35 بايت لتسليم ROUTER أو 39 بايت لتسليم TUNNEL (رسالة tunnel غير مجزأة) - 39 بايت لتسليم ROUTER أو 43 بايت لتسليم TUNNEL (الجزء الأول)

تعليمات تسليم الشظايا المتتابعة

إذا كان البت الأكثر أهمية (MSB) من البايت الأول يساوي 1، فهذا يعني أنها جزء تكميلي، والتعليمات هي:

+----+----+----+----+----+----+----+
|frag|     Message ID    |  size   |
+----+----+----+----+----+----+----+

frag :: : 1 بايت. ترتيب البتات: 76543210. ثنائي 1nnnnnnd: - البت 7: 1 للإشارة إلى أن هذا جزء متابع - البتات 6-1: nnnnnn هو رقم الجزء المكون من 6 بتات من 1 إلى 63 - البت 0: d يساوي 1 للإشارة إلى الجزء الأخير، 0 بخلاف ذلك

معرف الرسالة :: : 4 بايت. يحدد تسلسل الجزء الذي ينتمي إليه هذا الجزء. سيطابق هذا معرف الرسالة للجزء الأولي (جزء مع flag bit 7 مضبوط على 0 و flag bit 3 مضبوط على 1).

size :: : 2 بايت. طول الجزء الذي يتبع. القيم الصالحة: من 1 إلى 996.

إجمالي الطول: 7 بايت

ملاحظات

الحد الأقصى لحجم رسالة I2NP

بينما يبلغ الحد الأقصى الاسمي لحجم رسالة I2NP 64 كيلوبايت، يكون الحجم مقيداً أكثر بطريقة تقسيم رسائل I2NP إلى عدة رسائل tunnel بحجم 1 كيلوبايت. الحد الأقصى لعدد الأجزاء هو 64، والجزء الأولي قد لا يكون محاذياً بشكل مثالي في بداية رسالة tunnel. لذلك يجب أن تتسع الرسالة اسمياً في 63 جزءاً.

الحد الأقصى لحجم الجزء الأولي هو 956 بايت (بافتراض وضع التسليم TUNNEL)؛ والحد الأقصى لحجم الجزء التالي هو 996 بايت. لذلك فإن الحد الأقصى للحجم هو تقريباً 956 + (62 * 996) = 62708 بايت، أو 61.2 كيلوبايت.

الترتيب والتجميع والتعبئة

قد يتم إسقاط أو إعادة ترتيب رسائل tunnel. بوابة tunnel، التي تنشئ رسائل tunnel، حرة في تنفيذ أي استراتيجية تجميع أو خلط أو إعادة ترتيب لتقسيم رسائل I2NP وتعبئة الشظايا بكفاءة في رسائل tunnel. بشكل عام، التعبئة المثلى غير ممكنة (“مشكلة التعبئة”). قد تنفذ البوابات استراتيجيات تأخير وإعادة ترتيب متنوعة.

حركة البيانات التمويهية

قد تحتوي رسائل tunnel على الحشو فقط (أي بدون تعليمات التسليم أو أجزاء الرسائل على الإطلاق) لحركة المرور التمويهية. هذا غير مُنفذ.

المراجع

Was this page helpful?