Écran verrouillé

L'implémentation par défaut d'AOSP de l'écran de verrouillage avec possibilité de le déverrouiller (keyguard) apparaît uniquement sur l'écran principal. Sous Android 9 (et versions antérieures), les écrans secondaires prenaient en charge une seule fenêtre de verrouillage sur un seul écran externe. Dans Android 10, l'écran de verrouillage est étendu à tous les écrans secondaires publics. L'écran de verrouillage reste simple et ne prend pas en charge le déverrouillage à partir des écrans secondaires.

Figure 1. Écran de verrouillage sur l'écran secondaire

Les fabricants d'appareils peuvent mettre en œuvre leur écran de verrouillage pour les affichages secondaires, à condition que les exigences fondamentales de sécurité soient remplies. Lorsque l'appareil est verrouillé, les informations doivent être solidement masquées sur tous les écrans. Il n'existe aucune politique ni contrôle intégré sur le contenu qui doit être affiché ou masqué lorsque l'appareil est verrouillé. Par conséquent, le seul moyen sécurisé de mettre en œuvre un accès restreint consiste à masquer tout le contenu derrière l’écran de verrouillage et les fenêtres de verrouillage. Les seules exceptions concernent les applications qui ont explicitement choisi d'être affichées en haut de l'écran de verrouillage à l'aide des méthodes R.attr.showWhenLocked ou Activity.setShowWhenLocked() . Dans le cas contraire, il existe un fort risque de fuite d’informations provenant d’affichages publics et privés.

Bien que les écrans puissent être placés dans différents états ( ON / OFF ), l'état verrouillé est global pour tous les écrans. Comme pour toute implémentation d’appareil, il doit être évident pour un utilisateur lorsqu’un appareil est verrouillé (ou déverrouillé). Par exemple, appuyer sur un bouton d’alimentation verrouille généralement un appareil mobile. Un bouton d'alimentation doit également verrouiller tous les écrans internes et externes.

Étant donné que la fenêtre de verrouillage appartient à SystemUI, elle ne sera pas placée sur des écrans privés. Les propriétaires des écrans privés sont responsables de masquer les fenêtres et de protéger le contenu lorsqu'un appareil est verrouillé. L'implémentation du système par défaut masque uniquement les activités sur les écrans privés en modifiant la visibilité.

Mise en œuvre

La fenêtre de verrouillage sur les écrans secondaires est implémentée en tant que fenêtre de présentation dans KeyguardDisplayManager . Android 10 a remplacé KeyguardDisplayManager#mPresentations par un tableau contenant toutes les fenêtres de verrouillage pour tous les écrans secondaires. KeyguardDisplayManager dispose également d'un écouteur de changement d'affichage pour répondre aux modifications apportées aux affichages disponibles et sécuriser tous les écrans. Il est important de verrouiller immédiatement tous les écrans connectés à tout moment afin que les attaquants ne puissent pas extraire les données des utilisateurs, même s'ils ont un accès physique à l'appareil.

La fenêtre de verrouillage est affichée sur tous les écrans secondaires publics (voir KeyguardDisplayManager#isKeyguardShowable() ). Les propriétaires d'écrans privés sont responsables de la sécurisation du contenu lorsqu'un appareil est verrouillé.