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