Policy-Gated Firmware Trust and Anti-Rollback Resilience for Autonomous UAV Edge Platforms: A Formal Security and Software Validation
تقدم هذه الورقة وتثبت رسمياً آلية ثقة للبرامج الثابتة محكومة بالسياسات للطائرات بدون طيار ذاتية القيادة، والتي تفرض منع التراجع (anti-rollback) والإغلاق الآمن (fail-closed) من خلال التحقق القائم على البيان (manifest-based verification)، مع تحديد التبعيات الحرجة لسلامة الحالة المستمرة ورسم خارطة طريق للتصديق المدعوم بالأجهزة.
تخيل أسطولاً من الطائرات بدون طيار (الدرونز) تحلق دون طيارين بشريين، معتمدة بالكامل على حواسيبها الخاصة للملاحة، وتجنب العقبات، واتخاذ قرارات تتعلق بالحياة أو الموت. هذه الآلات ليست مجرد ألعاب يتم التحكم فيها عن بعد؛ بل هي أنظمة معقدة يعمل فيها البرامج كدماغ، وعينين، ويدين. إذا تم التلاعب بالبرمجيات التي تخبر الطائرة بكيفية الطيران، فإن المهمة بأكملها قد تفشل، أو والأسوأ من ذلك، قد تصبح الطائرة خطراً على نفسها وعلى الآخرين. لهذا السبب، تعد اللحظة الأولى التي تعمل فيها الطائرة أمراً بالغ الأهمية. فقبل أن تتمكن حتى من التفكير في الطيران، يجب أن تتحقق من تعليماتها الداخلية لضمان أنها أصلية ولم يتم التلاعب بها أو خفض إصدارها إلى نسخة أقدم وأضعف. تُعرف هذه العملية بتأسيس الثقة في "البرامج الثابتة" (firmware)، وهي الكود منخفض المستوى الذي يشغل الأجهزة. وبدون هذا التحقق، يمكن لمخترق أن يستبدل قواعد السلامة الخاصة بالطائرة بقواعد خبيثة، حتى لو ظلت إشارات الاتصال بين الطائرة ومشغلها آمنة تماماً.
في دراسة جديدة، يستكشف الباحث "محمد شاه نور إسلام شاجور" كيفية بناء بوابة موثوقة لهذه الطائرات ذاتية القيادة. يركز العمل على نوع محدد من منصات الطائرات بدون طيار المصممة للبحث في البيئات التي لا تتوفر فيها إشارات نظام تحديد المواكن العالمي (GPS)، مما يجبر الآلات على الاعتماد كلياً على مستشعراتها وبرامجها الموجودة على متنها. المشكلة المركزية التي يتناولها البحث هي كيفية منع الطائرة من قبول نسخة مخترقة أو قديمة من برامجها الخاصة. طور الباحث نظاماً رسمياً يعمل مثل حارس أمن صارم عند مدخل نظام تشغيل الطائرة. يقوم هذا الحارس بالتحقق من قائمة من الاعتمادات في كل مرة تبدأ فيها الطائرة بالعمل. فهو ينظر إلى رقم إصدار البرنامج، وهوية الشخص أو المنظمة التي وقعت عليه، وعداد خاص يتتبع عدد المرات التي تم فيها تحديث البرنامج. إذا فشل أي من هذه التحققات، ترفض الطائرة البدء، مما يؤدي فعلياً إلى إغلاق نفسها قبل أن تتسبب في أي ضرر.
تقدم الدراسة منهجية تسمى "الثقة في البرامج الثابتة المقيدة بالسياسات" (policy-gated firmware trust)، وتعني أن الطائرة لا تقبل إلا البرامج التي تستوفي مجموعة محددة من القواعد التي يحددها مشغلوها. هذه القواعد لا تقتصر فقط على التحقق من وجود ملف ما؛ بل تتضمن فحصاً ثنائياً لضمان أن البرنامج جديد وأصيل في آن واحد. أولاً، يقارن النظام رقم إصدار البرنامج الجديد مقابل الإصدار المثبت حالياً؛ فإذا كان الإصدار الجديد أقدم، يتم رفضه. ثانياً، والأهم من ذلك، يتحقق النظام من "عداد تصاعدي" (monotonic counter). هذا العداد لا يزيد أبداً ولا ينقص إلا بالزيادة مع كل تحديث شرعي. حتى لو نجح مخترق في خداع النظام بإصدار يبدو أحدث، فإنه لا يستطيع خفض العداد. إذا كان العداد في البرنامج الجديد أقل من العداد الذي تتذكره الطائرة، يتم حظر التحديث. يمنع هذا الفحص المزدوج هجوماً شائعاً يحاول فيه المهاجم إجبار الجهاز على العودة إلى حالة قديمة معرضة للاختراق.
لجعل هذا الأمر يعمل، أنشأ الباحث "بيان معلومات" (manifest) رقمياً لكل تحديث للبرامج. فكر في هذا البيان كظرف مختوم يحتوي على قائمة من الحقائق حول البرنامج: من وقعه، وما هو إصداره، وبصمة فريدة لمحتوياته. يقرأ نظام الأمان في الطائرة هذا الظرف ويتحقق من أن البصمة تطابق البرنامج الفعلي وأن التوقيع يأتي من مصدر موثوق. إذا كانت الطائرة مضبوطة على وضع "التحصين" (hardened mode)، والذي يُستخدم للعمليات الواقعية بدلاً من مجرد الاختبار، فإنها تطلب مرور هذه التحققات بشكل مثالي. إذا تم بناء البرنامج في مختبر دون مفاتيح أمان مناسبة، أو إذا كان التوقيع الرقمي مفقوداً أو غير صالح، فلن تبدأ الطائرة بالعمل. يضمن نهج "الإغلاق عند الفشل" (fail-closed) هذا عدم طيران الطائرة أبداً ببرمجيات غير موثقة. يتضمن النظام أيضاً إجراءً خاصاً للصيانة، يسمح للمشغلين بتحديث الطائرة، ولكن فقط إذا قدموا رمز موافقة محدداً. وحتى مع وجود هذا الرمز، لا تزال الطائرة تتحقق مما إذا كان البرنامج الجديد آمناً ولم يتم التلاعب به؛ فوضع الصيانة لا يتجاوز قواعد الأمان.
اختبر الباحث هذا النظام باستخدام مجموعة اختبارات وحدة بلغة C++ وتقرير تحقق من المستودع لمعرفة كيفية استجابته لمختلف التهديدات. قام بمحاكاة سيناريوهات حاول فيها مهاجم فرض إصدار أقدم من البرنامج، أو استخدام توقيع مزيف، أو محاولة تخطي ضوابط الأمان بالكامل. في كل حالة تم فيها كسر القواعد، رفض النظام البرنامج بنجاح وأوقف بدء تشغيل الطائرة. أكدت الاختبارات أن النظام ينجح في حظر محاولات التراجع بالبرنامج إلى إصدار أقدم ويمنع التغييرات غير المصرح بها في عملية الإقلاع. ومع ذلك، تسلط الدراسة الضوء أيضاً على حدود ما يمكن للبرمجيات وحدها القيام به. يعتمد نظام الأمان على المعلومات المقدمة إليه، مثل رقم الإصدار والتوقيع، لكنه لا يملك وسيلة مستقلة للتحقق من الأجهزة المادية (hardware). فإذا تمكن مهاجم بطريقة ما من خداع النظام لجعله يعتقد أن الأجهزة آمنة بينما هي ليست كذلك، أو إذا تمكن من مسح الذاكرة التي تخزن عداد التحديث، فقد يتم تجاوز الحماية.
تخلص الورقة البحثية إلى أنه بينما يعد هذا الحارس البرمجي أساساً قوماً، إلا أنه ليس حلاً كاملاً بمفرده. إن الحماية الأكثر قوة ستأتي من دمج هذا المنطق البرمجي مع أجهزة تمنع مادياً إعادة ضبط عداد التحديث. في الوقت الحالي، يوفر النظام خط أساساً واضحاً وقابلاً للتكرار يمكن لباحثي الطائرات بدون طيار البناء عليه. فهو يقدم طريقة سليمة رياضياً لضمان أن الطائرة لا تشغل إلا البرامج التي تمت مراجعتها والموافقة عليها. ومن خلال تحديد ما يشكل تحديثاً موثوقاً وما يحدث عندما تنكسر الثقة، تعطي الدراسة للمهندسين خارطة طريق دقيقة لجعل الطائرات ذاتية القيادة أكثر أماناً. لا يدعي العمل أنه حل كل مشاكل الأمان، ولكنه ينجح في إثبات كيفية بناء نظام يرفض الطيران ما لم يكن متأكداً من سلامته، وهي خطوة حاسمة نحو طيران ذاتي القيادة موثوق.
ملخص تقني: سياسة بوابية للثقة في البرامج الثابتة (Firmware) ومقاومة التراجع (Anti-Rollback) لمنصات الحافة للطائرات بدون طيار ذاتية القيادة (UAV)
بيان المشكلة تعتمد الطائرات بدون طيار (UAV) ذاتية القيادة بشكل متزايد على مسارات برمجية محددة برمجياً لعمليات الاستشعار، والتقدير، واتخاذ القرار. وبينما تكون الاتصالات التشفيرية في الطبقات العليا (مثل التلِميتري المشفر) قوية في الغالب، تظل البرامج الثابتة (Firmware) وسلسلة الإقلاع المبكر تبعات أمنية حرجة. إن صورة برنامج ثابت مخترقة أو تم تخفيض إصدارها يمكن أن تغير بصمت القيود المتعلقة بالسلامة، أو منطق الملاحة، أو تفويض الأوامر، مما يجعل أمن طبقة التطبيقات غير كافٍ. تعالج الأدبيات الحالية المصادقة اللاسلكية والتثبت عن بُعد (Remote Attestation)، ولكن لا تزال هناك فجوة في تحديد سياسة محلية موجهة نحو التحكم وشفافة يمكن لعقدة الطائرة بدون طيار تقييمها عند بدء التشغيل لتحديد ما إذا كانت صورة البرنامج الثابت موثوقة قبل بدء تشغيل برمجيات المهمة. وتحديداً، هناك حاجة لصياغة ماهية هوية البرنامج الثابت، وكيفية فرض الرتابة (Monotonicity) ضد هجمات التراجع (Rollbacks)، وكيفية التصريح بالصيانة دون إضعاف سياسة الإنتاج، وأي الفحوصات يتم فرضها برمجياً مقابل تلك المعتمدة على الأجهزة.
المنهجية تقدم هذه الورقة دراسة رسمية للتحقق من الأمن والبرمجيات لمنصة بحثية مفتوحة المصدر لأسراب الطائرات بدون طيار في بيئات معزولة عن نظام GPS (الالتزام c040073969a6111f4c652d08e8de8629d70b2317). تتضمن المنهجية ما يلي:
النمذجة الرسمية: يحدد المؤلف نموذجاً رياضياً لهوية البرنامج الثابت، والسياسة، والحالة المستمرة، والقبول المعتمد على الملف الشخصي (Profile). يتم تمثيل صورة البرنامج الثابت بواسطة FirmwareManifest يحتوي على الإصدار الدلالي (Semantic Version)، والقياس (Measurement)، والموقع، والملخص المفتاحي (Keyed-Digest)، وادعاء الإقلاع الآمن (Secure-boot claim)، وادعاء قفل محمل الإقلاع (Bootloader-lock claim)، وعداد التراجع الرتيب.
تعريف السياسة: تم وضع FirmwareTrustPolicy بأساليب متميزة لكل من ملفات تعريف "المختبر" (التطوير) و"المحصنة" (الميدان/الإنتاج). في الملفات المحصنة، يفرض النظام سلوك "الإغلاق عند الفشل" (Fail-closed) عند بدء التشغيل، حيث يتم إنهاء عمل العقدة إذا فشل التحقق من الثقة.
نمذجة التهديدات: تحدد الدراسة مجموعة تهديدات أساسية تشمل هجمات التراجع (Rollback attacks)، وهجمات التجميد (Freeze attacks/Stale firmware)، والموقعين غير المصرح لهم، والتلاعب بالبيانات الوصفية (Manifest tampering)، وادعاءات الإقلاع الزائفة، والقياسات المفقودة، والصيانة غير المصرح بها، والتراجع في حالة الملف (State-file rollback).
رسم خرائط التنفيذ: يتم ربط المسندات (Predicates) الرسمية بتنفيذ بلغة C++ (FirmwareTrust.hpp). يستهلك النظام ادعاءات خارجية (مثل حالة الإقلاع الآمن) ومواد برمجية، ويطبق فحوصات سياسة حتمية، ويحفظ الحالة المقبولة فقط بعد التحقق.
التحقق: تعتمد الدراسة على ثلاثة فئات من الأدلة: السلوك المتحقق منه من المصدر (E1)، والسلوك المختبر عبر مجموعة اختبار CTest أصلية (E2)، وحالة التحقق من المستودع (E3). وهي تميز صراحة بين السياسات المفروضة برمجياً والتحقق المدعوم بالأجهزة، مشيرة إلى أن التنفيذ الحالي لا يستخدم TPM أو TEE أو ذاكرة إقلاع ثابتة (Immutable Boot ROM).
المساهمات الرئيسية تقدم الورقة ست مساهمات محددة:
النموذج الرسمي: نموذج رياضي مقتضب يحدد هوية البرنامج الثابت، والسياسة، والحالة المستمرة، وقواعد القبول المعتمدة على الملف الشخصي.
منطق التراجع المزدوج: اشتقاق لقاعدة منع التراجع ثنائية الأبعاد تجمع بين ترتيب الإصدار الدلالي وعداد التراجع الرتيب، مما يقلل الاعتماد على سلاسل الإصدار وحدها. కు
براهين الرفض: براهين رسمية لخصائص الرفض المتعلقة بالتراجع، والصيانة غير المصرح بها، والموقعين غير الموثوقين، والملخصات المفتاحية غير الصالحة، وادعاءات الإقلاع غير الآمنة، والقياسات غير المسموح بها تحت فرضية الحالة المحمية.
رسم خرائط التنفيذ: ربط مباشر للقواعد الرسمية بتسلسل بدء تشغيل C++، مما يوضح كيفية قيام النظام بضبط بوابة تهيئة العقدة.
فصل الأدلة: تمييز واضح بين أدلة المستودع المنفذة (الكود المصدري والاختبارات) والافتراضات التي تتطلب ثقة الأجهزة (مثل سلامة سجل الحالة المستمرة).
متطلبات التحصين: تحديد تفاصيل التنفيذ الحرجة التي غالباً ما تُغفل في المعالجات الوصفية، وتحديداً ضرورة الحماية المستمرة للحالة (Protected Persistence) والتكوين الإلزامي للأسرار التشفيرية للملفات الشخصية المحصنة.
النتائج تتحقق الدراسة من خط أساس قابل لإعادة الإنتاج لمرونة البرامج الثابتة على مستوى البرمجيات:
بدء التشغيل بنظام الإغلاق عند الفشل: في الملفات الشخصية المحصنة، أي فشل في سلسلة الثقة (مثل محاولة التراجع، أو موقع غير موثوق) يمنع عقدة الطائرة بدون طيار من تهيئة الأنظمة الفرعية للمهمة (المستشعرات، VIO، شبكة السرب).
فرض منع التراجع: تؤكد اختبارات الوحدة أن أي برنامج ثابت مرشح بإصدار دلالي أقل أو عداد تراجع أقل من الحالة المقبولة سابقاً يتم رفضه. يحافظ النظام على تاريخ رتيب للحالات المقبولة في مستوي (الإصدار، العداد).
تفويض الصيانة: تنجح الدراسة في فصل تفويض الصيانة عن تفويض البرنامج الثابت. يؤدي تفعيل وضع الصيانة دون رمز موافقة صالح إلى الرفض؛ وحتى مع وجود الرمز، يجب أن يجتاز البرنامج الثابت المرشح جميع الفحوصات المحصنة (ادعاءات الإقلاع، الموقع، السلامة، القياس).
التحقق من السلامة: عندما يتم تكوين سر توقيع، يستخدم النظام ملخصاً مفتاحياً من نوع SHA3-256 للتحقق من سلامة البيانات الوصفية. ومع ذلك، يكشف التحليل أنه بدون سر غير فارغ، يتحقق النظام فقط من الوجود النحوي للتوقيع، وليس من صلاحيته التشفيرية.
تغطية الاختبار: تسجل مجموعة الاختبار الأصلية (test_boot_trust.cpp) حالة "خضراء" لسيناريوهات تشمل قبول الإنتاج الموثوق، ورفض التراجع المزدوج، ورفض الصيانة غير المصرح بها.
الأهمية والادعاءات تزعم الورقة صراحةً أنها لا تقدم بدائيات تشفير جديدة أو سلسلة إقلاع آمن مدعومة بالأجهزة. بدلاً من ذلك، تكمن أهميتها في:
تحديد الحدود الصريحة: توضح المنطق الدقيق للسياسة المحلية الذي يقرر ما إذا كان يجب على العقدة ذاتية القيادة أن تبدأ التشغيل، أو تدخل في وضع الصيانة، أو تتوقف عن العمل.
شفافية الافتراضات: تجعل الحد الأدنى من الافتراضات صريحة، لا سيما أن التنفيذ الحالي هو "مستهلك مدرك للتحقق" (Attestation-aware policy consumer) وليس "متحققًا" (Attester) كاملاً. تُعامل القيم الخاصة بالإقلاع الآمان وقفل محمل الإقلاع كادعاءات مقدمة خارجياً، وليس كأدلة قياس مستقلة من الأجهزة.
خارطة طريق للأجهزة: يحدد التحليل الفجوة الدقيقة بين خط الأساس البرمجي الحالي والتحقق المدعوم بالأجهزة. وتوضح أن الحماية المستمرة ضد التراجع تتطلب أن يكون سجل الحالة المستمرة نفسه مقاوماً للتراجع (على سبيل المثال عبر عدادات TPM NV أو العناصر الآمنة)، وهو ما يمثل حالياً كائناً في نظام الملفات.
قابلية إعادة الإنتاج: توفر مساراً واضحاً رياضياً وخط أساساً برمجياً قابلاً لإعادة الإنتاج لأبحاث الطائرات بدون طيار، مما يعمل كأساس للدمج المستقبلي للتوقيع البرمجي غير المتماثل، والعدادات الرتيبة للأجهزة، وبروتوكولات التحقق عن بُعد (RATS).
باخت مختصر، تضع الورقة سياسة برمجية صارمة للإغلاق عند الفشل لثقة البرامج الثابتة في الطائرات بدون طيار، والتي تحجب بفعالية ناقلات الهجوم المعروفة على مستوى العقدة المحلية، مع تحديد حدودها بوضوح والتي تتطلب تدخل الأجهزة للوصول إلى مستوى الإنتاج.