Загрузка для устройств Android
Процесс загрузки устройств Android начинается с момента включения SoC ( системы на кристалле ) и заканчивается появлением домашнего экрана или специальных режимов, таких как восстановление и быстрая загрузка . [a] Процесс загрузки устройств под управлением Android зависит от дизайна прошивки производителей SoC.
Фон
По состоянию на 2018 год 90% SoC на рынке Android поставляются компаниями Qualcomm , Samsung или MediaTek . [1] Другими поставщиками являются Rockchip , Marvell , Nvidia и ранее Texas Instruments .
История
Проверенная загрузка, мера безопасности загрузки , была введена в Android KitKat . [2]
Этапы
Первичный загрузчик
Первичный загрузчик (PBL), который хранится в Boot ROM [3], является первым этапом процесса загрузки. Этот код пишется производителем чипсета. [4]
PBL проверяет подлинность следующего этапа.
На смартфонах Samsung ключ безопасной загрузки Samsung Secure Boot Key (SSBK) используется загрузочной ПЗУ для проверки следующих этапов. [5]
На SoC от Qualcomm можно войти в режим аварийной загрузки Qualcomm из основного загрузчика.
Если проверка вторичного загрузчика не пройдена, он войдет в EDL. [6] [ нужен лучший источник ]
Вторичный загрузчик
Поскольку пространство в загрузочном ПЗУ ограничено, используется вторичный загрузчик на eMMC или eUFS . [7] Вторичный загрузчик инициализирует TrustZone . [7] [8]
Например, на Qualcomm MSM8960 вторичный загрузчик 1 загружает вторичный загрузчик 2. Вторичный загрузчик 2 загружает TrustZone и вторичный загрузчик 3. [9]
SBL теперь называется XBL компанией Qualcomm и представляет собой реализацию UEFI .
Qualcomm использует LK (Little Kernel) или XBL (eXtensible Bootloader), MediaTek использует Das U-Boot . [1] Little Kernel — это микроядро для встраиваемых устройств , которое было модифицировано Qualcomm для использования в качестве загрузчика. [10]
Aboot
Загрузчик Android (Aboot), реализующий интерфейс fastboot (отсутствующий в устройствах Samsung). Aboot проверяет подлинность разделов загрузки и восстановления. [4] Нажав определенную комбинацию клавиш, устройства также могут загружаться в режиме восстановления . Затем Aboot передает управление ядру Linux.
Ядро и initramfs
Initramfs — это сжатый архив cpio , содержащий небольшую корневую файловую систему. Он содержит init, который выполняется. Ядро Android — это модифицированная версия ядра Linux. Init монтирует разделы. dm-verity проверяет целостность разделов, указанных в файле fstab. dm-verity — это модуль ядра Linux, представленный Google в Android с версии 4.4. Стандартная реализация поддерживает только блочную проверку, но Samsung добавила поддержку файлов. [8]
Зигота
Zygote порождается процессом init, который отвечает за запуск приложений Android и процессов служб. Он загружает и инициализирует классы, которые должны использоваться очень часто, в кучу. Например, структуры данных dex библиотек. После запуска Zygote прослушивает команды на сокете. Когда должно быть запущено новое приложение, Zygote отправляется команда, которая выполняет системный вызов fork() . [ необходима цитата ]
Схема расположения разделов
Система Android разделена на разные разделы . [11]
Платформа Qualcomm использует таблицу разделов GUID . Эта спецификация является частью спецификации UEFI , но не зависит от прошивки UEFI. [12]
Смотрите также
Пояснительные записки
- ^ Эти режимы, как правило, поддерживают функцию возобновления обычной загрузки.
Ссылки
- ^ ab Garri, Khireddine; Kenaza, Tayeb; Aissani, Mohamed (октябрь 2018 г.). «Новый подход к обнаружению буткитов на платформе Android». Международная конференция по интеллектуальным коммуникациям в сетевых технологиях 2018 г. (SaCoNeT) . IEEE. стр. 277–282. doi :10.1109/saconet.2018.8585583. ISBN 978-1-5386-9493-0. S2CID 56718094.
- ^ "Android Verified Boot [LWN.net]". LWN.net . Архивировано из оригинала 2015-04-22 . Получено 2021-09-25 .
- ^ Юань, Пэнфэй; Го, Яо; Чэнь, Сянцюнь; Мэй, Хун (март 2018 г.). «Оптимизация ядра Linux для Android-смартфонов с учетом особенностей устройств». 6-я международная конференция IEEE по облачным вычислениям, услугам и инжинирингу мобильных приложений (MobileCloud) 2018 г. стр. 65–72. doi :10.1109/MobileCloud.2018.00018. ISBN 978-1-5386-4879-7. S2CID 13742883.
- ^ ab Hay, Roee (2017-08-14). "fastboot oem vuln: уязвимости загрузчика android в настройках поставщика". Труды 11-й конференции USENIX по наступательным технологиям . WOOT'17. Ванкувер, Британская Колумбия, Канада: Ассоциация USENIX: 22.
- ^ Алендал, Гуннар; Дирколботн, Гейр Олав; Аксельссон, Стефан (01.03.2018). «Криминалистическое приобретение — Анализ и обход режима общих критериев, принудительно примененного в безопасной загрузке Samsung». Цифровое расследование . 24 : S60–S67. doi : 10.1016/j.diin.2018.01.008. hdl : 11250/2723051 . ISSN 1742-2876.
- ^ «Эксплуатация программистов Qualcomm EDL (1): Получение доступа и внутренние компоненты PBL». alephsecurity.com . 2018-01-22 . Получено 2021-09-13 .
- ^ ab Юань, Пэнфэй; Го, Яо; Чэнь, Сянцюнь; Мэй, Хун (март 2018 г.). «Оптимизация ядра Linux для Android-смартфонов под конкретные устройства». 6-я международная конференция IEEE по мобильным облачным вычислениям, сервисам и инжинирингу (MobileCloud) 2018 г. IEEE. стр. 65–72. doi :10.1109/mobilecloud.2018.00018. ISBN 978-1-5386-4879-7. S2CID 13742883.
- ^ ab Kanonov, Uri; Wool, Avishai (2016-10-24). «Безопасные контейнеры в Android». Труды 6-го семинара по безопасности и конфиденциальности в смартфонах и мобильных устройствах . SPSM '16. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 3–12. doi :10.1145/2994459.2994470. ISBN 9781450345644. S2CID 8510729.
- ^ Тао, Чен, Юэ Чжан, Юлун Ван, Чжи Вэй (17 июля 2017 г.). Атака на понижение версии TrustZone. ОСЛК 1106269801.
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Тан, Цинхао (2021). Безопасность Интернета вещей: принципы и практика. Fan Du. Сингапур. стр. 166. ISBN 978-981-15-9942-2. OCLC 1236261208.
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка ) - ^ Алендал, Гуннар; Дюрколботн, Гейр Олав; Аксельссон, Стефан (март 2018 г.). «Криминалистическое приобретение — анализ и обход режима общих критериев, принудительно примененного в безопасной загрузке Samsung». Цифровое расследование . 24 : S60–S67. doi : 10.1016/j.diin.2018.01.008. hdl : 11250/2723051 . ISSN 1742-2876.
- ^ Чжао, Лунцзе; Си, Бин; У, Шуньсян; Айзези, Ясен; Мин, Даодун; Ван, Фулинь; И, Чао (2018). «Извлечение физического зеркала на мобильных устройствах Android на базе Qualcomm». Труды 2-й Международной конференции по компьютерным наукам и прикладной инженерии . Csae '18. Нью-Йорк, Нью-Йорк, США: ACM Press. стр. 1–5. doi :10.1145/3207677.3278046. ISBN 9781450365123. S2CID 53038902.
Внешние ссылки
- Android.com - Процесс загрузки
- Управление временем загрузки
- Загрузчики Qualcomm
- Цепочка доверия Qualcomm
- Безопасная загрузка и аутентификация образа
- Безопасная загрузка на Snapdragon 410
- Анализ цепочек безопасной загрузки Qualcomm
- msm8916-mainline/qhypstub
- Запуск процесса init системы Android и полный анализ init.rc
- Язык инициализации Android