הקצאת מפתחות מרחוק

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.

ארכיטקטורת סטאק RKP

איור 1. ארכיטקטורת מחסנית RKP.

ארכיטקטורה פנימית

באיור 2 מוצגת הארכיטקטורה הפנימית של RKP.

הארכיטקטורה הפנימית של RKP

איור 2. הארכיטקטורה הפנימית של RKP.

מידע נוסף על הארכיטקטורה הפנימית של RKP:

  • RKPD Mainline APEX – com.android.rkpd

    • אפליקציית RKPD‏ (Java)
      • packages/modules/RemoteKeyProvisioning/app
    • קטע של שרת מערכת RKPD (Java)
      • packages/modules/RemoteKeyProvisioning/system-server
  • ממשק/הטמעה של HAL‏ (Rust/‏C++)

    • IRemotelyProvisionedComponent
      • hardware/interfaces/security/keymint

פורמט החבילה

האפליקציה והפונקציות האחרות של המודול נארזות בקובץ APEX‏ com.android.rkpd.

יחסי תלות

מודול ה-RKP ממשיך להסתמך על קיומם של הטמעות של IRemotelyProvisionedComponent כדי לספק את מפתחות האימות ואת בקשות האישור.

אסטרטגיית בדיקה

גרסת AOSP של אפליקציית APEX מכילה בדיקות יחידה (unit testing) ש-OEM יכולים להריץ.