Создание защищенных пользовательских приложений на базе СнК SmartFusion2 компании Microsemi. Часть 7. Доверенное программирование микросхем в недоверенном окружении. Общие положения

№ 2’2018
PDF версия
Одной из важнейших задач жизненного цикла защищенных приложений является возможность обновления программного обеспечения в полевых условиях. Для выполнения этой задачи существует ряд технологий, например технология доверенной загрузки, которую автор описывал в предыдущих публикациях [12, 13]. В данной и следующей статьях рассмотрено решение компании Microsemi, называемое «доверенное программирование микросхем в недоверенном окружении» (Secure Production Programming Solution, SPPS). Оно основано на использовании аппаратных модулей криптографической защиты (Hardware Security Module, HSM1) и позволяет в полевых условиях обновлять критичное ПО (firmware) для микроконтроллеров и конфигурацию ПЛИС. Кроме того, технология SPPS разрешает ограничить количество микросхем, запрограммированных одной и той же модификацией внутреннего ПО (firmware), предварительно заданным значением. Таким образом, в заводских условиях с помощью технологии SPPS может быть решена задача защиты устройств от клонирования.

Что такое SPPS

Технология доверенного производственного программирования (Secure Production Programming Solution, SPPS) является решением, предоставляемым компанией Microsemi своим пользователям для защищенного программирования микросхем семейств SmartFusion2/IGLOO2 в недоверенном окружении.

Инженер по эксплуатации (operation engineer, OE) использует SPPS, чтобы подготовить задачи по защищенному программированию, основываясь на информации о проекте, полученной от проектировщика ПЛИС (design engineer) и прикладного программиста (firmware engineer). Созданная задача по защищенному программированию выполняется производителем оборудования как часть SPPS на стороне контрактного производителя (contract manufacturer, CM).

Технология SPPS при производстве в недоверенном окружении или при наличии злоумышленников (insider) обеспечивает следующие свойства:

Гарантирует конфиденциальность пользовательской разработки и ключей защиты (security key), применяемых в процессе доверенной загрузки первичного ключа.

Предотвращает неавторизованное программирование пользовательского проекта с помощью механизма защиты от перепроизводства (overbuild protection), таким образом предотвращая несанкционированное клонирование (overbuilding) электронных систем.

Доверенная загрузка первичного ключа

Доверенная загрузка первичного ключа (secure initial key loading) позволяет программировать настройки защиты (security settings), такие как ключи шифрования (encryption keys), ключи доступа (pass keys) и параметры блокировки доступа (security locks) в чистое устройство. Данные настройки защищаются с помощью уникального для каждой микросхемы заводского ключа (factory key), программируемого в микросхему семейства SmarFusion2/IGLOO2 при ее изготовлении. Это достигается использованием протокола кода авторизации (Authorization Code Protocol), описанного в разделе «Протокол кода авторизации», встроенного в микросхемы семейства SmarFusion2/IGLOO2 компании Microsemi. При программировании микросхем протоколу кода авторизации (Authorization Code Protocol) требуется поддержка аппаратного модуля криптографической защиты (Hardware Security Module, HSM). Дополнительную информацию о применении HSM можно найти в разделе «Модуль аппаратной защиты (HSM), используемый для SPPS».

Доверенная загрузка первичного ключа (Secure Initial Key Loading) обеспечивает сильную криптографическую защиту пользовательской разработки и настроек защиты (security settings), программируемых в чистую микросхему. Программирование выбранных инженером настроек защиты (security settings) отключает режим применения по умолчанию заводского ключа, предоставляя пользователю исключительный доступ к программируемой микросхеме. Если заводской режим отладки (factory test mode) отключен пользовательскими настройками безопасности, то никто не может получить доступ к микросхеме без предъявления надлежащих учетных данных для ее системы защиты, даже сотрудники компании Microsemi.

Предотвращение перепроизводства (overbuilding)

Механизмы защиты от перепроизводства (overbuild) позволяют пользователю ограничить количество микросхем, запрограммированных специфическим проектом. Максимальное количество разрешенных для программирования микросхем и счетчик уже запрограммированных микросхем хранятся в физическом модуле аппаратной криптографической защиты (HSM) и не могут быть физически клонированы. Модуль HSM осуществляет защиту от перепроизводства (overbuild) при программировании, как составную часть выполнения протоколов защиты.

 

Использование аппаратных модулей криптографической защиты

Аппаратные модули криптографической защиты (Hardware Security Module, HSM) представляют собой физические вычислительные системы, предназначенные для защиты и управления пользовательской информацией. Они обеспечивают исполнение алгоритмов, гарантирующих использование этих ключей внутри защищенной границы (security boundaries), предоставляемой модулем. Модули HSM защищают обрабатываемую ими информацию, размещаются в специальных опломбированных корпусах и имеют различные механизмы реакции на несанкционированный доступ и защиты от несанкционированного доступа.

Как правило, модуль HSM подключается к обычному компьютеру, который играет роль сервера приложений (HSM Server). Процедура выполняется с помощью интерфейсов USB, PCIe или Ethernet. Пространство для хранения пользовательских данных в модуле ограничено, поэтому большинство данных, применяемых HSM, хранится на стороне обычного компьютера в зашифрованном виде. Внутренняя память модуля содержит ключи шифрования для защиты внешних данных и данных, которые должны быть физически не клонируемы, такие как счетчики защиты от перепроизводства (overbuild protection counter).

Технология SPPS предусматривает два типа HSM: пользовательский HSM (User HSM, U‑HSM) и заводской HSM (Manufacturer HSM, M‑HSM).

 

Функции и службы SPPS

