বন্ধ পর্দা

AOSP-এর ডিফল্ট লক স্ক্রিন ব্যবস্থা, যা আনলক করার জন্য কীগার্ড (keyguard) ফিচারসহ থাকে, তা শুধুমাত্র প্রাইমারি ডিসপ্লেতেই দেখা যায়। অ্যান্ড্রয়েড ৯ (এবং এর পূর্ববর্তী সংস্করণগুলোতে), সেকেন্ডারি স্ক্রিনগুলো একটিমাত্র এক্সটার্নাল ডিসপ্লেতে একটিমাত্র লকিং উইন্ডো সাপোর্ট করত। অ্যান্ড্রয়েড ১০-এ, লক স্ক্রিনটি সমস্ত পাবলিক সেকেন্ডারি ডিসপ্লেতে সম্প্রসারিত করা হয়েছে। লক স্ক্রিনটি সরলই রয়েছে এবং সেকেন্ডারি স্ক্রিন থেকে আনলক করার সুবিধা দেয় না।

চিত্র ১. সেকেন্ডারি ডিসপ্লেতে লক স্ক্রিন

ডিভাইস নির্মাতারা সেকেন্ডারি ডিসপ্লেগুলোর জন্য তাদের লক স্ক্রিন প্রয়োগ করতে পারেন, তবে শর্ত হলো মৌলিক নিরাপত্তা শর্তটি পূরণ করতে হবে। ডিভাইসটি লক করা থাকলে, সমস্ত ডিসপ্লেতে তথ্য সুরক্ষিতভাবে গোপন রাখা উচিত। ডিভাইস লক করা অবস্থায় কোন কন্টেন্ট দেখানো হবে বা লুকানো হবে, তার জন্য কোনো অন্তর্নির্মিত নীতি বা নিয়ন্ত্রণ ব্যবস্থা নেই। অতএব, সীমিত অ্যাক্সেস বাস্তবায়নের একমাত্র নিরাপদ উপায় হলো লক স্ক্রিন এবং লকিং উইন্ডোগুলোর আড়ালে সমস্ত কন্টেন্ট লুকিয়ে রাখা। এর একমাত্র ব্যতিক্রম হলো সেইসব অ্যাপ, যেগুলো R.attr.showWhenLocked বা Activity.setShowWhenLocked() মেথড ব্যবহার করে লক স্ক্রিনের উপরে প্রদর্শিত হওয়ার জন্য স্পষ্টভাবে সম্মতি দিয়েছে। অন্যথায়, পাবলিক এবং প্রাইভেট ডিসপ্লেগুলো থেকে তথ্য ফাঁস হওয়ার প্রবল সম্ভাবনা থাকে।

ডিসপ্লেগুলোকে বিভিন্ন অবস্থায় ( ON / OFF ) রাখা গেলেও, লক করা অবস্থাটি সমস্ত ডিসপ্লের জন্য সার্বজনীন। যেকোনো ডিভাইস বাস্তবায়নের মতোই, ডিভাইসটি কখন লক (বা আনলক) করা আছে তা ব্যবহারকারীর কাছে স্পষ্ট হওয়া উচিত। উদাহরণস্বরূপ, পাওয়ার বাটন চাপলে সাধারণত একটি মোবাইল ডিভাইস লক হয়ে যায়। পাওয়ার বাটনটি সমস্ত অভ্যন্তরীণ এবং বাহ্যিক স্ক্রিনও লক করে দেবে।

যেহেতু লকিং উইন্ডোটি SystemUI-এর মালিকানাধীন, তাই এটি প্রাইভেট ডিসপ্লেতে রাখা হবে না। ডিভাইস লক করা হলে উইন্ডোগুলো লুকানো এবং বিষয়বস্তু সুরক্ষিত রাখার দায়িত্ব প্রাইভেট ডিসপ্লের মালিকদের। ডিফল্ট সিস্টেম বাস্তবায়নটি শুধুমাত্র ভিজিবিলিটি পরিবর্তন করার মাধ্যমে প্রাইভেট ডিসপ্লেতে থাকা অ্যাক্টিভিটিগুলো লুকায়।

বাস্তবায়ন

সেকেন্ডারি ডিসপ্লেতে লকিং উইন্ডোটি KeyguardDisplayManager এ একটি প্রেজেন্টেশন উইন্ডো হিসেবে প্রয়োগ করা হয়। অ্যান্ড্রয়েড ১০, KeyguardDisplayManager#mPresentations একটি অ্যারেতে পরিবর্তন করেছে, যা সমস্ত সেকেন্ডারি স্ক্রিনের জন্য সমস্ত লকিং উইন্ডো ধারণ করে। KeyguardDisplayManager একটি ডিসপ্লে-চেঞ্জ লিসেনারও রয়েছে, যা উপলব্ধ ডিসপ্লেগুলির পরিবর্তনে সাড়া দেয় এবং সমস্ত স্ক্রিনকে সুরক্ষিত করে। যেকোনো মুহূর্তে সমস্ত সংযুক্ত ডিসপ্লে অবিলম্বে লক করা গুরুত্বপূর্ণ, যাতে আক্রমণকারীরা ডিভাইসে সরাসরি প্রবেশাধিকার পেলেও ব্যবহারকারীর ডেটা বের করে নিতে না পারে।

লকিং উইন্ডোটি সমস্ত পাবলিক সেকেন্ডারি ডিসপ্লেতে প্রদর্শিত হয় (দেখুন KeyguardDisplayManager#isKeyguardShowable() )। ডিভাইস লক করা থাকলে প্রাইভেট ডিসপ্লের বিষয়বস্তু সুরক্ষিত করার দায়িত্ব এর মালিকদের।