الخلاصة

  • يسجل RFC 9597 المعلمة 15 في ترويسات COSE لحمل خريطة مطالبات CWT، حتى مع حمولة مشفرة أو منفصلة أو ليست CWT أصلاً.
  • يمكن لقيمة issuer المرئية مبكراً أن تختار مسار البحث عن مفتاح، لكن المسار والهوية يظلان مؤقتين حتى يكتمل التحقق المشفّر وتُلغى آثارهما عند الفشل.
  • إذا تكررت مطالبة في الترويسة وحمولة CWT فالأصل أن تتطابق القيم؛ أما التطابق والحقيقة وسلطة المفتاح والخصوصية والإذن فإيصالات مختلفة.

وصل كائن COSE مشفّر إلى البوابة. تعذر قراءة الحمولة، لكن مطالبة issuer كانت ظاهرة. استخدمت البوابة القيمة لاختيار دليل مفاتيح وحجز مورد معالجة. بعد ذلك فشل التوقيع.

رفض الكائن لا يجيب وحده عن السؤال التشغيلي. هل أُلغي الحجز؟ هل مُسح cache بُني على issuer؟ هل بقي اسم المستأجر في سجل التدقيق أو الفوترة؟ إن بقي شيء منها، فقد وصلت المعلومة غير الموثقة إلى الواقع قبل وصول التحقق.

يعرّف RFC 9597 تمثيلاً موحداً لمطالبات CWT داخل أي بنية COSE. الحاجة واضحة مع الكائن المشفّر، والتوقيع ذي المحتوى المنفصل، والحمولات التي ليست مجموعات مطالبات CWT أو ليست CBOR. ينسق المعيار الرؤية المبكرة، ولا يمنحها سلطة مبكرة.

حاوية واحدة تمنع تصادم الأرقام

تستخدم معلمات COSE ومفاتيح مطالبات CWT أعداداً قصيرة في سجلين مختلفين. وضع كل مطالبة مباشرة في الترويسة يخلط المجالين. لذلك سجل RFC 9597 «CWT Claims» بالرقم 15 في سجل IANA الخاص بـCOSE، وجعل القيمة خريطة مفاتيحها من سجل CWT.

يحدد RFC 8392 issuer وsubject وaudience وexp وnbf وiat وcti. ويصف RFC 8610 شكل الخريطة بلغة CDDL. التسجيل يزيل الالتباس في الاسم، لكنه لا يقرر المطالبات المطلوبة أو من يملك حق إصدارها أو الإجراء الذي تسمح به.

وقد تظهر الخريطة مع صورة أو firmware أو حمولة أخرى موقعة، فلا تثبت وجود CWT في الداخل. على profile المحلي أن يحدد معنى المطالبات في endpoint بعينه.

الحماية لا تمنح المفتاح اختصاصاً

يفصل RFC 9052 الترويسة المحمية عن غير المحمية. يوصي RFC 9597 بوضع الخريطة في المحمية حتى لا تكون قابلة للتعديل، ويمنع ظهورها أكثر من مرة في الموضعين.

لا يجوز للمستقبل أن يحول التوصية إلى افتراض. عليه أن يقرر: هل يرفض المعلمة 15 غير المحمية؟ أم يسمح بها كتلميح لا ثقة فيه؟ من دون قرار واضح يصبح fallback البرمجي سياسة غير معلنة.

حتى الخريطة المحمية تثبت فقط ارتباط bytes بعملية تشفيرية ومفتاح. لا تثبت أن المفتاح مختص بإعلان issuer لهذا النوع من الكائنات، أو أن audience يشمل الخدمة، أو أن الزمن صالح، أو أن الطلب مأذون.

ولا بد من حماية تفسير المطالبة. يوصي RFC 9597 بمعلمة typ من RFC 9596 عندما لا يكفي السياق الطبيعي. النوع يختار عقد التحقق، والعقد يفسر الخريطة. قيمة محمية يفسرها selector قابل للتغيير لا تنتج قراراً محمياً.

البحث عن المفتاح قرار أولي لا حكم نهائي

قد يحتاج المستقبل إلى issuer كي يعرف أين يجد المفتاح الذي سيتحقق به من issuer نفسه. لا يمكن إزالة هذه الدائرة دائماً، لكن يمكن تقييد سلطتها.

