Состояние устройства

Состояние устройства указывает, насколько свободно программное обеспечение может быть загружено на устройство и применяется ли проверка. Состояние устройства: LOCKED и UNLOCKED . LOCKED устройства запрещают вам прошивать новое программное обеспечение на устройство, тогда как UNLOCKED устройства разрешают внесение изменений.

Когда устройство включается, загрузчик сначала проверяет, LOCKED оно или UNLOCKED . Если устройство UNLOCKED , загрузчик показывает пользователю предупреждение, а затем продолжает загрузку, даже если загруженная ОС не подписана корнем доверия.

Если устройство LOCKED , загрузчик выполняет шаги, описанные в разделе Проверка загрузки , чтобы проверить программное обеспечение устройства. LOCKED устройства загружаются только в том случае, если загруженная ОС правильно подписана корнем доверия. Дополнительные сведения см. в разделе Процесс загрузки .

Изменение состояния устройства

Чтобы изменить состояние устройства , используйте fastboot flashing [unlock | lock] . Для защиты пользовательских данных все изменения состояния стирают разделы данных и запрашивают подтверждение пользователя перед удалением данных.

Переход с UNLOCKED на LOCKED ожидается, когда пользователь покупает подержанное устройство для разработки. В результате блокировки устройства пользователь должен быть уверен, что оно находится в состоянии, установленном производителем устройства, до тех пор, пока не будет предупреждений. Переход с LOCKED на UNLOCKED ожидается, когда разработчик хочет отключить проверку на устройстве в целях разработки.

Корень доверия

Корень доверия — это криптографический ключ, используемый для подписи копии Android, хранящейся на устройстве. Приватная часть корня доверия известна только производителю устройства и используется для подписи каждой версии Android, предназначенной для распространения. Общедоступная часть корня доверия встроена в устройство и хранится в месте, где ее нельзя подделать (обычно хранилище только для чтения).

Когда он загружает Android, загрузчик использует корень доверия для проверки подлинности. Дополнительные сведения об этом процессе см. в разделе Проверка загрузки . Устройства могут иметь несколько загрузчиков, поэтому могут использоваться несколько криптографических ключей.

Устанавливаемый пользователем корень доверия

Устройства могут дополнительно разрешить пользователю настроить корень доверия (например, открытый ключ). Устройства могут использовать этот устанавливаемый пользователем корень доверия для проверенной загрузки вместо встроенного корня доверия. Это позволяет пользователю устанавливать и использовать пользовательские версии Android, не жертвуя улучшениями безопасности Verified Boot.

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

  • Физическое подтверждение требуется для установки/сброса устанавливаемого пользователем корня доверия.
  • Устанавливаемый пользователем корень доверия может быть установлен только конечным пользователем. Его нельзя установить на заводе или в какой-либо промежуточной точке до того, как конечный пользователь получит устройство.
  • Настраиваемый пользователем корень доверия хранится в защищенном от несанкционированного доступа хранилище. Защита от несанкционированного доступа означает, что можно определить, подделал ли Android данные, например, если они были перезаписаны или изменены.
  • Если установлен устанавливаемый пользователем корень доверия, устройство должно разрешать загрузку версии Android, подписанной либо со встроенным корнем доверия, либо с установленным пользователем корнем доверия.
  • Каждый раз, когда устройство загружается с использованием устанавливаемого пользователем корня доверия, пользователь должен быть уведомлен о том, что устройство загружает пользовательскую версию Android. Например, экраны предупреждений см. в разделе LOCKED устройства с пользовательским набором ключей .

Одним из способов реализации устанавливаемого пользователем корня доверия является создание виртуального раздела, который может быть прошит или очищен только тогда, когда устройство находится в состоянии UNLOCKED . Устройства Google Pixel 2 используют этот подход, а виртуальный раздел называется avb_custom_key . Формат данных в этом разделе является выходом команды avbtool extract_public_key . Вот пример того, как установить устанавливаемый пользователем корень доверия:

avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin

Устанавливаемый пользователем корень доверия можно очистить, выполнив:

fastboot erase avb_custom_key