الخلاصة
- جعلت RFC 3741 توقيع مقاطع XML المستخرجة أقل تأثراً بإعلانات المساحات الاسمية لدى الأسلاف، إذ تُخرج أساساً البادئات الظاهرة في أسماء العناصر والسمات.
- لكنها لا تزيل كل اعتماد على السياق: قد تغيّر سمات
xml:الموروثة والبادئات الموجودة داخل القيم فقط تفسير المقطع بعد وضعه في غلاف جديد.
ينبغي ألا يعيد الغلاف كتابة توقيع المحتوى
لنتصور بروتوكولاً يوقّع عنصراً صغيراً داخل رسالة XML كبيرة. تزيل بوابةٌ الغلاف الخارجي، ثم تضع خدمة أخرى العنصر نفسه في رسالة جديدة. في Canonical XML الشامل، قد تدخل إعلانات المساحات الاسمية لدى الأسلاف وبعض سمات xml: في تسلسل البايتات المعياري حتى إن لم يستخدمها المقطع. وهكذا يمكن لتغيير الغلاف وحده أن يغيّر مدخل الملخّص ويكسر التوقيع، مع أن المحتوى نفسه لم يتبدل.
استهدفت RFC 3741، المنشورة في مارس 2004، هذه المشكلة تحديداً. فهي تحدد تسلسلاً حصرياً لمجموعة عقد XPath. وبدلاً من استيراد معظم سياق المساحات الاسمية الموروث، تُخرج الربط عندما تظهر البادئة في اسم عنصر أو سمة. ويمكن للمعامل الاختياري InclusiveNamespaces PrefixList أن يسمّي بادئات ينبغي التعامل معها على نحو شامل رغم القاعدة. الغرض هو السماح باستخراج مستند فرعي موقّع وإدراجه في غلاف آخر من دون جعل كل طبقة نقل جزءاً من صيغته المعيارية.
هذا اختيار لحدود التمثيل، وليس ضماناً لاستقلال المعنى عن السياق. وتذكر RFC نفسها حدودها. تتناول RFC 3075 ما تغطيه XML Signature، وتشرح RFC 3076 تقنين مجموعة عقد بعد تحليل XML. أما RFC 3741 فتتناول السؤال الأضيق: أي سياق يُحتفظ به عندما ينتقل الجزء المحدد.
«الظهور» معيار مفيد لكنه ضيق
تعتمد القاعدة على أسماء XML. فإذا استخدم اسم عنصر أو سمة البادئة n1، ينبغي أن يظهر ربط n1 في التسلسل. أما البادئة التي يعلنها سلف ولا ترد في تلك الأسماء فيمكن حذفها. يزيل ذلك كثيراً من الضجيج: فقد يحتوي غلاف SOAP أو البروتوكول على إعلانات لازمة للرسالة الخارجية لكنها غير مرتبطة بالمقطع المستخرج. وعندئذ يمكن للتقنين الحصري أن ينتج البايتات المعيارية نفسها للمحتوى ذاته في أغلفة مختلفة.
لكن معنى التطبيق قد يعتمد على معلومات لا تظهر في أسماء العقد. ربما تتضمن قيمة سمة تعبير XPath تشير بادئته إلى ربط معين. وقد يعامل التطبيق سلسلة مثل xsi:type="xsd:decimal" بوصفها QName، بينما لا يرى XPath سوى قيمة نصية. إذا لم تظهر xsd في اسم عنصر أو سمة ولم تُذكر في قائمة البادئات الشاملة، فقد يُحذف ربطها. عندها قد يفسر المستقبِل القيمة بطريقة أخرى داخل الغلاف الجديد.
تذكر RFC ثلاث وسائل لإدارة هذا الاعتماد: جعل استخدام البادئة ظاهراً في بنية XML، أو ضمان الربط نفسه في كل سياق تفسير، أو إدراج البادئة في InclusiveNamespaces PrefixList. ويتطلب كل خيار قراراً تصميمياً مسبقاً. فالقائمة لا تكتشف تلقائياً الدلالات المخفية؛ على التطبيق أن يعرف القيم التي تعتمد على المساحات الاسمية.
قد يظل السياق المحذوف من البايتات حاكماً للقراءة
لا ينسخ التقنين الحصري أيضاً قيم الأسلاف xml:lang أو xml:space أو xml:base إلى العقد اليتيمة في المجموعة الجزئية. وقد تؤثر هذه السمات في اختيار اللغة أو معالجة المسافات أو حل المراجع النسبية. لذلك تشترط RFC أن تضع التطبيقات القيمة المطلوبة داخل المجموعة، أو أن تضمن قيمة مكافئة في كل سياق سيُفسَّر فيه المقطع.
والتحذير بشأن سياق الوجهة أوضح. قد تبقى البايتات المعيارية للمقطع بلا تغيير إذا نُقل تحت سلف جديد له مساحة أسماء افتراضية مختلفة. ومع ذلك قد يربط التطبيق المستقبِل العنصر غير ذي البادئة بمساحة أسماء أخرى، ويتعامل معه على أنه نوع مختلف من الكائنات. ينجح التوقيع لأن البايتات المختارة لم تتغير، لكن تفسير التطبيق قد يتغير بسبب سياق الوجهة.
لا تحدد RFC 3741 طريقة الاستخراج أو الإدراج أو إصلاح إعلانات المساحات الاسمية، ولا تقرر إن كان التطبيق المستقبِل مخولاً بذلك. على البروتوكول أن يحدد السياق المصاحب للمقطع وما ينبغي للمستهلك فعله بالعقدة الناتجة. سلامة التشفير خطوة واحدة في سلسلة أطول.
تضييق نطاق التوقيع يوسّع واجب التكامل
استبدل التقنين الحصري الاعتماد العرضي على الغلاف بواجب صريح لجرد الاعتماد الدلالي. عند مراجعة مقطع موقّع سيُنقل إلى جهة أخرى، لا يكفي السؤال عما إذا كان التوقيع صحيحاً؛ يجب أيضاً التحقق من بقاء معنى البادئات وسمات xml: وقيم QName والمراجع النسبية كما هو في الوجهة. ومن دون عقد واضح، قد تُفهم ثباتية التوقيع خطأ على أنها ثباتية المعنى.
هذا نموذج مخاطر تصفه المواصفة، وليس دليلاً على هجوم أو عطل تنفيذي بعينه. RFC 3741 وثيقة Informational؛ تثبت هدف الخوارزمية وحدودها، لا معدل انتشار تنفيذ محدد ولا سوء تعامل خدمة مسماة. والدرس المحدد هو أن حذف السياق من البايتات الموقّعة يحسن قابلية النقل، لكن التطبيق وحده يستطيع تحديد السياق المحذوف الذي يواصل التحكم في التفسير.
المصادر
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
