Reason avb slot verify c 143 error

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, есть […]

Содержание

  1. Reason avb slot verify c 143 error
  2. Ошибки при прошивки Samsung телефонов в ODIN
  3. Типичные ошибки при прошивки Samsung в ODIN
  4. Ошибка подключения устройства
  5. Samsung «не виден» в Odin
  6. Файл Прошивки битый: MD5 hash value is invalid
  7. Ошибки при прошивке разделов system.img, boot.img, recovery.img, sboot.bin, cache.img и других разделов
  8. Ошибки связанные с повреждением разделов памяти Samsung
  9. Ошибки с отсутствием возможности доступа к записи разделов
  10. Samsung не запускается
  11. Android Verified Boot (AVB)
  12. Contents
  13. What is it
  14. Implementation details
  15. Verified boot process
  16. Using avbtool
  17. Examining contents of stock images
  18. Signing & cheksumming the partitions
  19. Creating vbmeta image
  20. Disabling verified boot
  21. Как исправить Самсунг завис в режиме загрузки(download/Odin)?
  22. Часть 1: Что такое режим загрузки(download/Odin)?
  23. Часть 2: Как исправить Самсунг завис в режиме download/Odin?
  24. Способ 1: 1-клик выйти из режима загрузки(download/Odin)(совершенно бесплатно)
  25. Способ 2: Исправить завис в режиме загрузки с помощью Tenorshare ReiBoot for Android
  26. Заключение

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

Решение:

  1. Убедиться что устройство переведено в специальный режим обновления Downloading, если это не так то перевести;
  2. Убедиться в целостности используемого 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.

Решение:

  1. Скачать прошивку с альтернативного источника, если присутствует какое либо описание к файлу, то прочитать;
  2. Убедиться что прошивка предназначена для вашего устройства Samsung;
  3. В случае необходимости понижения версии ОС Android, пересобрать прошивку удалив файл sboot.bin;
  4. В случае перехода с кастомной прошивки на официальную, в начале выполнить сброс (wipe data и wipe system).

Ошибки связанные с повреждением разделов памяти Samsung

Вариант 1

Вариант 2

Вариант 3

Данные проблемы могут возникнуть в следствие повреждения разметки секторов внутренних разделов флеш-памяти устройства, попытки прошить чужой или модифицированный PIT файл, либо поврежден загрузчик

Решение:

  1. Попытаться найти 4-х файловую сервисную прошивку в интернете, а также PIT файл для вашего устройства и произвести прошивку в Odin;
  2. В случае не удачной попытки обратиться в СЦ.

Ошибки с отсутствием возможности доступа к записи разделов

Изменить несколько параметров в настройках:

1. Включить « Отладку по USB » и там в же настройках включить «Разблокировка OEM»;


2. Отключить «Удаленное управление» Samsung;

Samsung не запускается

Если у вас на экране похожее соображение, то это означает что предыдущая прошивка была прервана:

Решение:

  1. Найдите прошивку Samsung для своего устройства, скачайте ее, после чего установите с помощью Odin, после чего попробуйте снова загрузить девайс (если не сработает переходим ко второму пункту);
  2. Выполните сброс данных (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 на свой ПК;
  • windows download btn

    windows purchase btn

  • Шаг 2. Подсоедините ваш смартфон или планшет к ПК с помощью USB-кабеля;
  • Шаг 3. На главном экране интерфейса вы сможете увидеть функцию «Выйти из режима загрузки», вам необходимо на нее нажать.

    Выйти из режима загрузки

  • Шаг 4. Ваше устройство выйдет из режима загрузки всего за пару кликов.

    успешно Выйти из режима загрузки

Способ 2: Исправить завис в режиме загрузки с помощью Tenorshare ReiBoot for Android

Если ваш телефон завис в режиме загрузки, то Tenorshare ReiBoot for Android поможет вам справиться с этой задачей. Tenorshare ReiBoot for Android помогает при многих системных проблемах: телефон Samsung постоянно перезагружается, ошибка обновления Android, телефон быстро разряжается, завис на логотипе, не исчезает черный экран и многие другие ошибки.

Выполните пошаговые действия и ваше устройство вернется в нормальный режим:

  • Скачайте и установите Tenorshare ReiBoot for Android на свой ПК;
  • windows download btn

    windows purchase btn

  • Подключите ваше устройство к ПК с помощью USB-кабеля;
  • Запустите программу ReiBoot вашем ПК и нажмите «Исправление системы Android»;

    connect-device

  • Потом нажмите “Исправить сейчас”;

    Исправить сейчас

  • После этого появляются некоторые информации, которые вам надо выполнить.Потом нажмите “Далее”;

    select-correct-device-info

  • Далее загрузите пакет прошивки;

    загрузить пакет прошивки

  • После выполнения загрузки вам надо выбрать опцию “Исправить сейчас”.

    Исправить сейчас

Потом через несколько минут успешно выполнить исправление, и ваша проблема андроида решена.

Заключение

В этой статье мы рассказали о том, что такое режим download/Odin, как из его выйти и какие проблемы возникают в системе при появлении такой ошибки. Если самсунг завис в режиме download/Odin, то не стоит беспокоиться. Tenorshare ReiBoot for Android – программное обеспечение для андроидов, которое поможет вам бесплатно ввести и выйти из режима скачивания Android (odin). А также избавит от более 50-ти системных ошибок: зависание на логотипе, черный экран и т.д. Скачайте программу на свой ПК и восстановите работу устройства прямо сейчас всего за 1 клик. Ваш телефон начнет работать в нормальном режиме.

windows download btn

windows purchase btn

Присоединяйтесь к обсуждению и поделитесь своим голосом здесь

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. И так вы созрели до момента, что необходимо прошить свой Samsung. Скачали программу Odin, прочитали статью как прошить свой Android, нашли прошивку, но в момент ее установки все время выбивает ошибки? Как это все исправить и понять что происходит? Все ответы в данной статье!

Ошибки при прошивки Samsung телефонов в ODIN

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)

Решение:

  1. Убедиться что устройство переведено в специальный режим обновления Downloading, если это не так то перевести;
  2. Убедиться в целостности используемого USB-шнура (при необходимости заменить), если кабель не оригинальный заменить на оригинальный. Кабель вставить в задний порт USB 2.0 системного блока компьютера.

Samsung «не виден» в Odin

В Odin не отображается ID и COM подключенного смартфона или планшета Samsung

Ошибки при прошивки Samsung телефонов в ODIN

Решение:

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.

Решение:

  1. Скачать прошивку с альтернативного источника, если присутствует какое либо описание к файлу, то прочитать;
  2. Убедиться что прошивка предназначена для вашего устройства Samsung;
  3. В случае необходимости понижения версии ОС Android, пересобрать прошивку удалив файл sboot.bin;
  4. В случае перехода с кастомной прошивки на официальную, в начале выполнить сброс (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 файл, либо поврежден загрузчик

Решение:

  1. Попытаться найти 4-х файловую сервисную прошивку в интернете, а также PIT файл для вашего устройства и произвести прошивку в Odin;
  2. В случае не удачной попытки обратиться в СЦ.

Ошибки с отсутствием возможности доступа к записи разделов

FAP LOCK:ON
Custom Binary(RECOVERY) Blocked By FAP Lock

Изменить несколько параметров в настройках:

1. Включить «Отладку по USB» и там в же настройках включить «Разблокировка OEM»;

Ошибки при прошивки Samsung телефонов в ODIN
2. Отключить «Удаленное управление» Samsung;

Ошибки при прошивки Samsung телефонов в ODIN


Samsung не запускается

Если у вас на экране похожее соображение, то это означает что предыдущая прошивка была прервана:

Ошибки при прошивки Samsung телефонов в ODIN

Решение:

  1. Найдите прошивку Samsung для своего устройства, скачайте ее, после чего установите с помощью Odin, после чего попробуйте снова загрузить девайс (если не сработает переходим ко второму пункту);
  2. Выполните сброс данных (wipe data/factory reset), после чего попробуйте снова загрузить девайс.

Что такое АВБ

Проверка запуска представляет собой целый набор процессов для обеспечения целостности пользовательского оборудования, на котором запущено программное обеспечение. Обычно он начинается с доступной только для чтения части микропрограммы устройства и использует шифрование для проверки надежности кода и отсутствия известных недостатков безопасности. AVB — это реализация проверки запуска.

ВБМета структура

Основная структура данных, используемая в AVB:VBMetaСтруктура. Эта структура данных содержит много дескрипторов (и других метаданных), и все эти данные криптографически подписаны. Дескрипторы используются для значений хеша изображения, метаданных дерева хеша изображения и так называемых разделов ссылок. Вот простой пример:

image

среди нихvbmetaРаздел хранит значение хеша загрузочного раздела в дескрипторе хеша. дляsystemс участиемvenderРазделение, хеш-дерево следует непосредственно за данными соответствующей файловой системы раздела, а раздел vbmeta сохраняет только корневой хеш, соль и смещение хеш-дерева в дескрипторе хеш-дерева. , так какvbmetaВ разделеVBMetaСтруктура криптографически подписана, поэтому загрузчик может проверить подпись и проверить, подписана ли онаkey0Создано владельцем (например, через встроенный открытый ключ key0) для доверия хранилищу в разделеbootsystemvendorХэш-значение раздела.

Дескриптор раздела ссылки используется для делегирования полномочий и содержит имя раздела, которому делегированы полномочия, и доверенный открытый ключ, подписанный в этом конкретном разделе. Например, рассмотрим следующие параметры:

image

В этой настройке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),Следующим образом:

