الخلاصة

  • تقترح المراجعة 01 من draft-tiloca-lake-private-use-ranges نطاقات استخدام خاص لثلاثة سجلات EDHOC، بقيم CBOR يبلغ طولها الكلي خمسة بايتات.
  • القيمتان 4294967295 و-4294967296 قابلتان للتمثيل على السلك، لكنهما لا تدخلان في عدد صحيح موقّع ذي 32 بت.
  • الاستخدام الخاص ينسق المعنى داخل نطاق محلي ولا يمنح رقماً عالمياً؛ كما أن التوثيق لا يثبت اتفاق الدلالة أو نجاح فعل التطبيق.

لنفترض أن جهازاً أرسل رمز خطأ خاصاً قيمته 4294967295. أعاد مفكك CBOR العدد الصحيح، ثم حوّلته واجهة قديمة إلى -1. إذا كان للرقم -1 مسار معالجة محلي، فلن يظهر العطل كفيض واضح، بل كقرار عادي مبني على رقم لم يُرسل أصلاً.

تجعل مسودة Additional Private Use Ranges in the IANA Registries of the Lightweight Authenticated Key Exchange Protocol هذا الحد صريحاً. فهي تقترح نطاقات خاصة لأنواع الطريقة ورموز الخطأ وتسميات بيانات التفويض الخارجية، وتحافظ على النطاقات القصيرة الحالية بوضع القيم الجديدة في أعداد CBOR ذات وسيطة من أربعة بايتات. ومع البايت الأول يصبح الطول خمسة.

طول الوسيطة ليس طول نوع التطبيق

يعرّف RFC 8949 النوع الرئيسي 0 بوصفه N، والنوع الرئيسي 1 بوصفه -1-N. أكبر وسيطة من أربعة بايتات هي 4294967295؛ لذا يصل الطرف الموجب إلى هذا الرقم والطرف السالب إلى -4294967296. كلاهما خارج مجال العدد الموقّع ذي 32 بت.

تحتاج المطابقة الكاملة إلى تمثيل أوسع، مثل عدد موقّع ذي 64 بت أو فصل الإشارة عن المقدار غير الموقّع. ويجب أن يبقى الاتساع في جدول التوزيع والتخزين والسجلات والقياسات، لا في المفكك وحده. محلل واسع يتبعه enum ضيق لا يحل المشكلة.

إشارة EAD قاعدة تحكم

يسجل RFC 9528 القيمة المطلقة لـ ead_label، لكنه يجعل التسمية السالبة حرجة وغير السالبة غير حرجة. وهكذا تشير 65536 و-65536 إلى العنصر الخاص نفسه، لكن رد المتلقي الذي لا يفهمه يجب أن يختلف.

وهناك حد مفيد للاختبار: تحتاج 65536 الموجبة إلى خمسة بايتات، بينما تمثل -65536 بالوسيطة 65535 وتحتاج إلى ثلاثة فقط. التطبيع المبكر يمحو الإشارة. وأخذ القيمة المطلقة بعد تضييق الحد السالب قد يكون غير ممكن. لذلك يجب أن يحتفظ الإيصال بالتسمية الموقّعة والمفتاح المطلق وقرار الحرَجية كحقول مستقلة.

الرقم الخاص يحتاج إلى نطاقه

لا يعد RFC 8126 بالتشغيل البيني العام لقيم Private Use، ولا يمنع جهتين من استعمال الرقم نفسه بمعنيين مختلفين. هذا مناسب للتجارب والأنظمة المغلقة، لكنه يصنع تصادماً عند الدمج أو المرور عبر بوابة مشتركة.

لا تكفي قيمة مثل 70000. يلزم معها معرف مجال التخصيص وإصدار الملف ومجموعة التوافق. قد يكون مصنعان صحيحين كل داخل نظامه، ثم يختلفان تماماً عند الاتصال. رفض مجال مجهول مع تفسير واضح أفضل من تخمين معنى الرقم.

ثلاث سجلات وثلاث نتائج محتملة

يختار Method Type بنية توثيق، ويوجه Error Code تفسير الفشل، بينما تختار تسمية EAD بيانات تطبيق معتمة وتحمل الحرَجية في إشارتها. لذلك قد ينتج عن التضييق نفسه اختيار طريقة خاطئة أو تعافٍ خاطئ أو استمرار في موضع كان يجب التوقف فيه.

لا تدّعي المسودة وجود ثغرة أو حادث أو نشر فعلي. بل تقول إن اعتبارات أمن EDHOC القائمة تظل سارية. حدها العملي أضيق: من يدّعي دعم النطاق كاملاً يجب أن يحافظ على كل قيمه.

اختبار الحدود وإيصال القرار

ينبغي اختبار 65535/65536 و4294967295 و-65536/-65537 و-4294967296 والقيم خارج كل حد. يجب إرسال EAD بإشارة موجبة وسالبة، وتجربة ملفين خاصين يمنحان الرقم نفسه معنيين مختلفين. ويجب فحص البايتات والعدد الرياضي والتحويل والنطاق والمعالج والحرَجية والسجل ورفض الملف، لا نجاح الجلسة وحده.

يمثل سجل IANA لـ EDHOC خط الأساس الحالي. ويصنف Datatracker المراجعة 01 كمسودة فردية، لا كتخصيص منفذ أو توافق IETF أو نشر. كما أن نطاقات خاصة مجاورة في RFC 9668 لا تثبت سلامة مسارات التنفيذ الجديدة.

يحتفظ الإيصال بالسجل المقصود وبايتات CBOR والنوع الرئيسي وعرض الوسيطة والعدد قبل التضييق وكل تحويل متحقق منه وثلاثية EAD (الإشارة والمطلق والحرَجية) ومجال الاستخدام الخاص وإصداره وملفات الطرفين والمعالج المختار ومرجع transcript والنتيجة النهائية. ويمكن تمثيل المعنى المملوك ببصمة ملف بدلاً من كشفه.

المصادر