Прямая загрузка - когда устройство переходит в зашифрованное состояние? - PullRequest
0 голосов
/ 19 ноября 2018

Краткая справка: в одном из приложений, над которым я работал, используется HCE (эмуляция хост-карты) - когда устройство близко к пользовательскому оборудованию, реализация HostApduService создается и запускается системой.После запуска он считывает некоторую информацию из SharedPreferences и соответственно обрабатывает связь с пользовательским оборудованием.Пока все хорошо.

В какой-то момент я заметил странные сбои в Google Play Vitals - как выясняется, поскольку Android 8.1 ContextImpl проверяет, авторизован ли пользователь уже или нет, прежде чем пытатьсячитать общие настройки;если нет, выдается исключение.Вот как я узнал о последствиях прямой загрузки.

В документации по режиму прямой загрузки упоминается, что шифрование хранилища учетных данных запрещает кому-либо доступ к данным до тех пор, пока пользователь не предоставит некоторую авторизацию .Я не могу указать точное место в атм документации, но я вполне уверен, что после того, как устройство было [пере] загружено и пользователь ввел данные аутентификации, все, что хранится в области хранилища учетных данных (включая, но не ограничиваясь SharedPreferences)) должен стать доступным для чтения / записи.

Но некоторые пользователи приложения утверждают, что иногда аппаратно-аппаратное взаимодействие не работает, даже если они не перезагружали устройство в течение довольно длительного времени.И единственный способ справиться с этим - проверить подлинность устройства - ввести пин-код, коснуться сканера отпечатков пальцев и т. Д.

Так что мне стало интересно - как работает эта часть шифрования и возможно ли, чтонекоторые поставщики изменяют реализацию этой функции, чтобы иногда она включалась после того, как устройство находилось в заблокированном состоянии, скажем, один час или около того?Я могу понять необходимость включения экрана устройства, чтобы NFC начал работать - в документации по NFC упоминается, что NFC переводится в спящий режим, когда экран выключен, из соображений безопасности.Но почему для этого требуется разблокировка устройства?Или речь идет не о поставщиках как таковых, и мое понимание просто неверно?

Upd. У меня есть широковещательный приемник, который активирует приложение после перезагрузки устройства - мне нужно сделать несколькоработать здесь, и часть этой работы включает в себя чтение данных из SharedPreferences.После того, как я изменил фильтры действий этого широковещательного приемника, чтобы он запускался после , когда пользователь фактически авторизовался, подавляющее большинство сбоев было связано с попытками прочитать содержимое SharedPreferences во время нахождения взашифрованное состояние исчезло, но очень небольшое их количество (например, 0,1% от предыдущего количества этих сбоев) все еще здесь.

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

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

Есть ли какие-либо идеи о том, что может быть основной причиной и как с этим бороться?

Upd.2:

Документация режима прямой загрузки теперь содержит следующий оператор:

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

Таким образом, в основном телефон не должен переходить в зашифрованное состояние после блокировки экрана, он должен быть толькопроисходит после перезагрузки и до авторизации.

...