شاشة التأمين

لا يظهر التنفيذ التلقائي لشاشة القفل في AOSP مع عناصر التحكّم لفتح قفلها (keyguard) إلا على الشاشة الأساسية. في نظام التشغيل Android 9 (والإصدارات الأقدم)، كانت الشاشات الثانوية تتيح نافذة قفل واحدة على شاشة عرض خارجية واحدة. في نظام التشغيل Android 10، تم توسيع نطاق شاشة القفل ليشمل جميع الشاشات الثانوية العامة. تظل شاشة القفل بسيطة ولا تتيح فتح القفل من الشاشات الثانوية.

الشكل 1. شاشة القفل على شاشة العرض الثانوية

يمكن لمصنّعي الأجهزة تنفيذ قفل الشاشة على الشاشات الثانوية، شرط استيفاء متطلبات الأمان الأساسية. عند قفل الجهاز، يجب إخفاء المعلومات بشكل آمن على جميع الشاشات. لا تتوفّر سياسة أو عناصر تحكّم مضمّنة لتحديد المحتوى الذي يجب عرضه أو إخفاؤه عندما يكون الجهاز مقفلاً. لذلك، الطريقة الآمنة الوحيدة لتنفيذ الوصول المقيّد هي إخفاء كل المحتوى خلف شاشة القفل ونوافذ القفل. الاستثناءات الوحيدة هي التطبيقات التي وافقت صراحةً على أن يتم عرضها في أعلى شاشة القفل باستخدام الطريقتين R.attr.showWhenLocked أو Activity.setShowWhenLocked(). وفي حال عدم توفّرها، يزداد احتمال تسرُّب المعلومات من الشاشات العلنية والخاصة.

على الرغم من إمكانية وضع الشاشات في حالات مختلفة (ON/OFF)، إلا أنّ حالة القفل تكون عامة لجميع الشاشات. وكما هو الحال مع أي عملية تنفيذ على الجهاز، يجب أن يكون من الواضح للمستخدم متى يكون الجهاز مقفلاً (أو مفتوحًا). على سبيل المثال، يؤدي الضغط على زر التشغيل عادةً إلى قفل جهاز جوّال. يجب أن يؤدي زر التشغيل أيضًا إلى قفل جميع الشاشات الداخلية والخارجية.

بما أنّ نافذة القفل مملوكة لتطبيق SystemUI، لن يتم وضعها على شاشات خاصة. يتحمّل مالكو الشاشات الخاصة مسؤولية إخفاء النوافذ وحماية المحتوى عند قفل الجهاز. لا يخفي التنفيذ التلقائي للنظام الأنشطة على الشاشات الخاصة إلا من خلال تغيير مستوى الظهور.

التنفيذ

يتم تنفيذ نافذة القفل على شاشات العرض الثانوية كنافذة عرض تقديمي في KeyguardDisplayManager. في Android 10، تم تغيير KeyguardDisplayManager#mPresentations إلى مصفوفة تحتوي على جميع نوافذ القفل لجميع الشاشات الثانوية. يحتوي KeyguardDisplayManager أيضًا على أداة معالجة لتغيير شاشة العرض من أجل الاستجابة للتغييرات التي تطرأ على شاشات العرض المتاحة وتأمين جميع الشاشات. من المهم قفل جميع الشاشات المتصلة على الفور في أي وقت لمنع المهاجمين من استخراج بيانات المستخدم حتى في حال تمكّنهم من الوصول إلى الجهاز.

تظهر نافذة القفل على جميع الشاشات الثانوية العامة (راجِع KeyguardDisplayManager#isKeyguardShowable()). ويكون مالكو الشاشات الخاصة مسؤولين عن تأمين المحتوى عند قفل الجهاز.