الخلاصة
- يسمح RFC 8879 لطرف TLS 1.3 بإرسال
CompressedCertificateبدلاً من Certificate بعد أن يعلن المستقبل خوارزميات فك الضغط المقبولة. الإعلان إذن بتمثيل محدد، لا دليل على استعماله ولا تفويض بموارد غير محدودة. - يجب أن يطابق
uncompressed_lengthطول الرسالة المعاد بناؤها تماماً، وألا يتجاوز الخرج ذلك الرقم. يستطيع المستقبل وضع حد محلي أدنى من سقف TLS ذي 24 بت قبل أن تتمكن الشهادة من إثبات هوية النظير. - نجاح فك الضغط ليس نجاح التحقق. يفصل سجل الإثبات بين العرض والخوارزمية المختارة والبايتات المضغوطة والطول المعلن والفعلي وبصمة الرسالة المعادة والسلسلة ونتيجة الثقة والتنبيه والمسار البديل ونتيجة النقل.
القرار الأول يتعلق بالموارد
لنتصور طرف إنهاء TLS يتلقى آلاف الاتصالات الجديدة. أعلن العميل zlib وBrotli وZstandard في ClientHello. اختار الخادم Brotli وأرسل حمولة صغيرة تعلن أن Certificate الأصلية تبلغ اثني عشر ميغابايت.
ما زالت الهوية المحتملة داخل الحمولة. لا يستطيع العميل استخدام المرجع المصدق أو الاسم أو المفتاح العام لتبرير التخصيص الأول. عليه أولاً التأكد من أنه عرض الخوارزمية، ثم تطبيق حد Certificate العادي نفسه، ومنع decoder من تجاوز القيمة، ورفض أي اختلاف في الطول النهائي.
يحفظ هذا الترتيب سلطة المستقبل. يختار المرسل تمثيلاً من القائمة المسموحة، لكن المستقبل يحدد التحويلات التي يشغلها والعمل الذي يقبله من اتصال لم يُوثق بعد. إعلان دعم Brotli لا يسلم إدارة الذاكرة للخادم.
يسمح تأطير TLS بما يصل إلى 16,777,215 بايت، إلا أن RFC 8879 يجيز حداً أدنى. يجب تطبيق الحد نفسه على الطريق المضغوط والعادي. لا ينبغي لرسالة كبيرة مرفوضة في صورتها العادية أن تتجاوز السياسة لأنها وصلت داخل غلاف صغير.
العرض والاختيار والنجاح وقائع مستقلة
إشارة compress_certificate أحادية الاتجاه. يضعها العميل في ClientHello ليحدد ما يستطيع فكّه من شهادة الخادم. ويضعها الخادم في CertificateRequest ليحدد ما يقبله من شهادة العميل. لا توجد استجابة مقابلة تؤكد الإشارة.
قد يختار المرسل خوارزمية معروضة أو يرسل Certificate العادية. ظهور extension 27 في الالتقاط لا يثبت ظهور الرسالة 25 لاحقاً. عداد العروض يقيس قدرة معلنة؛ وعدّ الاختيارات لا يثبت إعادة البناء أو التحقق.
الاتجاهان غير متماثلين بالضرورة. قدرة العميل على استقبال شهادة خادم مضغوطة لا تعني أنه يستطيع ضغط شهادته. قد تفعّل نسخة المكتبة الاستقبال دون الإرسال أو تستخدم مجموعات مختلفة.
تعمل الآلية مع TLS 1.3 وما بعده، وتُهمل مع TLS 1.2. وهي ليست ضغط سجلات TLS العام المرتبط تاريخياً بهجوم CRIME. التحويل هنا يقتصر على رسالة مصافحة واحدة، ثم يعود التحقق العادي.
الكائن المضغوط هو الرسالة المشفرة كاملة
المدخل ليس ملفات PEM منفصلة ولا شهادات X.509 مفردة. إنه رسالة Certificate التي كانت ستُرسل، بما فيها request context وقائمة الشهادات وextensions كل مدخل. إذا غير extension آخر الرسالة، تدخل تلك البايتات أيضاً في الضغط.
لذلك يلزم مستويان من البصمات. الأول يحدد الخوارزمية والرأس والحمولة المستلمة. والثاني يحدد Certificate المعاد بناؤها بدقة. بعد ذلك تحدد بصمات الشهادة الطرفية والوسطاء ما فحصه مسار الثقة.
تنتج الخوارزميات تمثيلات مختلفة للمدخل نفسه، وقد تغير ترقية المكتبة البايتات المضغوطة مع بقاء الخرج مطابقاً. بصمة الحمولة وحدها لا تثبت هوية منطقية مشتركة بين zlib وBrotli وZstandard والطريق غير المضغوط.
وينطبق الأمر على الضغط المسبق. يوثق OpenSSL إمكان تخزين شهادات الخادم المضغوطة، بينما تُضغط شهادة العميل عند الطلب بسبب context الفريد. يجب ربط cache الخادم بالرسالة كاملة؛ فتغيير السلسلة أو الوسيط أو extension يبطل الربط القديم.
الطول بوابة سلامة لا مقياس أداء
فشل decoder أو تجاوزه القيمة أو اختلاف طول الخرج يؤدي إلى bad_certificate. يجب فرض الحد أثناء الإنتاج، لا بعد استهلاك الذاكرة.
يساعد الحقل على الرفض المبكر، لكنه لا يوثق المرسل ولا يضمن صحة البنية. قد يكون رقم مسموح بروتوكولياً أكبر من قدرة خدمة عالية التوازي. يستند الحد المحلي إلى قياسات الذاكرة والمعالج والاتصالات المتزامنة.
ولا يشترط أن يصبح الخرج أصغر. تختبر BoringSSL تحويلات تقلص البيانات وتوسعها وتنتج بيانات عشوائية. الصلاحية هي إعادة البناء الدقيقة داخل الحد؛ أما نسبة الضغط فنتيجة تشغيلية.
يجب تسجيل الطول المعلن والفعلي وذروة التخصيص ووقت الفك وفئة الخطأ. قد تخفي نسبة ممتازة ضغطاً على الموارد، وقد توفر نسبة متواضعة packet حاسماً. النسبة وحدها لا تثبت الأمان أو السرعة.
بعد فك الضغط يبدأ حكم الثقة
تُعامل Certificate المعادة كما لو وصلت بلا ضغط: parsing وبناء السلسلة وفحص الاسم والزمن والسياسة المحلية ثم CertificateVerify في transcript الخاص بـTLS 1.3. لا يصلح الضغط مرجعاً مجهولاً أو توقيعاً خاطئاً.
يجب فصل أسباب الفشل. خوارزمية غير معروضة تعني تفاوضاً فاشلاً؛ التجاوز أو خطأ decoder أو اختلاف الطول فشل إعادة بناء؛ البنية الخاطئة فشل parsing؛ الاسم أو السلسلة فشل validation؛ وCertificateVerify فشل مصادقة المصافحة.
جمعها في certificate_error يمحو موضع القرار. واعتبار decompression_success نجاحاً أمنياً يسبق الدليل: لم تثبت الهوية المتوقعة ولا حيازة المفتاح ولا صلاحية التطبيق.
يوضح الكود الجاري الترتيب. تبني BoringSSL رسالة Certificate العادية وتحفظ طولها ثم تستدعي callback وتغلف الناتج؛ وتختبر الحالات الشاذة. يفصل OpenSSL بين الإرسال والاستقبال والتفضيل والضغط المسبق. تسجيل IANA والكود المتاح والإعداد المنتج ثلاث طبقات إثبات.
لا قيمة لتوفير البايتات دون النتيجة الكاملة
تشغل السلسلة غالباً معظم المصافحة الأولى، وقد يقلل الضغط packets أو يتجنب round trip. يتوقف ذلك على السلسلة والازدحام والفقد والمعالج وcache والخوارزمية المشتركة. حجم PEM على القرص ليس حجم Certificate المشفرة على السلك.
يربط القياس العرض والاتجاه والخوارزمية والأحجام وrecords وpackets وإعادة الإرسال والمعالج والذاكرة والتحقق والزمن النهائي. ويقارن بمسار يستخدم الهوية والسياسة نفسيهما بلا ضغط.
عند غياب خوارزمية مشتركة تكون Certificate العادية مساراً بديلاً مشروعاً. ارتفاعه قد يعني تغير العملاء أو build بلا decoder أو انتقال نقطة إنهاء TLS. إذا حافظ المساران على الحد والتحقق نفسيهما، تغير التمثيل ولم تنخفض الثقة.
المصادر
- RFC 8879 — ضغط شهادات TLS
- RFC 8446 — TLS 1.3
- RFC 9325 — الاستخدام الآمن لـTLS وDTLS
- IANA — امتدادات TLS ومعرفات الضغط
- RFC 1950 — صيغة ZLIB
- RFC 7932 — صيغة Brotli
- RFC 8478 — ضغط Zstandard
- OpenSSL — وظائف ضغط الشهادات
- OpenSSL — خيارات الإرسال والاستقبال
- BoringSSL — تنفيذ رسائل TLS 1.3
- BoringSSL — اختبارات ضغط الشهادات
- Heng Lu — أولوية الكود الجاري
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
