বুট যাচাই করা হচ্ছে

যাচাই করা বুটটির জন্য সমস্ত এক্সিকিউটেবল কোড এবং ডেটা যা অ্যান্ড্রয়েড সংস্করণের অংশ এটি ব্যবহার করার আগে বুট করা হচ্ছে তার অংশ হিসাবে ক্রিপ্টোগ্রাফিকভাবে যাচাই করা দরকার। এর মধ্যে রয়েছে কার্নেল ( boot পার্টিশন থেকে লোড), ডিভাইস ট্রি ( dtbo পার্টিশন থেকে লোড), system পার্টিশন, vendor পার্টিশন ইত্যাদি।

ছোট পার্টিশন, যেমন boot এবং dtbo , কেবল একবারে পঠিত হয় সাধারণত পুরো বিষয়বস্তুকে মেমরিতে লোড করে তার হ্যাশ গণনা করে যাচাই করা হয়। এই গণনা করা হ্যাশ মানটি তখন প্রত্যাশিত হ্যাশ মানের সাথে তুলনা করা হয় । মানটি যদি মেলে না, অ্যান্ড্রয়েড লোড হবে না। আরও বিশদের জন্য বুট ফ্লো দেখুন

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

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

রোলব্যাক সুরক্ষা

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

এই শ্রেণীর আক্রমণগুলির বিরুদ্ধে সুরক্ষাটিকে রোলব্যাক প্রোটেকশন বলা হয়। রোলব্যাক সুরক্ষা সাধারণত অ্যান্ড্রয়েডের সর্বাধিক সাম্প্রতিক সংস্করণ রেকর্ড করার জন্য টেম্পার-স্পষ্ট স্টোরেজ ব্যবহার করে এবং রেকর্ড করা সংস্করণটির চেয়ে কম হলে অ্যান্ড্রয়েড বুট করতে অস্বীকার করে প্রয়োগ করা হয়। সংস্করণগুলি সাধারণত প্রতি পার্টিশনের ভিত্তিতে ট্র্যাক করা হয়।

AVB কীভাবে রোলব্যাক সুরক্ষা পরিচালনা করে সে সম্পর্কে আরও তথ্যের জন্য, AVB README দেখুন

যাচাইয়ের ত্রুটিগুলি পরিচালনা করা

যাচাইকরণ বুট সময় (যেমন, boot পার্টিশনে গণনা করা হ্যাশ প্রত্যাশিত হ্যাশের সাথে মেলে না) বা রান সময়ে (যেমন, ডিএম-ভার্টিটি যদি system পার্টিশনে একটি যাচাইয়ের ত্রুটির মুখোমুখি হয়) ব্যর্থ হতে পারে। যদি বুট সময়ে যাচাইকরণ ব্যর্থ হয়, ডিভাইসটি বুট করতে পারে না এবং শেষ ব্যবহারকারীর ডিভাইসটি পুনরুদ্ধার করতে পদক্ষেপগুলি অতিক্রম করতে হবে।

যদি রান-টাইমে যাচাইকরণ ব্যর্থ হয় তবে প্রবাহ কিছুটা জটিল। ডিভাইসটি যদি ডিএম-সত্যতা ব্যবহার করে তবে এটি restart মোডে কনফিগার করা উচিত। restart মোডে, যদি কোনও যাচাইয়ের ত্রুটির মুখোমুখি হয়, কারণটি চিহ্নিত করতে ডিভাইসটি তাত্ক্ষণিকভাবে একটি নির্দিষ্ট পতাকা সেট দিয়ে পুনরায় আরম্ভ করা হবে। বুট eio এই পতাকাটি লক্ষ্য করা উচিত এবং আই / ও ত্রুটি ( eio ) মোডটি ব্যবহার করার জন্য dm-verity পরিবর্তন করতে হবে এবং একটি নতুন আপডেট ইনস্টল না হওয়া পর্যন্ত এই মোডে থাকা উচিত stay

eio মোডে বুট করার সময়, ডিভাইসটি একটি ত্রুটি পর্দা দেখায় যা ব্যবহারকারীকে জানিয়ে দেয় যে দুর্নীতি সনাক্ত হয়েছে এবং ডিভাইসটি সঠিকভাবে কাজ করতে পারে না। ব্যবহারকারী এটি খারিজ না করা পর্যন্ত স্ক্রীনটি দেখায়। eio মোডে dm-verity ড্রাইভারটি যদি যাচাইয়ের ত্রুটি হয় তবে ডিভাইসটি পুনরায় আরম্ভ করবে না, পরিবর্তে একটি EIO ত্রুটি ফিরে আসে এবং অ্যাপ্লিকেশনটিকে ত্রুটিটি মোকাবেলা করতে হবে।

উদ্দেশ্যটি হ'ল হয় সিস্টেম আপডেটেটরটি চলবে (যাতে দুর্নীতির ত্রুটি ছাড়াই একটি নতুন ওএস ইনস্টল করা যায়) বা ব্যবহারকারী যতটা সম্ভব ডিভাইস থেকে তাদের ডেটা যতটা পেতে পারেন। নতুন ওএস ইনস্টল হয়ে গেলে বুট লোডার নতুন ইনস্টল হওয়া ওএসটি লক্ষ্য করে এবং restart মোডে ফিরে আসে।