L'état de l'appareil indique si un logiciel peut être flashé librement sur un appareil et
si la validation est appliquée. Les états de l'appareil sont LOCKED
et
UNLOCKED
LOCKED
appareils vous empêchent de flasher de nouveaux
logiciel sur l'appareil, alors que les appareils UNLOCKED
permettent
modification.
Lorsqu'un appareil s'allume, le bootloader vérifie d'abord si un appareil est
LOCKED
ou UNLOCKED
. Si un appareil est
UNLOCKED
, le bootloader affiche un avertissement à l'utilisateur, puis continue
de démarrer même si l’OS chargé n’est
pas signé par la racine de confiance.
Si l'appareil est LOCKED
, le bootloader suit les étapes de
Vérification du démarrage
le logiciel de l'appareil. Les appareils LOCKED
démarrent uniquement si
chargé est correctement signé par
la racine de confiance. Pour en savoir plus, consultez
Flux de démarrage.
Modification de l'état de l'appareil
Pour modifier l'état d'un appareil, utilisez
la commande fastboot flashing [unlock | lock]
. Pour protéger les utilisateurs
données, toutes les transitions d'état effacent les partitions de données et demandez l'autorisation
confirmation avant que les données ne soient supprimées.
La transition de UNLOCKED
vers LOCKED
est prévue lorsque
un utilisateur achète un appareil
de développement d'occasion. À la suite du verrouillage de l'appareil,
l'utilisateur doit s'assurer qu'elle se trouve dans un état produit par l'appareil
sans avertissement préalable. Le LOCKED
à
La transition vers UNLOCKED
est attendue lorsqu'un développeur souhaite désactiver
sur l'appareil à des fins de développement.
Racine de confiance
La racine de confiance est la clé cryptographique utilisée pour signer la copie d'Android. stockées sur l'appareil. La partie privée de la racine de confiance n’est connue que du fabricant de l'appareil et est utilisé pour signer toutes les versions d'Android destinées à distribution. La partie publique de la racine de confiance est intégrée à l’appareil et est stocké dans un emplacement afin qu'il ne puisse pas être altéré (généralement en lecture seule stockage).
Lors du chargement d'Android, le bootloader utilise la racine de confiance pour vérifier l'authenticité. Pour en savoir plus sur cette procédure, consultez Vérification du démarrage. Les appareils peuvent avoir plusieurs chargeurs de démarrage et, à ce titre, plusieurs clés cryptographiques peuvent être en jeu.
Racine de confiance définie par l'utilisateur
Les appareils peuvent éventuellement autoriser l'utilisateur à configurer la racine de confiance (par une clé publique, par exemple). Les appareils peuvent utiliser cette racine de confiance définie par l'utilisateur pour le démarrage validé au lieu de la racine de confiance intégrée. Cela permet à l'utilisateur Installez et utilisez des versions personnalisées d'Android sans compromettre la sécurité. du démarrage validé.
Si une racine de confiance définie par l'utilisateur est implémentée, elle doit être effectuée de façon à que:
- Une confirmation physique est requise pour définir/effacer la racine réglable par l'utilisateur de de la confiance.
- Seul l'utilisateur final peut définir la racine de confiance définie par l'utilisateur. Il ne peut pas être défini en usine ou à tout point intermédiaire avant que l'utilisateur final ne reçoive appareil.
- La racine de confiance définie par l'utilisateur est stockée dans un espace de stockage doté d'un système d'inviolabilité. Inviolable signifie qu'il est possible de détecter si Android a falsifiés les données, par exemple, si elles ont été écrasées ou modifiées.
- Si une racine de confiance définie par l'utilisateur est définie, l'appareil doit autoriser une version d'Android signé avec la racine de confiance intégrée ou la table de configuration racine de confiance pour démarrer.
- Chaque fois que l'appareil démarre à l'aide de la racine de confiance définie par l'utilisateur, l'utilisateur
doit être informé que l'appareil charge une version personnalisée d'Android. Pour
exemple, écrans d'avertissement, consultez
LOCKED
appareils avec clé personnalisée définie.
Pour implémenter une racine de confiance réglable par l'utilisateur, vous pouvez utiliser une instance
partition qui ne peut être flashée ou effacée que lorsque l'appareil se trouve dans
UNLOCKED
. Les appareils Google Pixel 2 utilisent cette approche et
la partition virtuelle s'appelle avb_custom_key
. Le format du
données de cette partition est la sortie du
avbtool extract_public_key
. Voici un exemple de la façon de définir
racine de confiance définie par l'utilisateur:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
La racine de confiance définie par l'utilisateur peut être effacée en émettant:
fastboot erase avb_custom_key