Вопросы безопасности шифрования на основе файлов и резервного копирования/восстановления

Я обдумываю возможность перехода на файловое шифрование на своем устройстве, но не могу найти удовлетворительные ответы на следующие вопросы:

  • Приложения могут размещать данные либо в хранилище с шифрованием учетных данных (CE), либо в хранилище с шифрованием устройства (DE), но обязательно ли это означает, что все файлы в нем /data/зашифрованы? Что, если я запускаю echo 1 > /data/test.txtиз оболочки? Шифруется test.txtчерез CE?

  • Я хочу, чтобы мои данные были защищены более чем четырехзначным PIN-кодом. Можно ли по-прежнему использовать отдельную загрузочную кодовую фразу для разблокировки шифрования?

  • Чтобы включить FBE, /data/необходимо выполнить вайпы. Могу ли я восстановить резервную копию TWRP до FBE после включения полного восстановления моих данных?

  • TWRP по-прежнему запрашивает пароль шифрования при загрузке, как при полном шифровании диска?

  • Могу ли я сделать так, чтобы TWRP не запрашивал пароль для шифрования, чтобы я мог запускать автоматическое резервное копирование через OpenRecoveryScript?

  • Если я создам резервную копию, не предоставив свой пароль шифрования, достаточно ли умен TWRP, чтобы восстановить зашифрованные данные как есть при восстановлении?

  • Есть ли какие-либо другие предостережения по резервному копированию или восстановлению TWRP, о которых я должен знать, прежде чем погрузиться в них?

Хорошие вопросы, однако, ИМХО, вы должны разделить их немного больше, это могут быть q1, q2 и темы резервного копирования TWRP в качестве третьего вопроса.

Ответы (1)

Андроид 9 и ниже

Приложения могут размещать данные либо в хранилище с шифрованием учетных данных (CE), либо в хранилище с шифрованием устройства (DE), но обязательно ли это означает, что все файлы в /data/ зашифрованы?

Что будет зашифровано и какой ключ будет использоваться, зависит от политики шифрования . Политика шифрования определяет для каждого каталога, что следует шифровать. Исключения (без шифрования) тоже возможны.

Для Android 9 и ниже используемая политика жестко закодирована в исходном коде Android .

Там вы можете прочитать, что в настоящее время известны некоторые исключения:

  • /данные/вершина
  • /данные/данные
  • /данные/потерянные+найденные
  • /данные/медиа
  • /данные/misc_ce
  • /данные/misc_de
  • /данные/system_ce
  • /данные/system_de
  • /данные/пользователь
  • /данные/user_de
  • /данные/vendor_ce
  • /данные/vendor_de

Для некоторых из этих исключений существует политика шифрования для указанного подкаталога. Однако, если я правильно понимаю, размещение файлов непосредственно в одном из этих каталогов означает, что шифрование применяться не будет.

Андроид 10

В Android 10 политика шифрования была жестко закодирована в этом месте:

/system/extras/libfscrypt/fscrypt_init_extensions.cpp 1

Андроид 11+

В Android 11 и более поздних версиях политика шифрования больше не жестко запрограммирована в централизованном расположении, а определяется аргументами команд mkdir в сценариях инициализации. Для каталогов, зашифрованных системным ключом DE, используется шифрование=Требуется, а для незашифрованных каталогов (или каталогов, подкаталоги которых зашифрованы ключами для каждого пользователя) используется шифрование=Нет. 1

Вы уверены, что /data/dataисключено из шифрования? Это каталог, в котором находятся все настройки приложения. /data/userэто каталог, в котором находятся пользовательские файлы, так называемое «внутреннее хранилище».
@QkiZ В исходном коде есть комментарий (я исправил ссылку) о том, что некоторые устройства могут быть исключены из шифрования, поскольку их подкаталоги включены в шифрование. Поэтому, насколько я понимаю, этот список исключений в основном применяется к самим каталогам, а не к их подкаталогам.
@Robert Вы упомянули, что «в то время как незашифрованные каталоги (или каталоги, подкаталоги которых зашифрованы ключами для каждого пользователя) используют шифрование = Нет. 1» Для FBE: что это за ключи для каждого пользователя, есть ли у нас отдельные ключи для каждого пользователя, и делаем ли они это ключи меняются при каждой загрузке? Каждый файл зашифрован другим ключом?
@Lavyansi Отдельные ключи для каждого файла являются стандартными для файловых систем шифрования. Но AFIK шифрование не зависит от пользователя. У вас есть только типы: один тип шифрования разрешает доступ до того, как первый пользователь войдет в систему. Второй тип требует входа в систему, прежде чем вы сможете получить доступ к файлам.