كانت ميزة "توفير المفاتيح عن بُعد" (RKP) جزءًا من مشروع AOSP منذ الإصدار 12 من نظام التشغيل Android. يتضمّن نظام التشغيل Android 14 وحدة قابلة للتحديث لتوفير الخدمات عن بُعد، ما يزيد من مرونة الميزات من خلال تحسين قوة واجهة برمجة التطبيقات للخدمة وتقليل الوقت اللازم لإجراء أي تحسينات عليها.
الحافز
تبسيط خدمة RKP من خلال تجميع كل شيء في حزمة APEX
قبل الإصدار Android 14، كانت ميزة "مفتاح الاسترداد" مقسّمة إلى تطبيق RemoteProvisioner
وKeystore 2.0. كان تطبيق RemoteProvisioner
مسؤولاً عن التواصل مع الخلفية الخاصة بـ RKP، وكان Keystore 2.0 مسؤولاً عن تخزين المفاتيح والتواصل مع طبقات تجريد الأجهزة (HAL). لم يكن هذا التصميم جيدًا لأنّ مفاتيح RKP تختلف بشكل كبير عن مفاتيح Keystore من حيث البيانات الوصفية المرفقة. بالإضافة إلى ذلك، تطلّب ذلك إجراء تعديلات غير مريحة على رمز إطار عمل Keystore لتنبيه RemoteProvisioner
بشأن احتمال حدوث نقص في الموارد.
تم تصميم RKP كوحدة Mainline لتحسين هذه النقاط من خلال تجميع كل شيء في حزمة APEX.
حدود الوحدة
تحتوي حزمة APEX الرئيسية لخدمة RKP، أي com.android.rkpd
، على تطبيق Remote Key Provisioning
Daemon (RKPD) ومكوّن خادم لنظام التزويد عن بُعد
(تم إنشاؤه باستخدام Java).
بنية Stack
يوضّح الشكل 1 بنية حزمة RKP.
الشكل 1. بنية حزمة RKP
البنية الداخلية
يوضّح الشكل 2 البنية الداخلية لخدمة RKP.
الشكل 2. البنية الداخلية لـ RKP
معلومات إضافية حول البنية الداخلية لـ RKP:
RKPD Mainline APEX -
com.android.rkpd
- تطبيق RKPD (Java)
packages/modules/RemoteKeyProvisioning/app
- RKPD system server fragment (Java)
packages/modules/RemoteKeyProvisioning/system-server
- تطبيق RKPD (Java)
واجهة/تنفيذ طبقة تجريد الأجهزة (HAL) (لغة Rust/C++)
IRemotelyProvisionedComponent
hardware/interfaces/security/keymint
تنسيق الحزمة
يتم تجميع التطبيق والوظائف الأخرى للوحدة النمطية في ملف APEX
com.android.rkpd
.
التبعيات
يظلّ نموذج RKP يعتمد على توفّر عمليات تنفيذ
IRemotelyProvisionedComponent
لتوفير مفاتيح التصديق
وطلبات الشهادات.
استراتيجية الاختبار
يحتوي إصدار AOSP من حزمة APEX للتطبيق على اختبارات الوحدات التي يمكن لمصنّعي المعدات الأصلية تشغيلها.