الخلاصة

  • يفرض RFC 9688 غياب المعلمات مع digest وECDSA وHMAC وHKDF، ويفرض NULL مع RSA PKCS#1 v1.5 وSHA3، ويجعل معلمات KMAC تابعة لوجود قيمة التخصيص الدقيقة.
  • قبول المحلل أو نجاح التوقيع لا يثبت حفظ البايتات ولا تنفيذ الفرع المقصود ولا صلاحية الشهادة أو التفويض أو وصول التطبيق إلى النتيجة المطلوبة.

تبدأ الحالة التحليلية من بوابة أرشفة تستقبل كائناً موقّعاً. ينجح التحقق، ثم تفك البوابة ASN.1 وتعيد ترميزه. يبقى الاسم الظاهر RSA with SHA3-256، لكن المكتبة الجديدة تحذف NULL المطلوب. لم يتغير الرقم، ومع ذلك تغير العقد السلكي.

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

ثلاث حالات لا حالة افتراضية واحدة

عند استخدام SHA3-224 أو 256 أو 384 أو 512 كخوارزمية digest يجب أن يكون حقل المعلمات غائباً. لا يجوز استبدال الغياب بقيمة ASN.1 NULL.

ينطبق الغياب أيضاً على ECDSA مع SHA3 وHMAC مع SHA3 ومعرّفات HKDF مع SHA3. لذلك فإن مرمّزاً عاماً يضيف NULL إلى كل AlgorithmIdentifier يصنع كائناً غير مطابق رغم صحة الاسم.

أما RSA PKCS#1 v1.5 مع SHA3 فيفرض العكس: يجب أن يوجد NULL. إزالة كل القيم الفارغة بوصفها زائدة تكسر هذا الفرع تحديداً.

يضيف KMAC حالة ثالثة. من دون S يجب أن تغيب المعلمات. وإذا أرسل المنشئ S وجب أن توجد المعلمات وتحمل نفس البايتات كـOCTET STRING. الغياب ليس مرادفاً لسلسلة فارغة موجودة.

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

لا يعيد OID بناء KDF

يعمل KMAC على K وX وL وS. قد يأتي K من فك تغليف KEM. ويحمل X في سياق RFC 9629 ترميز DER لبنية CMSORIforKEMOtherInfo. ويحدد L طول الناتج، بينما تفصل S بين الاستخدامات.

السجل الذي يكتب id-kmac128 فقط لا يسمح بإعادة اشتقاق المفتاح. وحتى حفظ المعلمات لا يعوض غياب السياق والطول. قد يدعم الطرفان OID نفسه ويستخرجان مفاتيح مختلفة لأنهما لم يبنيا البايتات نفسها.

تحمل KDF2 وKDF3 معرّف digest متداخلاً. إذا اختار SHA3 وجب أن يغيب حقل معلماته أيضاً. فحص الغلاف الخارجي وحده لا يثبت صحة العقد الداخلي.

احفظ الوارد قبل التطبيع

قد يقبل parser شكلين ويحوّلهما إلى قيمة داخلية واحدة. وإذا حُذفت البايتات الأصلية فلن يعود ممكناً التفريق بين تسامح المستقبل ومطابقة المرسل. إعادة الترميز تنتج ادعاءً جديداً يخص المستقبل.

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

نجاح التوقيع مهم لكنه محدود. لا يثبت وحده أن الموقّع مخوّل أو أن المحتوى حديث أو أن التطبيق فهمه ونفّذه كما قصد المنشئ.

التسجيل ليس تقرير تشغيل

تعطي IANA أسماء فريدة وآمنة للتنسيق. لكنها لا تختبر المكتبات ولا تعد عمليات النشر ولا تشهد بالتوافق. البايتات والمتجهات والآثار القابلة لإعادة الإنتاج تقدم دليل الكود العامل.

الفصل يحمي الوظيفتين: السجل ينسق الرمز، والتنفيذ يثبت الواقع، والتطبيق يثبت نتيجته.

المصادر