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

הקצאת מפתחות מרחוק (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.

ארכיטקטורת מחסנית 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 של האפליקציה מכילה בדיקות יחידות שיצרני ציוד מקורי יכולים להריץ.