ডিভাইসের অবস্থা নির্দেশ করে যে কীভাবে একটি ডিভাইসে সফ্টওয়্যার অবাধে ফ্ল্যাশ করা যেতে পারে এবং যাচাইকরণ প্রয়োগ করা হয়েছে কিনা। ডিভাইসের অবস্থা LOCKED
এবং UNLOCKED
আছে। LOCKED
ডিভাইসগুলি আপনাকে ডিভাইসে নতুন সফ্টওয়্যার ফ্ল্যাশ করতে বাধা দেয়, যেখানে UNLOCKED
ডিভাইসগুলি পরিবর্তনের অনুমতি দেয়৷
যখন একটি ডিভাইস চালু হয়, বুটলোডার প্রথমে পরীক্ষা করে যে একটি ডিভাইস LOCKED
বা UNLOCKED
। যদি একটি ডিভাইস UNLOCKED
হয়, বুটলোডার ব্যবহারকারীকে একটি সতর্কতা দেখায় এবং তারপর বুট করার জন্য এগিয়ে যায় এমনকি যদি লোড করা OS বিশ্বাসের মূল দ্বারা স্বাক্ষরিত না হয়।
ডিভাইসটি LOCKED
থাকলে, বুটলোডার ডিভাইসের সফ্টওয়্যার যাচাই করতে বুট যাচাইকরণের ধাপগুলি অতিক্রম করে। লোড করা OS সঠিকভাবে বিশ্বাসের রুট দ্বারা স্বাক্ষরিত হলেই LOCKED
ডিভাইস বুট হয়। আরো বিস্তারিত জানার জন্য, বুট ফ্লো দেখুন।
ডিভাইসের অবস্থা পরিবর্তন করুন
একটি ডিভাইসের অবস্থা পরিবর্তন করতে, fastboot flashing [unlock | lock]
আদেশ। ব্যবহারকারীর ডেটা রক্ষা করার জন্য, সমস্ত রাষ্ট্রীয় রূপান্তর ডেটা পার্টিশনগুলিকে মুছে দেয় এবং ডেটা মুছে ফেলার আগে ব্যবহারকারীর নিশ্চিতকরণের জন্য জিজ্ঞাসা করে।
UNLOCKED
থেকে LOCKED
ট্রানজিশন প্রত্যাশিত হয় যখন একজন ব্যবহারকারী একটি ব্যবহৃত ডেভেলপমেন্ট ডিভাইস কেনেন। ডিভাইসটি লক করার ফলে, ব্যবহারকারীর আত্মবিশ্বাস থাকা উচিত যে এটি ডিভাইস প্রস্তুতকারকের দ্বারা উত্পাদিত অবস্থায় আছে, যতক্ষণ না কোনো সতর্কতা থাকে। LOCKED
থেকে UNLOCKED
ট্রানজিশন প্রত্যাশিত হয় যখন একজন ডেভেলপার ডেভেলপমেন্টের উদ্দেশ্যে ডিভাইসে যাচাইকরণ অক্ষম করতে চায়।
বিশ্বাসের মূল
ট্রাস্টের মূল হল ক্রিপ্টোগ্রাফিক কী যা ডিভাইসে সংরক্ষিত অ্যান্ড্রয়েডের অনুলিপিতে স্বাক্ষর করতে ব্যবহৃত হয়। বিশ্বাসের মূলের ব্যক্তিগত অংশটি শুধুমাত্র ডিভাইস প্রস্তুতকারকের কাছে পরিচিত এবং বিতরণের উদ্দেশ্যে Android এর প্রতিটি সংস্করণে স্বাক্ষর করতে ব্যবহৃত হয়। ট্রাস্টের মূলের সর্বজনীন অংশটি ডিভাইসে এম্বেড করা হয় এবং এমন একটি জায়গায় সংরক্ষণ করা হয় যাতে এটিকে টেম্পার করা না যায় (সাধারণত শুধুমাত্র পড়ার জন্য স্টোরেজ)।
যখন এটি অ্যান্ড্রয়েড লোড করে, বুটলোডার সত্যতা যাচাই করতে বিশ্বাসের রুট ব্যবহার করে। এই প্রক্রিয়া সম্পর্কে আরো বিস্তারিত জানার জন্য, বুট যাচাইকরণ দেখুন। ডিভাইসে একাধিক বুট লোডার থাকতে পারে এবং যেমন একাধিক ক্রিপ্টোগ্রাফিক কী চালু থাকতে পারে।
ইউজার-সেটেবল আস্থার মূল
ডিভাইসগুলি ঐচ্ছিকভাবে ব্যবহারকারীকে বিশ্বাসের মূল কনফিগার করার অনুমতি দিতে পারে (উদাহরণস্বরূপ, একটি পাবলিক কী)। ডিভাইসগুলি, এবং Google Pixel ডিভাইসগুলি, বিল্ট-ইন ট্রাস্টের রুট ছাড়াও যাচাইকৃত বুটের জন্য এই ব্যবহারকারী-সেটেবল ট্রাস্ট রুট ব্যবহার করতে পারে।
যদি ব্যবহারকারী-সেটেবল রুট অফ ট্রাস্ট প্রয়োগ করা হয়, তবে এটি এমনভাবে করা উচিত যে:
- ট্রাস্টের ব্যবহারকারী-সেটেবল রুট সেট/ক্লিয়ার করার জন্য শারীরিক নিশ্চিতকরণ প্রয়োজন।
- বিশ্বাসের ব্যবহারকারী-সেটেবল রুট শুধুমাত্র শেষ ব্যবহারকারী দ্বারা সেট করা যেতে পারে। শেষ ব্যবহারকারী ডিভাইসটি পাওয়ার আগে এটি ফ্যাক্টরি বা কোনো মধ্যবর্তী পয়েন্টে সেট করা যাবে না।
- ট্রাস্টের ব্যবহারকারী-নির্ধারণযোগ্য রুট টেম্পার-প্রকাশ্য স্টোরেজে সংরক্ষণ করা হয়। টেম্পার-এভিডেন্ট মানে হল যে অ্যান্ড্রয়েড ডেটার সাথে টেম্পার করেছে কিনা তা সনাক্ত করা সম্ভব, উদাহরণস্বরূপ, যদি এটি ওভাররাইট বা পরিবর্তন করা হয়।
- যদি একটি ব্যবহারকারী-সেটেবল ট্রাস্টের রুট সেট করা থাকে, তাহলে ডিভাইসটিকে Android-এর একটি সংস্করণকে বিল্ট-ইন ট্রাস্টের রুট বা ট্রাস্টের ব্যবহারকারী-সেটেবল রুট বুট করার অনুমতি দেওয়া উচিত।
- ট্রাস্টের ব্যবহারকারী-সেটেবল রুট ব্যবহার করে ডিভাইসটি যখনই বুট হয়, ব্যবহারকারীকে জানানো উচিত যে ডিভাইসটি অ্যান্ড্রয়েডের একটি কাস্টম সংস্করণ লোড করছে। উদাহরণস্বরূপ, সতর্কতামূলক পর্দা, কাস্টম কী সেট সহ
LOCKED
ডিভাইসগুলি দেখুন।
ইউজার-সেটেবল রুট অফ ট্রাস্ট বাস্তবায়নের একটি উপায় হল একটি ভার্চুয়াল পার্টিশন যা ডিভাইসটি UNLOCKED
অবস্থায় থাকলেই ফ্ল্যাশ বা সাফ করা যায়। Google Pixel 2 ডিভাইসগুলি এই পদ্ধতি ব্যবহার করে এবং ভার্চুয়াল পার্টিশনটিকে avb_custom_key
বলা হয়। এই পার্টিশনে ডেটার বিন্যাস হল avbtool extract_public_key
কমান্ডের আউটপুট। বিশ্বাসের ব্যবহারকারী-সেটেবল রুট কীভাবে সেট করবেন তার একটি উদাহরণ এখানে রয়েছে:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
বিশ্বাসের ব্যবহারকারী-নির্ধারণযোগ্য মূলটি ইস্যু করে সাফ করা যেতে পারে:
fastboot erase avb_custom_key
ডিভাইসের অবস্থা নির্দেশ করে যে কীভাবে একটি ডিভাইসে সফ্টওয়্যার অবাধে ফ্ল্যাশ করা যেতে পারে এবং যাচাইকরণ প্রয়োগ করা হয়েছে কিনা। ডিভাইসের অবস্থা LOCKED
এবং UNLOCKED
আছে। LOCKED
ডিভাইসগুলি আপনাকে ডিভাইসে নতুন সফ্টওয়্যার ফ্ল্যাশ করতে বাধা দেয়, যেখানে UNLOCKED
ডিভাইসগুলি পরিবর্তনের অনুমতি দেয়৷
যখন একটি ডিভাইস চালু হয়, বুটলোডার প্রথমে পরীক্ষা করে যে একটি ডিভাইস LOCKED
বা UNLOCKED
। যদি একটি ডিভাইস UNLOCKED
হয়, বুটলোডার ব্যবহারকারীকে একটি সতর্কতা দেখায় এবং তারপর বুট করার জন্য এগিয়ে যায় এমনকি যদি লোড করা OS বিশ্বাসের মূল দ্বারা স্বাক্ষরিত না হয়।
ডিভাইসটি LOCKED
থাকলে, বুটলোডার ডিভাইসের সফ্টওয়্যার যাচাই করতে বুট যাচাইকরণের ধাপগুলি অতিক্রম করে। লোড করা OS সঠিকভাবে বিশ্বাসের রুট দ্বারা স্বাক্ষরিত হলেই LOCKED
ডিভাইস বুট হয়। আরো বিস্তারিত জানার জন্য, বুট ফ্লো দেখুন।
ডিভাইসের অবস্থা পরিবর্তন করুন
একটি ডিভাইসের অবস্থা পরিবর্তন করতে, fastboot flashing [unlock | lock]
আদেশ। ব্যবহারকারীর ডেটা রক্ষা করার জন্য, সমস্ত রাষ্ট্রীয় রূপান্তর ডেটা পার্টিশনগুলিকে মুছে দেয় এবং ডেটা মুছে ফেলার আগে ব্যবহারকারীর নিশ্চিতকরণের জন্য জিজ্ঞাসা করে।
UNLOCKED
থেকে LOCKED
ট্রানজিশন প্রত্যাশিত হয় যখন একজন ব্যবহারকারী একটি ব্যবহৃত ডেভেলপমেন্ট ডিভাইস কেনেন। ডিভাইসটি লক করার ফলে, ব্যবহারকারীর আত্মবিশ্বাস থাকা উচিত যে এটি ডিভাইস প্রস্তুতকারকের দ্বারা উত্পাদিত অবস্থায় আছে, যতক্ষণ না কোনো সতর্কতা থাকে। LOCKED
থেকে UNLOCKED
ট্রানজিশন প্রত্যাশিত হয় যখন একজন ডেভেলপার ডেভেলপমেন্টের উদ্দেশ্যে ডিভাইসে যাচাইকরণ অক্ষম করতে চায়।
বিশ্বাসের মূল
ট্রাস্টের মূল হল ক্রিপ্টোগ্রাফিক কী যা ডিভাইসে সংরক্ষিত অ্যান্ড্রয়েডের অনুলিপিতে স্বাক্ষর করতে ব্যবহৃত হয়। বিশ্বাসের মূলের ব্যক্তিগত অংশটি শুধুমাত্র ডিভাইস প্রস্তুতকারকের কাছে পরিচিত এবং বিতরণের উদ্দেশ্যে Android এর প্রতিটি সংস্করণে স্বাক্ষর করতে ব্যবহৃত হয়। ট্রাস্টের মূলের সর্বজনীন অংশটি ডিভাইসে এম্বেড করা হয় এবং এমন একটি জায়গায় সংরক্ষণ করা হয় যাতে এটিকে টেম্পার করা না যায় (সাধারণত শুধুমাত্র পড়ার জন্য স্টোরেজ)।
যখন এটি অ্যান্ড্রয়েড লোড করে, বুটলোডার সত্যতা যাচাই করতে বিশ্বাসের রুট ব্যবহার করে। এই প্রক্রিয়া সম্পর্কে আরো বিস্তারিত জানার জন্য, বুট যাচাইকরণ দেখুন। ডিভাইসে একাধিক বুট লোডার থাকতে পারে এবং যেমন একাধিক ক্রিপ্টোগ্রাফিক কী চালু থাকতে পারে।
ইউজার-সেটেবল আস্থার মূল
ডিভাইসগুলি ঐচ্ছিকভাবে ব্যবহারকারীকে বিশ্বাসের মূল কনফিগার করার অনুমতি দিতে পারে (উদাহরণস্বরূপ, একটি পাবলিক কী)। ডিভাইসগুলি, এবং Google Pixel ডিভাইসগুলি, বিল্ট-ইন ট্রাস্টের রুট ছাড়াও যাচাইকৃত বুটের জন্য এই ব্যবহারকারী-সেটেবল ট্রাস্ট রুট ব্যবহার করতে পারে।
যদি ব্যবহারকারী-সেটেবল রুট অফ ট্রাস্ট প্রয়োগ করা হয়, তবে এটি এমনভাবে করা উচিত যে:
- ট্রাস্টের ব্যবহারকারী-সেটেবল রুট সেট/ক্লিয়ার করার জন্য শারীরিক নিশ্চিতকরণ প্রয়োজন।
- বিশ্বাসের ব্যবহারকারী-সেটেবল রুট শুধুমাত্র শেষ ব্যবহারকারী দ্বারা সেট করা যেতে পারে। শেষ ব্যবহারকারী ডিভাইসটি পাওয়ার আগে এটি ফ্যাক্টরি বা কোনো মধ্যবর্তী পয়েন্টে সেট করা যাবে না।
- ট্রাস্টের ব্যবহারকারী-নির্ধারণযোগ্য রুট টেম্পার-প্রকাশ্য স্টোরেজে সংরক্ষণ করা হয়। টেম্পার-এভিডেন্ট মানে হল যে অ্যান্ড্রয়েড ডেটার সাথে টেম্পার করেছে কিনা তা সনাক্ত করা সম্ভব, উদাহরণস্বরূপ, যদি এটি ওভাররাইট বা পরিবর্তন করা হয়।
- যদি একটি ব্যবহারকারী-সেটেবল ট্রাস্টের রুট সেট করা থাকে, তাহলে ডিভাইসটিকে Android-এর একটি সংস্করণকে বিল্ট-ইন ট্রাস্টের রুট বা ট্রাস্টের ব্যবহারকারী-সেটেবল রুট বুট করার অনুমতি দেওয়া উচিত।
- ট্রাস্টের ব্যবহারকারী-সেটেবল রুট ব্যবহার করে ডিভাইসটি যখনই বুট হয়, ব্যবহারকারীকে জানানো উচিত যে ডিভাইসটি অ্যান্ড্রয়েডের একটি কাস্টম সংস্করণ লোড করছে। উদাহরণস্বরূপ, সতর্কতামূলক পর্দা, কাস্টম কী সেট সহ
LOCKED
ডিভাইসগুলি দেখুন।
ইউজার-সেটেবল রুট অফ ট্রাস্ট বাস্তবায়নের একটি উপায় হল একটি ভার্চুয়াল পার্টিশন যা ডিভাইসটি UNLOCKED
অবস্থায় থাকলেই ফ্ল্যাশ বা সাফ করা যায়। Google Pixel 2 ডিভাইসগুলি এই পদ্ধতি ব্যবহার করে এবং ভার্চুয়াল পার্টিশনটিকে avb_custom_key
বলা হয়। এই পার্টিশনে ডেটার বিন্যাস হল avbtool extract_public_key
কমান্ডের আউটপুট। বিশ্বাসের ব্যবহারকারী-সেটেবল রুট কীভাবে সেট করবেন তার একটি উদাহরণ এখানে রয়েছে:
avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin
বিশ্বাসের ব্যবহারকারী-নির্ধারণযোগ্য মূলটি ইস্যু করে সাফ করা যেতে পারে:
fastboot erase avb_custom_key