Первичное назначение SPPS — возможность защищенного (доверенного) программирования микросхем SmartFusion2/IGLOO2 в незащищенном окружении. Эта технология основывается на использовании HSM (HSM flow). Однако первичный инструментарий, созданный для SPPS, Job Manager, может применяться и для незащищенного программирования (non-HSM flow), которое является тем же самым, что и обычное программирование, поддерживаемое средой разработки Libero SoC. В случае использования технологии non-HSM flow начальные ключи загружаются с помощью режима загрузки ключей и мастер-ключа микросхемы (Key Loading Key, KLK), поддерживаемого для программирования микросхем SmartFusion2/IGLOO2. Режим управления ключами KLK удобен для программирования в доверенном окружении или если защищенность не требуется.

Следующие поддерживаемые технологией SPPS общие функции доступны как в режиме HSM flow, так и в режиме non-HSM flow:

  • Генерация бинарных файлов (bitstream) для программирования и задач для программирования за пределами инструментария Libero SoC.
  • Генерация первичных бинарных файлов (Master bitstream) для программирования микросхем (для начальной загрузки ключей).
  • Генерация бинарных файлов обновлений (Update bitstream) для обновления конфигурации ПЛИС (FPGA Fabric) и/или энергонезависимой памяти (eNVM) уже запрограммированной микросхемы.
  • Перезапись клиентских данных, хранящихся в энергонезависимой памяти (eNVM).
  • Выбор клиентов для энергонезависимой памяти (eNVM Client) для создаваемых бинарных файлов (bitstream).
  • Перезапись политик безопасности (Security settings).
  • Генерация каталога для записи SPI flash-файла.
  • Основная технология SPPS (HSM flow) предполагает наличие HSM-серверов на стороне клиента, а в большинстве случаев также и на стороне производителя.

Функции, доступные только в режиме HSM flow:

  • Генерация пользовательского ключа, защищенного HSM:
    • пользователь не имеет доступа к шифрованию и передаче значений ключей, а также к инсайдерам;
    • сгенерированные HSM-ключи не появляются на управляющей рабочей станции, за исключением ключей в зашифрованном виде.
  • Доверенная загрузка первичного ключа (Secured Initial Key Loading) посредством протокола кода авторизации (Authorization Code Protocol), раздел «Протокол кода авторизации»:
    • начальное программирование ключа проекта (project key), одного для всех микросхем;
    • начальное программирование ключей, уникальных для каждой микросхемы (per-device key).
  • Защита от перепроизводства (overbuild).
  • Генерация и проверка подлинности сертификата соответствия (Certificates of Conformance, CoC) запрограммированного проекта.
  • Проверка подлинности микросхем компании Microsemi.

 

Экосистема SPPS

В состав SPPS входят инструментарий и серверы, изображенные на рис. 1 и описанные в таблице.

Технология доверенного программирования SPPS компании Microsemi

Рис. 1. Технология доверенного программирования SPPS компании Microsemi

Таблица. Инструментарий и серверы, использующиеся в технологии доверенного программирования в не доверенном окружении (SPPS)

Инструментарий

Описание

Среда разработки Libero SoC

Разработчик создает и экспортирует проект Libero SoC в файл контейнера
(Job Data Container, JDC).

Job Manager

Используется инженером по эксплуатации (operation engineer, OE)
для генерации задач (Job) по программированию с помощью HSM и без HSM
на основе JDC-файла, принятого от Libero SoC.
Инструмент Job Manager позволяет также инженеру по эксплуатации (OE) модифицировать некоторые функции проекта, такие как содержимое энергонезависимой памяти (eNVM) и политики безопасности (security settings).

Утилита
FlashPro Express

Используется при промышленном программировании микросхем с помощью задач программирования (programming jobs), созданных инструментом Job Manager.

Сервер U-HSM

Используется инструментом Job Manager для создания защищенных задач
(secured jobs) для режима HSM flow. Кроме того, позволяет инженеру по эксплуатации (OE) исполнять в тестовом режиме задачи программирования (programming job), созданные инструментом FlashPro Express. Инструмент Job Manager применяет пользовательский АМЗ (U-HSM) для проверки результата выполнения задачи программирования (programming job).

Сервер M-HSM

Используется утилитой FlashPro Express для генерации данных протокола и значений ключей для микросхемы (которые получаются из серийного номера микросхемы и базового значения пользовательского ключа) в процессе программирования. Заводской АМЗ (M-HSM) обеспечивает защиту от перепроизводства (overbuild).

Проект Firmware

Разработчики ПО (firmware) могут генерировать новые образы firmware, которые затем передаются инженерам по эксплуатации (OE), те с их помощью обновляют файлы образа внутри инструмента Job Manager посредством функции обновления энергонезависимой памяти (eNVM update).

 

Производственное программирование

Блок-схема процесса производственного программирования (programming production flow) Microsemi показана на рис. 1. Процесс поддерживает простейшие задачи программирования (programming jobs) и двоичные файлы (bitstream), экспортируемые непосредственно из инструментария Libero SoC, представленного синими компонентами на рис. 1. Основанный на Libero SoC процесс производства поддерживает только технологию незащищенного программирования, основанную на режиме ключа KLK. Более подробную информацию можно получить в «Руководстве пользователя для среды разработки Libero SoC» [2].

Инструмент Job Manager расширяет эти возможности, позволяя осуществлять генерацию двоичного файла (bitstream) и задач программирования (programming job) за пределами инструментария среды разработки Libero SoC, и поддерживает технологию доверенного программирования в недоверенном окружении (SPPS), представленную зелеными компонентами на рис. 1.

Двоичные файлы образов для программирования (bitstream) формата STAPL, DAT и SPI программируются с помощью утилиты FlashPro, DirectC или Silicon Sculptor. Файл STAPL можно использовать JTAG-программаторами сторонних производителей для программирования устройств Microsemi. Задачи программирования (programming jobs) поддерживаются только расширениями FlashPro Express.

Основной процесс технологии SPPS основан на применении АМЗ (HSM) на стороне разработчика (Operation site) и на стороне контрактного производителя (Production site). Он поддерживает расширенные модели описанного далее производственного программирования.

 

Основная последовательность этапов SPPS

Основная цель технологии SPPS — поддержка доверенного программирования чистых микросхем (начальное программирование), осуществление защиты от перепроизводства и последовательность обновления firmware уже запрограммированных микросхем. В этом процессе вся определенная пользователем информация о проекте, относящаяся к массиву ПЛИС (FPGAFabric), энергонезависимой памяти (eNVM) и защите (Security), экспортируется из среды разработки Libero SoC посредством файла JDC и передается инженеру по эксплуатации (OE), который использует утилиту Job Manager для создания и передачи в производство задачи программирования посредством АМЗ (HSM Programming Job). На этом этапе в утилите Job Manager можно обновить клиентские данные для энергонезависимой памяти (eNVM), обычно предоставляемые (но не ограничиваемые этим) командой разработчиков firmware. Все операции, относящиеся к генерации и применению ключей шифрования, передаче ключей и других защищенных данных, выполняются с помощью клиентского АМЗ (User HSM, U‑HSM). На производстве, с использованием FlashPro Express, осуществляются предоставленные АМЗ (HSM) задачи программирования (Programming Jobs). Заводской АМЗ (Manufacturer HSM, M‑HSM) обслуживает по защищенному протоколу запросы от FlashPro Express и реализует политику защиты от перепроизводства (overbuild protection policy). Доказательства результатов программирования, такие как сертификаты соответствия (Certificates of Conformance), сгенерированные запрограммированными микросхемами, и сертификаты завершения задач, отправляются обратно инженерам по эксплуатации (OE) и могут быть проверены при помощи пользовательского АМЗ (U‑HSM).

С точки зрения безопасности проекта области разработки (Design area) и функционирования (Operation area) всегда рассматриваются в качестве доверенного окружения. Инженер по эксплуатации (OE) может модифицировать настройки безопасности (security setting), полученные из Libero SoC, в JDC-файле. Производство, обычно основанное на АМЗ (HSM-based) потоке SPPS, рассматривается как недоверенная область по отношению к проекту (design), защите (security) и выполнению задач (job execution).

На рис. 2 показана основная последовательность действий в технологии SPPS.

Основной поток SPPS

Рис. 2. Основной поток SPPS

Передача проекта из Libero SoC

Разработчик экспортирует информацию о проекте в утилиту Job Manager, используя инструментарий Export Job Manager Data из комплекта Libero SoC. Инструментарий для экспорта позволяет выбрать экспортируемые компоненты защиты (Security), массива ПЛИС (FPGA Fabric) или энергонезависимой памяти (eNVM) и имеет как графический интерфейс (GUI), так и интерфейс командной строки (TCL). Дополнительную информацию можно получить из «Руководства пользователя среды разработки Libero SoC» [2].

Экспорт компонентов защиты (Security Export)

Информация о защите включает заданные пользователем ключи защиты (security keys), блокировки (locks) и другие настройки, выбираемые в менеджере политик безопасности (Security Policy Manager, SPM) среды разработки Libero SoC. Если пользовательские настройки безопасности (security settings) не определены, то файл JDC будет экспортироваться с настройками безопасности по умолчанию, принятыми для имеющейся в проекте микросхемы (device security settings).

Экспортированные настройки безопасности (security settings) могут быть изменены инженером по эксплуатации (OE) в утилите Job Manager в зависимости от специфического сценария работы.

Экспорт компонент массива ПЛИС

Компоненты массива ПЛИС (FPGA Fabric) экспортируются и применяются в утилите Job Manager в неизменном виде (as is).

Экспорт данных для энергонезависимой памяти

Данные для энергонезависимой памяти (eNVM), экспортируемые через файл JDC, включают всех клиентов eNVM, доступных в проекте Libero SoC. Инженер по эксплуатации (OE) может модифицировать данные клиента eNVM в пределах проекта Job Manager. Этот механизм предназначен для поддержки таких случаев, как последовательность разработки/обновления firmware, описанная в следующем разделе. Утилита Job Manager может модифицировать только данные клиента eNVM, но не конфигурацию клиента eNVM, которая управляется разработчиком в проекте Libero SoC.

 

Передача firmware

Поскольку начальная версия firmware для микросхем Microsemi SmartFusion2 обычно включена во вновь создаваемые проекты Libero SoC и экспортируется из Libero SoC через файл JDC, то возможно создавать пре- или постпродукционные обновления firmware непосредственно в меню Operation. Файл с обновлением firmware экспортируется с помощью инструментария разработки firmware, такого как IAR или Soft Console, в одном из форматов, поддерживаемых Libero SoC [2]. Новые данные firmware принимаются и применяются утилитой Job Manager посредством обновления энергонезависимой памяти (eNVM), которое выполняется командой eNVM Update.

 

Данные для программирования и инициализация Bitstream

Данные для программирования создаются инженером по эксплуатации (OE) внутри проекта для Job Manager из данных проекта, полученного из Libero SoC через JDC-файл. Их основная цель — обеспечить задачи программирования (programming job) двоичными данными (bitstreams) в соответствии с выбранным сценарием программирования (начальное программирование, обновление и т. п.).

Создание данных для программирования посредством импорта файла JDC

Для создания данных для программирования (Programming Data) необходимо, чтобы пользователь указал конкретный JDC-файл. Кроме того, в режиме HSM flow всем ключевым материалом управляет U‑HSM на стороне функционирования устройства. Поэтому для данных, требующихся для программирования (Programming Data), следует задать файл с набором ключей (KeySet file), предварительно созданный U‑HSM. Файлы KeySet находятся в хранилище, общем для различных проектов Job Manager, что обеспечивает совместное использование ключей. Дополнительную информацию об управлении файлами KeySet можно получить из документа [3].

Модификация данных проекта

Утилита Job Manager позволяет инженеру по эксплуатации (OE) модифицировать важные данные проекта и поддерживает следующие сценарии использования:

  • обновление энергонезависимой памяти (eNVM);
  • перезапись настроек безопасности (Security settings).

Обновление энергонезависимой памяти

