הקצאת מפתחות מרחוק (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) ורכיב שרת של מערכת הקצאת הרשאות מרחוק (שנבנה באמצעות 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++)
IRemotelyProvisionedComponenthardware/interfaces/security/keymint
פורמט החבילה
האפליקציה ופונקציות אחרות של המודול נארזות כקובץ APEX com.android.rkpd.
פניות קשורות
מודול ה-RKP ממשיך להסתמך על קיומם של יישומי IRemotelyProvisionedComponent כדי לספק את מפתחות האימות ואת בקשות האישור.
אסטרטגיית בדיקה
גרסת ה-AOSP של חבילת ה-APEX של האפליקציה מכילה בדיקות יחידה שיצרני ציוד מקורי יכולים להריץ.