הקצאת מפתחות מרחוק (RKP) היא חלק מ-AOSP מאז Android 12. ב-Android 14 מוצג מודול שאפשר לעדכן מרחוק את ההקצאה שלו, והוא משפר את העמידות של התכונות על ידי שיפור החוסן של ה-API של השירות וקיצור הזמן שנדרש להטמעת שיפורים.
מוטיבציה
לפשט את שירות ה-RKP על ידי אריזת הכול ב-APEX.
לפני Android 14, RKP היה מחולק לאפליקציה, RemoteProvisioner
ול-Keystore 2.0. אפליקציית RemoteProvisioner
הייתה אחראית ליצירת קשר עם ה-backend של RKP, ו-Keystore 2.0 היה אחראי לאחסון המפתחות ולתקשורת עם HALs. זו לא הייתה ארכיטקטורה טובה כי מפתחות 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++)
IRemotelyProvisionedComponent
hardware/interfaces/security/keymint
פורמט החבילה
האפליקציה ופונקציות אחרות של המודול ארוזות כקובץ APEX com.android.rkpd
.
תלויות
מודול ה-RKP ממשיך להסתמך על קיומם של יישומי IRemotelyProvisionedComponent
כדי לספק את מפתחות האימות ואת בקשות האישור.
אסטרטגיית בדיקה
גרסת ה-AOSP של חבילת ה-APEX של האפליקציה מכילה בדיקות יחידות שיצרני ציוד מקורי יכולים להריץ.