Displaysperre

Die Standardimplementierung des Sperrbildschirms von AOSP mit Funktionen zur Entsperrung (Keyguard) wird nur auf dem Hauptdisplay angezeigt. Unter Android 9 (und niedriger) unterstützten sekundäre Bildschirme ein einzelnes Sperrbildschirmfenster auf einem einzelnen externen Display. Unter Android 10 wird der Sperrbildschirm auf alle öffentlichen sekundären Displays erweitert. Der Sperrbildschirm bleibt einfach und unterstützt nicht das Entsperren über sekundäre Displays.

Abbildung 1: Sperrbildschirm auf dem sekundären Display

Gerätehersteller können ihren Sperrbildschirm für sekundäre Displays implementieren, sofern die grundlegende Sicherheitsanforderung erfüllt ist. Wenn das Gerät gesperrt ist, sollten Informationen auf allen Displays sicher verborgen sein. Es gibt keine integrierte Richtlinie oder Einstellung, mit der festgelegt werden kann, welche Inhalte angezeigt oder ausgeblendet werden sollen, wenn das Gerät gesperrt ist. Daher ist die einzige sichere Möglichkeit, den eingeschränkten Zugriff zu implementieren, alle Inhalte hinter dem Sperrbildschirm und die Fenster zu sperren. Die einzigen Ausnahmen sind Apps, die explizit über die Methoden R.attr.showWhenLocked oder Activity.setShowWhenLocked() aktiviert wurden, um über dem Sperrbildschirm angezeigt zu werden. Andernfalls besteht ein hohes Risiko, dass Informationen von öffentlichen und privaten Displays gehackt werden.

Displays können in verschiedene Status (ON/OFF) versetzt werden, der gesperrte Status ist jedoch global für alle Displays. Wie bei jeder Geräteimplementierung sollte für den Nutzer klar erkennbar sein, ob ein Gerät gesperrt (oder entsperrt) ist. Wenn Sie beispielsweise die Ein-/Aus-Taste drücken, wird ein Mobilgerät normalerweise gesperrt. Eine Ein-/Aus-Taste sollte auch alle internen und externen Bildschirme sperren.

Da das Sperrfenster zu SystemUI gehört, wird es nicht auf privaten Displays platziert. Die Eigentümer der privaten Displays sind dafür verantwortlich, die Fenster auszublenden und Inhalte zu schützen, wenn ein Gerät gesperrt ist. Bei der standardmäßigen Systemimplementierung werden Aktivitäten auf privaten Displays nur ausgeblendet, indem die Sichtbarkeit geändert wird.

Implementierung

Das Sperrfenster auf sekundären Displays wird in KeyguardDisplayManager als Präsentationsfenster implementiert. Unter Android 10 wurde KeyguardDisplayManager#mPresentations in ein Array geändert, das alle Sperrfenster für alle sekundären Bildschirme enthält. KeyguardDisplayManager hat auch einen Display-Änderungs-Listener, der auf Änderungen an den verfügbaren Displays reagiert und alle Bildschirme sichert. Es ist wichtig, alle verbundenen Displays jederzeit sofort zu sperren, damit Angreifer auch bei physischem Zugriff auf das Gerät keine Nutzerdaten abrufen können.

Das Sperrfenster wird auf allen öffentlichen sekundären Displays angezeigt (siehe KeyguardDisplayManager#isKeyguardShowable()). Eigentümer privater Displays sind dafür verantwortlich, die Inhalte zu schützen, wenn ein Gerät gesperrt ist.