Estado del dispositivo

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 le impiden instalar software nuevo en el dispositivo, mientras que los dispositivos UNLOCKED permiten modificaciones.

Cuando un dispositivo se enciende, el gestor de arranque primero verifica si el dispositivo está LOCKED o UNLOCKED . Si un dispositivo está UNLOCKED , el gestor de arranque muestra al usuario una advertencia 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 de arranque para verificar el software del dispositivo. Los dispositivos LOCKED arrancan solo si el sistema operativo cargado está firmado correctamente por la raíz de confianza. Para obtener más detalles, consulte El flujo de inicio .

Cambiar el estado del dispositivo

Para cambiar el estado de un dispositivo , utilice el fastboot flashing [unlock | lock] comando. 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 UNLOCKED a LOCKED se anticipa cuando un usuario compra un dispositivo de desarrollo usado. Como resultado de bloquear el dispositivo, el usuario debe tener confianza de que se encuentra en el estado indicado por el fabricante del dispositivo, siempre y cuando no haya ninguna advertencia. Se espera la transición LOCKED a UNLOCKED cuando un desarrollador desea desactivar la verificación en el dispositivo con fines de desarrollo.

Raíz de confianza

La raíz de confianza es la clave criptográfica que se utiliza 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 utiliza para firmar cada versión de Android destinada a su distribución. La parte pública de la raíz de confianza está integrada en el dispositivo y se almacena en un lugar que no pueda ser manipulado (normalmente, almacenamiento de solo lectura).

Cuando carga Android, el gestor de arranque utiliza la raíz de confianza para verificar la autenticidad. Para obtener más detalles sobre este proceso, consulte Verificación de arranque . Los dispositivos pueden tener múltiples cargadores de arranque y, como tales, pueden estar en juego múltiples claves criptográficas.

Raíz de confianza configurable por el usuario

Opcionalmente, los dispositivos pueden permitir al usuario configurar 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 utilizar 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, se debe hacer 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 ser establecida por el usuario final. No se puede configurar en fábrica ni en ningún punto intermedio antes de que el usuario final reciba 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 modificado.
  • 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 incorporada o con la raíz de confianza configurable por el usuario.
  • Cada vez que el dispositivo arranca utilizando 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 personalizadas .

Una forma de implementar una raíz de confianza configurable por el usuario es tener una partición virtual que solo se pueda actualizar o borrar cuando el dispositivo esté en estado UNLOCKED . Los dispositivos Google Pixel 2 utilizan 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 . A continuación se muestra 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