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

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.

ארכיטקטורת סטאק 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 יכולים להריץ.