التخزين المتاح

لقد دعم Android دائمًا ملحقات التخزين الخارجية (مثل بطاقات SD)، ولكن هذه الملحقات كانت تاريخيًا مقتصرة على تخزين الملفات البسيط، نظرًا لعدم ثباتها المتوقع والحد الأدنى من حماية البيانات المقدمة لوحدات التخزين الخارجية التقليدية . قدم Android 6.0 القدرة على اعتماد وسائط تخزين خارجية لتعمل مثل وحدة التخزين الداخلية.

عند اعتماد وسائط تخزين خارجية، يتم تنسيقها وتشفيرها للعمل فقط مع جهاز Android واحد في المرة الواحدة. نظرًا لأن الوسائط مرتبطة بقوة بجهاز Android الذي يستخدمها، فيمكنها تخزين التطبيقات والبيانات الخاصة بأمان لجميع المستخدمين.

عندما يقوم المستخدمون بإدخال وسائط تخزين جديدة (مثل بطاقة SD) في موقع يمكن اعتماده، يسألهم Android عن الطريقة التي يريدون بها استخدام الوسائط. يمكنهم اختيار اعتماد الوسائط، التي تقوم بتنسيقها وتشفيرها، أو يمكنهم الاستمرار في استخدامها كما هي لتخزين الملفات البسيطة. إذا اختاروا الاعتماد، تعرض المنصة ترحيل محتويات التخزين المشتركة الأساسية (المثبتة عادةً على /sdcard ) إلى الوسائط المعتمدة حديثًا، مما يوفر مساحة قيمة على وحدة التخزين الداخلية. على عكس التخزين التقليدي، الذي يقتصر على 2 تيرابايت بسبب استخدامه لـ MBR ، يستخدم التخزين القابل للتبني GPT وبالتالي يبلغ حد تخزين الملفات ~9ZB.

لا يمكن وضع التطبيقات على وسائط التخزين المعتمدة إلا عندما يشير المطور إلى الدعم من خلال السمة android:installLocation . يتم وضع عمليات التثبيت الجديدة للتطبيقات المدعومة تلقائيًا على جهاز التخزين الذي يتمتع بأكبر مساحة خالية، ويمكن للمستخدمين نقل التطبيقات المدعومة بين أجهزة التخزين في تطبيق الإعدادات . يتم تذكر التطبيقات التي تم نقلها إلى الوسائط المعتمدة أثناء إخراج الوسائط، وتعود عند إعادة إدخال الوسائط.

حماية

تقوم المنصة بشكل عشوائي بإنشاء مفاتيح تشفير لكل جهاز معتمد وتخزينها على وحدة التخزين الداخلية لجهاز Android. وهذا يجعل الوسائط المعتمدة آمنة مثل وحدة التخزين الداخلية. ترتبط المفاتيح بالأجهزة المعتمدة بناءً على القسم المعتمد GUID.

إذا تم تكوين الجهاز لاستخدام التشفير المستند إلى الملفات (FBE) على وحدة التخزين الداخلية الخاصة به، فإن وحدة التخزين القابلة للتبني تستخدم كلاً من FBE وتشفير بيانات التعريف . وبخلاف ذلك، يستخدم التخزين القابل للتبني تشفير القرص بالكامل (FDE).

يعكس التخطيط الموجود على القرص للجهاز المعتمد بشكل وثيق قسم البيانات الداخلية، بما في ذلك ملصقات SELinux، وما إلى ذلك. عندما يكون تعدد المستخدمين مدعومًا على جهاز Android، فإن جهاز التخزين المعتمد يدعم أيضًا تعدد المستخدمين بنفس مستوى العزل الداخلي. تخزين.

نظرًا لأن محتويات جهاز التخزين المعتمد مرتبطة بقوة بجهاز Android الذي اعتمده، فلا ينبغي أن تكون مفاتيح التشفير قابلة للاستخراج من الجهاز الأصلي، وبالتالي لا يمكن تركيب جهاز التخزين في مكان آخر.

إذا كان جهازك يستخدم FBE، فراجع وثائق FBE ووثائق تشفير بيانات التعريف لمعرفة كيفية تكوين FBE وتشفير بيانات التعريف على وحدة تخزين قابلة للتبني.

الأداء والاستقرار

ينبغي النظر في اعتماد وسائط التخزين الخارجية الموجودة في المواقع الثابتة فقط، مثل الفتحة داخل حجرة البطارية أو خلف غطاء واقي، للمساعدة في تجنب فقدان البيانات أو تلفها عن طريق الخطأ. وعلى وجه الخصوص، لا ينبغي أبدًا اعتبار أجهزة USB المتصلة بهاتف أو جهاز لوحي قابلة للاعتماد. أحد الاستثناءات الشائعة هو محرك أقراص USB خارجي متصل بجهاز على شكل تلفزيون، لأن التلفزيون بأكمله يتم تثبيته عادةً في مكان مستقر.

عندما يستخدم المستخدم جهاز تخزين جديد، تقوم المنصة بتشغيل معيار ومقارنة أدائه مع وحدة التخزين الداخلية. إذا كان الجهاز المعتمد أبطأ بكثير من وحدة التخزين الداخلية، فإن النظام الأساسي يحذر المستخدم من احتمالية تجربة سيئة. تم اشتقاق هذا المعيار من سلوك الإدخال/الإخراج الفعلي لتطبيقات Android الشائعة. في الوقت الحالي، لن يحذر تطبيق AOSP المستخدمين إلا بعد تجاوز حد واحد، ولكن قد تقوم الشركات المصنعة للأجهزة بتعديل هذا بشكل أكبر، مثل رفض الاعتماد تمامًا إذا كانت البطاقة بطيئة للغاية.

يجب تهيئة الأجهزة المعتمدة بنظام ملفات يدعم أذونات POSIX والسمات الموسعة، مثل ext4 أو f2fs . للحصول على الأداء الأمثل، يوصى باستخدام نظام الملفات f2fs لأجهزة التخزين المعتمدة على الفلاش.

عند إجراء صيانة دورية خاملة، يصدر النظام الأساسي 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