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.
גבול המודול
ה-APEX הראשי של RKP, 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 יכולים להריץ.