Écran de verrouillage

L'implémentation par défaut de l'écran de verrouillage de l'AOSP avec des affordances pour le déverrouiller (keyguard) n'apparaît que sur l'écran principal. Dans Android 9 (et versions antérieures), les écrans secondaires acceptaient 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 permet pas le déverrouillage à partir d'écrans secondaires.

Figure 1 : Écran de verrouillage sur un écran secondaire

Les fabricants d'appareils peuvent implémenter leur propre écran de verrouillage pour les écrans secondaires, à condition que l'exigence de sécurité fondamentale soit respectée. Lorsque l'appareil est verrouillé, les informations doivent être masquées de manière sécurisée sur tous les écrans. Il n'existe aucune règle ni aucun contrôle intégrés permettant de déterminer le contenu à afficher ou à masquer lorsque l'appareil est verrouillé. Par conséquent, la seule façon sécurisée d'implémenter 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 au-dessus de l'écran de verrouillage à l'aide des méthodes R.attr.showWhenLocked ou Activity.setShowWhenLocked(). Sinon, il existe un fort risque de fuite d'informations à partir des écrans publics et privés.

Bien que les affichages puissent être placés dans différents états (ON/OFF), l'état verrouillé est global pour tous les affichages. Comme pour toute implémentation d'appareil, l'utilisateur doit pouvoir identifier clairement si un appareil est verrouillé ou déverrouillé. Par exemple, appuyer sur le bouton Marche/Arrêt verrouille généralement un appareil mobile. Un bouton Marche/Arrêt doit également verrouiller tous les écrans internes et externes.

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

Implémentation

La fenêtre de verrouillage sur les écrans secondaires est implémentée en tant que fenêtre Presentation dans KeyguardDisplayManager. Dans Android 10, KeyguardDisplayManager#mPresentations est devenu 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 des écrans disponibles et sécuriser tous les écrans. Il est important de verrouiller immédiatement tous les écrans connectés à tout moment afin que les pirates informatiques ne puissent pas extraire les données utilisateur, même s'ils ont un accès physique à l'appareil.

La fenêtre de verrouillage s'affiche 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é.