Содержание
- Reason avb slot verify c 143 error
- Ошибки при прошивки Samsung телефонов в ODIN
- Типичные ошибки при прошивки Samsung в ODIN
- Ошибка подключения устройства
- Samsung «не виден» в Odin
- Файл Прошивки битый: MD5 hash value is invalid
- Ошибки при прошивке разделов system.img, boot.img, recovery.img, sboot.bin, cache.img и других разделов
- Ошибки связанные с повреждением разделов памяти Samsung
- Ошибки с отсутствием возможности доступа к записи разделов
- Samsung не запускается
- Android Verified Boot (AVB)
- Contents
- What is it
- Implementation details
- Verified boot process
- Using avbtool
- Examining contents of stock images
- Signing & cheksumming the partitions
- Creating vbmeta image
- Disabling verified boot
- Как исправить Самсунг завис в режиме загрузки(download/Odin)?
- Часть 1: Что такое режим загрузки(download/Odin)?
- Часть 2: Как исправить Самсунг завис в режиме download/Odin?
- Способ 1: 1-клик выйти из режима загрузки(download/Odin)(совершенно бесплатно)
- Способ 2: Исправить завис в режиме загрузки с помощью Tenorshare ReiBoot for Android
- Заключение
Reason avb slot verify c 143 error
Обсуждение HK1 MAX +
TV Box
Обсуждение »
1, Rockchip RK3368 PRO Octa-Core 64 бит Cortex-A53;
2, GPU: PowerVR G6110;
3, ОС Android 9,0;
4, поддержка H.265, 4 K 60pfs, HD 2,0, USB3.0, USB2.0;
5, поддержка 1000 M Ethernet, 2,4G & 5 GHz Dual Wifi;
6, есть три варианта для HK1 MAX PLUS Box:
A: 4 Гб + 32 ГБ + двойной Wifi + BT4.0 + 1000 м
B: 4 Гб + 64 ГБ + двойной Wifi + BT4.0 + 1000 м
C: 4 Гб + 128 ГБ + двойной Wifi + BT4.0 + 1000 м
Драйвера
DriverAssitant_v4.91.zip
DriverAssitant_v5.0.zip
Утилита
AndroidTool_Release_v2.71.zip
RKDevTool_Release_v2.79.zip ( 2.37 МБ )
В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Сообщение отредактировал cubelibre — 28.02.21, 15:31
Выключать и перезагружать научился через настройки кнопки питания пульта! Вопрос в другом, там один порт USB 2.0, один USB 3.0, в режиме bootloader видит только через USB 2.0, значит сервисный порт только 2.0, 3.0 это так, просто порт?! Что-то она хреновато определяется и через 2.0, то в одном порту компа, то не определяется, то неправильно, то в другом. Да, и в режиме bootloader дал команду fastboot reboot, команда выполнилась, но, банально, приставка на нее никак не отреагировала! А, блин, когда приставка долго стоит в режиме загрузчика, то совсем перестаёт определяться в системе! Есть какое-то ТВРП от предыдущей версии приставки. Кстати, в стоковом рекавери компьютер ее совсем не видит? Не у кого не удалось завести?
Вау, нашёл, там стоит CWM Recovery классическое, в котором можно zip устанавливать через sideload, вау, только у меня на большом компе на передних портах что-то плохо приставка читается. Ладно, завтра на ноуте попробую ее нормально увидеть, а дальше буду пробовать рутануть . Споки.
Сообщение отредактировал sahara100 — 02.04.20, 01:31
Источник
Ошибки при прошивки Samsung телефонов в ODIN
вкл. 05 Октябрь 2016 . Опубликовано в Android — Общее
Ошибки при прошивки Samsung телефонов в ODIN. И так вы созрели до момента, что необходимо прошить свой Samsung. Скачали программу Odin, прочитали статью как прошить свой Android, нашли прошивку, но в момент ее установки все время выбивает ошибки? Как это все исправить и понять что происходит? Все ответы в данной статье!
Типичные ошибки при прошивки Samsung в ODIN
Ошибка подключения устройства
Вариант 1
Вариант 2
Решение:
- Убедиться что устройство переведено в специальный режим обновления Downloading, если это не так то перевести;
- Убедиться в целостности используемого USB-шнура (при необходимости заменить), если кабель не оригинальный заменить на оригинальный. Кабель вставить в задний порт USB 2.0 системного блока компьютера.
Samsung «не виден» в Odin
В Odin не отображается ID и COM подключенного смартфона или планшета Samsung
Решение:
1. Убедиться что устройство переведено в специальный режим обновления Downloading, если это не так то перевести;
27820823767eb149d68fcb23575e2fa7
2. Убедиться в целостности используемого USB-шнура (при необходимости заменить), если кабель не оригинальный заменить на оригинальный. Кабель вставить в задний порт USB 2.0 системного блока компьютера;
3. Скачать другую версию Odin ;
4. Запустить Odin от имени администратора;
5. Перезагрузить компьютер;
6. Удалить программу Kies и драйверы Samsung , перезагрузить компьютер и снова их установить;
7. Временно отключить антивирусник;
8. Если на компьютере установлена еще одна ОС Windows, то попробовать произвести прошивку с нее или прошить на другом ПК;
9. Произвести прошивку на другом компьютере;
10. Убедиться что ваш Samsung не является китайской поделкой, если это не так то повторить пункты 1-9.
Процесс прошивки остановлен на процессе инициализации (проверка подключения)
Если при прошивке Samsung в программе ODIN появиться ошибка:
Вариант 1
Вариант 2
Решение: Необходимо подключить устройство в другой USB порт, либо попробовать прошить Samsung на другом компьютере.
Файл Прошивки битый: MD5 hash value is invalid
Если Odin не дает прошить Android и выдает подобную ошибку:
Это означает что, вы скачали битый файл (недокачанный) или файл не верно подписан.
Решение: Стоит убедиться действительно ли файл прошивки скачанный полностью, если нет, то перекачать. Если файл скачан полностью, удалить с файла расширение .md5
Ошибки при прошивке разделов system.img, boot.img, recovery.img, sboot.bin, cache.img и других разделов
и другие похожие варианты, но с разными разделами.
Может возникнуть из-за того, что вы пытаетесь прошить либо битый файл прошивки или от другого устройства Samsung ( у вас модель i9100, а прошиваете от i9300). Также это может быть следствие попытки понизить версию ОС Android.
Решение:
- Скачать прошивку с альтернативного источника, если присутствует какое либо описание к файлу, то прочитать;
- Убедиться что прошивка предназначена для вашего устройства Samsung;
- В случае необходимости понижения версии ОС Android, пересобрать прошивку удалив файл sboot.bin;
- В случае перехода с кастомной прошивки на официальную, в начале выполнить сброс (wipe data и wipe system).
Ошибки связанные с повреждением разделов памяти Samsung
Вариант 1
Вариант 2
Вариант 3
Данные проблемы могут возникнуть в следствие повреждения разметки секторов внутренних разделов флеш-памяти устройства, попытки прошить чужой или модифицированный PIT файл, либо поврежден загрузчик
Решение:
- Попытаться найти 4-х файловую сервисную прошивку в интернете, а также PIT файл для вашего устройства и произвести прошивку в Odin;
- В случае не удачной попытки обратиться в СЦ.
Ошибки с отсутствием возможности доступа к записи разделов
Изменить несколько параметров в настройках:
1. Включить « Отладку по USB » и там в же настройках включить «Разблокировка OEM»;
2. Отключить «Удаленное управление» Samsung;
Samsung не запускается
Если у вас на экране похожее соображение, то это означает что предыдущая прошивка была прервана:
Решение:
- Найдите прошивку Samsung для своего устройства, скачайте ее, после чего установите с помощью Odin, после чего попробуйте снова загрузить девайс (если не сработает переходим ко второму пункту);
- Выполните сброс данных (wipe data/factory reset), после чего попробуйте снова загрузить девайс.
Источник
Android Verified Boot (AVB)
Contents
What is it
AVB is implementation of verified boot process, current version (since Android 8 Oreo) is called AVB 2.0. Verified boot is a process of assuring the end user of the integrity of the software running on a device. It typically starts with a read-only portion of the device firmware which loads code and executes it only after cryptographically verifying that the code is authentic. It also helps in implementing rollback protection.
Implementation details
It is implemented inside libavb — simple C library, that can be used both inside userspace programs (Android’s avbctl?) and by kernel space (bootloader). Heart of the system is VBMeta struct, which contains both checksums of contents of several important partitions, and the public key used to cryptographically sign them. Several important partitions include boot , recovery , dtbo , vendor and system . Public key is meant to be verified by bootloader to the one that is embedded inside it, to be trusted.
The vbmeta struct is described in libavb/avb_vbmeta_image.h. It contains header, auth data (reference to public key) and references to descriptors for several paritions. Read the comment above its declaration for more info.
Verified boot process
When device is locked, bootloader loads vbmeta struct from vbmeta partition. And then it calls avb_slot_verify() for each partition mentioned inside vbmeta struct. If some partition fails this check, then bootloader can know that system files were modified. From the result of this test bootloader sets boot state:
- YELLOW: Warning screen for LOCKED devices with custom root of trust set
- ORANGE: Warning screen for UNLOCKED devices
- RED (eio): Warning screen for dm-verity corruption
- RED (no os found): No valid OS found
And then it can display warnings on the screen, and reflect boot state in kernel command line, like for example androidboot.verifiedbootstate=orange .
For unlocked device bootloader skips the verification for boot partition, but can still verify others. See relevant LK aboot code.
Example bootloader debug output regarding verified boot process with original boot.img , unlocked device:
Example bootloader debug output regarding verified boot process with custom boot.img , unlocked device:
avbtool is a python script that can be used to view, create and edit images for AVB process.
Use avbtool —help to get list of commands, and avbtool —help to view help on specific command.
Examining contents of stock images
avbtool info_image command can be used to query headers of vbmeta struct, or for partition images it will show contents of vbmeta footer signature. Example usage:
Signing & cheksumming the partitions
For small partition images (boot, dtbo, recovery) you can add checksum/signature with: avbtool add_hash_footer .
For larger partitions (vendor, system) you should use avbtool add_hashtree_footer . Arguments are the same. Example:
PARTITION_NAME will be written into vbmeta struct later and used by bootloader during verification process.
PARTITION_SIZE should be equal to partition size in bytes. Image file will be padded to this size and vbmeta footer will be addded at the end of it.
vbmeta.img is an image file that is intended to be flashed into vbmeta partition. It is used by bootloader as source for checksums in verification process.
First you should checksum/sign all other partition images that are part of your AVB process (for example, boot, system, etc)! See example just above.
avbtool make_vbmeta_image Is the command that you will use in this case:
This command will create my_vbmeta.img file, at least 4096 bytes in size, that will contain hash/hashtree descriptors from all the partition images specified in —include_descriptors_from_image parameters.
Disabling verified boot
To disable verified boot you should create an empty vbmeta.img, which does not contain any hash/hashtree desriptors and specified a special flag in vbmeta header. The command for it should look like this:
Example bootloader output when booting with vbmeta_disabled.img flashed to vbmeta partition:
Note VERIFICATION_DISABLED bit is set . Apparently bootloader can detect that verification is disabled, but its reaction to this mode may be device specific?
Источник
Как исправить Самсунг завис в режиме загрузки(download/Odin)?
Итак, если вы являетесь пользователем Android, и особенно если вы используете устройство Samsung, эта проблема характерна для вас и многих других пользователей. После такой проблемы как телефон Android завис в режиме download/Odin, на пользователи не могут перезапустить свои устройства, а их телефон не может вернуться в нормальный режим. Поэтому рекомендуется внимательно относиться к режиму Odin и восстановления, если вы новичок в нем. И если вы столкнулись с такой проблемой, то вам не надо беспокоиться. Раньше мы уже рассказали, как использовать режим восстановления . А это связано с тем, что ниже вы найдете несколько лучших способов помочь вам выйти из режима Samsung, застрявшего в режиме Odin.
Часть 1: Что такое режим загрузки(download/Odin)?
Odin Mode он же Download Mode предназначен для пользователей Samsung. С помощью этого режима пользователи могут легко прошить все, что захотят, на внутреннюю флеш-память через USB-кабель, подключив свое устройство к компьютеру. Можно легко войти в режим Odin и выйти, но есть вероятность, что в процессе что-то пойдет не так. Может случиться так, что режим Odin функционирует со сбоем и из-за этого телефон зависает. Если после выхода из режима вы нажмете кнопку «Отмена» и по-прежнему не сможете выйти из режима Odin, то это означает что ваш телефон завис в режиме загрузки.
Какие могут быть проблемы, связанные с режимом Odin:
Часто, когда вы сталкиваетесь с какой-либо проблемой на вашем устройстве Android, вы не можете получить к нему доступ, и это может вызвать у вас много проблем. То же самое касается пользователей Samsung, когда устройство зависает в режиме Odin/download. Вы не можете использовать свое устройство, и, что более важно, данные, которые хранятся на вашем устройстве, находятся в опасности, то его под угрозой удаления с устройства. По каким признакам можно узнать, зависло ли ваше устройство в режиме Odin/download?
- Ваше устройство Samsung зависло на логотипе;
- Вы не можете получить доступ к устройству;
- Устройство Samsung постоянно перезагружается само по себе.
Самые простые методы, которые вы можете сделать при возникновении проблемы – самсунг завис в режиме download/Odin – это выключение и принудительная перезагрузка.
Чтобы выключить устройство, нажмите одновременно кнопки уменьшения громкости и питания. Проверьте решило ли это проблему. Если нет, то принудительно перезагрузите устройство, нажав одновременно кнопки домой, включение, кнопки увеличения и уменьшения громкости. В случае, если эти способы не помогли вам исправить ситуацию – телефон Android завис в режиме download/Odin, то попробуйте извлечь аккумулятор из устройства и заново его вставить. Убедитесь в том, функционирует ли устройство, снова включив его.
Перечисленные способы являются самыми простыми, но не всегда они помогают исправить проблему, связанную с зависанием телефона самсунг в режиме download/Odin. Ознакомьтесь с нижеследующими способами.
Часть 2: Как исправить Самсунг завис в режиме download/Odin?
Способ 1: 1-клик выйти из режима загрузки(download/Odin)(совершенно бесплатно)
Этот способ даст возможность выйти из режима загрузки быстро и легко всего за 1-клик с помощью программы Tenorshare ReiBoot for Android. Tenorshare ReiBoot for Android – программное обеспечение для андроидов, которое исправляет многие системные ошибки за пару кликов быстро и эффективно. Понятный интерфейс, легкость в использовании и результативность.
Следуйте нашей пошаговой инструкции, и вы избавитесь от проблемы телефон Android завис в режиме download/Odin.
- Шаг 1. Скачайте и установите программуTenorshare ReiBoot for Android на свой ПК;
Шаг 3. На главном экране интерфейса вы сможете увидеть функцию «Выйти из режима загрузки», вам необходимо на нее нажать.
Шаг 4. Ваше устройство выйдет из режима загрузки всего за пару кликов.
Способ 2: Исправить завис в режиме загрузки с помощью Tenorshare ReiBoot for Android
Если ваш телефон завис в режиме загрузки, то Tenorshare ReiBoot for Android поможет вам справиться с этой задачей. Tenorshare ReiBoot for Android помогает при многих системных проблемах: телефон Samsung постоянно перезагружается, ошибка обновления Android, телефон быстро разряжается, завис на логотипе, не исчезает черный экран и многие другие ошибки.
Выполните пошаговые действия и ваше устройство вернется в нормальный режим:
- Скачайте и установите Tenorshare ReiBoot for Android на свой ПК;
Запустите программу ReiBoot вашем ПК и нажмите «Исправление системы Android»;
Потом нажмите “Исправить сейчас”;
После этого появляются некоторые информации, которые вам надо выполнить.Потом нажмите “Далее”;
Далее загрузите пакет прошивки;
После выполнения загрузки вам надо выбрать опцию “Исправить сейчас”.
Потом через несколько минут успешно выполнить исправление, и ваша проблема андроида решена.
Заключение
В этой статье мы рассказали о том, что такое режим download/Odin, как из его выйти и какие проблемы возникают в системе при появлении такой ошибки. Если самсунг завис в режиме download/Odin, то не стоит беспокоиться. Tenorshare ReiBoot for Android – программное обеспечение для андроидов, которое поможет вам бесплатно ввести и выйти из режима скачивания Android (odin). А также избавит от более 50-ти системных ошибок: зависание на логотипе, черный экран и т.д. Скачайте программу на свой ПК и восстановите работу устройства прямо сейчас всего за 1 клик. Ваш телефон начнет работать в нормальном режиме.
Обновление 2021-12-30 / Обновление для Android Проблемы и Решения
Источник
Итак, если вы являетесь пользователем Android, и особенно если вы используете устройство Samsung, эта проблема характерна для вас и многих других пользователей.
После такой проблемы как телефон Android завис в режиме download/Odin, на пользователи не могут перезапустить свои устройства, а их телефон не может вернуться в нормальный режим. Поэтому рекомендуется внимательно относиться к режиму Odin и восстановления, если вы новичок в нем.
И если вы столкнулись с такой проблемой, то вам не надо беспокоиться. Раньше мы уже рассказали, как использовать режим восстановления . А это связано с тем, что ниже вы найдете несколько лучших способов помочь вам выйти из режима Samsung, застрявшего в режиме Odin.
- Часть 1: Что такое режим загрузки(download/Odin)?
- Часть 2: Как исправить Самсунг завис в режиме download/Odin?
Часть 1: Что такое режим загрузки(download/Odin)?
Odin Mode он же Download Mode предназначен для пользователей Samsung. С помощью этого режима пользователи могут легко прошить все, что захотят, на внутреннюю флеш-память через USB-кабель, подключив свое устройство к компьютеру. Можно легко войти в режим Odin и выйти, но есть вероятность, что в процессе что-то пойдет не так. Может случиться так, что режим Odin функционирует со сбоем и из-за этого телефон зависает. Если после выхода из режима вы нажмете кнопку «Отмена» и по-прежнему не сможете выйти из режима Odin, то это означает что ваш телефон завис в режиме загрузки.
Какие могут быть проблемы, связанные с режимом Odin:
Часто, когда вы сталкиваетесь с какой-либо проблемой на вашем устройстве Android, вы не можете получить к нему доступ, и это может вызвать у вас много проблем. То же самое касается пользователей Samsung, когда устройство зависает в режиме Odin/download.
Вы не можете использовать свое устройство, и, что более важно, данные, которые хранятся на вашем устройстве, находятся в опасности, то его под угрозой удаления с устройства. По каким признакам можно узнать, зависло ли ваше устройство в режиме Odin/download?
- Ваше устройство Samsung зависло на логотипе;
- Вы не можете получить доступ к устройству;
- Устройство Samsung постоянно перезагружается само по себе.
Самые простые методы, которые вы можете сделать при возникновении проблемы – самсунг завис в режиме download/Odin – это выключение и принудительная перезагрузка.
Чтобы выключить устройство, нажмите одновременно кнопки уменьшения громкости и питания. Проверьте решило ли это проблему. Если нет, то принудительно перезагрузите устройство, нажав одновременно кнопки домой, включение, кнопки увеличения и уменьшения громкости. В случае, если эти способы не помогли вам исправить ситуацию – телефон Android завис в режиме download/Odin, то попробуйте извлечь аккумулятор из устройства и заново его вставить. Убедитесь в том, функционирует ли устройство, снова включив его.
Перечисленные способы являются самыми простыми, но не всегда они помогают исправить проблему, связанную с зависанием телефона самсунг в режиме download/Odin. Ознакомьтесь с нижеследующими способами.
Часть 2: Как исправить Самсунг завис в режиме download/Odin?
- Способ 1. 1-клик выйти из режима загрузки(download/Odin)(совершенно бесплатно)
- Способ 2. Исправить Самсунг завис в режиме загрвзки с помощью Tenorshare ReiBoot for Android
Способ 1: 1-клик выйти из режима загрузки(download/Odin)(совершенно бесплатно)
Этот способ даст возможность выйти из режима загрузки быстро и легко всего за 1-клик с помощью программы Tenorshare ReiBoot for Android. Tenorshare ReiBoot for Android – программное обеспечение для андроидов, которое исправляет многие системные ошибки за пару кликов быстро и эффективно. Понятный интерфейс, легкость в использовании и результативность.
Следуйте нашей пошаговой инструкции, и вы избавитесь от проблемы телефон Android завис в режиме download/Odin.
- Шаг 1. Скачайте и установите программуTenorshare ReiBoot for Android на свой ПК;
- Шаг 2. Подсоедините ваш смартфон или планшет к ПК с помощью USB-кабеля;
-
Шаг 3. На главном экране интерфейса вы сможете увидеть функцию «Выйти из режима загрузки», вам необходимо на нее нажать.
-
Шаг 4. Ваше устройство выйдет из режима загрузки всего за пару кликов.
Способ 2: Исправить завис в режиме загрузки с помощью Tenorshare ReiBoot for Android
Если ваш телефон завис в режиме загрузки, то Tenorshare ReiBoot for Android поможет вам справиться с этой задачей. Tenorshare ReiBoot for Android помогает при многих системных проблемах: телефон Samsung постоянно перезагружается, ошибка обновления Android, телефон быстро разряжается, завис на логотипе, не исчезает черный экран и многие другие ошибки.
Выполните пошаговые действия и ваше устройство вернется в нормальный режим:
- Скачайте и установите Tenorshare ReiBoot for Android на свой ПК;
- Подключите ваше устройство к ПК с помощью USB-кабеля;
-
Запустите программу ReiBoot вашем ПК и нажмите «Исправление системы Android»;
-
Потом нажмите “Исправить сейчас”;
-
После этого появляются некоторые информации, которые вам надо выполнить.Потом нажмите “Далее”;
-
Далее загрузите пакет прошивки;
-
После выполнения загрузки вам надо выбрать опцию “Исправить сейчас”.
Потом через несколько минут успешно выполнить исправление, и ваша проблема андроида решена.
Заключение
В этой статье мы рассказали о том, что такое режим download/Odin, как из его выйти и какие проблемы возникают в системе при появлении такой ошибки. Если самсунг завис в режиме download/Odin, то не стоит беспокоиться. Tenorshare ReiBoot for Android – программное обеспечение для андроидов, которое поможет вам бесплатно ввести и выйти из режима скачивания Android (odin). А также избавит от более 50-ти системных ошибок: зависание на логотипе, черный экран и т.д. Скачайте программу на свой ПК и восстановите работу устройства прямо сейчас всего за 1 клик. Ваш телефон начнет работать в нормальном режиме.
Присоединяйтесь к обсуждению и поделитесь своим голосом здесь
Contents
- 1 What is it
- 2 Implementation details
- 3 Verified boot process
- 4 Using avbtool
- 4.1 Examining contents of stock images
- 4.2 Signing & cheksumming the partitions
- 4.3 Creating vbmeta image
- 4.4 Disabling verified boot
- 5 Links
What is it
AVB is implementation of verified boot process, current version (since Android 8 Oreo) is called AVB 2.0. Verified boot is a process of assuring the end user of the integrity of the software running on a device. It typically starts with a read-only portion of the device firmware which loads code and executes it only after cryptographically verifying that the code is authentic. It also helps in implementing rollback protection.
Implementation details
It is implemented inside libavb — simple C library, that can be used both inside userspace programs (Android’s avbctl?) and by kernel space (bootloader). Heart of the system is VBMeta struct, which contains both checksums of contents of several important partitions, and the public key used to cryptographically sign them. Several important partitions include boot
, recovery
, dtbo
, vendor
and system
. Public key is meant to be verified by bootloader to the one that is embedded inside it, to be trusted.
The vbmeta struct is described in libavb/avb_vbmeta_image.h. It contains header, auth data (reference to public key) and references to descriptors for several paritions. Read the comment above its declaration for more info.
Verified boot process
When device is locked, bootloader loads vbmeta struct from vbmeta partition. And then it calls avb_slot_verify()
for each partition mentioned inside vbmeta struct. If some partition fails this check, then bootloader can know that system files were modified. From the result of this test bootloader sets boot state:
- YELLOW: Warning screen for LOCKED devices with custom root of trust set
- ORANGE: Warning screen for UNLOCKED devices
- RED (eio): Warning screen for dm-verity corruption
- RED (no os found): No valid OS found
And then it can display warnings on the screen, and reflect boot state in kernel command line, like for example androidboot.verifiedbootstate=orange
.
For unlocked device bootloader skips the verification for boot partition, but can still verify others.
See relevant LK aboot code.
Example bootloader debug output regarding verified boot process with original boot.img
, unlocked device:
Booting Into Mission Mode avb_slot_verify.c:432: DEBUG: Loading vbmeta struct from partition 'vbmeta'. Partition found: vbmeta avb_slot_verify.c:186: DEBUG: dtbo: Loading entire partition. Partition found: dtbo avb_slot_verify.c:186: DEBUG: boot: Loading entire partition. Partition found: boot Device is unlocked, Skipping boot verification State: Unlocked, AvbSlotVerify returned OK, continue boot VB2: Authenticate complete! boot state is: orange VB2: boot state: orange(1)
Example bootloader debug output regarding verified boot process with custom boot.img
, unlocked device:
Booting Into Mission Mode avb_slot_verify.c:432: DEBUG: Loading vbmeta struct from partition 'vbmeta'. Partition found: vbmeta avb_slot_verify.c:186: DEBUG: dtbo: Loading entire partition. Partition found: dtbo avb_slot_verify.c:186: DEBUG: boot: Loading entire partition. Partition found: boot avb_slot_verify.c:242: ERROR: boot: Hash of data does not match digest in descriptor. State: Unlocked, AvbSlotVerify returned ERROR_VERIFICATION, continue boot VB2: Authenticate complete! boot state is: orange VB2: boot state: orange(1) Display menu is not enabled! Device is unlocked, Skipping boot verification VB2: BootState = 1
Using avbtool
avbtool is a python script that can be used to view, create and edit images for AVB process.
Use avbtool --help
to get list of commands, and avbtool <command> --help
to view help on specific command.
Examining contents of stock images
avbtool info_image
command can be used to query headers of vbmeta struct, or for partition images it will show contents of vbmeta footer signature. Example usage:
avbtool info_image --image /path/to/vbmeta.img avbtool info_image --image /path/to/boot.img
Signing & cheksumming the partitions
For small partition images (boot, dtbo, recovery) you can add checksum/signature with: avbtool add_hash_footer
.
For larger partitions (vendor, system) you should use avbtool add_hashtree_footer
. Arguments are the same. Example:
avbtool add_hash_footer --partition_name PARTITION_NAME --partition_size PARTITION_SIZE --image IMAGE [--key /path/to/key_used_for_signing_or_pub_key] avbtool add_hash_footer --partition_name boot --partition_size 67108864 --image boot.img-postmarketos-qcom-sdm660
PARTITION_NAME will be written into vbmeta struct later and used by bootloader during verification process.
PARTITION_SIZE should be equal to partition size in bytes. Image file will be padded to this size and vbmeta footer will be addded at the end of it.
Creating vbmeta image
vbmeta.img is an image file that is intended to be flashed into vbmeta partition. It is used by bootloader as source for checksums in verification process.
First you should checksum/sign all other partition images that are part of your AVB process (for example, boot, system, etc)! See example just above.
avbtool make_vbmeta_image
Is the command that you will use in this case:
avbtool make_vbmeta_image --output my_vbmeta.img --padding_size 4096 --include_descriptors_from_image ./boot.img-postmarketos-qcom-sdm660 --include_descriptors_from_image ./path/to/some_another_image.img ... [--key /path/to/key_used_for_signing_or_pub_key]
This command will create my_vbmeta.img
file, at least 4096 bytes in size, that will contain hash/hashtree descriptors from all the partition images specified in --include_descriptors_from_image
parameters.
Disabling verified boot
To disable verified boot you should create an empty vbmeta.img, which does not contain any hash/hashtree desriptors and specified a special flag in vbmeta header. The command for it should look like this:
avbtool make_vbmeta_image --flags 2 --padding_size 4096 --output vbmeta_disabled.img
Mysterious flag 2 is AVB_VBMETA_IMAGE_FLAGS_VERIFICATION_DISABLED, which is documented as:
AVB_VBMETA_IMAGE_FLAGS_VERIFICATION_DISABLED: If this flag is set, verification will be disabled and descriptors will not be parsed.
Example bootloader output when booting with vbmeta_disabled.img flashed to vbmeta partition:
Booting Into Mission Mode avb_slot_verify.c:432: DEBUG: Loading vbmeta struct from partition 'vbmeta'. Partition found: vbmeta avb_slot_verify.c:544: ERROR: vbmeta: Error verifying vbmeta image: OK_NOT_SIGNED avb_slot_verify.c:704: DEBUG: vbmeta: VERIFICATION_DISABLED bit is set. avb_slot_verify.c:317: DEBUG: boot: Loading entire partition. Partition found: boot avb_slot_verify.c:317: DEBUG: dtbo: Loading entire partition. Partition found: dtbo State: Unlocked, AvbSlotVerify returned ERROR_VERIFICATION, continue boot VB2: Authenticate complete! boot state is: orange VB2: boot state: orange(1)
Note VERIFICATION_DISABLED bit is set
. Apparently bootloader can detect that verification is disabled, but its reaction to this mode may be device specific?
Links
- Google official documentation: platform/external/avb/README.md
- Google official documentation: Verified boot flow (boot states)
- Commit in LK introducing verified boot and boot states
- MR that sched some light on disabling verified boot
Ошибки при прошивки Samsung телефонов в ODIN. И так вы созрели до момента, что необходимо прошить свой Samsung. Скачали программу Odin, прочитали статью как прошить свой Android, нашли прошивку, но в момент ее установки все время выбивает ошибки? Как это все исправить и понять что происходит? Все ответы в данной статье!
1. После каждой выявленной ошибки, отключите смартфон или планшет от компьютера, выключите его и снова переведите в режим прошивки.
2. Перезапустите программу для прошивки Odin и подключите смартфон или планшет к компьютеру! Можете снова пробовать шить прошивку!
3. Самое главное! Только новые драйвера и только ОРИГИНАЛЬНЫЕ, ЦЕЛЫЕ и ДОРОГИЕ КАБЕЛИ (50% от всех ошибок являются кабели)!
Типичные ошибки при прошивки Samsung в ODIN
Ошибка подключения устройства
Вариант 1
<ID:0/005> File analysis..
<ID:0/005> SetupConnection..
<OSM> All threads completed. (succeed 0 / failed 1)
Вариант 2
<ID:0/005> File analysis..
<ID:0/005> SetupConnection..
<ID:0/005> Complete(Write) operation failed.
<OSM> All threads completed. (succeed 0 / failed 1)
Решение:
- Убедиться что устройство переведено в специальный режим обновления Downloading, если это не так то перевести;
- Убедиться в целостности используемого USB-шнура (при необходимости заменить), если кабель не оригинальный заменить на оригинальный. Кабель вставить в задний порт USB 2.0 системного блока компьютера.
Samsung «не виден» в Odin
В Odin не отображается ID и COM подключенного смартфона или планшета Samsung
Решение:
1. Убедиться что устройство переведено в специальный режим обновления Downloading, если это не так то перевести;
{rutube}27820823767eb149d68fcb23575e2fa7{/rutube}
2. Убедиться в целостности используемого USB-шнура (при необходимости заменить), если кабель не оригинальный заменить на оригинальный. Кабель вставить в задний порт USB 2.0 системного блока компьютера;
3. Скачать другую версию Odin;
4. Запустить Odin от имени администратора;
5. Перезагрузить компьютер;
6. Удалить программу Kies и драйверы Samsung, перезагрузить компьютер и снова их установить;
7. Временно отключить антивирусник;
8. Если на компьютере установлена еще одна ОС Windows, то попробовать произвести прошивку с нее или прошить на другом ПК;
9. Произвести прошивку на другом компьютере;
10. Убедиться что ваш Samsung не является китайской поделкой, если это не так то повторить пункты 1-9.
Процесс прошивки остановлен на процессе инициализации (проверка подключения)
Если при прошивке Samsung в программе ODIN появиться ошибка:
Вариант 1
<ID:0/004> SetupConnection..
<ID:0/004> Can’t open the serial(COM) port.
<OSM> All threads completed. (succeed 0 / failed 1)
Вариант 2
<ID:0/004> Odin v.3 engine (ID:4)..
<ID:0/004> File analysis..
<ID:0/004> SetupConnection..
<ID:0/004> Initialzation..
Решение: Необходимо подключить устройство в другой USB порт, либо попробовать прошить Samsung на другом компьютере.
Файл Прошивки битый: MD5 hash value is invalid
Если Odin не дает прошить Android и выдает подобную ошибку:
Added!!
Enter CS for MD5..
Check MD5.. Do not unplug the cable..
Please wait..
MD5 hash value is invalid
xxxxxxxxxxx.tar.md5 is invalid.
End…
Это означает что, вы скачали битый файл (недокачанный) или файл не верно подписан.
Решение: Стоит убедиться действительно ли файл прошивки скачанный полностью, если нет, то перекачать. Если файл скачан полностью, удалить с файла расширение .md5
Ошибки при прошивке разделов system.img, boot.img, recovery.img, sboot.bin, cache.img и других разделов
<ID:0/017> system.img
<ID:0/017> FAIL!
или
<ID:0/017> recovery.img
<ID:0/017> FAIL!
или
<ID:0/003> sboot.bin
<ID:0/003> NAND Write Start!!
<ID:0/003> FAIL!
или
FAIL!
Re-Partition operation failed.
All threads completed. (succeed 0 / failed 1)
и другие похожие варианты, но с разными разделами.
Может возникнуть из-за того, что вы пытаетесь прошить либо битый файл прошивки или от другого устройства Samsung ( у вас модель i9100, а прошиваете от i9300). Также это может быть следствие попытки понизить версию ОС Android.
Решение:
- Скачать прошивку с альтернативного источника, если присутствует какое либо описание к файлу, то прочитать;
- Убедиться что прошивка предназначена для вашего устройства Samsung;
- В случае необходимости понижения версии ОС Android, пересобрать прошивку удалив файл sboot.bin;
- В случае перехода с кастомной прошивки на официальную, в начале выполнить сброс (wipe data и wipe system).
Ошибки связанные с повреждением разделов памяти Samsung
Вариант 1
<ID:0/004> Get PIT for mapping..
<ID:0/004> Complete(Write) operation failed.
<OSM> All threads completed. (succeed 0 / failed 1)
Вариант 2
<ID:0/004> FAIL!
<ID:0/004>
<ID:0/004> Re-Partition operation failed.
<OSM> All threads completed. (succeed 0 / failed 1)
Вариант 3
<ID:0/004> Get PIT for mapping..
<ID:0/004> Complete(Write) operation failed.
<OSM> All threads completed. (succeed 0 / failed 1)
Данные проблемы могут возникнуть в следствие повреждения разметки секторов внутренних разделов флеш-памяти устройства, попытки прошить чужой или модифицированный PIT файл, либо поврежден загрузчик
Решение:
- Попытаться найти 4-х файловую сервисную прошивку в интернете, а также PIT файл для вашего устройства и произвести прошивку в Odin;
- В случае не удачной попытки обратиться в СЦ.
Ошибки с отсутствием возможности доступа к записи разделов
FAP LOCK:ON
Custom Binary(RECOVERY) Blocked By FAP Lock
Изменить несколько параметров в настройках:
1. Включить «Отладку по USB» и там в же настройках включить «Разблокировка OEM»;
2. Отключить «Удаленное управление» Samsung;
Samsung не запускается
Если у вас на экране похожее соображение, то это означает что предыдущая прошивка была прервана:
Решение:
- Найдите прошивку Samsung для своего устройства, скачайте ее, после чего установите с помощью Odin, после чего попробуйте снова загрузить девайс (если не сработает переходим ко второму пункту);
- Выполните сброс данных (wipe data/factory reset), после чего попробуйте снова загрузить девайс.
Что такое АВБ
Проверка запуска представляет собой целый набор процессов для обеспечения целостности пользовательского оборудования, на котором запущено программное обеспечение. Обычно он начинается с доступной только для чтения части микропрограммы устройства и использует шифрование для проверки надежности кода и отсутствия известных недостатков безопасности. AVB — это реализация проверки запуска.
ВБМета структура
Основная структура данных, используемая в AVB:VBMeta
Структура. Эта структура данных содержит много дескрипторов (и других метаданных), и все эти данные криптографически подписаны. Дескрипторы используются для значений хеша изображения, метаданных дерева хеша изображения и так называемых разделов ссылок. Вот простой пример:
среди нихvbmeta
Раздел хранит значение хеша загрузочного раздела в дескрипторе хеша. дляsystem
с участиемvender
Разделение, хеш-дерево следует непосредственно за данными соответствующей файловой системы раздела, а раздел vbmeta сохраняет только корневой хеш, соль и смещение хеш-дерева в дескрипторе хеш-дерева. , так какvbmeta
В разделеVBMeta
Структура криптографически подписана, поэтому загрузчик может проверить подпись и проверить, подписана ли онаkey0
Создано владельцем (например, через встроенный открытый ключ key0) для доверия хранилищу в разделеboot
, system
,vendor
Хэш-значение раздела.
Дескриптор раздела ссылки используется для делегирования полномочий и содержит имя раздела, которому делегированы полномочия, и доверенный открытый ключ, подписанный в этом конкретном разделе. Например, рассмотрим следующие параметры:
В этой настройкеxyz
Раздел содержит хеш-дерево для проверки целостности. После хеш-дереваVBMeta
Структура, которая содержит дескриптор хеш-дерева (корневой хэш, соль и смещение) с метаданными хеш-дерева.key1
подпись. Наконец, в конце раздела естьVBMeta
Нижний колонтитул структуры смещен.
Этот параметр позволяет загрузчику использовать дескриптор раздела ссылок, чтобы найти нижний колонтитул в конце раздела (используя имя в дескрипторе раздела ссылок), что помогает найтиVBMeta
Структурируйте и убедитесь, что этоkey1
Подпись (используя хранимый в дескрипторе раздела ссылкиkey1_pub
). Важно то, что нижний колонтитул со смещением может быть обновленxyz
Раздел без каких-либо изменений в разделе vbmeta (Примечание переводчика: используйтеkey1
Проверка открытого ключа обновленаxyz
Подпись раздела достаточна).
VBMeta
Структура очень гибкая, дескриптор хеш-кода и дескриптор хеш-дерева любого раздела могут быть сохранены вvbmeta
Разделы или другие разделы, используемые для проверки целостности (с помощью дескрипторов разделов ссылок) и других произвольных разделов. Это главным образом для рассмотрения широкого спектра организационных доверительных отношений.
Укажите раздел ссылки наVBMeta
Раздел в начале структуры (какvbmeta
Тот же раздел), раздел не может использовать нижний колонтитул. Дескрипторы хеш-дерева и хеш-дерева разделов, принадлежащих всей организации, хранятся в выделенном разделе (например,vbmeta_google
Варианты использования в) очень полезны. В этом примере системный дескриптор дерева хешей находится по адресуvbmeta_google
Раздел, который означает, что загрузчик не нуждается в доступеsystem
Раздел, который полезен дляsystem
Разделы очень полезны в качестве примеров управления логическими разделами (например,LVMИли похожая технология).
Защита от отката
AVB также включает в себя защиту от отката для предотвращения известных уязвимостей. каждыйVBMeta
Структура имеет индекс отката (rollback index),Следующим образом:
Эти цифры используютrollback_index[n]
Сказал, что это число будет увеличиваться после того, как любое изображение найдет и исправит уязвимости безопасности. Кроме того, в устройстве будет храниться последний индекс отката, обнаруженный в защищенном от несанкционированного доступа хранилище:
Они называютсяstored_rollback_index[n]
。
На устройствах, использующих защиту от отката, только когда все n удовлетвореныrollback_index[n] >= stored_rollback_index[n]
Изображение может быть загружено только при этом условии, и устройство будет увеличиваться со временемstored_rollback_index[n]
, Как это сделать, будет описано в разделе «Обновление сохраненного индекса отката».
Поддержка разделов A / B
AVB предназначен для включения одновременно с разделом A / B. Он требует, чтобы суффикс A / B не использовался ни в одном имени раздела, хранящемся в дескрипторе. Это пример с двумя слотами:
Обратите внимание, что индекс отката разных разделов различен — для слота A индекс отката[42,101]
Для слота B они[43,103]
。
В версии 1.1 или выше, avbtooladd_hash_footer
с участиемadd_hashtree_footer
Операция добавляет необязательные параметры--do_not_use_ab
, Таким образом, те разделы, которые не имеют разделов A / B и не должны иметь префикса, могут использовать AVB. Это соответствуетAVB_HASH[TREE]_DESCRIPTOR_FLAGS_DO_NOT_USE_AB
Подписать.
VBMeta резюме
VBMeta abstract — это резюме всех структур VBMeta, включая корневые структуры (например, вvbmeta
Раздел) и свяжите все структуры VBMeta в разделе. можешь использоватьavbtool calculate_vbmeta_digest
Эта сводка рассчитывается во время сборки и может также использоваться во время выполненияavb_slot_verify_data_calculate_vbmeta_digest()
Функция вычисляет эту сводку. В командной строке ядра он установлен наandroidboot.vbmeta.digest
, Для получения дополнительной информации см.avb_slot_verify()
Документ.
Это резюме можно сравнить с загруженным пользовательским пространством операционной системы.libavb
Используется вместе для проверки загруженногоvbmeta
Подлинность структуры. Эта опция полезна, если корень доверия или сохраненный индекс отката доступен только при запуске в загрузчике.
Кроме того, еслиДоверенные данные на уровне оборудованияЕсли он содержит сводку VBMeta, проверяющая сторона может извлечь сводку и сравнить ее со сводным списком известных хороших операционных систем, а при обнаружении она может предоставить дополнительные гарантии для устройства, на котором выполняется приложение.
Инструменты и библиотеки
Основное содержание этого раздела — информация об инструментах и библиотеках в AVB.
avbtool и libavb
avbtool
В основном используется для генерацииvbmeta.img
, Который является объектом верхнего уровня для запуска аутентификации. Это изображение будет записано вvbmeta
Раздел (если используется раздел A / B, этоvbmeta_a
илиvbmeta_b
) И разработан так, чтобы быть как можно меньше (для внеполосных обновлений)out-of-band update)。vbmeta
Изображение подписано ключом, а изображение содержит для проверкиboot.img
,system.img
И другие данные проверки образа раздела (например, шифрование дайджеста).
vbmeta
Изображение также может содержать ссылки на другие разделы, в которых хранятся данные проверки, и указывать открытый ключ, используемый для данных проверки. Этот косвенный метод может делегировать право проверки и позволяет третьим сторонамvbmeta.img
Они содержат свои открытые ключи для управления контентом в данном разделе. Таким образом, просто обновив дескриптор раздела в vbmeta.img, вы можете легко изменить или отменить полномочия аутентификации, не изменяя другие разделы.
Сохраните подписанные данные проверки на других изображениях (например,boot.img
с участиемsystem.img
) Также используетсяavbtool
Законченный.
Помимоavbtoo
В дополнение к l, он также предоставляет библиотекуlibavb
, Библиотека выполняет всю проверку на стороне устройства, например, сначала загружаетсяvbmeta
Раздел, проверьте подпись, а затем продолжите загрузку загрузочного раздела для проверки. Эта библиотека предназначена для использования в загрузчиках и внутренних устройствах Android. Он имеет простую системную абстракцию зависимостей (см.avb_sysdeps.h
) И что должен делать загрузчик или операционная система (см.avb_ops.h
). Основная точка входа для проверкиavb_slot_verify()
。
Adroid Things (примечание переводчика: набор операционных систем для платформы Internet of Things, запущенный Google)vbmeta
Открытые ключи имеют особые требования и логику проверки.libavb_atx
Расширение предоставляется вlibavb
Реализация операций проверки открытого ключа. (Видетьavb_ops.h
среднийavb_validate_vbmeta_public_key()
)。
Файлы и каталоги
libavb/
- Реализация проверки изображения. Этот код очень переносим, его можно использовать в максимально возможном количестве контекстов, но компилятор должен поддерживать стандарт C99. Часть кода в библиотеке является внутренней реализацией алгоритма и ее следует избегать для внешнего использования. Например
avb_rsa.[ch]
с участиемavb_sha.[ch]
файл. Ожидаемые системные зависимости, предоставляемые платформой, находятся вavb_sysdeps.h
Определено в. Если платформа предоставляет стандартную операционную среду C, вы можете использоватьavb_sysdeps_posix.c
。
- Реализация проверки изображения. Этот код очень переносим, его можно использовать в максимально возможном количестве контекстов, но компилятор должен поддерживать стандарт C99. Часть кода в библиотеке является внутренней реализацией алгоритма и ее следует избегать для внешнего использования. Например
libavb_atx/
- Расширение Android Things для проверки метаданных открытого ключа.
libavb_user/
- Содержит пространство для Android
AvbOps
достичь. Используется дляboot_control.avb
с участиемavbctl
。
- Содержит пространство для Android
libavb_ab/
- Экспериментальная реализация A / B для примеров загрузчика и AVB. Примечание: этот кодDEPRECATED, Вы должны определить
AVB_AB_I_UNDERSTAND_LIBAVB_AB_IS_DEPRECATED
Чтобы использовать это. Код был удален 1 июня 2018 года.
- Экспериментальная реализация A / B для примеров загрузчика и AVB. Примечание: этот кодDEPRECATED, Вы должны определить
boot_control/
- Android
boot_control
Реализация HAL для использования экспериментальныхlibavb_ab
Загрузчик для A / B стека. Примечание. Этот код устарел и был удален 1 июня 2018 года.
- Android
contrib/
- Содержит патчи для взаимодействия с AVB в других проектах. Например,
contrib/linux/4.4
Есть патчи для ядра Linux 4.4, они сделаныgit format-patch
Сформирован.
- Содержит патчи для взаимодействия с AVB в других проектах. Например,
Android.bp
- Construct
libavb
(Для статических библиотек на устройстве), библиотеки на стороне хоста (для модульного тестирования) и инструкции по построению для модульного тестирования.
- Construct
avbtool
- Инструмент, написанный на Python для обработки изображений, связанных с проверкой загрузки.
test/
abvtool
,libavb
,libavb_ab
, с участиемlibavb_atx
Тестовый блок.
tools/avbctl/
- Содержит исходный код инструментов, которые можно использовать для управления AVB при работе в Android.
examples/uefi/
- Включить использование
libavb/
с участиемlibavb_ab/
Исходный код загрузчика на основе UEFI.
- Включить использование
examples/things/
- Содержит исходный код для проверки слота для Android Things.
README.md
- README。
docs/
- Документация.
портативность
libavb
Код используется в загрузчике устройства, которое загружает Android или другие операционные системы. Рекомендуемый метод — скопировать соответствующие файлы заголовков и файлы C, упомянутые в предыдущем разделе, в загрузчик и интегрировать их при необходимости.
libavb/
База кода будет постоянно обновляться и оптимизироваться с течением времени, и интеграция должна быть как можно более неинвазивной. Цель состоит в том, чтобы поддерживать стабильный API библиотеки, но при необходимости он также будет изменен. Что касается переносимости, библиотека была спроектирована с высокой степенью переносимости в качестве цели, подходящей для архитектур малого и большого порядка, а также для 32-разрядных и 64-разрядных архитектур. Он также может работать в нестандартной среде без стандартной библиотеки C и среды выполнения.
Если установленоAVB_ENABLE_DEBUG
Символы препроцессора, код будет содержать полезную информацию об отладке и запускать проверки. Этот символ не должен использоваться в производственных сборках. Символ препроцессора должен быть установлен только при компиляции библиотекиAVB_COMPILATION
, Код должен быть скомпилирован в отдельную библиотеку.
Использовать скомпилированныйlibavb
Приложение библиотеки может содержать толькоlibavb/libavb.h
Файл (будет включать все открытые интерфейсы), и там не должно бытьavb_compile
Набор символов препроцессора. Это необходимо для обеспечения внутренних кодов, которые могут измениться в будущем (например,avb_sha.[ch]
с участиемavb_rsa.[ch]
) Не виден код приложения.
Контроль версий и совместимость
AVB использует номер версии с тремя полями: основная версия, дополнительная версия и дополнительная версия. Это пример номера версии:
Только в случае нарушения совместимости будет затронут основной номер версии, например, поля структуры были удалены или изменены. Дополнительный номер версии запускается только при введении новой функции, такой как добавление нового алгоритма или дескриптора. Когда исправлены ошибки или внесены другие изменения, не влияющие на совместимость, номер подверсии будет изменен.
AvbVBMetaImageHeader
Структура (вavb_vbmeta_image.h
Определено в) содержит номер версии мастер-копии, необходимой для проверки соответствующей структурыlibavb
, Хранится вrequired_libavb_version_major
с участиемrequired_libavb_version_minor
Поле. Кроме того, эта структура содержит текстовое поле, содержащее версию avbtool, используемую для создания структуры, такую как «avbtool 1.4.3» или «avbtool 1.4.3 some_board Git-4589fbec».
предостерегают,AvbVBMetaImageHeader
Структура может содержать следующую информацию:
Использование avbtool
Содержимое раздела vbmeta может быть сгенерировано следующим образом:
Нижний колонтитул целостности, содержащий хэш всего раздела, можно добавить к существующему образу следующим образом:
Нижний колонтитул, используемый для проверки целостности раздела, может быть добавлен к существующему образу. Нижний колонтитул содержит дайджест корня и соль хэш-дерева раздела. Как показано ниже, хеш-дерево также добавляется к изображению.
можешь использоватьresize_image
Команда для изменения размера изображения с целостностью нижнего колонтитула:
Нижний колонтитул целостности изображения можно удалить с изображения. Как вариант, хеш-дерево может быть сохранено.
Для изображений хеш и хеш-деревьев,vbmeta
Структура также может быть передана--output_vbmeta_image
Возможность записи внешнего файла, вы также можете указать неvbmeta
Структура и нижний колонтитул добавляются к изображению, с которым вы работаете.
в настоящее время используюavbtool add_hash_footer
илиavbtool add_hashtree_footer
После команды, чтобы рассчитать максимальное значение, которое соответствует образу раздела указанного размера, используйте--calc_max_image_size
Параметры:
$ avbtool add_hashtree_footer —partition_size $((1010241024))
–calc_max_image_size
10330112
в настоящее время используюmake_vbmeta_image
、add_hash_footer
с участиемadd_hashtree_footer
Команду нужно разместитьvbmeta
В структуреверсия libavb
,можешь использовать--print_required_libavb_version
Параметры:
допустимыйmake_vbmeta_image
、add_hash_footer
с участиемadd_hashtree_footer
Используется в команде--signing_helper
Возможность указать внешнюю программу, используемую для хэширования подписи. Данные для подписи проходятSTDIN
Enter, подписанные данные проходятSTDOUT
возвращение. в случае--signing_helper
Появляется в командной строке,--key
Опция должна включать только открытый ключ. Параметры помощника по подписи — это алгоритм и открытый ключ. Если помощник по подписи возвращает отличное от 0, когда это заканчивается, это означает сбой.
Это пример вызова:
--signing_helper_with_files
Похожий на--signing_helper
, Просто используйте временный файл для связи с помощником, а не сSTDIN
с участиемSTDOUT
Связь. Вывести результат диагностики вSTDOUT
Вместо тогоSTDERR
В этом случае это очень полезно.
Вот пример вызова:
Последний позиционный параметр — это файл, содержащий данные для подписи. Помощник должен написать подпись в этом файле.
можешь использоватьppend_vbmeta_image
Команда будет всяvbmeta
Двоичный файл добавляется в конец другого изображения. Это очень полезно в ситуациях, когда не используется раздел vbmeta, например:
verify_image
Команды могут использоваться для проверки содержимого нескольких файлов изображений одновременно. При вызове изображения объекта выполните следующие проверки:
- Если изображение имеет
VBMeta
Структура, подпись проверяется на соответствие встроенному открытому ключу. Если изображение не похоже наvbmeta.img
Найдите нижний колонтитул и используйте нижний колонтитул, если он существует. - Если прошло
--key
Вариант, вам нужен.pem
Файл и проверкаVBMeta
Соответствует ли открытый ключ, встроенный в структуру, данному ключу. VBMeta
Все дескрипторы в структуре проверяются следующим образом:- Для дескриптора хеша загрузите файл изображения, соответствующий имени раздела, и проверьте, соответствует ли дайджест изображения в соответствии с дайджестом в дескрипторе.
- Для дескриптора хеш-дерева загрузите файл изображения, соответствующий имени раздела, вычислите хеш-дерево и сравните его корневой дайджест с файлом изображения в дескрипторе.
- Для дескриптора раздела ссылки, содержание и необходимость передачи
--expected_chain_partition
Содержимое, переданное в опции, сравнивается. Формат этой опции похож на--chain_partition
Формат варианта. Если дескриптор раздела ссылки не--expected_chain_partition
Дескриптор проверки не пройден.
Это пример установки, гдеboot.img
с участиемsystem.img
Дайджест хранится в использованииmy_key.pem
подписанныйvbmeta.img
в. Также проверяет разделfoobar
Использует ли раздел ссылок индекс отката 8 и соответствует ли открытый ключ в формате AVB файлуfoobar_vendor_key.avbpubkey
Открытый ключ соответствует:
Verifying image /path/to/vbmeta.img using key at my_key.pem
vbmeta: Successfully verified SHA256_RSA4096 vbmeta struct in /path_to/vbmeta.img
boot: Successfully verified sha256 hash of /path/to/boot.img for image of 10543104 bytes
system: Successfully verified sha1 hashtree of /path/to/system.img for image of 1065213952 bytes
foobar: Successfully verified chain partition descriptor matches expected data
В этом примереverify_image
Каталог проверки команд/path/to
Файлы вvbmeta.img
,boot.img
с участиемsystem.img
, Каталог и расширение файла данного изображения (например,/path/to/vbmeta.img
) Используется вместе с именем раздела в дескрипторе для вычисления имени файла для хранения хеш-кода и изображения хеш-дерева.
verify_image
Команду также можно использовать для проверки правильности работы помощника по созданию подписи.
calculate_vbmeta_digest
Команду можно использовать для расчета нескольких файлов изображений одновременноvbmeta
Резюме. Результатом является шестнадцатеричная строка, которая будет напечатана вSTDOUT
Или по указанному пути (используя--output
Опция).
В этом примереcalculate_vbmeta_digest
Командная загрузкаvbmeta.img
файл. Если это изображение имеет один или несколько дескрипторов связанных разделов, используйтеverify_image
Для загрузки этих файлов используйте ту же логику (например, предполагается, что каталог и расширение файла совпадают с указанным изображением). Однажды загрузил всеvbmeta
Структура, резюме рассчитывается (используя--hash_algorithm
Возможность указать используемый алгоритм хеширования) и распечатать его.
Компилировать интеграцию
В Android проходит AVBBOARD_AVB_ENABLE
Переменная включена.
После установки этой опции, это будетsystem.img
Присоедините хеш-дерево и создайтеvbmeta.img
,vbmeta.img
Изображение содержитboot.img
с участиемsystem.img
Дескриптор хеша, и дляsystem.img
Настроитьdm-verity
Параметры командной строки ядра. Если система сборки настроена на сборкуvendor.img
/ product.img
/ odm.img
/ product_services.img
Один или несколько из них, хеш-дерево каждой системы сборки также будет присоединено к их соответствующим изображениям, и их дескрипторы хеш-дерева будут включены в соответствующиеvbmeta.img
в.
Используется по умолчаниюSHA256_RSA4096
Алгоритм иexternal/avb/test/data
Тестовый ключ в каталоге. Алгоритм и ключ соответственно определяютсяBOARD_AVB_ALGORITHM
с участиемBOARD_AVB_KEY_PATH
Спецификация переменной, например, в следующем примере указано использование4096-bit RSA key and SHA-512
алгоритм:
Следует отметить, что открытый ключ должен быть доступен для загрузчика, чтобы его можно было использовать для проверки соответствующего раздела. использованиеavbtool extract_public_key
Извлеките ключ в ожидаемом формате (нижеAVB_pk
). Если устройство используется сAVB_pk
Разные корни доверия, то--public_key_metadata
Опцию можно использовать для встраивания бинарного файла (нижеAVB_pkmd
), файл может быть использован для получения AVB_pk. При проверке слота,AVB_pk
с участиемAVB_pkmd
Переданы вvalidate_vbmeta_public_key()
эксплуатации.
Устройство может быть настроено на создание дополнительныхvbmeta
Раздел как раздел ссылок, так что верхний уровеньvbmeta
Обновите подраздел в случае раздела. Например, следующая переменная создаетvbmeta_mainline.img
Как ссылкаvbmeta
Изображение, оно содержитsystem.img
、product_services.img
Дескриптор хеш-дерева.vbmeta_mainline.img
Он будет подписан указанным ключом и алгоритмом.
предостерегают,system.img
с участиемproduct_services.img
Дескриптор хеш-дерева будет включен только вvbmeta_mainline.img
В, но не вvbmeta.img
в. Через вышеуказанные настройки, разделsystem.img
,product_services.img
с участиемvbmeta_mainline.img
Может обновляться самостоятельно.
В настоящее время система сборки поддерживает сборкуvbmeta_mainline.img
(BOARD_AVB_VBMETA_MAINLINE
)с участиемvbmeta_vendor.img
(BOARD_AVB_VBMETA_VENDOR
) Такая ссылкаvbmeta
Образ.
Чтобы предотвратить атаки отката, необходимо регулярно добавлять индексы отката. можешь использоватьBOARD_AVB_ROLLBACK_INDEX
Индекс отката настройки переменной:
Если не установлено, индекс отката по умолчанию равен 0.
переменнаяBOARD_AVB_MAKE_VBMETA_IMAGE_ARGS
Может использоваться для указания доставкиavbtool make_vbmeta_image
Другие варианты. Типичные варианты, используемые здесь, включают--prop
, -- prop_from_file
,--chain_partition
,--public_key_metadata
с участием--signing_helper
。
использованиеavbtool add_hash_footer
Делатьboot.img
Когда переменнаяBOARD_AVB_BOOT_ADD_HASH_FOOTER_ARGS
Может использоваться для указания других параметров. Типичные варианты, используемые здесь, включают--hash_algorithm
с участием--salt
。
использованиеavbtool add_hash_footer
Делатьsystem.img
Когда переменнаяBOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS
Может использоваться для указания других параметров. Типичные варианты, используемые здесь, включают--hash_algorithm
,--salt
,--block_size
с участием--do_not_generate_fec
。
использованиеavbtool add_hash_footer
Делатьvendor.img
Когда переменнаяBOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS
Может использоваться для указания других параметров. Типичные варианты, используемые здесь, включают--hash_algorithm
,--salt
,--block_size
с участием--do_not_generate_fec
。
использованиеavbtool add_hash_footer
Делатьdtbo.img
Когда переменнаяBOARD_AVB_DTBO_ADD_HASH_FOOTER_ARGS
Может использоваться для указания других параметров. Типичные варианты, используемые здесь, включают--hash_algorithm
с участием--salt
。
Системные переменные для сборки Verified Boot в старой версии Android (например,PRODUCT_SUPPORTS_VERITY_FEC
) Не используется в AVB.
кликните сюдаНайдите связанные с A / B системные переменные сборки.
Интеграция устройства
В этом разделе обсуждаютсяlibavb
Рекомендации и рекомендации по интеграции с загрузчиками устройств. Важно подчеркнуть, что это всего лишь предложения, поэтому формулировку следует использовать осторожно.
Кроме того, в этой главе также используется термин HLOS для обозначения операционных систем высокого уровня (High Level Operating System). Это, очевидно, включает в себя Android (включая, но не ограничиваясь, мобильные телефоны), но это могут быть и другие операционные системы.
Системная зависимость
libavb
Способ написания библиотеки делает ее переносимой на любую систему, использующую компилятор C99. Для этого не требуется стандартная библиотека C, но должен быть реализован загрузчикlibavb
Требуется набор простых системных примитивов, таких какavb_malloc()
、avb_free()
с участиемavb_print()
。
В дополнение к системным примитивам,libavb
Также прошлоAvbOps
Структура действует как интерфейс для взаимодействия с загрузчиком. Это включает в себя чтение и запись данных из разделов, чтение и запись индексов отката, проверку того, следует ли принимать открытый ключ, используемый для подписи, и так далее.
Заблокированный и разблокированный режим
Заблокировано ли устройство Android (LOCKED
) Или разблокировать (UNLOCKED
) Статус, оба поддерживают AVB.
В контексте AVB,LOCKED
Статус означает, что ошибка проверки является фатальной, аUNLOCKED
Государства нет. Если устройствоUNLOCKED
Тогда вavb_slot_verify()
Передано в параметре flagsAVB_SLOT_VERIFY_FLAGS_ALLOW_VERIFICATION_ERROR
Флаги, ошибки проверки, включая следующие ошибки, будут нефатальными:
AVB_SLOT_VERIFY_RESULT_ERROR_PUBLIC_KEY_REJECTED
AVB_SLOT_VERIFY_RESULT_ERROR_VERIFICATION
AVB_SLOT_VERIFY_RESULT_ERROR_ROLLBACK_INDEX
Если устройство находится в состоянии LOCKED, пожалуйста, неavb_slot_verify()
Передано в параметре flagsAVB_SLOT_VERIFY_FLAGS_ALLOW_VERIFICATION_ERROR
Логотип и толькоAVB_SLOT_VERIFY_RESULT_OK
Обрабатывается как нефатальная ошибка.
На Android состояние устройства можно изменить через интерфейс fastboot. Например, используяfastboot flashing lock
Переключиться наLOCKED
Статус, использованиеfastboot flashing unlock
Переключиться наUNLOCKED
положение дел.
После подтверждения физического присутствия пользователя устройство должно разрешать только переходы состояний (например, изLOCKED
кUNLOCKED
илиUNLOCKED
кLOCKED
). Если устройство имеет дисплей и кнопки, оно обычно отображает диалоговое окно и просит пользователя использовать физическую кнопку для подтверждения или отмены операции.
ИзLOCKED
Переключиться наUNLOCKED
Государство, должно быть очищено в том числеuserdata
Раздел и любой NVRAM (Примечание переводчика:Non-Volatile Random Access Memory
Все пользовательские данные, включая энергонезависимую оперативную память). К тому же,stored_rollback_index[n]
Адрес также будет удален (все элементы должны быть установлены на ноль). Когда следуетUNLOCKED
Перевести вLOCKED
Аналогичная операция (стеретьuserdata
, Пространство NVRAM иstored_rollback_index[n]
позиция). Если устройство требует использовать полное шифрование диска, тоUNLOCKED
кLOCKED
Только нужно меньше стирать. В зависимости от внешнего вида и предполагаемого использования устройства должны быть приняты соответствующие методы, чтобы запросить у пользователя подтверждение перед удалением каких-либо данных.
Хранение несанкционированного доступа
В этом документе защита от несанкционированного доступа означает, что он может обнаружитьHLOS
Например, независимо от того, были ли данные подделаны, можно обнаружить, что данные были перезаписаны.
Записанный индекс отката, ключ, использованный для проверки, статус устройства (LOCKED
илиUNLOCKED
И именованные постоянные значения должны храниться в защищенном хранилище. Если обнаружено вмешательство, соответствующийAvbOps
Операция должна завершиться неудачей, например, returnAVB_IO_RESULT_ERROR_IO
, Особенно важно, что ключи проверки не могут быть подделаны, потому что они представляют корень доверия.
Если ключ проверки может измениться, онидолженОн может быть установлен только конечным пользователем, например, он никогда не должен устанавливаться на фабрике, в магазине или в любой промежуточной точке перед конечным пользователем. Кроме того, только когда устройствоUNLOCKED
Ключ может быть установлен или очищен только в состоянии.
Именованные постоянные значения
В AVB 1.1 введена поддержка именованных постоянных значений, эти значения должны быть защищены от несанкционированного доступа и позволять AVB хранить произвольные пары ключ-значение. Интеграторы могут ограничивать поддержку этих значений фиксированным набором известных имен, максимального размера и / или максимального числа.
Постоянные дайджесты
Использование постоянных дайджестов для разделов означает, что дайджест (или корневой дайджест в случае хеш-дерева) хранится не в дескрипторе, а в именованном постоянном значении. Это позволяет AVB проверять данные конфигурации, которые могут варьироваться от устройства к устройству. Когда устройствоLOCKED
В этом состоянии постоянное резюме не может быть изменено, если резюме не инициализировано, когда оно не существует.
Чтобы указать, что дескриптор должен использовать постоянный дайджест, пожалуйста,add_hash_footer
илиadd_hashtree_footer avbtool
Использование операции--use_persistent_digest
Параметры. Затем во время проверки дескриптора AVB будет иметь указанное постоянное значение.avb.persistent_digest.$(partition_name)
Ищите сводку в дескрипторе, а не в самом дескрипторе.
Для дескрипторов хеш-дерева, которые используют постоянные дайджесты, вы можете использовать$(AVB_FOO_ROOT_DIGEST)
Маркер формы заменяет дайджест-значение дескриптором командной строки ядра, где «FOO» — это имя раздела в верхнем регистре, в данном случае это раздел «FOO». Маркер будет заменен дайджестом в шестнадцатеричной форме.
По умолчанию, когда--use_persistent_digest
Варианты иadd_hash_footer
илиadd_hashtree_footer
При совместном использовании avbtool создаст дескриптор без соли (salt) вместо генерации случайной соли, равной длине дайджеста по умолчанию. Это связано с тем, что значение дайджеста хранится в постоянной памяти, которая не изменяется со временем. Другой вариант заключается в использовании--salt
Обеспечить случайную соль вручную. Но после записи постоянного значения дайджеста соль должна оставаться неизменной в течение всего срока службы устройства.
Обновление сохраненных индексов отката
Чтобы защита от отката работала, загрузчик должен обновить устройство на устройстве перед передачей управления в HLOS.stored_rollback_indexes[n]
Массив. Если не используетсяA/B
, Это очень просто — просто обновите его до метаданных AVB слота перед загрузкой. Это выглядит так в псевдокоде:
}
Тем не менее, если вы используете A / B, вы должны быть более осторожны, когда обновление не работает, все еще позволяйте устройству вернуться к старому слоту.
Для HLOS, таких как Android, если вы обнаружите, что обновленная версия ОС не работает, поддерживается только откат.stored_rollback_index[n]
Должны быть помечены только как из метаданных A / BSUCCESSFUL
Слоты обновлены. Псевдокод выглядит следующим образом, гдеslot_is_marked_as_successful()
Из используемого стека A / B:
Для HLOS, который можно откатить до предыдущей версии,stored_rollback_index[n]
Следует установить максимальное значение, допустимое для всех слотов, которые могут быть запущены в обычном режиме. Этот метод является экспериментальным (в настоящее время не рекомендуется) A / B-стеком в AVBlibavb_ab
Реализовано в см.avb_ab_flow()
достичь. Обратите внимание, что для этого требуется проверка всех загрузочных слотов при каждой загрузке, что может повлиять на время загрузки.
Рекомендуемый процесс наведения
Рекомендуемый процесс загрузки для устройств, использующих AVB:
Меры предосторожности:
- Устройство должно искать все слоты A / B, пока не найдет действительную операционную систему для загрузки. в
LOCKED
Отклоненный слот может бытьВ РАЗБЛОКИРОВАН
Статус не отклоняется (например, когдаUNLOCKED
Можно использовать любой ключ и допустим сбой индекса отката), поэтому алгоритм, используемый для выбора слота, будет различаться в зависимости от состояния устройства. - Если действительная операционная система не найдена (то есть нет загрузочного слота A / B), устройство не может загрузиться и должно перейти в режим восстановления. Это зависит от устройства. Если устройство имеет экран, оно должно передать это состояние пользователю.
- Если устройство заблокировано, то принимаются только операционные системы, подписанные единым ключом проверки (см. Предыдущий раздел). Кроме того, хранится в проверенном изображении
rollback_index[n]
Должно быть больше или равно на устройствеstored_rollback_index[n]
Значение в (для всех n) иstored_rollback_index[n]
Массив должен быть обновлен, как указано в предыдущем разделе.- Если ключ, используемый для аутентификации, установлен конечным пользователем, а устройство имеет экран, то на нем должно отображаться предупреждение с отпечатком пальца ключа, указывающее, что устройство загружается в пользовательскую операционную систему. Предупреждение должно отображаться не менее 10 секунд перед продолжением процесса загрузки. Если устройство не имеет экрана, необходимо использовать другие методы, чтобы сообщить, что устройство загружает пользовательскую операционную систему (световая панель, светодиод и т. Д.).
- Если устройство
UNLOCKED
, Нет необходимости проверять ключ, используемый для подписи ОС, а также проверять или обновлять откат на устройстве.stored_rollback_index[n]
, Поэтому пользователю всегда должно быть показано предупреждение о том, что проверка не произошла.- Это зависит от формы и предполагаемого использования устройства, а также от того, как устройство реализовано. Если на устройстве есть экран и кнопки (например, мобильный телефон), предупреждение будет отображаться не менее 10 секунд, прежде чем процесс загрузки продолжится. Если устройство не имеет экрана, необходимо использовать другие методы, чтобы сообщить, что устройство разблокировано (световая панель, светодиод и т. Д.).
Обработка ошибок dm-verity
По замыслу, HLOS обнаруживает ошибки проверки дерева хешей вместо загрузчика. AVB предоставляет способ указать, как пройтиavb_slot_verify()
В функцииhashtree_error_mode
Ошибка обработки параметра. Возможные значения включают в себя:
AVB_HASHTREE_ERROR_MODE_RESTART_AND_INVALIDATE
Указывает, что HLOS помечает текущий слот как недействительный и будет перезагружен. На устройствах с A / B это приведет к попытке загрузки другого слота (если он помечен как загрузочный) или к режиму, в котором ОС не может быть загружена (например, к некоторой форме режима восстановления). В Linux это требует использованияCONFIG_DM_VERITY_AVB
Встроенное ядро.AVB_HASHTREE_ERROR_MODE_RESTART
Указывает, что операционная система будет перезагружена, если текущий слот недействителен. Будьте осторожны при использовании этого режима безоговорочно, потому что если вы сталкиваетесь с одной и той же ошибкой проверки хеш-дерева при каждой загрузке, вы можете войти в бесконечный цикл.AVB_HASHTREE_ERROR_MODE_EIO
Указывает, что ошибка EIO будет возвращена приложению.AVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIO
Указывает на использование в соответствии со статусомRESTART
илиEIO
Режим. Этот режим реализует конечный автомат, который используется по умолчаниюRESTART
, когдаAVB_SLOT_VERIFY_FLAGS_RESTART_CAUSED_BY_HASHTREE_CORRUPTION
Перейти ккогда avb_slot_verify ()
, Режим конвертируется вEIO
, При обнаружении новой операционной системы устройство переключится обратно наRESTART
Режим.- Для достижения этого постоянного хранения необходимо, в частности, это означает, что
AvbOps
Переданные операции должны будут быть выполненыread_persistent_value()
с участиемwrite_persistent_value()
эксплуатации. Используемое постоянное значение называетсяavb.managed_verity_mode
И занимают 32 байта дискового пространства.
- Для достижения этого постоянного хранения необходимо, в частности, это означает, что
AVB_HASHTREE_ERROR_MODE_LOGGING
Указывает, что ошибки будут зарегистрированы, и поврежденные данные могут быть возвращены в приложение. Этот режим следует использовать только для диагностики и отладки. Если ошибки проверки не допускаются, они не могут быть использованы.
hashtree_error_mode
Переданное значение в основном только что переданоandroidboot.veritymode
,androidboot.veritymode.managed
с участиемandroidboot.vbmeta.invalidate_on_error
Параметры командной строки ядра передаются в HLOS следующим образом:
value | androidboot.veritymode | androidboot.veritymode.managed | androidboot.vbmeta.invalidate_on_error |
---|---|---|---|
AVB_HASHTREE_ERROR_MODE_RESTART_AND_INVALIDATE |
enforcing | (unset) | yes |
AVB_HASHTREE_ERROR_MODE_RESTART |
enforcing | (unset) | (unset) |
AVB_HASHTREE_ERROR_MODE_EIO |
eio | (unset) | (unset) |
AVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIO |
eio or enforcing | yes | (unset) |
AVB_HASHTREE_ERROR_MODE_LOGGING |
ignore_corruption | (unset) | (unset) |
Единственное исключение из этой таблицы, если на верхнем уровнеvbmeta
Установить вAVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED
Подпишите, тогдаandroidboot.veritymode
Необходимо установить наdisabled
,androidboot.veritymode.managed
с участиемandroidboot.vbmeta.invalidate_on_error
Никаких настроек не требуется.
Какой режим я должен использовать для моего устройства?
Все зависит от устройства, способа его использования и требуемого опыта пользователя.
Для устройств Android, вы должны использоватьAVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIO
Режим. Смотрите также на source.android.comBoot FlowГлава, чтобы понять типы UX и UI, которые должен реализовать загрузчик.
Если устройство не имеет экрана или HLOS поддерживает несколько загрузочных слотов одновременно, используйтеAVB_HASHTREE_ERROR_MODE_RESTART_AND_INVALIDATE
Это может иметь больше смысла.
Специфичная для Android интеграция
На Android загрузчик должен быть установлен в командной строке ядраandroidboot.verifiedbootstate
Параметр указывает состояние загрузки. Следует использовать следующие значения:
- green: Если устройство имеет
LOCKED
И корень доверия, который может быть установлен пользователем, не используется. - yellow: Если устройство имеет
LOCKED
И корень доверия, который может быть установлен пользователем, используется. - orange: Если устройство имеет
UNLOCKED
。
Особенности оборудования
Этот раздел содержит информацию о том, как интегрировать AVB в определенные устройства. Это не исчерпывающий список.
Pixel 2
На Pixel 2 и Pixel 2 XL загрузчик поддерживает имяavb_custom_key
Виртуальный раздел. только вUNLOCKED
Раздел можно стереть и переписать в штат. Способ установки пользовательского ключа заключается в следующем:
Стирание ключа выполняется путем стирания виртуального раздела:
Установите пользовательский ключ, и устройство находится вLOCKED
В этом состоянии запускается изображение, подписанное встроенным ключом и пользовательским ключом. Все остальные функции безопасности (включая защиту от отката) эффективны, единственное отличие — это корень доверия.
При запуске изображения, подписанного пользовательским ключом, экран будет отображаться желтым цветом во время процесса загрузки, чтобы напомнить пользователю, что пользовательский ключ используется.
историческая версия
Версия 1.1
Версия 1.1 добавляет поддержку для следующего:
- Добавьте элемент 32-битного флага в дескриптор хеша и дерева хешей.
- Поддерживает разделы, которые не используют A / B.
- Долговечная стоимость, защищенная от взлома.
- Постоянный дайджест хеш-функции или дескриптора хеш-дерева.
Версия 1.0
1.0 поддерживает все функции, явно не перечисленные в более поздних версиях.
Статья переведена с:https://android.googlesource.com/platform/external/avb/+/master/