Существует два основных способа обновления энергонезависимой памяти eNVM:

  1. Инженер по эксплуатации получает обновления от команды разработчиков firmware и обновляет firmware, используя проект Job Manager.
  2. Инженер по эксплуатации выполняет пользовательское обновление имеющихся клиентов энергонезависимой памяти (eNVM). В качестве примеров можно привести программирование в микросхему пользовательской информации или информации, которая становится доступной или изменяется уже после того, как микросхема изначально запрограммирована.

Обновление eNVM применяется к существующим клиентам в загруженном в микросхему проекте. Размер обновления не должен превышать размер клиента в изначальном проекте, но может быть меньше его. Это позволяет разработчикам резервировать в Libero SoC больше места для клиента, с учетом потенциального увеличения размера (firmware size).

Перезапись политик безопасности

Этот сценарий использования разрабатывался для того, чтобы дать инженеру по эксплуатации (OE) полный контроль над политиками безопасности (security), запрограммированными в микросхему. Пользователь может импортировать файл менеджера политик безопасности (Security Policy Manager, SPM), созданный Libero SoC в разделе Programming Data проекта Job Manager. Этот новый файл SPM, называемый «Перезапись политик безопасности» (Security Overwrite), объединяет все настройки безопасности (security settings) и импортируется в Programming Data посредством файла JDC. Значения ключей всегда берутся из файла KeySet, связанного с данными для программирования (Programming Data), в то время как все ключи защищены HSM.

Инициализация главного двоичного файла для программирования (Master Programming Bitstream)

Главный двоичный файл для программирования (Master Programming Bitstream) похож на главный двоичный файл (Master bitstream), используемый в Libero SoC, но основан на защищенном ключе, загружаемом по протоколу кода авторизации (Authorization Code Protocol), описанному в разделе «Протокол кода авторизации», который обеспечивает доверенную загрузку начального ключа и защиту от перепроизводства (overbuilding).

Инженер по эксплуатации (OE) использует Master bitstream для программирования защиты (security) и любых других опциональных компонентов bitstream (FPGA Fabric, eNVM) в чистую микросхему, в которую не запрограммирована пользовательская политика безопасности (user security). Инициализация Master bitstream автоматически включает данные для всех протоколов, сгенерированные пользовательским АМЗ (U‑HSM) на стороне Job Manager. Затем эти данные передаются и используются заводским АМЗ (M‑HSM) на стороне FlashPro Express (производство).

Двоичный файл Master bitstream программирует настройки защиты (security settings), основанные на информации от SPM, в данных для программирования (Programming Data). Если данные для программирования (Programming Data) требуют перезаписать политики безопасности (Security Overwrite), то операция перезаписи заменяет менеджер политик безопасности (SPM) из исходного проекта. Значения ключей всегда берутся из файла KeySet, связанного с данными для программирования (Programming Data).

При использовании Master bitstream в технологии SPPS в режиме HSM flow необходимо отметить следующее:

  1. После загрузки начального ключа (initial key) Master bitstream отключает все режимы с заводскими ключами по умолчанию (Factory Default Key modes) изаводскими паролями (Factory pass keys). Это предоставляет пользователю исключительное управление доступом к микросхеме через интерфейсы программирования с пользовательским паролем (user pass key) и ключами шифрования (user encryption keys). Следует отметить, что заданные пользователем пароль (pass key) и ключи шифрования (encryption keys) доступны только для пользовательского АМЗ (U‑HSM). Заводской АМЗ (M‑HSM) может иметь доступ только к заданным пользователем паролям (pass keys) и ключам шифрования (encryption keys) после авторизации U‑HSM посредством Job Ticket, встроенного в Programming Job.

     Примечание. Пользователь может выбрать режим защиты доступа к отладке посредством FlashLock/UPK1 (настройка Protect factory test mode access using FlashLock/UPK1) или режим постоянной защиты доступа к отладке (настройка Permanently protect factory test mode access) в менеджере политик безопасности (Security Policy Manager, SPM).

  1. Для выполнения операции стирания (ERASE) или проверки программирования (VERIFY) с помощью Master bitstream необходим заводской АМЗ (M‑HSM). Это происходит из-за того, что после начального программирования защита микросхемы всегда заблокирована ключом UPK1. Значение ключа UPK1 всегда защищено АМЗ (HSM), и разблокировать защиту можно только посредством АМЗ (HSM) по протоколу одноразового пароля (One Time Pass Key, OTPK), который доверенным образом передает значение ключа UPK1 в микросхему.
  2. Операция программирования образом Master bitstream не может быть выполнена для запрограммированной микросхемы. Программирование защиты осуществляется только полным стиранием микросхемы с последующим ее программированием образом Master bitstream, который использовался для начального программирования.
  3. Функция стирания перед программированием (ERASE) не удаляет содержимое области энергонезависимой памяти (eNVM), запрограммированное с помощью Master bitstream. При выполнении этой операции будут стерты настройки безопасности (security settings), но содержимое энергонезависимой памяти (eNVM) останется доступным для пользователя.

Инженер по эксплуатации (OE) может выбрать любой из заданных пользователем ключей (UEK1/UPK1/UEK2/UPK2/UEK3/DPK) в качестве ключей проекта (Project Wide keys) или ключей микросхемы (Per-device keys).

Ключи проекта

Все микросхемы, программирующиеся с помощью одной и той же задачи (programming job), имеют одно и то же запрограммированное значение ключа. Такие ключи берутся из файла KeySet без изменений.

Ключи микросхемы

Если инженер по эксплуатации (OE) задает для каких-либо из ключей менеджера политик безопасности (SPM) уникальное для конкретной микросхемы значение (per-device value), то каждая микросхема обретает уникальное значение, полученное из соответствующего базового ключа из файла KeySet и серийного номера микросхемы (Device Serial Number, DSN), которую нужно запрограммировать. На этот тип распределения ключей обычно ссылаются как на протокол ключа микросхемы (Per-Device Key Protocol).

