Статус и подготовка сетки

Новая концепция, называемая режимом загрузки SDV (SDV Boot Mode ), который может быть либо заблокированным, либо разблокированным, определяет поведение агента обнаружения служб SDV в виртуальной машине SDV при попытке подключения к другим агентам обнаружения служб (работающим в других виртуальных машинах SDV) для создания защищенной сети. Она аналогична существующей концепции состояния устройства из Android Verified Boot.

Режим загрузки SDV используется при создании хранилища доверенных сертификатов виртуальной машины транспортного средства или при его обновлении.

Поведение защищенной сети SDV

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

Автомобиль попадает в руки владельца только тогда, когда его сетка находится в состоянии «Нормальное». Переход из состояния «Нормальное» в состояние «Предупреждение» без вмешательства диагностики невозможен. Состояние «Предупреждение» в производственной среде (например, вне среды разработки/отладки) возникает только во время инициализации.

«Фатальная ошибка» — это фундаментальный сбой, аналогичный ошибке проверки подписи образа system_ext в загрузчике Android. Если переход SDV Mesh из «Нормального» состояния в «Фатальное» произошел исключительно из-за обновления по воздуху (OTA), это обновление будет считаться некорректным, и вы вернетесь к исходной «Нормальной» версии.

В следующих разделах эти штаты описаны более подробно.

Нормальный

  • С точки зрения обнаружения служб, загрузка системы является SECURE .
  • Service Discovery подключается только к тем узлам, которые, по его мнению, загрузились безопасно, и, следовательно, считает, что защищенная сеть SDV Secure Mesh, частью которой он является, также является безопасной.

Предупреждение

  • Загрузка системы могла быть нарушена, поскольку некоторые проверки отключены.
  • Service Discovery устанавливает соединение только с узлами, у которых также отключены те же проверки. Таким образом, он является частью защищенной сети SDV Secure Mesh с теми же свойствами безопасности, что и сам.
  • Процесс Peer Boot мог завершиться успешно или неуспешно — проверить это невозможно из-за локальных сбоев/отключений.
  • Вне контекста разработки это имеет следующие последствия:
    • Данные пользователя не должны быть доступны. То есть, они не должны передаваться или подвергаться воздействию в процессе обмена данными через защищенное соединение SDV.
    • В этом состоянии сети должны быть доступны только те сервисы, которые необходимы для обеспечения потоков предоставления ресурсов.

фатальная

  • Критическая ошибка на этапе загрузки системы.
  • По меньшей мере одна фундаментальная ошибка или сбой препятствует агенту обнаружения служб установить сеть. Локальные службы не могут взаимодействовать с удаленными службами.
  • С точки зрения обнаружения служб, загрузка системы НЕБЕЗОПАСНА.

Режим загрузки SDV

Режим загрузки SDV имеет два возможных значения: UNLOCKED и LOCKED . В контексте создания сети обнаружения служб (Service Discovery mesh) режим LOCKED означает, что ошибки проверки являются критическими, тогда как в режиме UNLOCKED — нет.

Обратите внимание, что режим загрузки SDV отличается от состояния устройства Android (также известного как режим AVB). Режим загрузки SDV определяет поведение SDV Secure Mesh и то, являются ли ошибки подключения к сети критическими. Режим AVB определяет, являются ли проверки, выполняемые загрузчиком Android, критическими.

СОСТОЯНИЕ Режим загрузки SDV
РАЗБЛОКИРОВАНО ЗАБЛОКИРОВАНО
Локальное хранилище доверенных сертификатов VVM пусто. Предупреждение фатальная
Отсутствует локальная цепочка DICE. фатальная фатальная
Сбой локальной проверки цепочки DICE Предупреждение фатальная
Сопоставление локального режима SDV и AVB См. таблицу
Сравнение значений режима удаленного устройства См. таблицу
Ошибка сопоставления удаленного uds_pubs Предупреждение фатальная
Сбой удаленной проверки цепочки DICE (с использованием политик DICE ) Предупреждение фатальная
Сбой подтверждения удаленной аутентификации. фатальная фатальная

