Bildschirm sperren

AOSPs Standardimplementierung des Sperrbildschirms mit Möglichkeiten zum Entsperren (Tastensperre) erscheint nur auf dem primären Display. In Android 9 (und niedriger) unterstützten sekundäre Bildschirme ein einzelnes Sperrfenster auf einem einzelnen externen Display. In Android 10 wird der Sperrbildschirm auf alle öffentlichen sekundären Displays ausgeweitet. Der Sperrbildschirm bleibt einfach und unterstützt das Entsperren von sekundären Bildschirmen nicht.

Abbildung 1. Sperrbildschirm auf dem sekundären Display

Gerätehersteller können ihren Sperrbildschirm für sekundäre Displays implementieren, sofern die grundlegenden Sicherheitsanforderungen erfüllt sind. Bei gesperrtem Gerät sollten die Informationen auf allen Displays sicher verborgen bleiben. Es gibt keine integrierte Richtlinie oder Kontrolle darüber, welche Inhalte angezeigt oder ausgeblendet werden sollen, wenn das Gerät gesperrt ist. Daher besteht die einzig sichere Möglichkeit zur Implementierung eines eingeschränkten Zugriffs darin, alle Inhalte hinter dem Sperrbildschirm und den Sperrfenstern zu verbergen. Die einzigen Ausnahmen sind Apps, die sich mithilfe der Methoden R.attr.showWhenLocked oder Activity.setShowWhenLocked() explizit dafür entschieden haben, oben auf dem Sperrbildschirm angezeigt zu werden. Andernfalls besteht ein hohes Risiko, dass Informationen von öffentlichen und privaten Displays verloren gehen.

Während Displays in verschiedene Zustände ( ON / OFF ) versetzt werden können, gilt der gesperrte Zustand global für alle Displays. Wie bei jeder Geräteimplementierung sollte es für einen Benutzer offensichtlich sein, wann ein Gerät gesperrt (oder entsperrt) ist. Beispielsweise wird ein Mobilgerät normalerweise durch Drücken eines Netzschalters gesperrt. Ein Power-Button soll zudem alle internen und externen Bildschirme sperren.

Da das Sperrfenster SystemUI gehört, wird es nicht auf privaten Displays platziert. Besitzer privater Displays sind dafür verantwortlich, die Fenster auszublenden und den Inhalt zu schützen, wenn ein Gerät gesperrt ist. Die Standardsystemimplementierung verbirgt nur Aktivitäten auf privaten Anzeigen, indem sie die Sichtbarkeit ändert.

Implementierung

Das Sperrfenster auf sekundären Displays ist als Präsentationsfenster in KeyguardDisplayManager implementiert. Android 10 hat KeyguardDisplayManager#mPresentations in ein Array geändert, das alle Sperrfenster für alle sekundären Bildschirme enthält. KeyguardDisplayManager verfügt außerdem über einen Anzeigeänderungs-Listener, um auf Änderungen an den verfügbaren Anzeigen zu reagieren und alle Bildschirme zu sichern. Es ist wichtig, alle angeschlossenen Displays jederzeit sofort zu sperren, damit Angreifer auch bei physischem Zugriff auf das Gerät keine Benutzerdaten extrahieren können.

Das Sperrfenster wird auf allen öffentlichen sekundären Displays angezeigt (siehe KeyguardDisplayManager#isKeyguardShowable() ). Besitzer privater Displays sind für die Sicherung der Inhalte verantwortlich, wenn ein Gerät gesperrt ist.