الخلاصة

  • يتكون امتداد X.509 v3 من معرّف OID وقيمة منطقية critical افتراضها خطأ وقيمة مرمّزة، ويشمل التوقيع هذا الاختيار كله.
  • يجب رفض الامتداد الحرج إذا كان مجهولاً أو تعذر معالجته. ويمكن تجاهل غير الحرج إذا كان مجهولاً، أما إذا عُرف فيجب معالجته.
  • لا تقيس الحرَجية الأولوية أو الحقيقة ولا تقوّي التوقيع؛ بل تحدد هل يملك المدقق غير القادر على تنفيذ المعنى حق القبول.

كانت للشهادة القديمة سبعة مواضع للكلام

وصف RFC 1422 عام 1993 شهادة بيئة PEM في سبعة مكونات رئيسية: الإصدار، والرقم التسلسلي، والتوقيع، والجهة المصدرة، وفترة الصلاحية، وصاحب الشهادة، ومفتاحه العام. كان ذلك امتداداً لشكل X.509 لعام 1988. ينقل الشكل رابطة الاسم بالمفتاح، لكنه لا يحجز مكاناً عاماً لكل هوية بديلة أو غرض مفتاح أو سياسة أو حد تفويض سيظهر لاحقاً.

أضاف X.509 v3 سلسلة من الامتدادات. وحين نشر RFC 2459 أول ملف تعريف لإنترنت PKI عام 1999، أمكنه تحديد امتدادات مشتركة وترك مجال لمعرّفات تنشئها منظمات أخرى. ثبت الغلاف، وصارت المعاني قابلة للنمو.

لكن النمو خلق مشكلة لدى الطرف المعتمد. لا يعرف البرنامج القديم OID وُلد بعد إصداره. إذا رفض كل مجهول تعطلت الإضافة. وإذا تجاهل كل مجهول، اختفى قيد موقّع أمام الطرف الأقل قدرة على تنفيذه.

كانت العلامة نتيجة لغياب القدرة لا رتبة للأهمية

يعرّف RFC 5280 Extension بثلاثة عناصر. يسمّي extnID المعنى عبر OID، وتحمل extnValue ترميز DER للقيمة الخاصة بالامتداد، وتحدد critical، وافتراضها FALSE، ما يحدث حين لا يتوفر الفهم.

إذا واجه نظام يستخدم الشهادات امتداداً حرجاً لا يتعرف إليه، فعليه رفض الشهادة. وينطبق الرفض إذا عرف النوع لكنه لم يستطع معالجة المعلومات. يجوز تجاهل امتداد غير حرج مجهول. غير أن كلمة «غير حرج» لا تجعل الامتداد المعروف اختيارياً؛ متى عرفه المدقق وجب أن يعالجه.

لا تعني critical «عالجني أولاً»، ولا تمنح ثقة أعلى. لا تغيّر خوارزمية التوقيع ولا تثبت أن تحقيق CA كان صحيحاً. تقول فقط إن نجاح التحقق غير مسموح من دون تطبيق هذه الدلالة.

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

كان تجاهل بعض الحقول يوسّع السلطة

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

في شهادة CA يُستخدم مفتاحها للتحقق من توقيعات شهادات أخرى، يجب أن يظهر basicConstraints بوصفه امتداداً حرجاً. يحدد cA هل يجوز للمفتاح إصدار الشهادات، وقد يحد طول المسار من عمق التفويض. تجاهله لا يسقط وصفاً ثانوياً؛ بل قد يمحو حداً للسلطة.

يقيد nameConstraints فضاءات الأسماء التي تستطيع الشهادات اللاحقة استخدامها، ويجب على CA المتوافقة جعله حرجاً. لا ينبغي لجهة وسيطة محصورة في نطاقات معينة أن تبدو عامة أمام برنامج لا يفهم القيد. وكذلك قيود السياسة وinhibitAnyPolicy، فوظيفتها تقليص ما يستطيع المسار حمله.