يجوز للقيمة غير المتحققة اختيار namespace للبحث أو queue معزولة أو ميزانية صغيرة. لا ينبغي أن تنشئ tenant دائماً، أو توسع البحث بلا حد، أو تختار حساب الفوترة، أو تكتب cache مشتركاً، أو تنفذ أثراً خارجياً.

يحتفظ الإيصال المؤقت بالbytes الأصلية، وموضع المعلمة، والقيمة الدقيقة، والفرع المختار، وطلب الاكتشاف، والمفاتيح المرشحة. ويضيف الإيصال النهائي نتيجة التشفير، ومصدر التفسير، وإصدار profile، ومقارنة الحمولة، وaudience والزمن والسياسة والفعل والأثر.

يحذر RFC 9597 صراحة من معالجة المطالبات قبل ضمان سلامتها تشفيرياً، ويشترط تأكيد القرارات المؤقتة بعد اكتمال المعالجة. لذلك يجب اختبار نجاح البحث ثم فشل التوقيع، أو صحة issuer مع type خاطئ، أو حمولة منفصلة غير مطابقة، والتأكد من زوال الحالة الأولية.

هنا تظهر قيمة أولوية الكود الجاري: النص يقول إن التأكيد سيحدث؛ أما سجل الإلغاء فيثبت أنه حدث فعلاً.

نسختان متعارضتان تصنعان سلطتين

سبق أن وفر RFC 7519 آلية مشابهة لـJWT وJOSE. ويطلب RFC 9597 أن تتطابق قيمة المطالبة إذا ظهرت في ترويسة CWT وحمولته، ما لم تعرف التطبيقات قاعدة معالجة خاصة.

تمنع المقارنة gateway من اختيار مفاتيح issuer A بينما تعتمد الخدمة issuer B في التفويض. وإذا سمح profile بالاختلاف، فعليه أن يحدد أي مكون يقرأ أي نسخة، والحماية المحيطة بكل واحدة، وسبب أمان الاختلاف، وإصدار القاعدة.

لكن التطابق لا يساوي الصدق. قد تكون النسختان منتهيتين أو موجّهتين إلى audience آخر أو موقعتين بمفتاح لا يملك الاختصاص. تبقى قواعد التحقق الصريحة في RFC 8725 ضرورية بعد المقارنة.

الرؤية قبل فك التشفير هي إفصاح

المطالبة الموجودة خارج الحمولة المشفرة غير مشفرة. قد يكشف issuer المؤسسة، وsubject شخصاً أو جهازاً، وaudience الخدمة المقصودة، وcti رابطاً دائماً بين الأحداث. نسخ كل شيء لأجل observability قد يهزم الخصوصية من دون كسر خوارزمية واحدة.

يجب أن يبدأ profile من أقل معلومة لازمة للمهمة المبكرة. من يراها على الشبكة وفي proxy والqueue والlog والtrace والcache ورسالة الخطأ؟ كم تبقى؟ هل يمكن لاستبدال subject ثابت بمجال توجيه قصير العمر أن يحقق الغرض؟ نجاح التوقيع ليس تفويضاً بالإفشاء.

يتفق ذلك مع المواصفة الدنيا والقرار المحلي: الحاوية وقاعدة الاتساق في الطبقة المشتركة، والغرض والاحتفاظ والسلطة في النظام الذي يشغل الكود.

المحتوى المنفصل يضيف حلقة إثبات

يسمح COSE بمحتوى منفصل، لكن RFC 9052 يجعل التطبيق مسؤولاً عن نقله بلا تغيير. issuer صحيح وبنية COSE صحيحة لا يثبتان أن verifier استرجع الملف الصحيح.

ينبغي حفظ locator وسياق الاسترجاع والbytes أو hash ونتيجة الربط بالكائن. وإلا أمكن وصل تلميح صحيح بحمولة من معاملة أخرى.

الخلاصة النهائية ضيقة: ظهرت المطالبة؛ حُميت هذه القيمة وهذا التفسير في كائن تم التحقق منه؛ وافقت نسخة الحمولة القاعدة؛ سمحت السياسة المحلية؛ نُفذ الفعل؛ ولوحظ الأثر. تمنع طبقات الواقع إيصالاً مبكراً من الادعاء نيابة عما بعده.

المصادر