الخلاصة

  • يحمل حقل Packet Number من 1 إلى 4 بايتات من البتات الدنيا، وهو محمي بواسطة header protection.
  • يعيد المستقبل بناء مرشح قريب من الرقم المتوقع اعتماداً على أكبر رقم عولج بنجاح في المساحة نفسها.
  • لا يثبت تكرار البتات الدنيا أو الفجوة أو الالتفاف أو فشل فك التشفير وحده فقداً أو هجوماً أو أثراً تطبيقياً.

تدفع اللقطة السلبية أحياناً إلى استنتاج أسرع من الدليل. فقد يرى المحلل قيمة تبدو 16 بت مرتين فيسميها إعادة، أو يرى قفزة رقمية فيعلن فقد ملايين الحزم. يضع RFC 9000 وRFC 9001 حداً أوضح: يجب الفصل بين البايتات المحمية على السلك، والقيمة المقتطعة بعد إزالة header protection، والرقم الكامل الذي يعيد المستقبل بناءه. رقم QUIC الكامل عدد صحيح من 0 إلى 2^62-1، لكن حقل Packet Number في long header أو short header لا يحمل إلا 1 إلى 4 بايتات من البتات الأقل أهمية. كما أن طول الحقل محمي.

لا توجد هنا سلسلة عالمية للاتصال. توجد ثلاث packet-number spaces: Initial وHandshake وapplication data، وتشمل الأخيرة 0-RTT و1-RTT. تبدأ كل مساحة من الصفر. كما يحتفظ كل طرف بأرقام إرسال واستقبال مستقلة بحسب الاتجاه. لذلك يمكن للعدد نفسه أن يخص حزم مختلفة. ولا تحمل حزم Retry وVersion Negotiation رقم Packet Number، ولا تؤكدها ACK العادية.

يعتمد اختيار المرسل على الحالة. قبل تلقي ACK في مساحة معينة، يستخدم الرقم الكامل. بعد ذلك يختار من البتات ما يغطي أكثر من ضعف الفرق بين الرقم المرسل وLargest Acknowledged. أمثلة RFC توضح الخوارزمية، لكنها ليست حدوداً زمنية تشغيلية ولا ضماناً بأن كل حزمة متأخرة ستفك بصورة صحيحة.

يبدأ المستقبل بإزالة header protection. عندها فقط يعرف القيمة المقتطعة الصافية وطولها. تستخدم خوارزمية الإعادة ثلاثة مدخلات: أكبر Packet Number عولج بنجاح في المساحة الحالية، والقيمة المقتطعة، وطول الحقل. الرقم المتوقع التالي هو أكبر رقم ناجح زائد واحد. ثم يختار المستقبل، داخل نافذة الترميز، المرشح الأقرب إلى ذلك التوقع. لا يستطيع مراقب خارجي استنتاج هذه النافذة من البايتات وحدها.

قد تصل حزمة بعد وصول أرقام أعلى بكثير، فتقترب بتاتها الدنيا من مرشح غير مقصود. لذلك لا يعني فشل deprotection أو المصادقة وحده خطأ من النظير أو هجوماً. يدخل الرقم المعاد بناؤه في nonce الخاص بـ AEAD؛ وعند إزالة packet protection تُصادق الترويسة غير المحمية حتى Packet Number بوصفها associated data. التخمين خارج هذه العملية ليس فكاً موثقاً.

أما Largest Acknowledged فهو عدد صحيح كامل بطول متغير، وليس قيمة ترويسة مقتطعة محمية. وتصف ACK ranges الحزم التي استقبلت وعولجت داخل packet-number space للحزمة التي تحمل ACK. يمكنها تثبيت حقيقة موثقة لدى الطرف، لكنها لا تملأ فجوات الالتقاط لاحقاً ولا تنتقل إلى مساحة أخرى. ولا تتم معالجة التكرار إلا بعد إزالة الحماية واستعادة الرقم ومصادقته؛ تشابه البتات الدنيا ليس دليلاً كافياً على تكرار.

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

هذا التحليل ليس تحليلاً لـ spin bit في TR-038، ولا لـ key phase في TR-042، ولا لمعنى ACK عند التطبيق في TR-045، ولا لتجميع الحزم في TR-049، ولا لاستطلاع PTO في TR-051. موضوعه هو إعادة بناء الرقم المحمي داخل سياقه الصحيح.