Lo stato del dispositivo indica la libertà con cui il software può essere caricato su un dispositivo e se la verifica è applicata. Gli stati del dispositivo sono LOCKED
e
UNLOCKED
. I dispositivi LOCKED
impediscono di installare nuovo
software, mentre i dispositivi UNLOCKED
lo consentono.
Quando un dispositivo si accende, il bootloader controlla innanzitutto se è LOCKED
o UNLOCKED
. Se un dispositivo è
UNLOCKED
, il bootloader mostra all'utente un avviso e poi procede
all'avvio anche se il sistema operativo caricato non è firmato dalla radice della attendibilità.
Se il dispositivo è LOCKED
, il bootloader esegue i passaggi descritti in Verificare l'avvio per verificare il software del dispositivo. I dispositivi LOCKED
si avviano solo se il sistema operativo caricato è firmato correttamente dalla radice di attendibilità. Per maggiori dettagli, consulta
Il flusso di avvio.
Modifica stato del dispositivo
Per modificare lo stato di un dispositivo, utilizza il comando fastboot flashing [unlock | lock]
. Per proteggere i dati degli utenti, tutte le transizioni di stato cancellano le partizioni di dati e richiedono la conferma dell'utente prima dell'eliminazione dei dati.
La transizione da UNLOCKED
a LOCKED
è prevista quando un utente acquista un dispositivo di sviluppo usato. Dopo aver bloccato il dispositivo, l'utente deve avere la certezza che si trovi in uno stato prodotto dal produttore del dispositivo, a meno che non venga visualizzato alcun avviso. La transizione da LOCKED
a
UNLOCKED
è prevista quando uno sviluppatore vuole disattivare
la verifica sul dispositivo a fini di sviluppo.
Radice di attendibilità
La radice di attendibilità è la chiave crittografica utilizzata per firmare la copia di Android memorizzata sul dispositivo. La parte privata della radice di attendibilità è nota solo al produttore del dispositivo e viene utilizzata per firmare ogni versione di Android destinata alla distribuzione. La parte pubblica della radice di attendibilità è incorporata nel dispositivo e viene memorizzata in un luogo in cui non può essere manomessa (in genere in uno spazio di archiviazione di sola lettura).
Quando carica Android, il bootloader utilizza la radice di attendibilità per verificare l'autenticità. Per ulteriori dettagli su questa procedura, consulta Verificare l'avvio. I dispositivi possono avere più bootloader e, di conseguenza, potrebbero essere presenti più chiavi di crittografia.
Radice di attendibilità impostabile dall'utente
Facoltativamente, i dispositivi possono consentire all'utente di configurare la radice di attendibilità (ad esempio una chiave pubblica). I dispositivi possono, e i dispositivi Google Pixel lo fanno, utilizzare questa radice di attendibilità impostabile dall'utente per l'avvio verificato, oltre alla radice di attendibilità integrata.
Se viene implementato un FTO impostabile dall'utente, deve essere fatto in modo che:
- È necessaria la conferma fisica per impostare/cancellare la radice della cooperazione impostabile dall'utente.
- La radice di attendibilità impostabile dall'utente può essere impostata solo dall'utente finale. Non può essere impostato in fabbrica o in un punto intermedio prima che l'utente finale riceva il dispositivo.
- La radice di attendibilità impostabile dall'utente viene archiviata in uno spazio di archiviazione con protezione antimanomissione. A prova di manomissione significa che è possibile rilevare se Android ha manomesso i dati, ad esempio se sono stati sovrascritti o modificati.
- Se è impostato un'origine attendibile configurabile dall'utente, il dispositivo deve consentire l'avvio di una versione di Android firmata con l'origine attendibile integrata o con l'origine attendibile configurabile dall'utente.
- Ogni volta che il dispositivo si avvia utilizzando la radice di attendibilità impostabile dall'utente, l'utente deve ricevere una notifica che lo informa che il dispositivo sta caricando una versione personalizzata di Android. Ad esempio, le schermate di avviso, consulta
LOCKED
Dispositivi con set di chiavi personalizzate.
Un modo per implementare la radice di attendibilità impostabile dall'utente è avere una partizione virtuale che può essere flashata o cancellata solo quando il dispositivo è nello stato UNLOCKED
. I dispositivi Google Pixel 2 utilizzano questo approccio e la partizione virtuale è denominata avb_custom_key
. Il formato dei dati in questa partizione è l'output del comando avbtool extract_public_key
. Ecco un esempio di come impostare la radice di attendibilità impostabile dall'utente:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
La radice di attendibilità impostabile dall'utente può essere cancellata emettendo:
fastboot erase avb_custom_key