الخلاصة

  • لا يصبح RC5 هوية قابلة للتشغيل البيني إلا عند تثبيت W وR وb وبايتات المفتاح والنمط وIV وقاعدة معالجة الجزء الأخير معاً.
  • يثبت الكود وASN.1 والمتجه الاختباري اتفاقاً محدوداً على مدخلات وتحويلات بعينها، ولا يثبت الأمان أو العشوائية أو تفرد IV أو محو الذاكرة فعلياً أو النشر أو الملاءمة الراهنة.

نشر Robert Baldwin وRonald Rivest في أكتوبر 1996 وثيقة RFC 2040، وقدمت أربع بنيات بتفصيل يكفي لتوافق التطبيقات: RC5 الخام وRC5-CBC وRC5-CBC-Pad وRC5-CTS. يسجلها RFC Editor كوثيقة معلوماتية، مع نص صريح بأنها ليست معياراً من معايير الإنترنت.

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

الهوية مجموعة معلمات لا اسماً تجارياً

يرمز W إلى حجم الكلمة، ويبلغ حجم الكتلة B كلمتين، بينما يعبر BB عنها بالبايت. R هو عدد الجولات. b طول مفتاح المستخدم بالبايت، وK بايتاته الفعلية. ينتج التوسيع جدولاً S طوله T = 2(R+1) كلمة. ويضيف CBC متجه تهيئة I بطول كتلة واحدة.

يمكن لبرنامجين أن يعلنا RC5 وينفذا تحويلين مختلفين. يكفي أن يختلفا في W أو R أو طول المفتاح أو ترتيب بايتاته أو النمط أو IV أو قاعدة النهاية. وحتى تطابق W/R/b لا يحدد الهوية إذا اختلفت بايتات المفتاح المرتبطة بالكائن.

يكشف توسيع المفتاح هذه التبعية. توضع بايتات K في كلمات بترتيب little-endian، ويهيأ S بثوابت تعتمد على W، ثم يخلط المجالان عدداً من المرات يساوي ثلاثة أمثال الأكبر من طولهما. يثبت المثال بلغة C كتلة من 64 بت للتوضيح؛ ومن ثم تخص نتائجه ذلك المسار، لا كل أشكال العائلة.

الكائن يجعل الحالة الخفية مرئية

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

تربط Encrypt_Init المفتاح وتوسعه ثم تعيد السلسلة إلى IV. تغير SetIV المتجه مع إبقاء المفتاح الموسع، وتعيد في الوقت نفسه ضبط السلسلة والمخزن. تستقبل Update أجزاء متتابعة، وتحتفظ بالباقي حتى يكتمل بلوك، ثم تجري XOR مع حالة السلسلة وتشفّر الناتج ليصبح حالة السلسلة التالية.

أما Final فتحدد معنى الباقي. في CBC العادي يؤدي وجود بايتات غير مكتملة إلى خطأ. وفي CBC-Pad تنشأ دائماً كتلة أخيرة تحتوي من بايت واحد إلى BB بايتات، وقيمة كل بايت تساوي عدد البايتات المضافة. حتى الرسالة المصطفة تماماً تحصل على كتلة حشو كاملة. النهاية إذن جزء من الخوارزمية لا إجراء تنظيف.

ثلاث نهايات تعني ثلاث آلات

يقبل CBC العادي أطوالاً من مضاعفات الكتلة. يزيد CBC-Pad طول الناتج ليستوعب أي طول. أما CTS فيحافظ على الطول لكنه يعالج الجزأين الأخيرين بصورة خاصة: يشفر الكتلة قبل الأخيرة بعد ربطها، ويأخذ من بدايتها الوسيطة عدداً من البايتات ليشكل الجزء المشفر القصير الأخير، ثم يكمل الجزء الأخير من النص الصريح بأصفار ويجمعه بـXOR مع الوسيط ويشفره إلى الكتلة الكاملة التي تسبق الجزء «المسروق».

لهذا يجب أن يحتفظ كائن CTS بما يصل إلى كتلتين حتى Final. قبل ذلك لا يعرف أي كتلة كاملة ستكون قبل الأخيرة، ولا عدد البايتات التي ستنتقل إلى النهاية القصيرة.

وتتطلب القراءة التنفيذية التصحيحات المعتمدة. يصحح Errata 513 النطاق إلى نص أطول من كتلة واحدة. ويطلب 514 استخدام IV عندما لا توجد كتلة مشفرة سابقة. ويعيد 587 عملية XOR مفقودة في فك التشفير ويكرر قاعدة IV. قد يكون تطبيق النص غير المصحح متسقاً داخلياً ومع ذلك يختلف في حالات الحدود.

ماذا يثبت متجه الاختبار؟

تحدد الفقرة 9 الغاية بمساعدة التحقق من صحة التطبيق. يستخدم البرنامج كتلاً من ثمانية بايتات، ويقرأ علامة الحشو وعدد الجولات وبايتات المفتاح وIV من ثمانية بايتات والنص الصريح، ثم يعرض النص المشفر المتوقع.

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

والنتائج المنشورة تخص CBC وCBC-Pad فقط؛ لا توجد مجموعة متجهات CTS في هذه الوثيقة. كما أنها لا تراقب منشأ المفتاح وIV، ولا تفرد IV، ولا القوة التحليلية، ولا سلوك المترجم، ولا المحو الحقيقي للذاكرة، ولا نقل المعلمات في بروتوكول، ولا النشر العملي. لا يستطيع اختبار حتمي الإجابة عن أسئلة لم تدخل فيه.

ASN.1 يحمل جزءاً من الهوية

تسند الفقرة 11 نهايتي OID رقميتين 8 و9 إلى CBC وCBC-Pad. وتحمل سلسلة المعلمات النسخة والجولات وحجم الكتلة وIV اختيارياً؛ وإذا غاب IV، تفسره القاعدة التاريخية ككتلة أصفار بالحجم المحدد. يصحح Errata 6380 أسماء ASN.1 وحالة الأحرف وصيغة القيود من دون إضافة حقول.

لا تشمل السلسلة b أو بايتات المفتاح أو الجدول الموسع، ولا تمنح CTS معرفاً. يحسم OID جزءاً من عقد التفسير، لا كل سياق التنفيذ. وتعريف IV صفري عند الغياب يثبت طريقة قراءة الترميز فقط، لا عشوائية IV أو تفرده في نظام حقيقي.

نية المصدر ليست حقيقة تشغيلية

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

قوة RFC 2040 في كونها أداة تنسيق دقيقة تسمي نقاط الاتفاق. وينشأ الخطأ حين تتحول مطابقة البايتات إلى ادعاء بالأمان أو حسن التشغيل أو الانتشار.

المصادر