Kilit ekranı

Kilit ekranının AOSP'deki varsayılan uygulaması, yalnızca birincil ekranda görünür. Bu uygulamada, kilidi açmak için olanaklar (keyguard) bulunur. Android 9 ve önceki sürümlerde, ikincil ekranlar tek bir harici ekranda tek bir kilitleme penceresini destekliyordu. Android 10'da kilit ekranı, herkese açık tüm ikincil ekranlara genişletildi. Kilit ekranı basit kalır ve ikincil ekranlardan kilidi açmayı desteklemez.

Şekil 1. İkincil ekranda kilit ekranı

Cihaz üreticileri, temel güvenlik şartı karşılandığı sürece ikincil ekranlar için kendi kilit ekranlarını uygulayabilir. Cihaz kilitlendiğinde bilgiler tüm ekranlarda güvenli bir şekilde gizlenmelidir. Cihaz kilitliyken hangi içeriğin gösterileceği veya gizleneceği konusunda yerleşik bir politika ya da 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. Tek istisna, R.attr.showWhenLocked veya Activity.setShowWhenLocked() yöntemlerini kullanarak kilit ekranının üstünde gösterilmeyi açıkça kabul eden uygulamalardır. Aksi takdirde, herkese açık ve özel ekranlardaki bilgilerin sızdırılma olasılığı yüksektir.

Ekranlar farklı durumlara (ON/OFF) yerleştirilebilse de kilitli durum tüm ekranlar için geneldir. Her cihaz uygulamasında olduğu gibi, cihazın kilitlendiği (veya kilidinin açıldığı) kullanıcıya açıkça belirtilmelidir. Örneğin, güç düğmesine basmak genellikle mobil cihazı kilitler. Güç düğmesi, tüm dahili ve harici ekranları da kilitlemelidir.

Kilitleme penceresi SystemUI'ye ait olduğundan özel ekranlara yerleştirilmez. Özel ekranların sahipleri, cihaz kilitlendiğinde pencereleri gizlemekten ve içeriği korumaktan sorumludur. Varsayılan sistem uygulaması, görünürlüğü değiştirerek yalnızca özel ekranlardaki etkinlikleri gizler.

Uygulama

İkincil ekranlardaki kilitleme penceresi, KeyguardDisplayManager'da Presentation (Sunum) penceresi olarak uygulanır. Android 10, KeyguardDisplayManager#mPresentations değerini tüm ikincil ekranların tüm kilitleme pencerelerini tutan bir dizi olarak değiştirdi. KeyguardDisplayManager ayrıca, kullanılabilir ekranlardaki değişikliklere yanıt vermek ve tüm ekranları güvenli hale getirmek için bir ekran değişikliği dinleyicisine sahiptir. Saldırganların cihaza fiziksel erişimleri olsa bile kullanıcı verilerini çıkaramamaları için bağlı tüm ekranları herhangi bir zamanda hemen kilitlemeniz önemlidir.

Kilitleme penceresi tüm herkese açık ikincil ekranlarda gösterilir (bkz. KeyguardDisplayManager#isKeyguardShowable()). Özel ekran sahipleri, cihaz kilitlendiğinde içeriğin güvenliğini sağlamaktan sorumludur.