image

Эти цифры используютrollback_index[n]Сказал, что это число будет увеличиваться после того, как любое изображение найдет и исправит уязвимости безопасности. Кроме того, в устройстве будет храниться последний индекс отката, обнаруженный в защищенном от несанкционированного доступа хранилище:

image

Они называютсяstored_rollback_index[n]

На устройствах, использующих защиту от отката, только когда все n удовлетвореныrollback_index[n] >= stored_rollback_index[n]Изображение может быть загружено только при этом условии, и устройство будет увеличиваться со временемstored_rollback_index[n], Как это сделать, будет описано в разделе «Обновление сохраненного индекса отката».

Поддержка разделов A / B

AVB предназначен для включения одновременно с разделом A / B. Он требует, чтобы суффикс A / B не использовался ни в одном имени раздела, хранящемся в дескрипторе. Это пример с двумя слотами:

image

Обратите внимание, что индекс отката разных разделов различен — для слота 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.imgsystem.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
  • libavb_atx/
    • Расширение Android Things для проверки метаданных открытого ключа.
  • libavb_user/
    • Содержит пространство для AndroidAvbOpsдостичь. Используется дляboot_control.avbс участиемavbctl
  • libavb_ab/
    • Экспериментальная реализация A / B для примеров загрузчика и AVB. Примечание: этот кодDEPRECATED, Вы должны определитьAVB_AB_I_UNDERSTAND_LIBAVB_AB_IS_DEPRECATEDЧтобы использовать это. Код был удален 1 июня 2018 года.
  • boot_control/
    • Android boot_control Реализация HAL для использования экспериментальныхlibavb_abЗагрузчик для A / B стека. Примечание. Этот код устарел и был удален 1 июня 2018 года.
  • contrib/
    • Содержит патчи для взаимодействия с AVB в других проектах. Например,contrib/linux/4.4Есть патчи для ядра Linux 4.4, они сделаныgit format-patchСформирован.
  • Android.bp
    • Constructlibavb(Для статических библиотек на устройстве), библиотеки на стороне хоста (для модульного тестирования) и инструкции по построению для модульного тестирования.
  • 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_imageadd_hash_footerс участиемadd_hashtree_footerКоманду нужно разместитьvbmetaВ структуреверсия libavb,можешь использовать--print_required_libavb_versionПараметры:

допустимыйmake_vbmeta_imageadd_hash_footerс участиемadd_hashtree_footerИспользуется в команде--signing_helperВозможность указать внешнюю программу, используемую для хэширования подписи. Данные для подписи проходятSTDINEnter, подписанные данные проходят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.imgboot.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.imgvbmeta.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.imgproduct_services.imgДескриптор хеш-дерева.vbmeta_mainline.imgОн будет подписан указанным ключом и алгоритмом.

предостерегают,system.imgс участиемproduct_services.imgДескриптор хеш-дерева будет включен только вvbmeta_mainline.imgВ, но не вvbmeta.imgв. Через вышеуказанные настройки, разделsystem.imgproduct_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:

image

Меры предосторожности:

  • Устройство должно искать все слоты 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.veritymodeandroidboot.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Необходимо установить наdisabledandroidboot.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/

Понравилась статья? Поделить с друзьями:
  • Reason 433 reason not specified by peer ошибка cisco
  • Rear fog light error
  • Reaper как изменить цвет интерфейса
  • Reaper как изменить тональность сэмпла
  • Redirect to error page mvc