Состояние устройства указывает, насколько свободно программное обеспечение можно перепрограммировать на устройство и применяется ли проверка. Состояния устройства: LOCKED
и UNLOCKED
. LOCKED
устройства не позволяют вам устанавливать на устройство новое программное обеспечение, тогда как UNLOCKED
устройства позволяют вносить изменения.
Когда устройство включается, загрузчик сначала проверяет, LOCKED
или UNLOCKED
устройство. Если устройство UNLOCKED
, загрузчик показывает пользователю предупреждение и затем продолжает загрузку, даже если загруженная ОС не подписана корнем доверия.
Если устройство LOCKED
, загрузчик выполняет шаги, описанные в разделе «Проверка загрузки», чтобы проверить программное обеспечение устройства. LOCKED
устройства загружаются только в том случае, если загруженная ОС правильно подписана корнем доверия. Более подробную информацию см. в разделе Процесс загрузки .
Изменить состояние устройства
Чтобы изменить состояние устройства , используйте fastboot flashing [unlock | lock]
команда. Чтобы защитить пользовательские данные, все переходы между состояниями стирают разделы данных и запрашивают подтверждение пользователя перед удалением данных.
Переход UNLOCKED
в LOCKED
ожидается, когда пользователь покупает бывшее в употреблении устройство для разработки. В результате блокировки устройства пользователь должен быть уверен, что оно находится в состоянии, предусмотренном производителем устройства, до тех пор, пока не появится предупреждение. Переход LOCKED
в UNLOCKED
ожидается, когда разработчик желает отключить проверку на устройстве в целях разработки.
Корень доверия
Корень доверия — это криптографический ключ, используемый для подписи копии Android, хранящейся на устройстве. Частная часть корня доверия известна только производителю устройства и используется для подписи каждой версии Android, предназначенной для распространения. Публичная часть корня доверия встроена в устройство и хранится в таком месте, где ее невозможно подделать (обычно это хранилище только для чтения).
При загрузке Android загрузчик использует корень доверия для проверки подлинности. Дополнительные сведения об этом процессе см. в разделе Проверка загрузки . Устройства могут иметь несколько загрузчиков, и поэтому могут использоваться несколько криптографических ключей.
Настраиваемый пользователем корень доверия
Устройства могут дополнительно позволить пользователю настроить корень доверия (например, открытый ключ). Устройства могут, и устройства Google Pixel, используют этот настраиваемый пользователем корень доверия для проверенной загрузки в дополнение к встроенному корню доверия.
Если реализован настраиваемый пользователем корень доверия, это должно быть сделано таким образом, чтобы:
- Для установки/очистки настраиваемого пользователем корня доверия требуется физическое подтверждение.
- Настраиваемый пользователем корень доверия может быть установлен только конечным пользователем. Его нельзя установить на заводе или в какой-либо промежуточной точке до того, как конечный пользователь получит устройство.
- Настраиваемый пользователем корень доверия хранится в защищенном от несанкционированного доступа хранилище. Защита от несанкционированного доступа означает, что можно обнаружить, что 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
Состояние устройства указывает, насколько свободно программное обеспечение можно перепрограммировать на устройство и применяется ли проверка. Состояния устройства: LOCKED
и UNLOCKED
. LOCKED
устройства не позволяют вам устанавливать на устройство новое программное обеспечение, тогда как UNLOCKED
устройства позволяют вносить изменения.
Когда устройство включается, загрузчик сначала проверяет, LOCKED
или UNLOCKED
устройство. Если устройство UNLOCKED
, загрузчик показывает пользователю предупреждение и затем продолжает загрузку, даже если загруженная ОС не подписана корнем доверия.
Если устройство LOCKED
, загрузчик выполняет шаги, описанные в разделе «Проверка загрузки», чтобы проверить программное обеспечение устройства. LOCKED
устройства загружаются только в том случае, если загруженная ОС правильно подписана корнем доверия. Более подробную информацию см. в разделе Процесс загрузки .
Изменить состояние устройства
Чтобы изменить состояние устройства , используйте fastboot flashing [unlock | lock]
команда. Чтобы защитить пользовательские данные, все переходы между состояниями стирают разделы данных и запрашивают подтверждение пользователя перед удалением данных.
Переход UNLOCKED
в LOCKED
ожидается, когда пользователь покупает бывшее в употреблении устройство для разработки. В результате блокировки устройства пользователь должен быть уверен, что оно находится в состоянии, предусмотренном производителем устройства, до тех пор, пока не появится предупреждение. Переход LOCKED
в UNLOCKED
ожидается, когда разработчик хочет отключить проверку на устройстве в целях разработки.
Корень доверия
Корень доверия — это криптографический ключ, используемый для подписи копии Android, хранящейся на устройстве. Частная часть корня доверия известна только производителю устройства и используется для подписи каждой версии Android, предназначенной для распространения. Публичная часть корня доверия встроена в устройство и хранится в таком месте, где ее невозможно подделать (обычно это хранилище только для чтения).
При загрузке Android загрузчик использует корень доверия для проверки подлинности. Дополнительные сведения об этом процессе см. в разделе Проверка загрузки . Устройства могут иметь несколько загрузчиков, и поэтому могут использоваться несколько криптографических ключей.
Настраиваемый пользователем корень доверия
Устройства могут опционально разрешить пользователю настраивать корень доверия (например, открытый ключ). Устройства могут, и устройства Google Pixel, используют этот настраиваемый пользователем корень доверия для проверенной загрузки в дополнение к встроенному корню доверия.
Если реализован настраиваемый пользователем корень доверия, это должно быть сделано таким образом, чтобы:
- Для установки/очистки настраиваемого пользователем корня доверия требуется физическое подтверждение.
- Настраиваемый пользователем корень доверия может быть установлен только конечным пользователем. Его нельзя установить на заводе или в какой-либо промежуточной точке до того, как устройство получит конечный пользователь.
- Настраиваемый пользователем корень доверия хранится в защищенном от несанкционированного доступа хранилище. Защита от несанкционированного доступа означает, что можно обнаружить, что 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