به طور پیش فرض، اکثر دستگاه های اندرویدی با یک بوت لودر قفل شده عرضه می شوند، به این معنی که کاربران نمی توانند بوت لودر یا پارتیشن های دستگاه را فلش کنند. در صورت نیاز، شما (و کاربران دستگاهی که گزینههای برنامهنویس را فعال کردهاند) میتوانید قفل بوتلودر را برای فلش کردن تصاویر جدید باز کنید.
وارد بوت لودر شوید
برای صدور دستورات fastboot
باید در حالت بوت لودر باشید. یکی از راه های انجام این کار ارسال دستور adb adb reboot bootloader
است. برخی از تلفنها همچنین به شما اجازه میدهند با فشار دادن کلیدهای ترکیبی (معمولاً کاهش صدا) هنگام بوت کردن دستگاه، بوت لودر را مجددا راهاندازی کنید.
بوت لودر را باز کنید
هنگامی که در حالت بوت لودر قرار گرفتید، برای باز کردن قفل بوت لودر و فعال کردن پارتیشن ها برای reflash کردن، دستور fastboot flashing unlock
روی دستگاه اجرا کنید. پس از تنظیم، حالت باز کردن قفل در طول راهاندازی مجدد باقی میماند.
دستگاهها باید فرمان fastboot flashing unlock
را رد کنند، مگر اینکه get_unlock_ability
روی 1
تنظیم شده باشد. اگر روی 0
تنظیم شده باشد، کاربر باید در صفحه اصلی بوت شود، منوی تنظیمات > سیستم > گزینههای برنامهنویس را باز کرده و گزینه باز کردن قفل OEM را فعال کند (که get_unlock_ability
را روی 1
تنظیم میکند). پس از تنظیم، این حالت در راه اندازی مجدد و بازنشانی داده های کارخانه باقی می ماند.
هنگامی که فرمان fastboot flashing unlock
ارسال می شود، دستگاه باید از کاربران بخواهد که به آنها هشدار دهند که ممکن است در تصاویر غیر رسمی با مشکل مواجه شوند. پس از اینکه کاربر هشدار را تأیید کرد، دستگاه باید بازنشانی کارخانه ای را انجام دهد تا از دسترسی غیرمجاز به داده ها جلوگیری کند. بوت لودر باید دستگاه را بازنشانی کند حتی اگر نتواند آن را به درستی فرمت کند. فقط پس از تنظیم مجدد می توان پرچم ثابت را تنظیم کرد تا دستگاه بتواند دوباره فلش شود.
تمام رم هایی که قبلاً بازنویسی نشده اند باید در طی فرآیند fastboot flashing unlock
بازنشانی شوند. این معیار از حملاتی که محتویات RAM باقی مانده از بوت قبلی را می خوانند جلوگیری می کند. به طور مشابه، دستگاههای قفلشده باید RAM را در هر بار بوت پاک کنند (مگر اینکه این تاخیر غیرقابل قبولی ایجاد کند)، اما باید منطقه مورد استفاده برای ramoops
هسته را ترک کنند.
بوت لودر را قفل کنید
برای قفل کردن بوت لودر و ریست کردن دستگاه، دستور fastboot flashing lock
را روی دستگاه اجرا کنید. دستگاههایی که برای خردهفروشی در نظر گرفته شدهاند باید در حالت قفل ارسال شوند (با get_unlock_ability
بازگشت 0
) تا اطمینان حاصل شود که مهاجمان نمیتوانند با نصب یک سیستم جدید یا تصویر راهاندازی دستگاه را به خطر بیاندازند.
ویژگی های قفل و باز کردن قفل را تنظیم کنید
ویژگی ro.oem_unlock_supported
باید در زمان ساخت بر اساس اینکه آیا دستگاه از باز کردن قفل چشمک زن پشتیبانی می کند یا خیر تنظیم شود.
- اگر دستگاه از باز کردن قفل چشمک زن پشتیبانی می کند،
ro.oem_unlock_supported
را روی1
تنظیم کنید. - اگر دستگاه از باز کردن قفل چشمک زن پشتیبانی نمی کند،
ro.oem_unlock_supported
را روی0
تنظیم کنید.
اگر دستگاه از باز کردن قفل چشمک زن پشتیبانی می کند، بوت لودر باید وضعیت قفل را با تنظیم متغیر خط فرمان هسته androidboot.flash.locked
روی 1
در صورت قفل شدن یا روی 0
در صورت باز بودن قفل نشان دهد. این متغیر باید به جای اینکه در خط فرمان هسته در اندروید 12 در bootconfig تنظیم شود.
برای دستگاه هایی که از dm-verity پشتیبانی می کنند، از ro.boot.verifiedbootstate
استفاده کنید تا مقدار ro.boot.flash.locked
را روی 0
تنظیم کنید. اگر حالت بوت تایید شده نارنجی باشد، این قفل بوت لودر را باز می کند.
از بخش های حیاتی محافظت کنید
دستگاهها باید از قفل و باز کردن بخشهای حیاتی پشتیبانی کنند، بخشهایی که بهعنوان هر آنچه برای راهاندازی دستگاه در بوتلودر لازم است تعریف میشوند. چنین بخش هایی ممکن است شامل فیوزها، پارتیشن های مجازی برای هاب حسگر، بوت لودر مرحله اول و موارد دیگر باشد. برای قفل کردن بخشهای حیاتی، باید از مکانیزمی استفاده کنید که از تغییر عمدی هر بخش حیاتی در کد (هسته، تصویر بازیابی، کد OTA و غیره) که روی دستگاه اجرا میشود، جلوگیری کند. اگر دستگاه در حالت بحرانی قفل است، OTA ها نباید بخش های حیاتی را به روز کنند.
انتقال از حالت قفل به حالت قفل باز باید به تعامل فیزیکی با دستگاه نیاز داشته باشد. این تعامل شبیه به اثرات اجرای دستور fastboot flashing unlock
است، اما کاربر را ملزم می کند تا یک دکمه فیزیکی روی دستگاه را فشار دهد. دستگاهها نباید اجازه دهند بدون تعامل فیزیکی، از lock critical
به unlock critical
به صورت برنامهریزی شوند، و دستگاهها نباید در حالت unlock critical
ارسال شوند.
به طور پیش فرض، اکثر دستگاه های اندرویدی با یک بوت لودر قفل شده عرضه می شوند، به این معنی که کاربران نمی توانند بوت لودر یا پارتیشن های دستگاه را فلش کنند. در صورت نیاز، شما (و کاربران دستگاهی که گزینههای برنامهنویس را فعال کردهاند) میتوانید قفل بوتلودر را برای فلش کردن تصاویر جدید باز کنید.
وارد بوت لودر شوید
برای صدور دستورات fastboot
باید در حالت بوت لودر باشید. یکی از راه های انجام این کار ارسال دستور adb adb reboot bootloader
است. برخی از تلفنها همچنین به شما اجازه میدهند با فشار دادن کلیدهای ترکیبی (معمولاً کاهش صدا) هنگام بوت کردن دستگاه، بوت لودر را مجددا راهاندازی کنید.
بوت لودر را باز کنید
هنگامی که در حالت بوت لودر قرار گرفتید، برای باز کردن قفل بوت لودر و فعال کردن پارتیشن ها برای reflash کردن، دستور fastboot flashing unlock
روی دستگاه اجرا کنید. پس از تنظیم، حالت باز کردن قفل در طول راهاندازی مجدد باقی میماند.
دستگاهها باید فرمان fastboot flashing unlock
را رد کنند، مگر اینکه get_unlock_ability
روی 1
تنظیم شده باشد. اگر روی 0
تنظیم شده باشد، کاربر باید در صفحه اصلی بوت شود، منوی تنظیمات > سیستم > گزینههای برنامهنویس را باز کرده و گزینه باز کردن قفل OEM را فعال کند (که get_unlock_ability
را روی 1
تنظیم میکند). پس از تنظیم، این حالت در راه اندازی مجدد و بازنشانی داده های کارخانه باقی می ماند.
هنگامی که فرمان fastboot flashing unlock
ارسال می شود، دستگاه باید از کاربران بخواهد که به آنها هشدار دهند که ممکن است در تصاویر غیر رسمی با مشکل مواجه شوند. پس از اینکه کاربر هشدار را تأیید کرد، دستگاه باید بازنشانی کارخانه ای را انجام دهد تا از دسترسی غیرمجاز به داده ها جلوگیری کند. بوت لودر باید دستگاه را بازنشانی کند حتی اگر نتواند آن را به درستی فرمت کند. فقط پس از تنظیم مجدد می توان پرچم ثابت را تنظیم کرد تا دستگاه بتواند دوباره فلش شود.
تمام رم هایی که قبلاً بازنویسی نشده اند باید در طی فرآیند fastboot flashing unlock
بازنشانی شوند. این معیار از حملاتی که محتویات RAM باقی مانده از بوت قبلی را می خوانند جلوگیری می کند. به طور مشابه، دستگاههای قفلشده باید RAM را در هر بار بوت پاک کنند (مگر اینکه این تاخیر غیرقابل قبولی ایجاد کند)، اما باید منطقه مورد استفاده برای ramoops
هسته را ترک کنند.
بوت لودر را قفل کنید
برای قفل کردن بوت لودر و ریست کردن دستگاه، دستور fastboot flashing lock
را روی دستگاه اجرا کنید. دستگاههایی که برای خردهفروشی در نظر گرفته شدهاند باید در حالت قفل ارسال شوند (با get_unlock_ability
بازگشت 0
) تا اطمینان حاصل شود که مهاجمان نمیتوانند با نصب یک سیستم جدید یا تصویر راهاندازی دستگاه را به خطر بیاندازند.
ویژگی های قفل و باز کردن قفل را تنظیم کنید
ویژگی ro.oem_unlock_supported
باید در زمان ساخت بر اساس اینکه آیا دستگاه از باز کردن قفل چشمک زن پشتیبانی می کند یا خیر تنظیم شود.
- اگر دستگاه از باز کردن قفل چشمک زن پشتیبانی می کند،
ro.oem_unlock_supported
را روی1
تنظیم کنید. - اگر دستگاه از باز کردن قفل چشمک زن پشتیبانی نمی کند،
ro.oem_unlock_supported
را روی0
تنظیم کنید.
اگر دستگاه از باز کردن قفل چشمک زن پشتیبانی می کند، بوت لودر باید وضعیت قفل را با تنظیم متغیر خط فرمان هسته androidboot.flash.locked
روی 1
در صورت قفل شدن یا روی 0
در صورت باز بودن قفل نشان دهد. این متغیر باید به جای اینکه در خط فرمان هسته در اندروید 12 در bootconfig تنظیم شود.
برای دستگاه هایی که از dm-verity پشتیبانی می کنند، از ro.boot.verifiedbootstate
استفاده کنید تا مقدار ro.boot.flash.locked
را روی 0
تنظیم کنید. اگر حالت بوت تایید شده نارنجی باشد، این قفل بوت لودر را باز می کند.
از بخش های حیاتی محافظت کنید
دستگاهها باید از قفل و باز کردن بخشهای حیاتی پشتیبانی کنند، بخشهایی که بهعنوان هر آنچه برای راهاندازی دستگاه در بوتلودر لازم است تعریف میشوند. چنین بخش هایی ممکن است شامل فیوزها، پارتیشن های مجازی برای هاب حسگر، بوت لودر مرحله اول و موارد دیگر باشد. برای قفل کردن بخشهای حیاتی، باید از مکانیزمی استفاده کنید که از تغییر عمدی هر بخش حیاتی در کد (هسته، تصویر بازیابی، کد OTA و غیره) که روی دستگاه اجرا میشود، جلوگیری کند. اگر دستگاه در حالت بحرانی قفل است، OTA ها نباید بخش های حیاتی را به روز کنند.
انتقال از حالت قفل به حالت قفل باز باید به تعامل فیزیکی با دستگاه نیاز داشته باشد. این تعامل شبیه به اثرات اجرای دستور fastboot flashing unlock
است، اما کاربر را ملزم می کند تا یک دکمه فیزیکی روی دستگاه را فشار دهد. دستگاهها نباید اجازه دهند بدون تعامل فیزیکی، از lock critical
به unlock critical
به صورت برنامهریزی شوند، و دستگاهها نباید در حالت unlock critical
ارسال شوند.