Kilit ekranı

AOSP'nin kilit ekranını açma olanağı (anahtar koruyucu) sunan varsayılan uygulaması yalnızca birincil ekranda görünür. Android 9 (ve önceki sürümler) ikincil ekranlarda tek bir harici ekranda tek bir kilitleme penceresi destekleniyordu. Android 10'da kilit ekranı, herkese açık tüm ikincil ekranlara genişletildi. Kilit ekranı basit kalır ve ikincil ekranlardan kilit açmayı desteklemez.

Şekil 1. İkincil ekranda kilit ekranı

Cihaz üreticileri, temel güvenlik şartının karşılanması koşuluyla ikincil ekranlar için kendi kilit ekranlarını uygulayabilir. Cihaz kilitliyken bilgiler tüm ekranlarda güvenli bir şekilde gizlenmelidir. Cihaz kilitliyken hangi içeriğin gösterileceği veya gizleneceğiyle ilgili yerleşik bir politika veya kontrol yoktur. Bu nedenle, kısıtlanmış erişimi uygulamanın tek güvenli yolu tüm içeriği Kilit Ekranı ve kilitli pencerelerin arkasına gizlemektir. Bunun tek istisnası, R.attr.showWhenLocked veya Activity.setShowWhenLocked() yöntemlerini kullanarak kilit ekranının üst kısmında gösterilmeyi açıkça etkinleştiren uygulamalardır. Aksi takdirde, herkese açık ve özel ekranlardan bilgi sızınması olasılığı yüksektir.

Ekranlar farklı durumlara (ON/OFF) yerleştirilebilir ancak kilitli durum tüm ekranlar için geneldir. Tüm cihaz uygulamalarında olduğu gibi, cihazın kilitli (veya kilidi açık) olduğu kullanıcı tarafından açıkça anlaşılmalıdır. Örneğin, güç düğmesine basıldığında genellikle mobil cihaz kilitlenir. Güç düğmesi, tüm iç ve dış ekranları da kilitlemelidir.

Kilitleme penceresi SystemUI'ye ait olduğundan özel ekranlara yerleştirilmez. Cihaz kilitliyken pencereleri gizlemek ve içeriği korumak gizli ekranların sahiplerine aittir. Varsayılan sistem uygulaması, görünürlüğü değiştirerek yalnızca gizli ekranlardaki etkinlikleri gizler.

Uygulama

İkincil ekranlardaki kilitleme penceresi, KeyguardDisplayManager'de Sunu penceresi olarak uygulanır. Android 10'da KeyguardDisplayManager#mPresentations, tüm ikincil ekranların kilitleme pencerelerini içeren bir dizi olarak değiştirildi. KeyguardDisplayManager, mevcut ekranlardaki değişikliklere yanıt vermek ve tüm ekranları güvence altına almak için bir ekran değişikliği dinleyicisine de sahiptir. Saldırganların cihaza fiziksel erişimi olsa bile kullanıcı verilerini çıkaramamaları için bağlı tüm ekranları herhangi bir zamanda hemen kilitlemek önemlidir.

Kilitleme penceresi, herkese açık tüm ikincil ekranlarda gösterilir (KeyguardDisplayManager#isKeyguardShowable() bölümüne bakın). Özel ekranların sahipleri, bir cihaz kilitlendiğinde içeriğin güvenliğinden sorumludur.