وتبقى امتدادات أخرى غير حرجة عمداً. قد يساعد معرّف أو موقع في بناء المسار من دون أن يغير أصل السلطة إذا جُهل. لذلك لا تكون TRUE دائماً الخيار «الأكثر أماناً»؛ يقرر ملف كل امتداد إن كان الاستخدام الصحيح يبقى ممكناً من دون معناه.

جعلت شهادات موارد الإنترنت الفهم إلزامياً، وحمت TLS التوافق القديم

عرّف RFC 3779 امتدادات لكتل عناوين IP ومعرّفات الأنظمة المستقلة، وأوصى بأن تكون حرجة. فالطرف الذي يستخدم شهادة الموارد يجب أن يفهم أي موارد يشملها حق الاستخدام. التحقق من التوقيع مع إسقاط نطاق العناوين أو ASN لا يجيب عن الغرض الذي صدرت له الشهادة.

اختار RFC 7633 افتراضاً مختلفاً لامتداد TLS Feature. أوصى بألا يكون حرجاً لأن المدققات القديمة سترفض الشهادة كلها. يصبح جعله حرجاً مناسباً فقط عندما يكون استبعاد تلك البرامج هو السلوك المقصود.

الخياران يوزعان كلفة واحدة. غير الحرج يحافظ على الوصول إلى البرامج القديمة، لكنه لا يضمن أنها نفذت القاعدة الجديدة. والحرج يحافظ على إلزام المعنى، لكنه يخرج البرامج غير القادرة. لم تُلغ العلامة كلفة الانتقال؛ جعلتها مرئية.

نفّذ المدقق العامل الرفض الذي وصفته الوثيقة

أدخل RFC 3280 معالجة الامتدادات في خوارزمية مفصلة للتحقق من مسار الشهادات. وحافظ RFC 5280 على النتيجة: يجب التعرف إلى كل امتداد حرج قابل للتطبيق ومعالجته، ويُنهي الفشل المسار.

تستطيع جهة معيارية نشر OID، وتستطيع CA توقيع القيمة، لكن ذلك لا يثبت القدرة داخل النظام المعتمد. لا يصبح الحكم واقعاً محلياً إلا حين يتعرف إليه كود يعمل، ويفك ترميزه، ويفحصه، ويرفض عند اللزوم. السجل يصف العقد المشترك ولا يخلق التبني تلقائياً.

أكد RFC 9618 هذا الحد عام 2024. يمكن لتطبيق لا يحتاج تحقق السياسات أن يعطل تلك الوظيفة. لكنه إذا واجه امتدادات سياسة حرجة، فعليه معاملتها كمجهولة ورفض المسار. يجوز الاعتراف بعدم امتلاك القدرة، ولا يجوز تقليد نتيجة تنفيذها.

لم يكن نجاح المسار تفويضاً بلا حدود

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

قد يكون OID معروفاً وقيمته تالفة، أو تكون القيمة سليمة لكنها تخالف قيداً. وقد تبني الشهادة النهائية مسارات متعددة بجهات وسيطة وحدود مختلفة. تمنع الحرَجية الصمت أمام معنى إلزامي، لكنها لا تستبدل بقية أحكام الثقة.

وتبقى حدود الأدلة واضحة. يدعم RFC 1422 وRFC 2459 وRFC 3280 وRFC 5280 وRFC 3779 وRFC 7633 وRFC 9618 التاريخ والبنية والسلوك المحدد. ولا تقيس هذه الوثائق حصة المنتجات الحالية أو معدل الأعطال أو امتثال كل متصفح ومكتبة.

لم تجعل العلامة الصغيرة X.509 معصوماً من الخطأ. لكنها منعت امتداداً إلزامياً من التحول إلى نص تجميلي: إذا كان المعنى شرطاً للصلاحية، فلا بد أن يظهر غياب الفهم في صورة رفض.