Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Приемлемое хранение

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 система 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