لمنع تشغيل حِزم بيانات عشوائية داخل جهاز افتراضي شخصي، يستخدم إطار عمل تكنولوجيات المحاكاة الافتراضية في Android (AVF) منهجًا للأمان على عدة طبقات تضيف كل طبقة إجراءات تنفيذ إضافية. في ما يلي قائمة بطبقات أمان AVF:
يضمن نظام التشغيل Android أنّه لا يُسمح إلا للتطبيقات التي تمتلك أذونات تشغيل الأجهزة الافتراضية بإنشاء الأجهزة الافتراضية أو فحصها.
أداة تحميل البرامج: تضمن أداة تحميل البرامج عدم السماح بتشغيل سوى صور نظام التشغيل الظاهري التي وقّعت عليها Google أو مورّدو الأجهزة، كما تلتزم بالإجراءات المتعلقة بميزة Android Verified Boot. تشير هذه البنية إلى أنّ التطبيقات التي تعمل على أجهزة افتراضية شخصية لا يمكنها تجميع ملفاتها الأساسية.
توفّر pVM دفاعًا متعدّد الطبقات، مثل SELinux، للحمولات التي يتم تشغيلها في pVM. لا تسمح استراتيجية الدفاع المتعدّد بربط البيانات على أنّها ملف قابل للتنفيذ (
neverallow execmem
) وتحرص على أن يسري W^X على جميع أنواع الملفات.
نموذج الأمان
تشكِّل السرية والنزاهة ومدى التوفّر (مثلث CIA) نموذجًا مصمَّمًا لتوجيه سياسات أمان المعلومات:
- السرية هي مجموعة من القواعد التي تحدّ من الوصول إلى المعلومات.
- النزاهة هي تأكيد أنّ المعلومات موثوقة ودقيقة.
- مدى التوفّر هو ضمان الوصول الموثوق به إلى المعلومات من قِبل الكيانات المعتمَدة.
السرية والنزاهة
تنبع السرية من خصائص عزل الذاكرة التي يتم فرضها بواسطة برنامج Hypervisor (مراقب الأجهزة الافتراضية) في pKVM، حيث يتتبّع جهاز pKVM ملكية الذاكرة لصفحات الذاكرة الفعلية الفردية وأي طلبات من مالكي الصفحات لتتم مشاركتها. ويضمن pKVM أن يتم تعيين الصفحة المحدّدة فقط لأجهزة pVM (المضيف والضيوف) في جدولَي الصفحات من المرحلة الثانية والتي يتم التحكّم فيها من خلال برنامج Hypervisor (مراقب الأجهزة الظاهرية). تحافظ هذه البنية على خصوصية محتوى الذاكرة التي تملكها جهاز افتراضي (pVM) ما لم يشاركها المالك صراحةً مع جهاز افتراضي (pVM) آخر.
تسري أيضًا القيود المفروضة على الحفاظ على السرية على أي كيانات في النظام تُجري عمليات وصول إلى الذاكرة نيابةً عن آلات افتراضية مخصّصة، وهي الأجهزة المزوّدة بإمكانية الوصول المباشر إلى الذاكرة والخدمات التي تعمل في طبقات أكثر امتيازًا. على مورّدي النظام على الرقاقة (SoC) استيفاء مجموعة جديدة من المتطلبات قبل أن يتمكنوا من دعم pKVM. وفي حال عدم توفّر هذه الشروط، لا يمكن الحفاظ على السرية.
تنطبق السلامة على البيانات في الذاكرة والعمليات الحسابية. لا يمكن لأجهزة افتراضية الشخصية إجراء ما يلي:
- تعديل ذكريات بعضهم البعض بدون موافقة
- التأثير في حالة وحدة المعالجة المركزية (CPU) الخاصة بكل منهما
يفرض نظام التشغيل الظاهري هذه المتطلبات. ومع ذلك، تظهر أيضًا مشاكل متعلقة بسلامة البيانات عند تخزين البيانات الافتراضية عندما يجب تطبيق حلول أخرى، مثل dm-verity أو AuthFS.
لا تختلف هذه المبادئ عن عزل العمليات الذي يوفّره نظام التشغيل Linux، حيث يتم التحكّم في الوصول إلى صفحات الذاكرة باستخدام جداول الصفحات من المرحلة 1 وعمليات تبديل سياق ملف التمهيد بين العمليات. ومع ذلك، فإنّ جزء EL2 من pKVM الذي يفرض هذه السمات يملك مساحة هجوم أقل بثلاثة أوامر من حيث الحجم مقارنةً بنواة Linux بالكامل (10 آلاف سطر برمجي تقريبًا مقابل 20 مليون سطر برمجي)، وبالتالي يقدّم ضمانًا أقوى لحالات الاستخدام التي تكون حساسة جدًا بحيث لا يمكن الاعتماد على عزل العمليات.
نظرًا لحجمه، يمكن إثبات صحة pKVM بشكل رسمي. نحن ندعم بشكلٍ نشط الأبحاث الأكاديمية التي تهدف إلى إثبات هذه الخصائص رسميًا في ملف pKVM الثنائي الفعلي.
يتناول الجزء المتبقّي من هذه الصفحة السرية والتكامل الضمانات التي يوفّرها كل مكوّن في وحدة تحكّم في شاشة البطاقة الشخصية (pKVM).
برنامج Hypervisor (مراقب الأجهزة الظاهرية)
pKVM هو برنامج إدارة خادم افتراضي يستند إلى KVM، ويعزل أجهزة pVM وAndroid في بيئات تنفيذ غير موثوق بها. تظل هذه السمات سارية في حال اختراق أي جهاز افتراضي شخصي، بما في ذلك المضيف. يجب أن توفّر أنظمة التشغيل الافتراضية البديلة التي تتوافق مع AVF خصائص مشابهة.
لا يمكن لمحطة عمل افتراضية الوصول إلى صفحة تابعة لكيان آخر، مثل محطة عمل افتراضية أو جهاز افتراضي، ما لم يشاركها مالك الصفحة صراحةً. تشمل هذه القاعدة مضيف pVM وتنطبق على كلّ من عمليات الوصول إلى وحدة المعالجة المركزية وDMA.
قبل أن يتم عرض الصفحة التي تستخدمها إحدى الأجهزة على المضيف (pVM) إلى المضيف، يتم حجب البيانات عند تلفها مثلاً.
يتم حجب بيانات ذاكرة جميع أجهزة pVM والبرامج الثابتة لأجهزة pVM من جهاز تم تشغيله قبل تشغيل برنامج إقلاع نظام التشغيل في عملية تشغيل الجهاز اللاحقة.
عند إرفاق أداة تصحيح أخطاء الأجهزة، مثل SJTAG، لا يمكن لجهاز pVM الوصول إلى مفاتيحه التي تم إنشاؤها سابقًا.
لا يتم تشغيل البرامج الثابتة لأجهزة pVM إذا لم تتمكّن من التحقّق من الصورة الأولية.
لا يتم تشغيل البرامج الثابتة لنظام التشغيل pVM في حال اختراق سلامة
instance.img
.لا يمكن أن تحصل سوى تلك النسخة المحدّدة على سلسلة شهادة DICE ومعرّفات الأجهزة المركبة (CDIs) المقدَّمة إلى إحدى نُسخ جهاز افتراضي (VM).
نظام تشغيل الضيف
Microdroid هو مثال على نظام التشغيل الذي يعمل ضمن جهاز افتراضي شخصي. يتكوّن Microdroid من أداة تحميل تمهيدية تستند إلى U-boot وGKI ومجموعة فرعية من مساحة المستخدم في Android وبرنامج لإطلاق الحمولة. وتظل هذه الخصائص في حال اختراق أي جهاز افتراضي (PVM)، بما في ذلك المضيف. من المفترض أن توفّر أنظمة التشغيل البديلة التي تعمل في جهاز افتراضي خصائص مشابهة.
لن يتم تشغيل Microdroid إذا تعذّر إثبات صحة
boot.img
أوsuper.img
أوvbmeta.img
أوvbmeta\_system.img
.لن يتم تشغيل Microdroid في حال تعذّر إثبات صحة حزمة APK.
لن يتم تشغيل نسخة Microdroid نفسها حتى إذا تم تحديث حزمة APK.
لن يتم تشغيل Microdroid في حال لم تجتَز أيّ من APEX في عملية التحقق.
لن يتم تشغيل Microdroid (أو يتم تشغيله بالحالة الأولية النظيفة) في حال تعديل
instance.img
خارج جهاز الكمبيوتر الشخصي للضيف.يقدّم Microdroid شهادة اعتماد لسلسلة التمهيد.
يؤدي أي تعديل (غير موقَّع) على صور القرص التي تتم مشاركتها مع جهاز افتراضي ضيف (pVM) إلى حدوث خطأ في الإدخال/الإخراج من جانب جهاز pVM.
لا يمكن أن تحصل سوى تلك المثيل المحدّد على سلسلة شهادة DICE وبيانات اعتماد المشتركين في خدمات المحتوى (CDIs) المقدَّمة إلى مثيل جهاز افتراضي (VM).
تكون عمليات الكتابة في وحدة تخزين مشفّرة سرية، ولكن لا تتوفر حماية لعمليات التراجع على مستوى دقة كتلة التشفير. بالإضافة إلى ذلك، يؤدي التدخل الخارجي العشوائي الآخر في كتلة البيانات إلى ظهور تلك الكتلة كبيانات غير صالحة في Microdroid، بدلاً من رصدها صراحةً كخطأ في الإدخال/الإخراج.
Android
في ما يلي السمات التي يحافظ عليها Android كمضيف، ولكن لا تنطبق في حال اختراق المضيف:
لا يمكن لوحدة افتراضية ضيفة التفاعل مباشرةً مع وحدات افتراضية ضيفة أخرى (مثل إجراء
vsock
اتصال).لا يمكن إلا لـ
VirtualizationService
في جهاز الكمبيوتر الشخصي الظاهري المضيف إنشاء قناة اتصال بجهاز كمبيوتر شخصي ظاهري.لا يمكن للتطبيقات التي تم توقيعها باستخدام مفتاح النظام الأساسي إلا طلب الإذن بإنشاء الأجهزة الافتراضية المحمولة أو امتلاكها أو التفاعل معها.
لا تتم إعادة استخدام المعرّف، الذي يُعرف باسم معرّف السياق (CID)، المستخدَم في إعداد اتصالات
vsock
بين المضيف ووحدة المعالجة الافتراضية (VM) عندما تكون وحدة المعالجة الافتراضية للمضيف قيد التشغيل. على سبيل المثال، لا يمكنك استبدال جهاز افتراضي يعمل بجهاز آخر.
مدى التوفّر
في سياق الأجهزة الافتراضية للبرامج، يشير مدى التوفّر إلى تخصيص المضيف موارد كافية للأجهزة الافتراضية للبرامج حتى تتمكّن من تنفيذ المهام التي تم تصميمها للقيام بها.
تشمل مسؤوليات المضيف جدولة وحدات المعالجة المركزية الافتراضية لنظام التشغيل pVM. على عكس أنظمة التشغيل الافتراضية من النوع 1 التقليدية (مثل Xen)، تُجري أداة KVM قرارًا صريحًا بشأن التصميم يقضي بتفويض جدولة أعباء العمل إلى نواة المضيف. نظرًا لحجم جداول التشغيل الحالية و تعقيدها، يقلل قرار التصميم هذا بشكل كبير من حجم قاعدة الحوسبة الموثوق بها (TCB) ويمكّن المضيف من اتّخاذ قرارات جدولة أكثر استنارة لتحسين الأداء. ومع ذلك، يمكن أن يختار المضيف الضار عدم جدولة ضيف أبدًا.
وبالمثل، تفوض pKVM أيضًا معالجة المقاطعات المادية إلى نواة المضيف لتقليل تعقيد برنامج التشغيل الظاهري وترك المضيف مسؤولاً عن الجدولة. ويتم بذل جهد لضمان أن إعادة توجيه مقاطعات الضيف لا تؤدي إلا إلى رفض الخدمة (المقاطعات قليلة جدًا أو كثيرة جدًا أو تتم بشكل خاطئ).
أخيرًا، تتحمّل عملية "مراقبة الجهاز الافتراضي" (VMM) في المضيف مسؤولية تخصيص الذاكرة وتوفير الأجهزة الافتراضية، مثل بطاقة الشبكة. يمكن لمدير عمليات إدارة الأجهزة الافتراضية الضار حجب الموارد عن الجهاز الضيف.
على الرغم من أنّ pKVM لا يوفّر إمكانية وصول الضيوف، إلا أنّ التصميم يحمي توفّر المضيف من الضيوف الضارين لأنّ المضيف يمكنه دائمًا منع الضيف أو إنهاؤه واستعادة موارده.
التمهيد الآمن
تكون البيانات مرتبطة بنُسخ من جهاز افتراضي شخصي، ويضمن التشغيل الآمن إمكانية التحكّم في الوصول إلى data بيانات النسخة. يؤدي التشغيل الأول لمثيل مثيل إلى توفيره من خلال إنشاء قيمة عشوائية لبيانات الجهاز الافتراضي (PVM) واستخراج التفاصيل، مثل علامات التجزئة والمفاتيح العامة لإثبات الملكية، من الصور المحمَّلة. وتُستخدم هذه المعلومات للتحقق من عمليات التشغيل اللاحقة لمثيل pVM والتأكّد من إطلاق أسرار المثيل فقط إلى الصور التي تجتاز عملية إثبات الملكية. تحدث هذه العملية في كل مرحلة تحميل ضمن pVM: البرامج الثابتة لنظام التشغيل pVM وABL لنظام التشغيل pVM وMicrodroid وما إلى ذلك.
توفّر DICE لكل مرحلة تحميل مفتاحَي إثبات الهوية، ويكون الجزء العلني منهما معتمَدًا في شهادة DICE لهذه المرحلة. يمكن أن يتغيّر مفتاح التشفير هذا بين عمليات بدء التشغيل، لذا يتم أيضًا اشتقاق مفتاح تشفير ختم ثابت لجلسة الجهاز الافتراضي عند إعادة التشغيل، وبالتالي يكون مناسبًا لحماية الحالة الثابتة. إنّ سرّ الإغلاق ذا قيمة عالية للجهاز الظاهري، لذا يجب عدم استخدامه مباشرةً. بدلاً من ذلك، يجب اشتقاق مفاتيح الإغلاق من مفتاح الإغلاق ويجب إتلاف مفتاح الإغلاق في أقرب وقت ممكن.
تُسلِّم كل مرحلة كائن CBOR تم ترميزه حتميًا إلى المرحلة التالية. يحتوي هذا العنصر على الأسرار وسلسلة شهادات DICE التي تحتوي على معلومات الحالة المتراكمة، مثل ما إذا تم تحميل المرحلة الأخيرة بأمان.
الأجهزة غير المقفلة
عند فتح قفل جهاز باستخدام fastboot oem unlock
، يتم محو بيانات المستخدم.
وتحمي هذه العملية بيانات المستخدمين من الوصول غير المصرّح به. وتُلغي أيضًا صلاحية البيانات الخاصة بجهاز افتراضي (pVM)
عند فتح قفل الجهاز.
بعد فتح قفل الجهاز، يمكن لمالك الجهاز إعادة فلاش الأقسام التي يتم حمايتها عادةً من خلال ميزة "التمهيد المعتمد"، بما في ذلك الأقسام التي تحتوي على تنفيذ pKVM. لذلك، لن يتم الوثوق ببرنامج pKVM على جهاز تم فتح قفله للحفاظ على نموذج الأمان.
يمكن للأطراف البعيدة ملاحظة هذه الحالة التي يُحتمل أن تكون غير آمنة من خلال فحص حالة تشغيل الجهاز التي تم التحقّق منها في شهادة مصادقة المفتاح.