Сопоставление локального режима SDV и AVB

В таблице ниже показано, как режим AVB и режим загрузки SDV влияют на поведение защищенной сети SDV . Цвета соответствуют определениям в разделе «Интеграция со специфическими функциями Android» документации AVB.

Режим AVB x Режим загрузки SDV Режим загрузки SDV
РАЗБЛОКИРОВАНО ЗАБЛОКИРОВАНО
AVB заблокирован Зеленый Предупреждение Нормальный
Желтый фатальная фатальная
AVB разблокирован Апельсин Предупреждение фатальная

Значение режима устройства

В цепочке DICE каждый сертификат CDI имеет значение режима . Оно используется для описания состояния безопасности соответствующего уровня на основе входных данных конфигурации. Для выражения состояния безопасности всего программного обеспечения на устройстве определяется значение режима устройства (Device Mode Value) , которое выводится из значений режима всех этапов CDI цепочек DICE, относящихся к данной виртуальной машине SDV (например, Android HLOS и Secure World), и определяется следующим образом:

enum DeviceMode {
  NotConfigured = 0,
  Recovery = 1,
  Debug = 2,
  Normal = 3,
}

Алгоритм

  1. Пусть deviceMode будет DeviceMode::Normal
  2. Пусть diceChainList — список цепочек DICE, относящихся к виртуальной машине SDV.
  3. Для каждой diceChain в diceChainList :
    1. Пусть cdiList — список сертификатов CDI в diceChain :
    2. Для каждого cdiCert в cdiList :
      1. Пусть cdiDeviceMode — это режим DeviceMode , соответствующий параметру cdiCert.mode .
      2. Установите deviceMode равным min(deviceMode, cdiDeviceMode) .
  4. Возвращает deviceMode .

Сравнение значений режима удаленного устройства

Агент обнаружения служб будет подключаться только к тем агентам, у которых значение режима устройства совпадает с его собственным.

Значение параметра «Режим устройства» гарантирует, что в сетке не может быть элементов с различными свойствами безопасности. Таким образом, результирующая сетка имеет единый уровень безопасности для всех своих элементов.

Значение режима устройства Удаленный
Не настроено Отлаживать Восстановление Нормальный
Местный Не настроено фатальная фатальная фатальная фатальная
Отлаживать фатальная Предупреждение фатальная фатальная
Восстановление фатальная фатальная Предупреждение фатальная
Нормальный фатальная фатальная фатальная Нормальный

Процесс заводской настройки

Это процесс подготовки ресурсов на сборочной линии автомобиля, где предполагается недоступность инфраструктуры открытых ключей.

Этот процесс зависит от 32-байтового значения, хранящегося в однократно программируемой (OTP) памяти под названием VVMFactoryTrust. Это значение, если оно установлено, передается ядру в качестве параметра с именем androidboot.sdv.vvmfactorytrust .

Все виртуальные машины в блоке управления должны иметь одинаковый режим загрузки SDV и значение VVMFactoryTrust.

Начальное состояние

Все блоки управления двигателем (ЭБУ) изначально разблокированы в режиме загрузки SDV, с пустыми полями VVMFactoryTrust и VVMTrustStore , за исключением, возможно, любых uds_certs присутствующих в VVMTrustStore.

На рисунке 1 представлен пример, где три виртуальные машины SDV (VM-A, VM-B и VM-C) распределены в двух отдельных блоках управления (ECU-0 и ECU-1).

Шаг 1: Запустите sdv_provisioning_tool

Запустите все виртуальные машины со всех блоков управления.

На каждой виртуальной машине:

  • Запустите sdv_provisioning_tool

    • Инструмент взаимодействует с локальным агентом Service Discovery и ожидает от него сигнала о завершении создания защищенной сети SDV Secure Mesh и записи агентом списка открытых ключей UDS в файл /vvmtruststore/uds_pubs .
    • В этом случае инструмент получает хеш только что записанного файла /vvmtruststore/uds_pubs и выводит его.

