الأمان

لمنع تشغيل حمولات عشوائية داخل pVM، يستخدم Android Virtualization Framework (AVF) نهجًا أمنيًا متعدد الطبقات تضيف فيه كل طبقة عمليات إنفاذ إضافية. فيما يلي قائمة بطبقات أمان AVF:

  • يضمن Android السماح فقط لتلك التطبيقات التي تتمتع بأذونات pVM بإنشاء أو فحص pVMs.

  • أداة تحميل التشغيل - تضمن أداة تحميل التشغيل عدم السماح إلا لصور pVM الموقعة من قبل Google أو بائعي الأجهزة بالتمهيد واحترام إجراء التشغيل الذي تم التحقق منه لنظام Android . تشير هذه البنية إلى أن التطبيقات التي تقوم بتشغيل pVMs لا يمكنها تجميع النواة الخاصة بها.

  • توفر pVM دفاعًا متعمقًا، كما هو الحال مع SELinux ، للحمولات التي يتم تشغيلها في pVM. الدفاع المتعمق لا يسمح بتعيين البيانات باعتبارها قابلة للتنفيذ ( neverallow execmem ) ويضمن الاحتفاظ بـ W^X لجميع أنواع الملفات.

نموذج الأمن

تشكل السرية والنزاهة والتوفر (ثالوث CIA) نموذجًا مصممًا لتوجيه سياسات أمن المعلومات:

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

السرية والنزاهة

تنبع السرية من خصائص عزل الذاكرة التي يفرضها برنامج مراقبة الأجهزة الافتراضية pKVM. يتتبع pKVM ملكية الذاكرة لصفحات الذاكرة الفعلية الفردية وأي طلبات من المالكين لمشاركة الصفحات. تضمن pKVM أن أجهزة pVMs المؤهلة فقط (المضيف والضيوف) هي التي لديها الصفحة المحددة التي تم تعيينها في جداول صفحات المرحلة 2 الخاصة بها والتي يتحكم فيها برنامج Hypervisor. تحافظ هذه البنية على أن محتويات الذاكرة المملوكة لـ pVM تظل خاصة ما لم يشاركها المالك بشكل صريح مع pVM آخر.

تمتد قيود الحفاظ على السرية أيضًا إلى أي كيانات في النظام تقوم بالوصول إلى الذاكرة نيابة عن pVMs، وهي الأجهزة التي تدعم DMA والخدمات التي تعمل في طبقات أكثر امتيازًا . يجب أن يستوفي بائعو النظام على الرقاقة (SoC) مجموعة جديدة من المتطلبات قبل أن يتمكنوا من دعم pKVM. إذا لم يكن الأمر كذلك، فلا يمكن توفير السرية.

تنطبق النزاهة على البيانات الموجودة في الذاكرة والحساب . لا تستطيع pVMs:

  • تعديل ذاكرة بعضهم البعض دون موافقة.
  • التأثير على حالة وحدة المعالجة المركزية لبعضهم البعض.

يتم فرض هذه المتطلبات بواسطة برنامج Hypervisor. ومع ذلك، تظهر المشكلات المتعلقة بسلامة البيانات أيضًا مع تخزين البيانات الافتراضية عندما يجب تطبيق حلول أخرى، مثل dm-verity أو AuthFS.

لا تختلف هذه المبادئ عن عزل العمليات الذي يقدمه Linux حيث يتم التحكم في الوصول إلى صفحات الذاكرة من خلال جداول صفحات المرحلة الأولى ومفاتيح سياق kernel بين العمليات. ومع ذلك، فإن جزء EL2 من pKVM، الذي يفرض هذه الخصائص، لديه ما يقرب من نصف سطح الهجوم مقارنة بنواة Linux بأكملها (حوالي 10 آلاف مقابل 20 مليون سطر من التعليمات البرمجية) وبالتالي يوفر ضمانًا أقوى لاستخدام الحالات الحساسة جدًا بحيث لا يمكن الاعتماد عليها. على عملية العزل.

نظرًا لحجمها، فإن pKVM يفسح المجال للتحقق الرسمي. نحن ندعم بنشاط البحث الأكاديمي، الذي يهدف إلى إثبات هذه الخصائص رسميًا على ثنائي pKVM الفعلي.

تتناول بقية هذه الصفحة ضمانات السرية والنزاهة التي يوفرها كل مكون حول pKVM.

مراقب الأجهزة الافتراضية

