Schermata di blocco

L'implementazione predefinita della schermata di blocco di AOSP con le funzionalità per sbloccarla (keyguard) viene visualizzata solo sul display principale. In Android 9 (e versioni precedenti), gli schermi secondari supportavano una sola finestra di blocco su un singolo display esterno. In Android 10, la schermata di blocco viene estesa a tutti i display secondari pubblici. La schermata di blocco rimane semplice e non supporta lo sblocco da schermi secondari.

Figura 1. Schermata di blocco sul display secondario

I produttori di dispositivi possono implementare la schermata di blocco per i display secondari, a condizione che il requisito di sicurezza fondamentale sia soddisfatto. Quando il dispositivo è bloccato, le informazioni devono essere nascoste in modo sicuro su tutti i display. Non esiste una policy o un controllo integrato sui contenuti da mostrare o nascondere quando il dispositivo è bloccato. Pertanto, l'unico modo sicuro per implementare l'accesso limitato è nascondere tutti i contenuti dietro la schermata di blocco e le finestre di blocco. Le uniche eccezioni sono le app che hanno attivato esplicitamente la visualizzazione sopra la schermata di blocco utilizzando i metodi R.attr.showWhenLocked o Activity.setShowWhenLocked(). In caso contrario, esiste un forte potenziale di divulgazione di informazioni da display pubblici e privati.

Anche se i display possono essere impostati su stati diversi (ON/OFF), lo stato bloccato è globale per tutti i display. Come per qualsiasi implementazione di un dispositivo, dovrebbe essere ovvio per un utente quando un dispositivo è bloccato (o sbloccato). Ad esempio, premendo un tasto di accensione in genere si blocca un dispositivo mobile. Un tasto di accensione dovrebbe anche bloccare tutti gli schermi interni ed esterni.

Poiché la finestra di blocco è di proprietà di SystemUI, non verrà posizionata su display privati. I proprietari dei display privati sono responsabili di nascondere le finestre e proteggere i contenuti quando un dispositivo è bloccato. L'implementazione predefinita del sistema nasconde solo le attività sui display privati modificando la visibilità.

Implementazione

La finestra di blocco sui display secondari è implementata come finestra Presentazione in KeyguardDisplayManager. Android 10 ha modificato KeyguardDisplayManager#mPresentations in un array che contiene tutte le finestre di blocco per tutti gli schermi secondari. KeyguardDisplayManager dispone anche di un listener di modifica del display per rispondere alle modifiche ai display disponibili e proteggere tutti gli schermi. È importante bloccare immediatamente tutti i display connessi in qualsiasi momento, in modo che gli autori degli attacchi non possano estrarre i dati utente anche con l'accesso fisico al dispositivo.

La finestra di blocco viene visualizzata su tutti i display secondari pubblici (vedi KeyguardDisplayManager#isKeyguardShowable()). I proprietari dei display privati sono responsabili della protezione dei contenuti quando un dispositivo è bloccato.