Remote Key Provisioning (RKP) הוא חלק מ-AOSP מאז Android 12. ב-Android 14 נוסף מודול שניתן לעדכון מרחוק, שמגדיל את עמידות התכונות על ידי שיפור העמידות של ממשק ה-API של השירות והקטנת הזמן להטמעת שיפורים בו.
מוטיבציה
כדי לפשט את שירות RKP, אפשר לארוז את כל הרכיבים בחבילת APEX.
לפני Android 14, RKP היה מופרד לאפליקציה, RemoteProvisioner
, ול-Keystore 2.0. האפליקציה RemoteProvisioner
הייתה אחראית ליצור קשר עם הקצה העורפי של RKP, ו-Keystore 2.0 היה אחראי גם לאחסון המפתחות וגם לתקשורת עם HAL. זו לא הייתה ארכיטקטורה טובה כי מפתחות RKP שונים באופן משמעותי ממפתחות Keystore מבחינת המטא-נתונים המצורפים. בנוסף, נדרשו שינויים לא נוחים בקוד של מסגרת Keystore כדי להתריע ל-RemoteProvisioner
על מחסור פוטנציאלי במשאבים.
ה-RKP כמודול Mainline נועד לשפר את הנקודות האלה על ידי אריזה מסודרת של כל הנתונים ב-APEX.
גבול המודול
גרסת RKP Mainline APEX, com.android.rkpd
, מכילה את האפליקציה Remote Key Provisioning Daemon (RKPD) ורכיב שרת של מערכת Provisioning מרחוק (שנבנה באמצעות Java).
ארכיטקטורת סטאק
איור 1 מציג את הארכיטקטורה של סטאק RKP.
איור 1. ארכיטקטורת מחסנית RKP.
הארכיטקטורה הפנימית
באיור 2 מוצגת הארכיטקטורה הפנימית של RKP.
איור 2. הארכיטקטורה הפנימית של RKP.
מידע נוסף על הארכיטקטורה הפנימית של RKP:
RKPD Mainline APEX –
com.android.rkpd
- אפליקציית RKPD (Java)
packages/modules/RemoteKeyProvisioning/app
- קטע של שרת מערכת RKPD (Java)
packages/modules/RemoteKeyProvisioning/system-server
- אפליקציית RKPD (Java)
ממשק/הטמעה של HAL (Rust/C++)
IRemotelyProvisionedComponent
hardware/interfaces/security/keymint
פורמט החבילה
האפליקציה והפונקציות האחרות של המודול נארזות בקובץ APEX com.android.rkpd
.
יחסי תלות
מודול ה-RKP ממשיך להסתמך על קיומם של הטמעות של IRemotelyProvisionedComponent
כדי לספק את מפתחות האימות ואת בקשות האישור.
אסטרטגיית בדיקה
גרסת AOSP של אפליקציית APEX מכילה בדיקות יחידה (unit testing) ש-OEM יכולים להריץ.