Поскольку актуальное программирование микросхемы происходит на стороне производителя (Production side), то программирующее ПО считывает DSN из микросхемы и передает на заводской АМЗ (M‑HSM). АМЗ (HSM) использует протокол Per-Device Key Protocol для передачи уникального для микросхемы ключа (per-device key). Это относится и к операциям стирания (Erase) и проверки программирования (Verify), если ключ UPK1 выбран в качестве уникального для микросхемы (per-device key).

Дополнительную информацию об использовании Master bitstream можно найти в документе [3].

Инициализация ключей UEK1/UEK2/UEK3 образа обновления

Образ обновления (update bitstream) предназначен для обновления микросхем, уже запрограммированных посредством образа Master bitstream.

Образ обновления (update bitstream) может обновить только содержимое энергонезависимой памяти (eNVM) и параметры функций в массиве ПЛИС (FPGA Fabric). Перепрограммирование политик безопасности осуществляется с помощью специального сценария, рассмотренного ранее в разделе «Инициализация Master Programming Bitstream».

В зависимости от того, будет или нет в микросхеме защищенным образом блокирована область, предназначенная для обновления, и будут ли использоваться ключи проекта (project keys) или ключи микросхемы (per-device keys), инженер по эксплуатации (OE) должен следовать одному из приведенных ниже пользовательских сценариев.

UEK1/UEK2/UEK3‑ключи проекта, нет блокировки

В этом случае все микросхемы в проекте имеют одни и те же значения ключей UEK1, UEK2 и UEK3, функция программирования целевых микросхем выполняется без проверки соответствия FlashLock/UPK1. Утилита Job Manager может генерировать автономный файл образа bitstream или задачу программирования в режиме non-HSM, для которой при программировании не требуется заводской АМЗ (M‑HSM). Однако этот сценарий предполагает, что Job Manager применяет пользовательский АМЗ (U‑HSM) для шифрования итогового образа bitstream, с помощью значения токена UEK1/UEK2/UEK3 из файла KeySet.

UEK1/UEK2/UEK3‑ключи проекта, блокировка активирована

Если функция программирования целевой микросхемы заблокирована, то заводской АМЗ (M‑HSM) должен выполнить доверенное разблокирование микросхемы, поскольку открытое (plain text) значение ключа блокировки (lock key) не может использоваться в недоверенном окружении. Этот тип образа bitstream обрабатывается методом HSM Programming Job по протоколу OTPK, который при программировании автоматически поднимается FlashPro Express.

UEK1/UEK2/UEK3‑ключи микросхемы, нет блокировки, серийный номер микросхемы (DSN) доступен  для инженера по эксплуатации (OE)

Если UEK1, UEK2 или UEK3 являются ключами микросхемы (per-device keys), целевая функция программирования не заблокирована и известен серийный номер (DSN) целевой микросхемы, то пользователь имеет возможность сгенерировать специфичный для микросхемы образ bitstream, для программирования которого в производственных условиях не требуется заводской АМЗ (M‑HSM). Этот образ bitstream можно экспортировать в виде автономного файла образа bitstream или задачи типа non-HSM Programming Job. В любом случае при экспорте образа bitstream или при добавлении микросхемы в задачу (Programming Job) необходимо предоставить серийный номер микросхемы (DSN).

UEK1/UEK2/UEK3‑ключи микросхемы, все другие случаи

Для всех других случаев, связанных с уникальными для микросхемы (per-device) ключами UEK1/UEK2/UEK3, должны использоваться заводской АМЗ (M‑HSM) и задача типа HSM Programming Job. Если функции целевой микросхемы блокированы уникальным для микросхемы (per-device) ключом UPK1, то разблокировка UPK1 выполняется доверенным образом по протоколу OTPK.

Дополнительная информация об инициализации образа bitstream в утилите Job Manager представлена в документе [3].

 

Подготовка задачи

Процедура подготовки задачи с использованием АМЗ (HSM Job Preparation) состоит из двух фаз:

  1. Создание задачи (Job Creation): настройка цепочки JTAG chain и связывание микросхемы с программируемым образом bitstream.
  2. Добавление данных АМЗ (HSM) в задачу (job) (добавление к задаче HSM Task).

Создание задачи

При создании задачи (job) пользователь задает тип производства: FlashPro Express или In-House Programming (IHP). Дополнительную информацию можно получить из документа [3].

Задача FlashPro Express

Этот тип задачи использует FlashPro Express и заводской АМЗ (M‑HSM) в последовательности действий HSM flow и основан на цепочке JTAG.

Цепочка JTAG может содержать следующие типы микросхем:

  • микросхемы Microsemi, предназначенные для программирования образами Master bitstream или Update bitstream;
  • пропускаемые микросхемы Microsemi, не предназначенные для программирования;
  • пропускаемые при программировании микросхемы сторонних производителей (не Microsemi).

Задача программирования в доверенной зоне

В общем случае задача программирования в доверенной зоне (Secured IHP job) аналогична задаче FlashPro Express Job. Основным отличием является то, что для Secured IHP job необходима только одна микросхема Microsemi, предназначенная для программирования. Это происходит потому, что фактическая настройка оборудования выполняется системой IHP.

Добавление данных HSM к задаче посредством HSM Tasks

Инженер по эксплуатации (OE) может осуществить программирование (Programming Job), обращаясь к различным контрактным производителям или отдавая весь объем производства одному контрактному производителю по частям. Инженер по эксплуатации может управлять этим процессом, используя задачи типа HSM Tasks, — например, он формирует задачу программирования (Programming Job) и затем создает и экспортирует задачи типа HSM Task для каждого производителя.

Основным назначением задач типа HSM Tasks является:

  • Предоставление доступа для выполнения задач специфическим заводским АМЗ (M‑HSM) в доверенной зоне (security world) контрактных производителей:
    • это является частью механизма защиты от перепроизводства (overbuild protection), исключающего возможность копирования задач программирования на любые другие заводские АМЗ (M‑HSM) в той же самой доверенной зоне (security world);
    • для обеспечения этого разработан специальный механизм взаимной аутентификации (handshake) между пользовательским АМЗ (U‑HSM) и заводским АМЗ (M‑HSM), который описан далее в настоящем разделе.
  • Возможность для инженера по эксплуатации (OE) ограничивать количество микросхем, подвергающихся программированию специфичными данными (для операций PROGRAM, ERASE и VERIFY), — это второй компонент механизма защиты от перепроизводства (overbuild protection).
  • Безопасная передача ключей и данных протокола для выполнения программирования с использованием заводского АМЗ (M‑HSM).

Вся относящаяся к АМЗ (HSM) информация, перечисленная выше, управляется параметрами Job Tickets, связанными с задачей HSM Task. Инженер по эксплуатации добавляет параметры Job Ticket к каждому авторизованному действию по программированию целевых микросхем (PROGRAM, ERASE, VERIFY). Таким образом, пользователь имеет возможность контролировать каждое из этих действий по отдельности. Параметры Job Ticket позволяют управлять механизмом защиты от перепроизводства (overbuild protection): инженер по эксплуатации включает или выключает защиту о перепроизводства (overbuild protection) с помощью параметров Job Ticket и определяет, как много микросхем разрешено программировать. Дополнительную информацию можно найти в документе [3].

Последовательность задач HSM Task Flow

Инженером по эксплуатации должна быть выполнена следующая последовательность шагов HSM task flow (детали приведены на рис. 2):

  1. Создать задачу HSM Task для задачи Programming Job.
  2. Создать Job Ticket для процедуры программирования образа bitstream для программирования целевой микросхемы компании Microsemi:
    • операции программирования, для которых необходима поддержка АМЗ (HSM), требуют выполнения правильного Job Ticket;
    • максимальное количество микросхем, допустимое для одной квитанции (ticket), может быть задано в самой квитанции (ticket). Для конкретной квитанции (ticket) пользователь может не включать защиту от перепроизводства (overbuild protection).
  3. Инженер по эксплуатации запускает протокол взаимной аутентификации Job Request-Reply handshake protocol между пользовательским АМЗ (U‑HSM) и заводским АМЗ (M‑HSM), чтобы привязать данные Job Ticket задачи HSM Task к конкретному физическому заводскому АМЗ (M‑HSM):
    • инженер по эксплуатации экспортирует файл с запросом Job Request из Job Manager;
    • инженер по эксплуатации передает запрос Job Request контрактному производителю (CM), вместе они договариваются о типе транспорта для передачи запроса Job Request в зависимости от конкретных обстоятельств и политик безопасности.
    • контрактный производитель загружает полученный запрос Job Request в утилиту FlashPro Express и заводской АМЗ (M_HSM) и экспортирует ответ Job Reply;
    • контрактный производитель отправляет файл ответа Job Reply обратно инженеру по эксплуатации;
    • инженер по эксплуатации импортирует полученный ответ Job Reply в задачу HSM Task на стороне Job Manager.
  4. Инженер по эксплуатации генерирует и экспортирует задачу HSM Job из задачи HSM Task и создает файл доверенного программирования SPPS Programming Job:
    • задача HSM Job может выполняться только на физическом заводском АМЗ (M‑HSM), использованном для генерации ответа Job Reply;
    • сгенерированная задача (Programming Job) отправляется контрактному производителю для выполнения.

Дополнительную информацию о содержимом файла задачи HSM Job file и шагах цепочки HSM Task Flow можно найти в [3].

 

Производство

Контрактный производитель (CM) принимает файл задачи SPPS Programming Job от инженера по эксплуатации (OE) и создает проект в FlashPro Express с задачей HSM Job в файле задачи доверенного программирования SPPS Programming Job. Для задачи HSM Job информация из квитанции (ticket), такая как идентификаторы ticket ID и данные о защите от перепроизводства (overbuild protection), загружается в конкретный заводской АМЗ (M‑HSM), который участвовал в протоколе взаимной аутентификации Job Request-Reply handshake protocol. Оставшаяся защищенная квитанцией информация, конфигурация цепочки JTAG и образы bitstream для программирования, загружается в проект FlashPro Express. Дополнительные сведения об этом представлены в документе [5].

После создания проекта в FlashPro Express задача готова к исполнению.

Защита от перепроизводства (overbuild protection)

Для каждого выполнения операции программирования (PROGRAM, ERASE и VERIFY), с которыми связана квитанция job ticket с включенной защитой от перепроизводства (overbuild protection), заводской АМЗ (M‑HSM) уменьшает для этой квитанции (ticket) счетчик оставшихся для программирования микросхем (рис. 3).

Защита от перепроизводства

Рис. 3. Защита от перепроизводства

Счетчики защиты от перепроизводства (overbuild protection counter) расположены внутри АМЗ (HSM) и физически не клонируемы. После того как будет запрограммировано допустимое количество микросхем, заводской АМЗ (M‑HSM) остановит обработку и любые дальнейшие запросы протоколов, связанные с обработанной квитанцией (ticket).

Состояние задачи

Состояние задачи (Job status) можно запросить в FlashPro Express в процессе ее выполнения и распечатать в окне журнала (log windows) FlashPro Express или экспортировать в файл Job Status file и отправить обратно инженеру по эксплуатации (OE). Состояние задачи (Job status) содержит список квитанций (job ticket), загруженных в проект FlashPro Express и заводской АМЗ (M‑HSM). Для квитанций (ticket) с активированной защитой от перепроизводства (overbuild protection) будет отображаться максимально допустимое количество микросхем и текущее состояние счетчиков оставшихся микросхем.

В отчет о состоянии задачи (Job Status) также включаются сертификаты соответствия (CoC) микросхем. Сертификат соответствия (CoC) генерируется и криптографически подписывается микросхемой с помощью симметричного кода аутентификации (message authentication code, MAC). Эту информацию можно проверить пользовательским АМЗ (U‑HSM) на стороне Job Manager.