pKVM هو برنامج Hypervisor يستند إلى KVM والذي يعزل pVMs وAndroid في بيئات تنفيذ غير موثوقة بشكل متبادل. يتم الاحتفاظ بهذه الخصائص في حالة حدوث تسوية داخل أي pVM، بما في ذلك المضيف. تحتاج برامج Hypervisor البديلة التي تتوافق مع AVF إلى توفير خصائص مماثلة.

  • لا يمكن لـ pVM الوصول إلى صفحة تنتمي إلى كيان آخر، مثل pVM أو برنامج Hypervisor، ما لم تتم مشاركته بشكل صريح بواسطة مالك الصفحة. تتضمن هذه القاعدة المضيف pVM وتنطبق على كل من الوصول إلى وحدة المعالجة المركزية (CPU) وDMA.

  • قبل إرجاع الصفحة التي يستخدمها pVM إلى المضيف، كما هو الحال عندما يتم تدمير pVM، يتم مسحها.

  • يتم مسح ذاكرة جميع أجهزة pVM والبرامج الثابتة لـ pVM من تمهيد جهاز واحد قبل تشغيل أداة تحميل نظام التشغيل في التمهيد التالي للجهاز.

  • عند توصيل مصحح أخطاء الأجهزة، مثل SJTAG، لا يمكن لـ pVM الوصول إلى مفاتيحه التي تم سكها مسبقًا.

  • لا يتم تشغيل البرنامج الثابت لـ pVM إذا لم يتمكن من التحقق من الصورة الأولية.

  • لا يتم تشغيل البرنامج الثابت لـ pVM إذا تم اختراق سلامة instance.img .

  • لا يمكن اشتقاق سلسلة شهادات التمهيد (BCC) ومعرفات الأجهزة المركبة (CDIs) المقدمة لمثيل pVM إلا من خلال هذا المثيل المحدد.

نظام التشغيل الضيف

يعد Microdroid مثالاً لنظام تشغيل يعمل ضمن pVM. يتكون Microdroid من أداة تحميل التشغيل المستندة إلى U-boot، وGKI، ومجموعة فرعية من مساحة مستخدمي Android، ومشغل الحمولة. يتم الاحتفاظ بهذه الخصائص في حالة حدوث تسوية داخل أي pVM، بما في ذلك المضيف. يجب أن توفر أنظمة التشغيل البديلة التي تعمل في pVM خصائص مماثلة.

  • لن يتم تشغيل Microdroid إذا تعذر التحقق من boot.img أو super.img أو vbmeta.img أو vbmeta\_system.img .

  • لن يتم تشغيل Microdroid إذا فشل التحقق من APK.

  • لن يتم تشغيل نفس مثيل Microdroid حتى إذا تم تحديث APK.

  • لن يتم تشغيل Microdroid إذا فشل أي من APEXes في التحقق.

  • لن يتم تشغيل Microdroid (أو التمهيد بحالة أولية نظيفة) إذا تم تعديل instance.img خارج pVM الضيف.

  • يوفر Microdroid شهادة على سلسلة التمهيد.

  • يؤدي أي تعديل (غير موقع) على صور القرص المشتركة مع pVM الضيف إلى حدوث خطأ في الإدخال/الإخراج على جانب pVM.

  • لا يمكن اشتقاق BCC وCDI المقدمة لمثيل pVM إلا من خلال هذا المثيل المحدد.

  • تعتبر عمليات الكتابة إلى وحدة تخزين مشفرة سرية، ولكن لا توجد حماية من التراجع عند دقة كتلة التشفير. علاوة على ذلك، يؤدي التلاعب الخارجي التعسفي الآخر بكتلة البيانات إلى ظهور تلك الكتلة كقمامة إلى Microdroid، بدلاً من اكتشافها صراحةً كخطأ إدخال/إخراج.

ذكري المظهر

هذه هي الخصائص التي يحتفظ بها Android باعتباره المضيف ولكنها لا تنطبق في حالة حدوث اختراق للمضيف:

  • لا يمكن لـ pVM الضيف التفاعل بشكل مباشر مع (مثل إجراء اتصال vsock ) مع pVMs الضيف الأخرى.

  • يمكن فقط لـ VirtualizationService في المضيف pVM إنشاء قناة اتصال إلى pVM.

  • يمكن فقط للتطبيقات التي تم توقيعها باستخدام مفتاح النظام الأساسي أن تطلب إذنًا لإنشاء أجهزة pVM أو امتلاكها أو التفاعل معها.

  • لا تتم إعادة استخدام المعرف، الذي يسمى معرف السياق (CID)، المستخدم في إعداد اتصالات vsock بين المضيف وpVM، عند تشغيل pVM المضيف. على سبيل المثال، لا يمكنك استبدال pVM قيد التشغيل بآخر.

