אחסון מותאם

מערכת Android תמיד תומכת באביזרי אחסון חיצוניים (כמו כרטיסי SD), אבל אביזרים אלה היו מוגבלים בעבר לאחסון קבצים פשוט, הזמניות הצפויה וההגנה המינימלית על הנתונים שמוצעת אחסון חיצוני מסורתי. ל-Android 6.0 נוספה היכולת לאמץ מדיה של אחסון חיצוני כך שתפעל כמו פנימית אחסון.

כשמשתמשים במדיית אחסון חיצוני, היא מפורמטת ומוצפנת כדי לעבוד עם מכשיר Android אחד בכל פעם. כי המדיה קשורה באופן הדוק במכשיר Android שאימץ אותו, הוא יכול לאחסן בבטחה אפליקציות וגם מידע פרטי לכל המשתמשים.

כשמשתמשים מכניסים מדיית אחסון חדשה (כמו כרטיס SD) למכשיר המיקום, מערכת Android שואלת איך הם רוצים להשתמש במדיה. הם יכולים לבחור לאמץ את המדיה, פורמטים ולהצפין אותה, או שהם יוכלו להמשיך להשתמש בה כפי שהוא לאחסון קבצים פשוט. אם הם יבחרו לאמץ, הפלטפורמה מציעה להעביר את התוכן של האחסון המשותף הראשי (טעון בדרך כלל ב /sdcard) למדיה החדשה שאימצה, ומפנה מקום יקר ואחסון פנימי. בשונה מנפח אחסון מסורתי, שמוגבל ל-2TB בשל שימוש ב- MBR, נפחי אחסון שניתנים להתאמה GPT ולכן מגבלת אחסון הקבצים שלו היא כ-9ZB.

אפשר למקם אפליקציות במדיית אחסון שאומץ רק כאשר המפתח מציינת תמיכה באמצעות המאפיין android:installLocation. התקנות חדשות של אפליקציות נתמכות מתבצעות באופן אוטומטי התקן האחסון שהכי הרבה מקום פנוי, והמשתמשים יכולים להעביר אפליקציות נתמכות בין התקני האחסון באפליקציה ההגדרות. אפליקציות הועברו שיושמו כשמדיה נשלפת, היא זוכרת את המדיה, וחוזרים כאשר מכניסים את המדיה מחדש.

אבטחה

הפלטפורמה יוצרת מפתחות הצפנה באופן אקראי לכל מכשיר שמשתמשים בו ומאחסנת אותם באחסון הפנימי של מכשיר ה-Android. הזה מאפשרת להגביר ביעילות את האבטחה של המדיה שמיושמת כמו אחסון פנימי. המקשים הם שמשויכים למכשירים שהוטמעו על סמך ה-GUID של המחיצה שאומץ.

אם במכשיר מוגדר שימוש בהצפנה מבוססת-קבצים (FBE) באחסון הפנימי, ואז באחסון הניתן ליישום נעשה שימוש גם ב-FBE וגם בהצפנת מטא-נתונים. אחרת, באחסון מותאם משתמש ב-full-disk הצפנה (FDE).

פריסת המכשיר בדיסק של המכשיר שאומץ משקפת בצורה כמעט את הנתונים הפנימיים כולל תוויות SELinux וכו'. כאשר יש תמיכה במשתמשים מרובים מכשיר Android, מכשיר האחסון שאומץ תומך גם במשתמשים מרובים עם אותה רמת בידוד כמו האחסון הפנימי.

מאחר שהתוכן של התקן אחסון מותאם קשור באופן הדוק מכשיר Android שאי אפשר להשתמש בו, מפתחות ההצפנה לא אמורים להיות ניתנים לחילוץ ממכשיר ההורה, ולכן לא ניתן לטעון את התקן האחסון במקום אחר.

אם המכשיר שלכם משתמש ב-FBE, יש לעיין בFBE". תיעוד והמטא-נתונים תיעוד בנושא הצפנה שמסביר איך להגדיר הצפנת FBE והצפנה של מטא-נתונים אחסון מותאם.

ביצועים ויציבות

רק מדיית אחסון חיצוני במיקומים יציבים, כמו חריץ בתוך יש לבדוק אם תא הסוללות שלו או מאחורי כיסוי מגן כדי למנוע אובדן או השחתה של נתונים בטעות. באופן ספציפי, חיבור USB מכשירים שמחוברים לטלפון או לטאבלט לא נחשבים לאימוץ אף פעם. חריג נפוץ אחד הוא כונן USB חיצוני המחובר בסגנון טלוויזיה כיוון שכל הטלוויזיה מותקנת בדרך כלל במיקום יציב.

כשמשתמש משתמש במכשיר אחסון חדש, הפלטפורמה מריצה נקודת השוואה משווה את הביצועים שלו לביצועים של האחסון הפנימי. אם המכשיר שהוטמע הוא איטי יותר באופן משמעותי מזו של האחסון הפנימי, הפלטפורמה מזהירה את המשתמש מפני שסביר להניח שהיא תפגע. נקודת ההשוואה הזו נגזרת מהקלט/פלט (I/O) בפועל ההתנהגות של אפליקציות פופולריות ל-Android. בשלב הזה, ההטמעה של AOSP להזהיר את המשתמשים מעבר לסף אחד, אבל יצרני המכשירים עשויים לשנות את המדיניות הזו מעבר לכך, למשל דחייה מוחלטת של אימוץ אם הכרטיס איטי מאוד.

במכשירים שאושרו צריך להיות בפורמט של מערכת קבצים שתומכת ב-POSIX הרשאות ומאפיינים מורחבים, כמו ext4 או f2fs. לקבלת ביצועים אופטימליים, מערכת הקבצים f2fs מומלץ עבור התקני אחסון מבוססי Flash.

במהלך ביצוע תחזוקה תקופתית ללא פעילות, הפלטפורמה בעיה FI_TRIM ליישום מדיה בדיוק כמו באחסון פנימי. המפרט הנוכחי של כרטיס ה-SD לא תומך ב-DISCARD פקודה; אבל הליבה חוזרים לפקודה ERASE, וקושחה של כרטיס SD עשויה להשתמש בה למטרות אופטימיזציה.

בדיקה

כדי לבדוק שהאחסון המותאם אישית פועל, מריצים את בדיקת ה-CTS הזו:

cts-tradefed run commandAndExit cts-dev \
    -m CtsAppSecurityHostTestCases \
    -t android.appsecurity.cts.AdoptableHostTest

כדי לאמת את ההתנהגות של כונני USB וכרטיסי SD כשאין במכשיר חריץ מובנה או כשמחבר ה-USB משמש ל-adb פעיל חיבור, השתמש ב:

adb shell sm set-virtual-disk true