الأمان

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

  • يضمن Android أنّه لا يُسمَح بإنشاء أجهزة الكمبيوتر الشخصي (PVM) أو فحصها إلا للتطبيقات التي تمتلك أذونات "أجهزة افتراضية" (pVM).

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

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

نموذج الأمان

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

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

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

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

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

ينطبق التكامل على البيانات في الذاكرة والحوسبة، ولا يمكن للأجهزة الافتراضية أن:

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

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

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

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

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

ميزة Hypervisor (مراقب الأجهزة الظاهرية)

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

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

  • قبل أن يتم عرض الصفحة التي تستخدمها إحدى الأجهزة على المضيف (pVM) إلى المضيف، يتم حجب البيانات عند تلفها مثلاً.

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

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

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

  • يتعذّر تشغيل برامج pVM الثابتة في حال اختراق سلامة instance.img.

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

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

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

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

  • لن يتم تشغيل Microdroid في حال تعذُّر التحقق من حزمة APK.

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

  • لن يتم تشغيل Microdroid في حال لم تجتَز أيّ من APEX في عملية التحقق.

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

  • يوفر Microdroid مصادقة لسلسلة التمهيد.

  • يؤدي إجراء أي تعديل (غير موقَّع) على صور القرص التي تتم مشاركتها مع الجهاز الافتراضي الضيف إلى خطأ في الإدخال/الإخراج من جانب الجهاز الافتراضي (pVM).

  • لا يمكن اشتقاق سلسلة شهادات DICE وCDI المقدَّم إلى مثيل pVM إلا من خلال ذلك المثيل المحدد.

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

Android

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

  • لا يمكن لأي جهاز افتراضي للضيوف التفاعل مباشرةً (مثل إجراء اتصال vsock) مع أجهزة افتراضية خاصة بالضيوف الآخرين.

  • لا يمكن إنشاء قناة اتصال إلى جهاز افتراضي (pVM) إلا من خلال VirtualizationService في الجهاز المضيف.

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

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

أماكن التوفّر

في سياق الأجهزة الافتراضية، تشير سمة availability إلى أنّ المضيف يخصّص موارد كافية للضيوف ليتمكّنوا من تنفيذ المهام التي تم تصميمها لأدائها.

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

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

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

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

التمهيد الآمن

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

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

تُسلِّم كل مرحلة كائن CBOR تم ترميزه حتميًا إلى المرحلة التالية. يحتوي هذا العنصر على أسرار وسلسلة شهادات DICE، التي تحتوي على معلومات مجمّعة عن الحالة، مثل ما إذا كان قد تم تحميل المرحلة الأخيرة بشكل آمن أم لا.

الأجهزة غير المقفلة

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

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

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