AOSP-এর লক স্ক্রীনের ডিফল্ট বাস্তবায়ন এবং এটি আনলক করার সামর্থ্য (কীগার্ড) শুধুমাত্র প্রাথমিক ডিসপ্লেতে প্রদর্শিত হয়। অ্যান্ড্রয়েড 9 (এবং নিম্নতর) এ, সেকেন্ডারি স্ক্রিনগুলি একটি একক বাহ্যিক প্রদর্শনে একটি একক লকিং উইন্ডো সমর্থন করে। Android 10-এ, লক স্ক্রিনটি সমস্ত পাবলিক সেকেন্ডারি ডিসপ্লেতে প্রসারিত করা হয়েছে। লক স্ক্রিনটি সহজ থাকে এবং সেকেন্ডারি স্ক্রিন থেকে আনলক করা সমর্থন করে না।
চিত্র 1. সেকেন্ডারি ডিসপ্লেতে স্ক্রিন লক করুন
ডিভাইস নির্মাতারা সেকেন্ডারি ডিসপ্লেগুলির জন্য তাদের লক স্ক্রিন বাস্তবায়ন করতে পারে, যদি মৌলিক নিরাপত্তা প্রয়োজনীয়তা পূরণ করা হয়। যখন ডিভাইসটি লক করা থাকে, তখন সমস্ত ডিসপ্লেতে তথ্য নিরাপদে লুকিয়ে রাখা উচিত৷ ডিভাইস লক থাকা অবস্থায় কোন বিষয়বস্তু দেখানো বা লুকানো উচিত তার উপর কোন অন্তর্নির্মিত নীতি বা নিয়ন্ত্রণ নেই। অতএব, সীমাবদ্ধ অ্যাক্সেস বাস্তবায়নের একমাত্র নিরাপদ উপায় হল লক স্ক্রীন এবং লকিং উইন্ডোজের পিছনে সমস্ত সামগ্রী লুকিয়ে রাখা। শুধুমাত্র ব্যতিক্রম হল এমন অ্যাপ যা স্পষ্টভাবে R.attr.showWhenLocked
বা Activity.setShowWhenLocked()
পদ্ধতি ব্যবহার করে লক স্ক্রিনের উপরে প্রদর্শিত হতে বেছে নিয়েছে। অন্যথায়, সরকারী এবং ব্যক্তিগত প্রদর্শন থেকে তথ্য ফাঁস করার শক্তিশালী সম্ভাবনা রয়েছে।
যদিও ডিসপ্লেগুলিকে বিভিন্ন স্টেটে ( ON
/ OFF
) রাখা যেতে পারে, লক করা অবস্থা সমস্ত ডিসপ্লের জন্য বিশ্বব্যাপী। যেকোনো ডিভাইস বাস্তবায়নের মতোই, কোনো ডিভাইস লক করা (বা আনলক করা) হলে এটি ব্যবহারকারীর কাছে স্পষ্ট হওয়া উচিত। উদাহরণস্বরূপ, একটি পাওয়ার বোতাম টিপলে সাধারণত একটি মোবাইল ডিভাইস লক হয়ে যায়। একটি পাওয়ার বোতামটি সমস্ত অভ্যন্তরীণ এবং বাহ্যিক স্ক্রিনগুলিকেও লক করা উচিত।
যেহেতু লকিং উইন্ডোটি SystemUI এর মালিকানাধীন, এটি ব্যক্তিগত প্রদর্শনে স্থাপন করা হবে না। ব্যক্তিগত প্রদর্শনের মালিকরা যখন একটি ডিভাইস লক করা থাকে তখন উইন্ডোগুলি লুকিয়ে রাখা এবং সামগ্রী রক্ষা করার জন্য দায়ী৷ ডিফল্ট সিস্টেম বাস্তবায়ন শুধুমাত্র দৃশ্যমানতা পরিবর্তন করে ব্যক্তিগত প্রদর্শনে কার্যকলাপ গোপন করে।
বাস্তবায়ন
সেকেন্ডারি ডিসপ্লেতে লকিং উইন্ডো KeyguardDisplayManager
এ একটি প্রেজেন্টেশন উইন্ডো হিসেবে প্রয়োগ করা হয়। Android 10 KeyguardDisplayManager#mPresentations
একটি অ্যারেতে পরিবর্তন করেছে যা সমস্ত সেকেন্ডারি স্ক্রিনের জন্য সমস্ত লকিং উইন্ডো ধারণ করে৷ KeyguardDisplayManager
একটি ডিসপ্লে-পরিবর্তন শ্রোতাও রয়েছে যা উপলব্ধ ডিসপ্লেতে পরিবর্তনের প্রতিক্রিয়া জানাতে এবং সমস্ত স্ক্রীন সুরক্ষিত করতে। যে কোনো সময়ে সমস্ত সংযুক্ত ডিসপ্লেগুলিকে অবিলম্বে লক করা গুরুত্বপূর্ণ যাতে আক্রমণকারীরা ডিভাইসে শারীরিক অ্যাক্সেস থাকা সত্ত্বেও ব্যবহারকারীর ডেটা বের করতে না পারে৷
লকিং উইন্ডোটি সমস্ত পাবলিক সেকেন্ডারি ডিসপ্লেতে প্রদর্শিত হয় (দেখুন KeyguardDisplayManager#isKeyguardShowable()
)। ব্যক্তিগত প্রদর্শনের মালিকরা যখন একটি ডিভাইস লক করা থাকে তখন বিষয়বস্তু সুরক্ষিত করার জন্য দায়ী৷
AOSP-এর লক স্ক্রীনের ডিফল্ট বাস্তবায়ন এবং এটি আনলক করার সামর্থ্য (কীগার্ড) শুধুমাত্র প্রাথমিক ডিসপ্লেতে প্রদর্শিত হয়। অ্যান্ড্রয়েড 9 (এবং নিম্নতর) এ, সেকেন্ডারি স্ক্রিনগুলি একটি একক বাহ্যিক প্রদর্শনে একটি একক লকিং উইন্ডো সমর্থন করে। Android 10-এ, লক স্ক্রিনটি সমস্ত পাবলিক সেকেন্ডারি ডিসপ্লেতে প্রসারিত করা হয়েছে। লক স্ক্রিনটি সহজ থাকে এবং সেকেন্ডারি স্ক্রিন থেকে আনলক করা সমর্থন করে না।
চিত্র 1. সেকেন্ডারি ডিসপ্লেতে স্ক্রিন লক করুন
ডিভাইস নির্মাতারা সেকেন্ডারি ডিসপ্লের জন্য তাদের লক স্ক্রিন বাস্তবায়ন করতে পারে, যদি মৌলিক নিরাপত্তা প্রয়োজনীয়তা পূরণ হয়। যখন ডিভাইসটি লক করা থাকে, তখন সমস্ত ডিসপ্লেতে তথ্য নিরাপদে লুকিয়ে রাখা উচিত৷ ডিভাইস লক থাকা অবস্থায় কোন বিষয়বস্তু দেখানো বা লুকানো উচিত তার উপর কোন অন্তর্নির্মিত নীতি বা নিয়ন্ত্রণ নেই। অতএব, সীমাবদ্ধ অ্যাক্সেস বাস্তবায়নের একমাত্র নিরাপদ উপায় হল লক স্ক্রীন এবং লকিং উইন্ডোজের পিছনে সমস্ত সামগ্রী লুকিয়ে রাখা। শুধুমাত্র ব্যতিক্রম হল এমন অ্যাপ যা স্পষ্টভাবে R.attr.showWhenLocked
বা Activity.setShowWhenLocked()
পদ্ধতি ব্যবহার করে লক স্ক্রিনের উপরে প্রদর্শিত হতে বেছে নিয়েছে। অন্যথায়, সরকারী এবং ব্যক্তিগত প্রদর্শন থেকে তথ্য ফাঁস করার শক্তিশালী সম্ভাবনা রয়েছে।
যদিও ডিসপ্লেগুলিকে বিভিন্ন স্টেটে ( ON
/ OFF
) রাখা যেতে পারে, লক করা অবস্থা সমস্ত ডিসপ্লের জন্য বিশ্বব্যাপী। যেকোনো ডিভাইস বাস্তবায়নের মতোই, কোনো ডিভাইস লক করা (বা আনলক করা) হলে এটি ব্যবহারকারীর কাছে স্পষ্ট হওয়া উচিত। উদাহরণস্বরূপ, একটি পাওয়ার বোতাম টিপলে সাধারণত একটি মোবাইল ডিভাইস লক হয়ে যায়। একটি পাওয়ার বোতামটি সমস্ত অভ্যন্তরীণ এবং বাহ্যিক স্ক্রিনগুলিকেও লক করা উচিত।
যেহেতু লকিং উইন্ডোটি SystemUI এর মালিকানাধীন, এটি ব্যক্তিগত প্রদর্শনে স্থাপন করা হবে না। ব্যক্তিগত প্রদর্শনের মালিকরা যখন একটি ডিভাইস লক থাকে তখন উইন্ডোগুলি লুকিয়ে রাখা এবং সামগ্রী রক্ষা করার জন্য দায়ী৷ ডিফল্ট সিস্টেম বাস্তবায়ন শুধুমাত্র দৃশ্যমানতা পরিবর্তন করে ব্যক্তিগত প্রদর্শনে কার্যকলাপ গোপন করে।
বাস্তবায়ন
সেকেন্ডারি ডিসপ্লেতে লকিং উইন্ডো KeyguardDisplayManager
এ একটি প্রেজেন্টেশন উইন্ডো হিসেবে প্রয়োগ করা হয়। Android 10 KeyguardDisplayManager#mPresentations
একটি অ্যারেতে পরিবর্তন করেছে যা সমস্ত সেকেন্ডারি স্ক্রিনের জন্য সমস্ত লকিং উইন্ডো ধারণ করে৷ KeyguardDisplayManager
একটি ডিসপ্লে-পরিবর্তন শ্রোতাও রয়েছে যা উপলব্ধ ডিসপ্লেতে পরিবর্তনের প্রতিক্রিয়া জানাতে এবং সমস্ত স্ক্রীন সুরক্ষিত করতে। যে কোনো সময়ে সমস্ত সংযুক্ত ডিসপ্লেগুলিকে অবিলম্বে লক করা গুরুত্বপূর্ণ যাতে আক্রমণকারীরা ডিভাইসে শারীরিক অ্যাক্সেস থাকা সত্ত্বেও ব্যবহারকারীর ডেটা বের করতে না পারে৷
লকিং উইন্ডোটি সমস্ত পাবলিক সেকেন্ডারি ডিসপ্লেতে প্রদর্শিত হয় (দেখুন KeyguardDisplayManager#isKeyguardShowable()
)। ব্যক্তিগত প্রদর্শনের মালিকরা যখন একটি ডিভাইস লক করা থাকে তখন বিষয়বস্তু সুরক্ষিত করার জন্য দায়ী৷
AOSP-এর লক স্ক্রীনের ডিফল্ট বাস্তবায়ন এবং এটি আনলক করার সামর্থ্য (কীগার্ড) শুধুমাত্র প্রাথমিক ডিসপ্লেতে প্রদর্শিত হয়। অ্যান্ড্রয়েড 9 (এবং নিম্নতর) এ, সেকেন্ডারি স্ক্রিনগুলি একটি একক বাহ্যিক প্রদর্শনে একটি একক লকিং উইন্ডো সমর্থন করে। Android 10-এ, লক স্ক্রিনটি সমস্ত পাবলিক সেকেন্ডারি ডিসপ্লেতে প্রসারিত করা হয়েছে। লক স্ক্রিনটি সহজ থাকে এবং সেকেন্ডারি স্ক্রিন থেকে আনলক করা সমর্থন করে না।
চিত্র 1. সেকেন্ডারি ডিসপ্লেতে স্ক্রিন লক করুন
ডিভাইস নির্মাতারা সেকেন্ডারি ডিসপ্লের জন্য তাদের লক স্ক্রিন বাস্তবায়ন করতে পারে, যদি মৌলিক নিরাপত্তা প্রয়োজনীয়তা পূরণ হয়। যখন ডিভাইসটি লক করা থাকে, তখন সমস্ত ডিসপ্লেতে তথ্য নিরাপদে লুকিয়ে রাখা উচিত৷ ডিভাইস লক থাকা অবস্থায় কোন বিষয়বস্তু দেখানো বা লুকানো উচিত তার উপর কোন অন্তর্নির্মিত নীতি বা নিয়ন্ত্রণ নেই। অতএব, সীমাবদ্ধ অ্যাক্সেস বাস্তবায়নের একমাত্র নিরাপদ উপায় হল লক স্ক্রীন এবং লকিং উইন্ডোজের পিছনে সমস্ত সামগ্রী লুকিয়ে রাখা। শুধুমাত্র ব্যতিক্রম হল এমন অ্যাপ যা স্পষ্টভাবে R.attr.showWhenLocked
বা Activity.setShowWhenLocked()
পদ্ধতি ব্যবহার করে লক স্ক্রিনের উপরে প্রদর্শিত হতে বেছে নিয়েছে। অন্যথায়, সরকারী এবং ব্যক্তিগত প্রদর্শন থেকে তথ্য ফাঁস করার শক্তিশালী সম্ভাবনা রয়েছে।
যদিও ডিসপ্লেগুলিকে বিভিন্ন স্টেটে ( ON
/ OFF
) রাখা যেতে পারে, লক করা অবস্থা সমস্ত ডিসপ্লের জন্য বিশ্বব্যাপী। যেকোনো ডিভাইস বাস্তবায়নের মতোই, কোনো ডিভাইস লক (বা আনলক করা) থাকলে ব্যবহারকারীর কাছে এটি স্পষ্ট হওয়া উচিত। উদাহরণস্বরূপ, একটি পাওয়ার বোতাম টিপলে সাধারণত একটি মোবাইল ডিভাইস লক হয়ে যায়। একটি পাওয়ার বোতামটি সমস্ত অভ্যন্তরীণ এবং বাহ্যিক স্ক্রিনগুলিকেও লক করা উচিত।
যেহেতু লকিং উইন্ডোটি SystemUI এর মালিকানাধীন, এটি ব্যক্তিগত প্রদর্শনে স্থাপন করা হবে না। ব্যক্তিগত প্রদর্শনের মালিকরা যখন একটি ডিভাইস লক করা থাকে তখন উইন্ডোগুলি লুকিয়ে রাখা এবং সামগ্রী রক্ষা করার জন্য দায়ী৷ ডিফল্ট সিস্টেম বাস্তবায়ন শুধুমাত্র দৃশ্যমানতা পরিবর্তন করে ব্যক্তিগত প্রদর্শনে কার্যকলাপ গোপন করে।
বাস্তবায়ন
সেকেন্ডারি ডিসপ্লেতে লকিং উইন্ডোটি KeyguardDisplayManager
এ একটি প্রেজেন্টেশন উইন্ডো হিসেবে প্রয়োগ করা হয়। Android 10 KeyguardDisplayManager#mPresentations
একটি অ্যারেতে পরিবর্তন করেছে যা সমস্ত সেকেন্ডারি স্ক্রিনের জন্য সমস্ত লকিং উইন্ডো ধারণ করে৷ KeyguardDisplayManager
একটি ডিসপ্লে-পরিবর্তন শ্রোতাও রয়েছে যা উপলব্ধ ডিসপ্লেতে পরিবর্তনের প্রতিক্রিয়া জানাতে এবং সমস্ত স্ক্রীন সুরক্ষিত করতে। যে কোনো সময়ে সমস্ত সংযুক্ত ডিসপ্লেগুলিকে অবিলম্বে লক করা গুরুত্বপূর্ণ যাতে আক্রমণকারীরা ডিভাইসে শারীরিক অ্যাক্সেস থাকা সত্ত্বেও ব্যবহারকারীর ডেটা বের করতে না পারে৷
লকিং উইন্ডোটি সমস্ত পাবলিক সেকেন্ডারি ডিসপ্লেতে প্রদর্শিত হয় (দেখুন KeyguardDisplayManager#isKeyguardShowable()
)। ব্যক্তিগত প্রদর্শনের মালিকরা যখন একটি ডিভাইস লক থাকে তখন বিষয়বস্তু সুরক্ষিত করার জন্য দায়ী৷