الخلاصة
- إذا سمّت قائمة
critالمحمية امتداداً لا يفهمه المدقق ولا يدعمه، فإن JWS غير صالح حتى لو طابقت البصمة التوقيع. - تمنع القاعدة البرامج القديمة من تجاهل تغيير إلزامي في الدلالة ثم التعامل مع الرسالة وفق القواعد السابقة.
- نجاح التشفير، وصحة معالجة JOSE، وقبول التطبيق أحكام مستقلة تحتاج إلى أدلة ومسؤوليات منفصلة.
نتيجة صحيحة لا تكفي للعبور
تستقبل بوابة خدمة كائن JWS. تحدد الخوارزمية، وتحصل على المفتاح، وتعيد بناء مدخل التوقيع، ثم تؤكد العملية التشفيرية أن التوقيع مطابق. لو كان النظام لا يسجل سوى قيمة واحدة اسمها «صالح»، لانتهت القصة هنا.
لكن الترويسة المحمية تحمل امتداداً إضافياً، واسمه مدرج أيضاً في crit. لم تنفذ البوابة ذلك الامتداد من قبل. عند هذه النقطة يوجب RFC 7515 رفض JWS. لا يحق للبوابة أن تتجاهل الحقل، وتحتفظ بالنتيجة الخضراء، ثم تطبق المعنى القديم الذي تعرفه.
لا يلغي الرفض حقيقة النجاح الرياضي. بل يحدد نطاقها: التوقيع يثبت علاقة بين بايتات ومفتاح وخوارزمية، ولا يثبت أن المتلقي أتقن القاعدة الجديدة التي تغير بناء تلك البايتات أو تفسيرها. قد يكون الغلاف أصيلاً فيما تظل دلالته غير مفهومة لدى المستلم.
قيمة crit مصفوفة من أسماء معاملات الترويسة. يجب أن يشير كل اسم إلى امتداد موجود فعلاً في ترويسة JOSE، وأن يكون المتلقي قادراً على فهمه ومعالجته. لا يجوز أن تكون المصفوفة فارغة، أو أن تكرر اسماً، أو أن تذكر معاملاً غائباً. كما أنها ليست مكاناً لإعادة تعداد الأسماء التي عرّفها JWS أو JWA أصلاً.
ولا يجوز وضع crit إلا في الترويسة المحمية. فلو أمكن تعديل قائمة المعاني الإلزامية من دون كسر التوقيع، لاستطاع وسيط حذف اسم حرج ودفع مدقق قديم إلى القبول. أما المعامل المجهول غير المدرج بوصفه حرجاً فيمكن تجاهله عموماً. بهذه اللامساواة تتعايش الإضافات الاختيارية مع التغييرات التي لا تحتمل الجهل بها.
قدرة يجب إثباتها في منظومة طويلة العمر
يظهر اسم Nat Sakimura في RFC 7515 إلى جانب Michael B. Jones وJohn Bradley بوصفهم المؤلفين الثلاثة. ويمنح عمل Sakimura الممتد في معايير الهوية ودوره القيادي في OpenID Foundation سياقاً للمشكلة، من دون نسبة جهد جماعي إليه وحده: صيغ الهوية تمر عبر موردين ومكتبات وتطبيقات لا تتحدث جميعاً في اليوم نفسه.
لا يستطيع امتداد جديد انتظار ترقية العالم كله. وفي المقابل، لا يجوز له أن يسمح لمتلقي قديم بتطبيق قواعد سابقة على رسالة تغير معناها. لا يحاول crit التنبؤ بكل امتداد مقبل؛ بل يوزع واجب الإثبات. يعلن المنتج، داخل الجزء الموقع، القدرات اللازمة لهذه الرسالة. ولا يتقدم المتلقي إلا إن عالج كل امتداد مطلوب وفق تعريفه.
لا تعني كلمة «حرج» أن الحقل سري أو شديد الخطورة في ذاته. السؤال هو: هل يؤدي تجاهله إلى تغيير معنى الرسالة أو خاصيتها الأمنية؟ قد تكون معلومة تجارية بارزة اختيارية، بينما يغير مفتاح ترميز صغير مدخل التوقيع بالكامل. لذلك يجب على مصمم الامتداد وملف التطبيق تحديد الضرورة بدقة.
وتعكس خطوات التحقق في RFC 7515 هذا الفصل. يفحص المتلقي ترميز الترويسة المحمية، ويتأكد من فهم الحقول والقيم المطلوبة، ويبني مدخل التوقيع، ثم ينفذ العملية التشفيرية. واجهة مكتبة لا تعيد سوى قيمة منطقية واحدة تخفي أي شرط تحقق بالفعل وأي شرط لم يُختبر.
لماذا يجعل b64:false الجهل خطراً ملموساً
يوضح RFC 7797 الغرض عملياً. في JWS المعتاد تدخل الحمولة بعد ترميزها بصيغة base64url في بناء مدخل التوقيع. عندما تكون قيمة المعامل المحمي b64 هي false، تُستخدم الحمولة بلا ذلك الترميز. يتغير بذلك تسلسل البايتات الموقع، وتتغير بعض قيود التسلسل والنقل.
لهذا يجب على JWS الذي يستخدم b64:false أن يدرج b64 في crit. سيرى المدقق الذي لا يعرف الامتداد اسماً حرجاً غير مدعوم ويرفض الرسالة. لن يطبق افتراض الترميز القديم على حمولة بنيت وفق قاعدة أخرى، ولن يحول نجاح حساب على مدخل مختلف إلى ادعاء بتطابق المعنى.
حتى تنفيذ الامتداد لا يعني أن كل استعمال مباح. ينصح RFC 7797 ملفات التطبيقات بالثبات في اختيارها، لأن خلط الحمولات المرمزة وغير المرمزة يفتح باب الالتباس. ويحتاج التسلسل المضغوط إلى عناية مع بعض البايتات. كما يُحظر صراحة استخدام b64:false مع JWT. قد تدعم مكتبة JWS العامة الميزة على الوجه الصحيح بينما يجب على تطبيق JWT رفضها.
هناك إذن ثلاثة أسئلة: هل صح التوقيع على المدخل المبني؟ هل فُهمت كل الامتدادات الحرجة وطُبقت؟ هل يسمح نوع الرسالة وسياسة التطبيق بهذه التركيبة؟ لا تملك إجابة السؤال الأول سلطة على السؤالين الآخرين.
معرفة الخوارزمية ليست موافقة عليها
يعرّف RFC 7518 خوارزميات JOSE ومعرفاتها. لكن قدرة البرنامج على تنفيذ خوارزمية لا تجعلها مقبولة في كل سياق. يترك RFC 7515 للتطبيق اختيار الخوارزميات المقبولة. فقد يكون التوقيع صحيحاً حسابياً، بينما ترفضه السياسة بسبب الخوارزمية أو المفتاح أو المعاملات.
يحوّل RFC 8725 هذا الفصل إلى إرشاد تشغيلي لرموز JWT. ينبغي تحديد قائمة الخوارزميات المسموح بها، وألا يختار إدخال يتحكم فيه المرسل طريقة التحقق وحده. كما يجب فحص الجهة المصدرة والموضوع والجمهور وقواعد الاستخدام. وقد تحتاج أنواع JWT المختلفة إلى قواعد متنافية حتى لا يعبر رمز صُمم لغرض إلى غرض آخر.
لا يثبت crit الثقة بالمصدر، ولا صحة الجمهور، ولا الإذن بتنفيذ معاملة. ولا تصبح الإضافة آمنة لمجرد أن الطرفين يعرفان اسمها. الفهم شرط يسبق الحكم، وليس بديلاً عن الحكم.
التوقيعات المتعددة تحتاج إلى معرفة المسار الفائز
يسمح تسلسل JSON في JWS بحمل عدة توقيعات. في الوصف العام لـ RFC 7515 يكفي أن يصح توقيع واحد على الأقل، مع بقاء الحق للتطبيق في فرض قاعدة أشد. ولكل توقيع ترويسته المحمية، وبالتالي قد تكون له امتداداته الحرجة الخاصة.
أثناء الانتقال قد يقدم توقيع جديد خوارزمية أو دلالة أحدث، ويبقى توقيع قديم لخدمة التوافق. إذا استمرت قاعدة «أي توقيع يكفي» بلا موعد نهاية، أصبح المسار القديم باب خفض دائم. وإذا اشترط النظام جميع التوقيعات فوراً، توقف متلقون شرعيون لم يكتسبوا القدرة الجديدة بعد.
يجب تسمية السياسة: أي التوقيعات مطلوبة، وأي مفاتيح وامتدادات مقبولة، ولأي جمهور، وكم تستمر فترة التعايش. ويجب أن يسجل النظام التوقيع الذي حقق الشرط. فالنجاح المجمل لا يكشف إن كان الانتقال يتقدم أم أن كل الحركة لا تزال تعتمد على الاستثناء القديم.
سجل بثلاثة أحكام لا بجملة غامضة
يسجل المستوى التشفيري الخوارزمية ومرجع المفتاح وطريقة بناء المدخل والنتيجة. ويسجل مستوى JOSE الترويسة المحمية والأسماء الحرجة والمعالج الذي نفذ كل امتداد وسبب الرفض عند غياب الفهم. ويربط مستوى التطبيق ملف الرسالة بالمصدر والجمهور وقيود البيانات وقرار التفويض والأثر المطلوب.
لا يستلزم ذلك حفظ الأسرار أو الرموز كاملة. تكفي معرفات ارتباط وأسباب دقيقة. عبارة «توقيع غير صالح» مضللة حين طابق التوقيع لكن الامتداد كان مجهولاً؛ فهي ترسل الفريق للبحث في المفاتيح. وعبارة «رمز صالح» ناقصة حين نجحت JOSE لكن سياسة الجمهور رفضت الاستخدام.
القيمة الأعمق لـ crit هي فرض الصراحة بشأن حدود المعرفة. لا يجوز لمتلق أن يقول إنه فهم رسالة لمجرد أنه وثق غلافها. حوّل Sakimura ومؤلفاه المشاركان عبارة «لا أعرف كيف أعالج هذا» إلى نتيجة معيارية صحيحة تحمي التوافق بدلاً من أن تفسده.
المصادر
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
