Новая концепция, называемая режимом загрузки 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,
}
Алгоритм
- Пусть
deviceModeбудетDeviceMode::Normal - Пусть
diceChainList— список цепочек DICE, относящихся к виртуальной машине SDV. - Для каждой
diceChainвdiceChainList:- Пусть
cdiList— список сертификатов CDI вdiceChain: - Для каждого
cdiCertвcdiList:- Пусть
cdiDeviceMode— это режимDeviceMode, соответствующий параметруcdiCert.mode. - Установите
deviceModeравнымmin(deviceMode, cdiDeviceMode).
- Пусть
- Пусть
- Возвращает
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и выводит его.
- Инструмент взаимодействует с локальным агентом Service Discovery и ожидает от него сигнала о завершении создания защищенной сети SDV Secure Mesh и записи агентом списка открытых ключей UDS в файл
Шаг 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 .