Аутентификация микросхемы

Перед началом каждой операции программирования утилита FlashPro Express выполняет проверку подлинности микросхем Microsemi, встроенную в процедуру цепочки проверок. Для микросхем, не прошедших аутентификацию, операция программирования будет прервана.

Завершение задачи

Выполнение задачи (Job execution) может быть остановлено двумя способами:

  • Нормальное завершение задачи по окончании программирования заданного количества микросхем — например, опустошены все счетчики защиты от перепроизводства (overbuild protection) квитанции job ticket.
  • Прекращение задачи (Job termination), если у некоторых счетчиков защиты от перепроизводства (overbuild protection) квитанции job ticket остались микросхемы, которые нужно программировать.

При обоих вариантах завершения задачи будет происходить:

  • Удаление квитанций job ticket из заводского АМЗ (M‑HSM) и архивация в заданный каталог заводского АМЗ (M‑HSM).
  • Генерация отчета Job со следующими данными:
    • сертификаты соответствия (Device Certificates of Conformance), сгенерированные микросхемами;
    • сертификаты Ticket End — криптографически проверенное основание удаления данных квитанции (ticket data) из заводского АМЗ (M‑HSM). Проверка данных осуществляется в утилите Job Manager с помощью пользовательского АМЗ (U‑HSM) и подтверждает, что в дальнейшем квитанция job ticket не может быть применена заводским АМЗ (M‑HSM).

 

Постпроизводство

Этап постпроизводства (post production) на стороне Job Manager является необязательным. Он используется для анализа и криптографической проверки отчета Job Status, присланного со стороны производства. Это происходит импортированием файла Job Status в задачу HSM Task. Для проверки всех состояний утилита Job Manager обращается к пользовательскому АМЗ (U‑HSM).

 

Специальные случаи

Тестовое исполнение задачи HSM Job на рабочей стороне

Инженер по эксплуатации (OE) может выполнить задачу в тестовом режиме на своей стороне,как часть подготовки HSM job. Это тестовое исполнение можно проделать, используя утилиту FlashPro Express, подключенную к тому же самому пользовательскому АМЗ (U‑HSM), который был задействован при создании задачи.

Пользовательский АМЗ (U‑HSM) обладает полной функциональностью заводского АМЗ (M‑HSM). Эта особенность называется «функция заводского АМЗ (M‑HSM) для пользовательского АМЗ (U‑HSM)». Конфигурирование функции заводского АМЗ (M‑HSM) для пользовательского АМЗ (U‑HSM) рассмотрено в документе [7]. Все остальные аспекты, связанные с выполнением задачи HSM job утилитой FlashPro Express с помощью функции заводского АМЗ (M‑HSM), аналогичны исполнению задачи в реальном производственном окружении.

Использование внутреннего (автоматического) механизма Job Request-Reply для тестового исполнения задачи HSM Job

Если для создания задачи HSM job и ее выполнения в тестовом режиме инженер по эксплуатации обращается к одному и тому же пользовательскому АМЗ (U‑HSM), то существует вероятность пропустить инициализируемые пользователем шаги Job Request-Job Reply. В таком случае задача HSM Task создается в специальном внутреннем режиме INTERNAL mode, описанном в документе [3]. Этот режим указывает утилите Job Manager на необходимость автоматически выполнить для пользователя протокол Job Request-Reply, без привлечения регулярных шагов обработки запроса на стороне FlashPro Express (рис. 2).

 

Режим non-HSM flow

Инструментарий SPPS Job Manager поддерживает работу в режиме non-HSM flow, который можно применять без пользовательского АМЗ (U‑HSM) и заводского АМЗ (M‑HSM). В этом режиме весь ключевой материал обрабатывается в виде открытого текста (plain text), и загрузка начального ключа происходит в режиме KLK-key mode.

Основная цель режима non-HSM flow — предоставление инженеру по эксплуатации (OE) пути для подготовки задач non-HSM job за пределами среды разработки Libero SoC. Это избавляет пользователя от необходимости знакомства с процессом разработки и общего использования Libero SoC, имея установленную Libero SoC, и делает ненужными требования к лицензированию Libero SoC.  Рассматриваемый режим разрешает управлять процессом обновления энергонезависимой памяти (eNVM) внутри утилиты Job Manager. Настройки безопасности (Security) также могут быть переопределены на уровне обслуживания (Operation) аналогично режиму main HSM flow.

Режим non-HSM SPPS flow для генерации образа bitstream

Рис. 4. Режим non-HSM SPPS flow для генерации образа bitstream

В этом режиме можно создать автономный файл образа bitstream (рис. 4) или задачи non-HSM job (рис. 5).

Последовательность действий SPPS для экспорта в режиме non-HSM job

Рис. 5. Последовательность действий SPPS для экспорта в режиме non-HSM job

В обоих случаях передача данных проекта и firmware происходит аналогично режиму main SPPS flow.

Данные для программирования (Program-ming Data) создаются как и на шаге main HSM flow, с некоторым различием в управлении политиками безопасности, как описано ниже.

 

Управление политиками безопасности в режиме non-HSM flow

По умолчанию все настройки безопасности (security settings) и значения ключей (key values) используются из данных проекта, загруженных из файла JDC. Пользователь может переписать настройки безопасности (security settings) из имеющегося файла менеджера политик безопасности (SPM), присланного из Libero SoC. Эта функция аналогична такой же функции в main HSM flow.

В дополнение к перезаписи настроек защиты (Security Overwrite) режим non-HSM flow поддерживает перезапись ключа (Key Overwrite).

Перезапись ключа

Перезапись ключа (Key Overwrite) доступна только в режиме non-HSM flow. Процедура перезаписи ключа позволяет инженеру по эксплуатации заменить одно или более значений ключей (pass keys, encryption key или debug key), присланное из Libero SoC в оригинальном файле JDC или в результате перезаписи настроек защиты из файла менеджера политик безопасности (SPM). Переписанные значения ключей всегда заменяют любые значения ключей в данных для программирования (Programming Data).

 