Шаг 2: Напишите VVMFactoryTrust

На одном виртуальном модуле каждого блока управления:

  • Запишите хеш /vvmtruststore/uds_pubs , полученный с помощью sdv_provisioning_tool на предыдущем шаге, в объект VVMFactoryTrust. Способ записи зависит от производителя оборудования/поставщика и, следовательно, выходит за рамки данной спецификации.

Шаг 3: Перезагрузка в режиме SDV Boot Mode Locked

Перезагрузите все виртуальные машины на всех ЭБУ в режиме блокировки загрузки SDV.

Агент обнаружения служб доверяет виртуальным машинам в блоках управления (ECU), использующим открытые ключи UDS, перечисленные в uds_pubs поскольку хеш этого файла совпадает с VVMFactoryTrust.

Поскольку блоки управления двигателем (ECU) были настроены одновременно, они постоянно связаны между собой и, следовательно, с точки зрения проверки цепочки DICE их можно рассматривать как единое целое.

Процесс замены деталей

Это процедура инициализации в авторизованном автосервисе или автомастерской, где неисправный блок управления двигателем (ЭБУ) необходимо заменить новым, не прошедшим инициализацию.

Этот процесс зависит от сертификатов UDS, выданных либо непосредственно корневым центром сертификации, указанным в vvmconfig , либо косвенно, через цепочку промежуточных центров сертификации.

Начальное состояние

Все виртуальные машины уже настроены на заводе и работают с заблокированным режимом загрузки SDV.

На рисунке 5 показан пример неисправности блока управления ECU-0, требующей ремонта.
заменено.

Шаг 1: Установите новый блок управления двигателем (ЭБУ).

Установите новый блок управления двигателем (ЭБУ), который будет находиться в пустом, не запрограммированном состоянии.

На рисунке 6 показано, что при включении питания блока управления ECU-2 (заменяемого блока управления) отображаются две несовместимые защищенные сети SDV: одна в состоянии предупреждения, а другая в нормальном состоянии. Обе защищенные сети SDV являются неполными.

Шаг 2: Перезагрузка в разблокированном режиме загрузки SDV.

Перезагрузите все виртуальные машины всех ЭБУ в разблокированном режиме загрузки SDV.

На рисунке 7 виртуальные машины VM-B и VM-C затем присоединяются к предупреждающему защищенному сетевому соединению SDV Secure Mesh, которое теперь завершено.

Шаг 3: Запустите sdv_provisioning_tool

На каждой виртуальной машине запустите sdv_provisioning_tool .

Инструмент взаимодействует с локальным агентом Service Discovery и ожидает от него сигнала о завершении создания защищенной сети SDV Secure Mesh и записи агентом списка открытых ключей UDS в файл /vvmtruststore/uds_pubs .

В этом случае инструмент получает хеш только что записанного файла /vvmtruststore/uds_pubs и выводит его, но этот хеш не используется в данном процессе.

Шаг 4: Установка сертификатов UDS

  • Извлеките файл /vvmtruststore/uds_pubs из любой виртуальной машины SDV. Неважно, какой именно, поскольку он будет одинаковым для всех виртуальных машин в одной и той же защищенной сети SDV.
  • Получите сертификаты подготовки для всех открытых ключей UDS, перечисленных в файле /vvmtruststore/uds_pubs .
    • Обычно это означает отправку данных на удаленный сервер, на котором сертификаты либо уже хранятся, либо будут сгенерированы путем проверки полученных открытых ключей по базе данных известных открытых ключей UDS. Эта база данных, как правило, создается на основе открытых ключей UDS, извлеченных в процессе производства ЭБУ.
  • Запишите данные в каталог /vvmtruststore/uds_certs для каждой виртуальной машины SDV.

Шаг 5: Перезагрузка в заблокированном режиме загрузки SDV.

Перезагрузите все виртуальные машины, заблокировав режим загрузки SDV.

Если по какой-либо причине защищенная сетка SDV не заполнена полностью, вернитесь к шагу 2 .