Estado do dispositivo

O estado do dispositivo indica como é possível atualizar o software livremente nele e se a verificação foi aplicada. Os estados do dispositivo são LOCKED e UNLOCKED. LOCKED dispositivo está impedindo a atualização de conteúdo novo software ao dispositivo, enquanto dispositivos UNLOCKED permitem modificação.

Quando um dispositivo é ligado, o carregador de inicialização verifica primeiro se o dispositivo está LOCKED ou UNLOCKED. Se um dispositivo for UNLOCKED, o carregador de inicialização mostra um aviso ao usuário e continua para inicializar mesmo que o SO carregado não esteja assinado pela raiz de confiança.

Se o dispositivo estiver LOCKED, o carregador de inicialização seguirá as etapas de Verificando a inicialização para confirmar o software do dispositivo. Os dispositivos LOCKED inicializam apenas se o carregado está devidamente assinado pela raiz de confiança. Para mais detalhes, consulte O fluxo de inicialização.

Mudança do estado do dispositivo

Para mudar o estado de um dispositivo, use o comando fastboot flashing [unlock | lock]. Para proteger o usuário dados, todas as transições de estado apagam as partições e solicitam ao usuário antes que os dados sejam excluídos.

A transição do UNLOCKED para o LOCKED é esperada quando um usuário compra um dispositivo de desenvolvimento usado. Como resultado do bloqueio do dispositivo, o usuário deve ter certeza de que está em um estado produzido pelo dispositivo fabricante, desde que não haja avisos. O LOCKED a A transição UNLOCKED é esperada quando um desenvolvedor quer desativar no dispositivo para fins de desenvolvimento.

Raiz de confiança

Raiz de confiança é a chave criptográfica usada para assinar a cópia do sistema Android armazenadas no dispositivo. A parte privada da raiz de confiança é conhecida apenas pelas fabricante do dispositivo e é usado para assinar todas as versões do Android destinadas a e distribuição de dados. A parte pública da raiz de confiança é incorporada no dispositivo e fica armazenado em um local para que não possa ser adulterado (normalmente somente leitura armazenamento).

Ao carregar o Android, o carregador de inicialização usa a raiz de confiança para verificar autenticidade. Para mais detalhes sobre esse processo, consulte Verificando a inicialização. Os dispositivos podem ter múltiplos carregadores de inicialização e, assim, várias chaves criptográficas podem estar em jogo.

Raiz de confiança definida pelo usuário

Os dispositivos podem permitir que o usuário configure a raiz de confiança (por exemplo, exemplo, uma chave pública). Os dispositivos podem usar essa raiz de confiança configurável pelo usuário para Inicialização verificada, em vez da raiz de confiança integrada. Isso permite que o usuário instalar e usar versões personalizadas do Android sem abrir mão da segurança Melhorias da Inicialização verificada.

Se a raiz de confiança configurável pelo usuário for implementada, isso deverá ser feito de tal forma que:

  • A confirmação física é necessária para definir/limpar a raiz configurável pelo usuário confiança.
  • A raiz de confiança definida pelo usuário só pode ser definida pelo usuário final. Ele não pode ser definido na fábrica ou em qualquer ponto intermediário antes que o usuário final receba a dispositivo.
  • A raiz de confiança configurável pelo usuário é armazenada em um armazenamento inviolável. Invioláveis significa que é possível detectar se o Android adulterou os dados, por exemplo, se foram substituídos ou alterados.
  • Se uma raiz de confiança definida pelo usuário for definida, o dispositivo deverá permitir uma versão do Android assinada com a raiz de confiança integrada ou a configuração pelo usuário de confiança para inicializar.
  • Toda vez que o dispositivo é inicializado usando a raiz de confiança definida pelo usuário, o usuário deve ser notificado de que o dispositivo está carregando uma versão personalizada do Android. Para exemplo, telas de aviso, consulte LOCKED de dispositivos com um conjunto de chaves personalizadas.

Uma forma de implementar a raiz de confiança configurável pelo usuário é ter uma rede que só pode ser atualizada ou apagada quando o dispositivo está no UNLOCKED. Os dispositivos Google Pixel 2 usam essa abordagem a partição virtual é chamada de avb_custom_key. O formato do nesta partição é a saída avbtool extract_public_key. Aqui está um exemplo de como definir a raiz de confiança definida pelo usuário:

avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin

Para limpar a raiz de confiança definida pelo usuário, emita:

fastboot erase avb_custom_key