El estado del dispositivo indica con qué libertad se puede actualizar el software a un dispositivo y si se aplica la verificación. Los estados del dispositivo son LOCKED
y UNLOCKED
. Los dispositivos LOCKED
evitan que actualice software nuevo al dispositivo, mientras que los dispositivos UNLOCKED
permiten la modificación.
Cuando un dispositivo se enciende, el cargador de arranque primero verifica si un dispositivo está LOCKED
o UNLOCKED
. Si un dispositivo está UNLOCKED
, el cargador de arranque muestra una advertencia al usuario y luego procede a arrancar incluso si el sistema operativo cargado no está firmado por la raíz de confianza.
Si el dispositivo está LOCKED
, el gestor de arranque sigue los pasos de Verificación del arranque para verificar el software del dispositivo. Los dispositivos LOCKED
arrancan solo si el sistema operativo cargado está debidamente firmado por la raíz de confianza. Para obtener más detalles, consulte El flujo de arranque .
Cambiar el estado del dispositivo
Para cambiar el estado de un dispositivo , use el fastboot flashing [unlock | lock]
. Para proteger los datos del usuario, todas las transiciones de estado borran las particiones de datos y solicitan la confirmación del usuario antes de eliminar los datos.
La transición de UNLOCKED
a LOCKED
se anticipa cuando un usuario compra un dispositivo de desarrollo usado. Como resultado del bloqueo del dispositivo, el usuario debe estar seguro de que se encuentra en un estado producido por el fabricante del dispositivo, siempre que no haya una advertencia. Se espera la transición de LOCKED
a UNLOCKED
cuando un desarrollador desea deshabilitar la verificación en el dispositivo con fines de desarrollo.
Raíz de confianza
La raíz de confianza es la clave criptográfica utilizada para firmar la copia de Android almacenada en el dispositivo. La parte privada de la raíz de confianza solo la conoce el fabricante del dispositivo y se usa para firmar todas las versiones de Android destinadas a la distribución. La parte pública de la raíz de confianza está integrada en el dispositivo y se almacena en un lugar para que no se pueda manipular (normalmente, almacenamiento de solo lectura).
Cuando carga Android, el cargador de arranque usa la raíz de confianza para verificar la autenticidad. Para obtener más detalles sobre este proceso, consulte Verificación del arranque . Los dispositivos pueden tener varios cargadores de arranque y, como tales, pueden estar en juego varias claves criptográficas.
Raíz de confianza configurable por el usuario
Los dispositivos pueden permitir opcionalmente que el usuario configure la raíz de confianza (por ejemplo, una clave pública). Los dispositivos pueden usar esta raíz de confianza configurable por el usuario para el arranque verificado en lugar de la raíz de confianza integrada. Esto permite al usuario instalar y usar versiones personalizadas de Android sin sacrificar las mejoras de seguridad de Verified Boot.
Si se implementa una raíz de confianza configurable por el usuario, debe hacerse de tal manera que:
- Se requiere confirmación física para establecer/borrar la raíz de confianza configurable por el usuario.
- La raíz de confianza configurable por el usuario solo puede establecerla el usuario final. No se puede configurar en la fábrica ni en ningún punto intermedio antes de que el usuario final obtenga el dispositivo.
- La raíz de confianza configurable por el usuario se almacena en un almacenamiento a prueba de manipulaciones. A prueba de manipulaciones significa que es posible detectar si Android ha manipulado los datos, por ejemplo, si se han sobrescrito o cambiado.
- Si se establece una raíz de confianza configurable por el usuario, el dispositivo debe permitir que se inicie una versión de Android firmada con la raíz de confianza integrada o la raíz de confianza configurable por el usuario.
- Cada vez que el dispositivo se inicia con la raíz de confianza configurable por el usuario, se debe notificar al usuario que el dispositivo está cargando una versión personalizada de Android. Por ejemplo, pantallas de advertencia, consulte Dispositivos
LOCKED
con conjunto de claves personalizado .
Una forma de implementar una raíz de confianza configurable por el usuario es tener una partición virtual que solo se puede actualizar o borrar cuando el dispositivo está en estado UNLOCKED
. Los dispositivos Google Pixel 2 usan este enfoque y la partición virtual se llama avb_custom_key
. El formato de los datos en esta partición es el resultado del comando avbtool extract_public_key
. Este es un ejemplo de cómo configurar la raíz de confianza configurable por el usuario:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
La raíz de confianza configurable por el usuario se puede borrar emitiendo:
fastboot erase avb_custom_key