Displaysperre

Die Standardimplementierung des Sperrbildschirms von AOSP mit Möglichkeiten zum Entsperren (Keyguard) wird nur auf dem primären Display angezeigt. In Android 9 und niedriger wurde auf sekundären Displays ein einzelnes Sperrfenster auf einem einzelnen externen Display unterstützt. In Android 10 wird der Sperrbildschirm auf alle öffentlichen sekundären Displays erweitert. Der Sperrbildschirm bleibt einfach und unterstützt das Entsperren über sekundäre Displays nicht.

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 Steuerung dafür, welche Inhalte angezeigt oder ausgeblendet werden sollen, wenn das Gerät gesperrt ist. Die einzige sichere Möglichkeit, den Zugriff einzuschränken, besteht daher darin, alle Inhalte hinter dem Sperrbildschirm und den Sperrfenstern zu verbergen. Die einzigen Ausnahmen sind Apps, die sich explizit dafür entschieden haben, mithilfe der Methoden R.attr.showWhenLocked oder Activity.setShowWhenLocked() über dem Sperrbildschirm angezeigt zu werden. Andernfalls besteht ein hohes Risiko, dass Informationen von öffentlichen und privaten Displays preisgegeben werden.

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

Da das Sperrfenster zu SystemUI gehört, wird es nicht auf privaten Displays platziert. Inhaber der privaten Displays sind dafür verantwortlich, die Fenster auszublenden und Inhalte zu schützen, wenn ein Gerät gesperrt ist. Bei der Standardsystemimplementierung werden Aktivitäten auf privaten Displays nur durch Ändern der Sichtbarkeit ausgeblendet.

Implementierung

Das Sperrfenster auf sekundären Displays wird als Presentation-Fenster in KeyguardDisplayManager implementiert. In 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 Listener für Änderungen am Display, um auf Änderungen an den verfügbaren Displays zu reagieren und alle Bildschirme zu schützen. Es ist wichtig, alle verbundenen Displays jederzeit sofort zu sperren, damit Angreifer keine Nutzerdaten extrahieren können, selbst wenn sie physischen Zugriff auf das Gerät haben.

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