בהתאם למסמך הגדרת התאימות (CDD) של Android, יצרני ציוד מקורי חייבים לספק דרך לאפשר פיתוח אפליקציות. עם זאת, מתן אפשרויות לפיתוח כמו במכשירים ניידים ברכב עלול לחשוף את הרכב להתקפות. עכשיו יצרני ציוד מקורי יכולים לשלוט בגישה לאפשרויות הפיתוח באמצעות מנגנון של אסימון קריפטוגרפית מאומת. באופן ספציפי, יצרן ציוד מקורי יכול:
- מגדירים את הגבלות ברירת המחדל הרצויות לפני ההפעלה הראשונה.
- מתן הרשאה מאובטחת למפתחים, באמצעות אסימוני קריפטו אם רוצים.
- מחילים שינויים בהגבלות אחרי שהמפתח או המפתחת אומתו וגם קיבלו הרשאה.
במאמר הזה מתוארת הטמעת עזרה שמכילה אפליקציית בקרת הגבלות לניפוי באגים ונקודת קצה מרוחקת להנפקת אסימונים.
טרמינולוגיה
בנוסף למונחון, במאמר הזה נעשה שימוש במונחים הבאים:
- JSON Web Signature (JWS), כפי שמוגדר ב-RFC 7515
- המכון הלאומי לתקנים וטכנולוגיה (NIST)
עיצוב
יצרני ציוד מקורי יכולים להעניק הרשאה למפתחים באמצעות אסימוני JSON Web Signature (JWS) (RFC7515). בהטמעת העזר, אסימוני הגישה מונפקים על ידי יצרני ציוד מקורי (OEM) ונצרכים על ידי אפליקציית הבקרה על ההגבלות. אסימוני הגישה נועדו לעמוד בהתקפות של השמעה חוזרת ובאסימונים מזויפים.
איור 1. עיצוב
שילוב והגדרה
יצרני ציוד מקורי (OEM) צריכים לציין את הגבלות ברירת המחדל הרצויות בהפעלה הראשונה. הפעולה הזו מתבצעת באמצעות כמה שכבות-על של משאבים סטטיים כדי לשנות את הגדרות ברירת המחדל במסגרת AOSP.
אפשר להגדיר את הגבלות ברירת המחדל של משתמש המערכת ללא ראש באמצעות המחרוזת config_defaultFirstUserRestrictions
בקובץ frameworks/base/core/res/res/values/config.xml
, לדוגמה:
<!-- User restrictions set when the first user is created. Note: Also update appropriate overlay files. --> <string-array translatable="false" name="config_defaultFirstUserRestrictions"> <item>no_debugging_features</item> </string-array>
אפשר להגדיר את הגבלות ברירת המחדל לנהגים, לנוסעים ולאורחים ב-frameworks/base/core/res/res/xml/config_user_types.xml
. יצרן ציוד מקורי יכול להוסיף שכבה|
על המחרוזות האלה כדי להגדיר את הגבלות ברירת המחדל לכל סוג משתמש בהתאמה, לדוגמה:
<user-types> <full-type name="android.os.usertype.full.SECONDARY" > <default-restrictions no_debugging_features="true"/> </full-type> <full-type name="android.os.usertype.full.GUEST" > <default-restrictions no_debugging_features="true"/> </full-type> </user-types>
הטמעת עזרה זמינה במיקום הבא ב-AOSP:
packages/apps/Car/DebuggingRestrictionController
בדיקה
Google ממליצה ליצרני ציוד מקורי להתחיל בהטמעת העזר ולפתח ממנה.
- אחרי שמגדירים את ההגבלות הרצויות בקובצי שכבת-העל, צריך לבצע הידור של AAOS ולאמת את התהליכים שהוגדרו. משתמשים באפליקציית העזרה ובשירות המקומי שתומך ב-JWS כדי לאמת את הגדרות הגישה.
- מגדירים את המערכת כך שתשתמש בשירות הענן המותאם ל-JWS (אופציונלי). מוודאים שהתהליך הרצוי מתבצע בשירות הקצה העורפי.