التوفر

في سياق pVMs، يشير التوفر إلى قيام المضيف بتخصيص موارد كافية للضيوف حتى يتمكن الضيوف من أداء المهام التي تم تصميمهم لأدائها.

تتضمن مسؤوليات المضيف جدولة وحدات المعالجة المركزية الافتراضية الخاصة بـ pVM. تقوم KVM، على عكس برامج Hypervisor التقليدية من النوع 1 (مثل Xen)، باتخاذ قرار التصميم الصريح لتفويض جدولة عبء العمل إلى kernel المضيف. نظرًا لحجم وتعقيد برامج الجدولة اليوم، فإن قرار التصميم هذا يقلل بشكل كبير من حجم قاعدة الحوسبة الموثوقة (TCB) ويمكّن المضيف من اتخاذ قرارات جدولة أكثر استنارة لتحسين الأداء. ومع ذلك، يمكن للمضيف الخبيث اختيار عدم جدولة الضيف مطلقًا.

وبالمثل، تقوم pKVM أيضًا بتفويض معالجة المقاطعة الفعلية إلى kernel المضيف لتقليل تعقيد برنامج Hypervisor وترك المضيف مسؤولاً عن الجدولة. يتم بذل جهد للتأكد من أن إعادة توجيه مقاطعات الضيف تؤدي فقط إلى رفض الخدمة (عدد قليل جدًا، أو كثير جدًا، أو مقاطعات تم توجيهها بشكل خاطئ).

وأخيرًا، تكون عملية مراقبة الجهاز الظاهري (VMM) الخاصة بالمضيف مسؤولة عن تخصيص الذاكرة وتوفير الأجهزة الافتراضية، مثل بطاقة الشبكة. يمكن لـ VMM الضارة حجب الموارد عن الضيف.

على الرغم من أن pKVM لا يوفر التوفر للضيوف، فإن التصميم يحمي توفر المضيف من الضيوف الضارين لأن المضيف يمكنه دائمًا استباق الضيف أو إنهائه واستعادة موارده.

الإقلاع الآمن

ترتبط البيانات بمثيلات pVM، ويضمن التمهيد الآمن إمكانية التحكم في الوصول إلى بيانات المثيل. يوفر التمهيد الأول للمثيل ذلك عن طريق إنشاء ملح سري لـ pVM بشكل عشوائي واستخراج التفاصيل، مثل التحقق من المفاتيح العامة والتجزئة، من الصور المحملة. يتم استخدام هذه المعلومات للتحقق من التمهيد اللاحق لمثيل pVM والتأكد من تحرير أسرار المثيل فقط للصور التي تجتاز التحقق. تحدث هذه العملية لكل مرحلة تحميل داخل pVM: البرامج الثابتة pVM، وpVM ABL، وMicrodroid، وما إلى ذلك.

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

تقوم كل مرحلة بتسليم كائن CBOR مشفر بشكل حتمي إلى المرحلة التالية. يحتوي هذا الكائن على أسرار ونسخة مخفية الوجهة، والتي تحتوي على معلومات الحالة المتراكمة، مثل ما إذا تم تحميل المرحلة الأخيرة بشكل آمن.

الأجهزة غير المؤمنة

عندما يتم إلغاء قفل الجهاز باستخدام fastboot oem unlock ، يتم مسح بيانات المستخدم. تحمي هذه العملية بيانات المستخدم من الوصول غير المصرح به. يتم أيضًا إبطال البيانات الخاصة بـ pVM عند إلغاء قفل الجهاز.

بمجرد إلغاء القفل، يكون لمالك الجهاز الحرية في إعادة تحميل الأقسام التي تكون عادةً محمية بواسطة التمهيد الذي تم التحقق منه، بما في ذلك الأقسام التي تحتوي على تطبيق pKVM. لذلك، لن يتم الوثوق بـ pKVM الموجود على جهاز غير مؤمّن لدعم نموذج الأمان.

يمكن للأطراف البعيدة ملاحظة هذه الحالة التي قد تكون غير آمنة من خلال فحص حالة التمهيد التي تم التحقق منها للجهاز في شهادة تصديق المفتاح.