État de l'appareil

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