Открыть сервис

Verified Boot

Verified Boot — это технология проверки целостности и подлинности загрузочного образа операционной системы, реализуемая на этапе загрузки устройства. Она гарантирует, что загрузчик, ядро и системные разделы не были модифицированы или заменены на вредоносные версии, и что устройство загружается только с доверенным, криптографически подписанным программным обеспечением. Verified Boot является ключевым компонентом цепочки доверенной загрузки (secure boot chain) в современных мобильных и встраиваемых системах, особенно на платформе Android.

Принцип работы

Основой Verified Boot является криптографическая верификация. Процесс начинается с неизменяемого аппаратного корня доверия (Hardware Root of Trust), обычно встроенного в загрузочное ПЗУ (ROM) или отдельный чип безопасности (например, Titan M в устройствах Google Pixel). Этот корень доверия содержит открытый ключ производителя устройства.

  1. Загрузчик (Bootloader): При включении устройства загрузочное ПЗУ проверяет цифровую подпись первого этапа загрузчика (bootloader) с помощью встроенного ключа. Если подпись верна, загрузчик считается доверенным и получает управление.
  2. Загрузочный раздел (Boot partition): Доверенный загрузчик затем проверяет подпись загрузочного образа (boot.img), который содержит ядро Linux и ramdisk. Для этого используется открытый ключ, хранящийся в самом загрузчике или в специальном разделе (vbmeta).
  3. Системные разделы: После загрузки ядра, dm-verity (Device Mapper Verity) — драйвер в ядре Linux — проверяет целостность системных разделов (system, vendor, product и т.д.) в реальном времени. dm-verity создаёт хеш-дерево (Merkle tree) для каждого раздела. Корень этого дерева (root hash) подписан и хранится в разделе vbmeta. При каждой операции чтения с системного раздела dm-verity сверяет блок данных с хеш-деревом. Если блок был изменён, операция чтения возвращает ошибку, и система может перейти в аварийный режим или заблокировать загрузку.

История и развитие

Android Verified Boot (AVB)

Технология Verified Boot в Android прошла несколько этапов эволюции.

  • Android 4.4 (KitKat) — dm-verity: Впервые появилась поддержка dm-verity для проверки целостности системного раздела. Однако на этом этапе проверка была опциональной и не была обязательной для производителей.
  • Android 5.0 (Lollipop) — Verified Boot: Google ввела обязательную верификацию загрузчика и системного раздела для всех устройств, поставляемых с Google Mobile Services. Это стало первым шагом к созданию целостной цепочки доверия.
  • Android 7.0 (Nougat) — Android Verified Boot 2.0 (AVB): Была внедрена новая спецификация AVB, которая унифицировала и упростила процесс верификации. AVB 2.0 ввела раздел vbmeta, который содержит подписи для всех остальных разделов (boot, system, vendor и т.д.). Это позволило производителям легко добавлять поддержку Verified Boot на свои устройства.
  • Android 10 — AVB на уровне загрузчика: В Android 10 Google перенесла часть логики AVB в загрузчик, что сделало процесс верификации более безопасным и независимым от ядра.
  • Android 12 и новее — Virtual A/B и AVB: Внедрение виртуальных разделов A/B (Virtual A/B) потребовало адаптации AVB для работы с динамическими разделами. Verified Boot стал неотъемлемой частью системы обновлений OTA (over-the-air).

Chrome OS и Chromium OS

В Chrome OS Verified Boot реализован по схожему принципу, но с некоторыми особенностями. Система использует два набора разделов (A/B) для обновлений. При загрузке загрузчик проверяет подпись ядра и корневой файловой системы. В отличие от Android, Chrome OS не использует dm-verity для системного раздела, а полагается на проверку подписи всего образа. Если проверка не удалась, устройство переходит в режим восстановления (recovery mode).

Классификация

Verified Boot можно классифицировать по нескольким признакам:

  • По степени строгости:
  • Полный Verified Boot: Требует проверки всех компонентов от загрузчика до системных разделов. При любой ошибке загрузка блокируется.
  • Частичный Verified Boot: Проверяет только загрузчик и ядро, но не системные разделы (например, в некоторых старых версиях Android).
  • По реализации:
  • Аппаратный Verified Boot: Использует выделенный аппаратный модуль (например, Trusted Platform Module (TPM) или Secure Element) для хранения ключей и выполнения криптографических операций.
  • Программный Verified Boot: Реализуется исключительно на уровне загрузчика и ядра, без использования специализированного оборудования.
  • По платформе:
  • Android Verified Boot (AVB): Специфическая реализация для Android.
  • Chrome OS Verified Boot: Реализация для Chrome OS.
  • UEFI Secure Boot: Реализация для x86-совместимых ПК, которая является частью спецификации UEFI.

Применение

Verified Boot широко применяется в различных устройствах и системах:

  • Мобильные устройства: Смартфоны и планшеты на Android. Verified Boot является обязательным требованием для сертификации Google Mobile Services.
  • Ноутбуки и Chromebook: Устройства на Chrome OS и Chromium OS.
  • Встраиваемые системы: Промышленные контроллеры, медицинское оборудование, автомобильные информационно-развлекательные системы, где безопасность и целостность ПО критичны.
  • Серверы и облачные платформы: Некоторые дистрибутивы Linux (например, Fedora, Ubuntu) поддерживают UEFI Secure Boot, что является аналогом Verified Boot для x86-архитектуры.

Критика и ограничения

Несмотря на свою эффективность, Verified Boot имеет ряд ограничений и подвергается критике:

  • Сложность реализации: Требует от производителей тщательной настройки цепочки доверия и управления ключами. Ошибки в реализации могут привести к уязвимостям.
  • Зависимость от производителя: Пользователь не может изменить или отключить Verified Boot без потери гарантии или возможности загрузки устройства. Это ограничивает свободу пользователя (например, при установке кастомных прошивок).
  • Уязвимости в цепочке доверия: Если злоумышленник получает доступ к аппаратному корню доверия или к закрытому ключу производителя, вся система безопасности рушится.
  • Проблемы с обновлениями: В некоторых случаях Verified Boot может блокировать установку неофициальных или модифицированных обновлений, что может быть проблемой для пользователей, желающих продлить срок службы устройства.
  • Отсутствие защиты от атак на уровне ядра: Verified Boot проверяет целостность загрузочного образа, но не защищает от уязвимостей в самом ядре или драйверах, которые могут быть использованы после загрузки.

Интересные факты

  • В Android Verified Boot используется механизм «rollback protection» (защита от отката), который предотвращает установку более старой, потенциально уязвимой версии прошивки.
  • Для разблокировки загрузчика на устройствах Android (что позволяет устанавливать кастомные прошивки) необходимо сбросить устройство до заводских настроек (factory reset). Это делается для предотвращения атак, при которых злоумышленник, получив физический доступ к устройству, мог бы разблокировать загрузчик и установить вредоносное ПО.
  • В Chrome OS Verified Boot используется «verified boot with recovery»: если проверка не удалась, устройство автоматически загружается в режим восстановления, где пользователь может восстановить систему с помощью USB-накопителя или сетевого образа.

Источники

  • Документация Android Open Source Project (AOSP) по Android Verified Boot (AVB)
  • Документация Chromium OS по Verified Boot
  • Спецификация UEFI Forum по Secure Boot
  • Статьи и исследования в области безопасности мобильных и встраиваемых систем

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →