Écran de verrouillage, écran de verrouillage, écran de verrouillage, écran de verrouillage

L'implémentation par défaut d'AOSP de l'écran de verrouillage avec des possibilités pour le déverrouiller (keyguard) apparaît uniquement sur l'écran principal. Dans 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 d'écrans secondaires.

Figure 1. Verrouiller l'écran sur l'affichage secondaire

Les fabricants d'appareils peuvent implémenter leur écran de verrouillage pour les écrans secondaires, à condition que l'exigence de sécurité fondamentale soit remplie. Lorsque l'appareil est verrouillé, les informations doivent être masquées en toute sécurité sur tous les écrans. Il n'y a pas de politique intégrée ni de contrôle sur le contenu à afficher ou à masquer lorsque l'appareil est verrouillé. Par conséquent, le seul moyen sûr 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 sont les applications qui ont explicitement choisi d'être affichées en haut de l'écran de verrouillage à l'aide des R.attr.showWhenLocked ou Activity.setShowWhenLocked() . Sinon, il existe un fort potentiel de fuite d'informations à partir d'affichages publics et privés.

Alors que les écrans peuvent ê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 qu'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 devrait é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 du masquage des fenêtres et de la protection du 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 des 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 de l'utilisateur même avec 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é.