Инициализация образа bitstream

Режим non-HSM flow поддерживает следующие типы образа bitstream:

  • Trusted Facility bitstream;
  • Master bitstream;
  • UEK1/UEK2/UEK3 Update bitstream.

Образ Trusted Facility bitstream

Этот тип образа bitstream может программировать массив ПЛИС (FPGA Fabric) и/или энергонезависимую память (eNVM). Он не программирует политики безопасности микросхемы (device security). Образ bitstream целиком зашифрован на ключе шифрования KLK.

Образ для начального программирования (Master bitstream)

Поддерживает начальное программирование защиты (Security) и других дополнительных компонентов, таких как массив ПЛИС (FPGA Fabric) и энергонезависимая память (eNVM). Образ bitstream целиком зашифрован на ключе шифрования KLK.

После начального программирования с пользовательскими ключами все заводские режимы применения ключей от Microsemi, в том числе режимы ключей KLK, DFK, KFP и KFPE, становятся недоступными. После этого шага микросхема становится защищенной, и дальнейшие обновления могут производиться в недоверенном окружении.

Примечание. На основании политики безопасности при программировании ключей UEK1 или UEK2 будут также программироваться пароли UPK1 или UPK2 соответственно и блокироваться сегмент защиты (security segment). В результате операции стирания (ERASE) и проверки программирования (VERIFY) в созданных файлах образа bitstream или задачах для программирования (programming job) будут содержать значения паролей UPK1/UPK2 в открытом виде. Это требуется для того, чтобы разблокировать сегменты защиты при выполнении операций программирования, когда используется метод non-HSM flow5.

Примечание. Заводские режимы использования ключей KFP и KFPE доступны только для устройств M2S060, M2GL060, M2S090, M2GL090, M2S150 и M2GL150.

Обновление ключей UEK1/2/36 образа bitstream

Микросхема, запрограммированная первоначальными данными (Master bitstream), в дальнейшем может быть обновлена с помощью образа обновления (Update bitstream). Образ обновления (Update bitstream) может перепрограммировать только функции массива ПЛИС (FPGA Fabric) и/или энергонезависимой памяти (eNVM) микросхемы. Настройки защиты микросхемы (Device security) невозможно обновить в этом цикле.

 

Создание двоичных файлов образов для программирования

Файл образа bitstream можно экспортировать после выполнения шага инициализации bitstream. Утилита Job Manager поддерживает различные форматы файлов (STAPL, SPI, DAT и т. п.). Дополнительную информацию можно получить из документа [3].

Сгенерированный двоичный файл образа (bitstream) можно отправить производителю для программирования микросхем с использованием программного обеспечения FlashPro, DirectC, Silicon Sculptor, IAP/ISP или другого программирующего инструментария сторонних производителей, который поддерживает формат STAPL.

 

Создание и выполнение задач типа non-HSM Job

Создание задачи типа non-HSM Job аналогично созданию задачи HSM Job за исключением того, что не требуется настройки IHP Job и задача экспортируется непосредственно, без задач типа HSM Task.

Пользователь добавляет целевые и пропускаемые микросхемы. Целевые микросхемы компании Microsemi связываются с образами bitstream в данных для программирования (Programing Data).

Генерация задачи происходит на уровне задач (job level), как описано в документе [3]. Созданная задача отправляется производителю и может быть выполнена только программным обеспечением FlashPro Express.

 

Создание каталога SPI

Технология SPPS обеспечивает создание каталога SPI, аналогично тому, как это делается в среде разработки Libero SoC. Дополнительная информация доступна в «Руководстве по Libero SoC» [2].

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

Для выполнения этой операции не требуется поддержка АМЗ (HSM) и привязка к конкретному проекту утилиты Job Manager. Подробности можно найти в документе [3].

 

Заключение

В статье была рассмотрена технология компании Microsemi, именуемая «доверенное программирование микросхем в недоверенном окружении» (Secure Production Programming Solution, SPPS). Технология основана на использовании аппаратных модулей криптографической защиты (Hardware Security Module, HSM) и позволяет производить контролируемое начальное программирование микросхем в условиях контрактного производства, а также в полевых условиях обновлять критичное ПО (firmware) для микроконтроллеров и конфигурацию ПЛИС. Интересной особенностью технологии SPPS является то, что она позволяет ограничить количество микросхем, запрограммированных одной и той же модификацией внутреннего ПО (firmware), предварительно заданным значением. Таким образом, с помощью технологии SPPS может быть решена задача защиты устройств от клонирования в условиях контрактного производства.

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

Литература
  1. Secure Production Programming Solution (SPPS) For Libero SoC v11.8 SP1 User Guide. 
  2. Libero SoC for Enhanced Constraint Flow v11.8 SP1 release User’s Guide. 
  3. Programming Job Manager User Guide v11.8. 
  4. FlashPro for Libero SoC v11.8 User’s Guide.
  5. FlashPro Express for Libero SoC v11.8 User’s Guide. 
  6. Manufacturer HSM Installation and Setup User Guide v11.8. 
  7. User HSM Installation and Setup User Guide v11.8
  8. UG0443: SmartFusion2 and IGLOO2 FPGA Security Best Practices User Guide.
  9. ViPNet HSM 1.0. 
  10. КриптоПро HSM. 
  11. Самоделов  А. Создание защищенных пользовательских приложений на базе SmartFusion2 SoC FPGA компании Microsemi. Части 1–6 // Компоненты и технологии. 2017. № 8–12. 2018. № 1.
  12. Самоделов  А . Доверенная загрузка с использованием СнК и ПЛИС компании Microsemi. Основные положения // Компоненты и технологии. 2017. № 1.
  13. Самоделов  А. Доверенная загрузка ОС Linux для Vybrid VF6 с использованием СнК SmartFusion2. Части 1–3 // Компоненты и технологии. 2017. № 1–3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *