خيارات رسائل بناء النفق

Proposal 143
مرفوض
Author zzz
Created 2018-01-14
Last Updated 2022-01-28

ملاحظة

لم يتم تنفيذ هذا الاقتراح كما هو محدد، ومع ذلك، تم تصميم رسائل البناء الطويلة والقصيرة ل ECIES (الاقتراحات 152 و 157) بحقول خيارات قابلة للتمديد. انظر مواصفة Tunnel Creation ECIES للمواصفة الرسمية.

نظرة عامة

إضافة آلية مرنة وقابلة للتمديد للخيارات في سجلات بناء I2NP Tunnel والتي تحتوي عليها رسائل بناء النفق والرد على بناء النفق.

الدافع

هناك بعض الاقتراحات المؤقتة الغير موثقة التي يتم تقديمها لتعيين الخيارات أو التكوين في رسالة بناء النفق، بحيث يمكن لمنشئ النفق تمرير بعض المعلمات إلى كل مرحلة من مراحل النفق.

هناك 29 بايت احتياطي في TBM. نرغب في الحفاظ على المرونة للتطويرات المستقبلية، ولكن أيضًا استخدام المساحة بحكمة. سيستخدم بناء “التعيين” على الأقل 6 بايت لكل خيار (“1a=1b;”). يمكن أن يتسبب تحديد المزيد من حقول الخيارات بشكل صارم في مشاكل لاحقًا.

تقترح هذه الوثيقة مخطط تعيين خيارات جديدة ومرنة.

التصميم

نحتاج إلى تمثيل خيار مضغوط ومرن في الوقت نفسه، بحيث يمكننا احتواء خيارات متعددة بأطوال مختلفة في 29 بايت. هذه الخيارات لم يتم تحديدها بعد، وليس من الضروري أن تكون في الوقت الحالي. لا تستخدم بنية “التعيين” (والتي ترمز إلى كائن خصائص Java)، فهي مهدرة جدًا. استخدم رقمًا للإشارة إلى كل خيار وطول، مما ينتج عنه ترميز مضغوط ومرن. يجب تسجيل الخيارات بالرقم في مواصفاتنا، ولكننا سنقوم أيضًا بحجز نطاق للخيارات التجريبية.

المواصفة

مبدئي - يتم وصف عدة بدائل أدناه.

سيكون هذا موجود فقط إذا تم تعيين البتة 5 في الفلاجز (بايت 184) إلى 1.

كل خيار هو رقم وطول خيار مكون من بايتين، يليه عدد بايتات خيار القيمة.

تبدأ الخيارات في البايت 193 وتستمر حتى أكثر شيء آخر هو البايت الأخير 221.

رقم الخيار/الطول:

بايتان. البتات 15-4 هو رقم الخيار ذو 12 بت، من 1 إلى 4095. البتات 3-0 هو عدد بايتات قيمة الخيار التي تلي، 0 إلى 15. الخيار البولياني يمكن أن يكون لديه صفر من بايتات القيمة. سوف نحافظ على سجل لأرقام الخيارات في مواصفاتنا، وسنحدد أيضًا نطاقًا للخيارات التجريبية.

قيمة الخيار هي من 0 إلى 15 بايت، ليتم تفسيرها من قبل ما يحتاج إلى هذا الخيار. يجب تجاهل أرقام الخيارات غير المعروفة.

تنتهي الخيارات برقم خيار/طول 0/0، هذا يعني بايتان 0. يجب ملء ما تبقى من ال 29 بايت، إن وجد، بتعبئة عشوائية، كالمعتاد.

هذا الترميز يعطينا مساحة لـ 14 خيارًا من 0-بايت، أو 9 خيارات 1-بايت، أو 7 خيارات 2-بايت. بديل آخر سيكون استخدام بايت واحد فقط لرقم/طول الخيار، ربما مع 5 بتات لرقم الخيار (بحد أقصى 32) و 3 بتات للطول (بحد أقصى 7). هذا سيزيد السعة إلى 28 خيارًا من 0-بايت، 14 خيارًا من 1-بايت، أو 9 خيارات من 2-بايت. يمكننا أيضًا جعله متغيرًا، حيث يعني رقم الخيار ذو الخمس بتات لـ 31 قراءة 8 بتات أخرى لرقم الخيار.

إذا كان النفق يرد خيارات إلى المنشئ، يمكننا استخدام نفس الصيغة في رسالة الرد على بناء النفق، مسبوقة برقم سحري مكون من عدة بايتات (حيث لا يوجد لدينا بايت علم محدد للإشارة إلى وجود الخيارات). هناك 495 بايت احتياطي في TBRM.

ملاحظات

هذه التغييرات تخص سجلات بناء النفق، ولذلك يمكن استخدامها في جميع أنواع رسائل البناء - طلب بناء النفق، طلب بناء النفق المتغير، الرد على بناء النفق، والرد على بناء النفق المتغير.

الهجرة

تمتلئ المساحة غير المستخدمة في سجلات بناء النفق ببيانات عشوائية وتُهمل حاليًا. يمكن تحويل المساحة لتحتوي على خيارات دون قضايا هجرة. في رسالة البناء، يُشار إلى وجود الخيارات في بايت الفلاجز. في رسالة الرد على البناء، يُشار إلى وجود الخيارات عن طريق رقم سحري مكون من عدة بايتات.