Внедрение безопасных загрузок и обновлений прошивки на устройствах Fpga

Почему FPGA требуют другой модели доверия

Полевые программируемые массивы ворот питают все, от передовых систем помощи водителю и спутниковых полезных нагрузок до инфраструктуры 5G и промышленных циклов управления. В этих средах одно мошенническое изображение прошивки может повредить функции безопасности, выводить секреты или превращать доверенный узел в вектор для бокового движения. Двойные дисциплины безопасных загрузок и криптографически проверенных обновлений прошивки больше не являются дополнительными дополнениями - они являются основой надежного жизненного цикла FPGA. В этой статье рассматриваются архитектурные принципы, модели угроз и шаблоны реализации, которые инженеры могут применять для блокировки потоков FPGA и поддержания устойчивости устройств в течение их операционной жизни.

В отличие от закаленного микроконтроллера, FPGA не выполняет инструкции из фиксированной маски ROM. Он загружает конфигурационные данные, часто называемые битовым потоком, которые определяют саму аппаратную ткань. Измененный битовый поток может инстанцировать скрытую логику, обходить защиту памяти или подрывать показания датчиков, не изменяя ни одной строки кода приложения. Поскольку битовый поток находится ниже уровня операционной системы, он занимает привилегированное положение в стеке, что делает компромисс исключительно трудным для обнаружения.

Несколько отраслевых тенденций делают надежную защиту битового потока критической. Во-первых, плотность FPGA теперь превышает миллион логических элементов, запускает сложные процессорные подсистемы, ускорители шифрования и конвейеры вывода ИИ на одном и том же кристалле. Во-вторых, глобализация цепочки поставок означает, что устройства могут быть предоставлены контрактным производителям, где физический доступ не контролируется. В-третьих, после развертывания механизмы обновления по воздуху превращают каждый сетевой интерфейс в потенциальную поверхность атаки. В этом контексте безопасная загрузка гарантирует, что устройство начинается с известного хорошего состояния, в то время как аутентифицированные обновления предотвращают засев злоумышленника вредоносного прошивки в середине жизненного цикла.

Угроза для устройств FPGA

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

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

Основы безопасной загрузки на FPGA

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

1. Криптографические подписи и ключевая иерархия

Типичная схема использует криптографию с открытым ключом. Производитель или системный интегратор держит закрытый ключ, который подписывает золотой битовый поток. Соответствующий открытый ключ, встроенный в одноразовые программируемые eFuses или реестры с поддержкой батареи, действует как корень доверия. Во время загрузки жесткое IP-ядро считывает подпись, прилагаемую к битовому потоку, пересчитывает хеш и проверяет подпись против сохраненного открытого ключа. Если проверка не удается, FPGA может вернуться к известному хорошему изображению, заблокировать интерфейс конфигурации или утверждать сброс системы.

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

2. Аппаратные корни доверия

Закаленный блок безопасности внутри FPGA обеспечивает неизменяемую отправную точку. Например, устройства Xilinx включают в себя область ДНК устройства и eFuse, которая может хранить хеш-дайджест или хэш открытого ключа. Семейства Intel Agilex и Stratix 10 интегрируют диспетчер защищенных устройств (SDM), который действует как сопроцессор для аутентификации загрузки. Эти закаленные блоки считывают внешнюю вспышку через аутентифицированную командную последовательность, поэтому даже если злоумышленник меняет флэш-чип, FPGA не примет битовый поток.

Когда FPGA не имеет полнофункционального блока безопасности, инженеры могут связать его с внешним защищенным элементом, таким как микрочип ATECC608 или TPM, который хранит ключи и выполняет проверку подписи. Внешний IC обменивается данными через интерфейс I2C или SPI, и FPGA настраивает себя только после получения «проверенного» сигнала. Этот подход добавляет стоимость компонента, но является обычным модернизацией для более ранних семейств FPGA. Новые устройства от Lattice Semiconductor, такие как MachXO3D, встраивают аналогичный закаленный блок безопасности, который включает в себя встроенную в чип вспышку для хранения ключей и генерации PUF.

3. Тампер-очевидный загрузочный поток

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

  1. Программный самотест: Схема сбрасывания питания FPGA стабилизирует часы и проверяет целостность внутренней логики. Многие устройства включают в себя проверку CRC самой памяти конфигурации.
  2. Загрузка корневого ключа: Блок безопасности загружает открытый ключ из eFuses или безопасного элемента.В некоторых конструкциях этот шаг также выводит ключ дешифрования сеанса из корневого ключа.
  3. Блок загрузчика Bitstream считывает битовый поток кандидата, вычисляет хэш SHA-384 или SHA-256 и проверяет подпись ECDSA или RSA. Если битовый поток зашифрован, механизм дешифрования использует симметричный ключ, не завернутый корневым ключом.
  4. Обратная связь и блокировка:] При отказе FPGA может повторно пробиться из обозначенного золотого изображения, хранящегося в отдельном перегородке вспышки. Если золотое изображение также выходит из строя, устройство должно войти в заблокированное состояние с минимальной функциональностью, испуская безопасный индикатор отказа загрузки в плоскость управления. Это состояние может быть передано через выделенный GPIO или сообщение через шину I2C на системный монитор.

Многие FPGA также поддерживают зашифрованные потоки битов. Шифрование само по себе обеспечивает конфиденциальность, но не целостность, если только оно не сопряжено с режимом аутентифицированного шифрования, таким как AES-GCM. Без аутентификации злоумышленник может переворачивать биты в шифротексте, не зная ключа, что потенциально может вызвать эксплуатируемое поведение. Поэтому лучшая практика заключается в использовании шифрования наряду с проверкой подписи или полагаться на аутентифицированные примитивы шифрования, где существует поддержка кремния.

Реализация безопасной загрузки: практический прогул

Инженеры, впервые приближающиеся к безопасной загрузке, часто сталкиваются с интеграцией инструментальных цепочек. Следующие шаги описывают типичный поток реализации для устройства Xilinx UltraScale + или Intel Agilex, хотя концепции обобщают семейства Lattice, Microchip и Gowin с незначительными вариациями.

Шаг 1: Обеспечить надежное хранение ключей

Создайте пару ключей ECDSA P-384 или RSA-3072 в модуле аппаратной безопасности (HSM), удерживаемом в физически безопасном объекте. Хешируйте открытый ключ и программируйте дайджест в eFuses FPGA. Никогда не разоблачайте закрытый ключ на сервере сборки. Вместо этого подпись выполняется HSM, который получает хеш битового потока и возвращает сигнатуру. Эта сгусток затем добавляется в файл битового потока. Для флотов рассмотрите возможность использования облачного сервиса HSM, такого как AWS CloudHSM или Azure Dedicated HSM, для масштабирования резервирования в нескольких местах при сохранении ключей под защитой аппаратного обеспечения.

Шаг 2: Настройка изображения загрузки

Инструменты поставщика FPGA позволяют указывать параметры аутентификации во время генерации битового потока. Вы даете инструменту указание зарезервировать место для подписи, установить дайджест открытого ключа и необязательно включить шифрование с помощью ключа AES, обернутого корневым ключом. Полученное изображение хранится во внешней четырех-SPI или NAND-флэше, доступной контроллеру конфигурации FPGA. Обратите внимание на макет вспышки: разделите память по крайней мере на два банка - один для активного изображения и один для золотого запаса - для обеспечения надежной возможности обновления A / B.

Шаг 3: Установите политику безопасности в аппаратном обеспечении

Сожгите eFuses, чтобы заблокировать устройство в безопасном режиме загрузки. После установки FPGA отклонит любой поток битов, который не имеет действительной подписи, включая предоставленные поставщиком изображения по умолчанию. Этот необратимый шаг должен быть выполнен только после тщательной проверки в лаборатории. В производстве скрипты ATE (автоматизированное испытательное оборудование) применяют настройки предохранителя в рамках конечного тестирования. Некоторые семейства также предлагают режим предохранителя «разработка», который позволяет подписанным изображениям из тестового ключа загружаться во время загрузки, а производственный ключ сливается позже.

Шаг 4: Проверить цепочку

Проверяйте все реальные сценарии: включение холодной загрузки, теплый сброс, восстановление выключенного потока и преднамеренно поврежденный битстрим. Измеряйте задержку загрузки - проверка подписи с аппаратными ускорителями обычно добавляет менее 100 миллисекунд, но это может варьироваться. Подтвердите, что резервные золотые загрузки изображений правильно и что индикаторы сбоя распространяются на контроллер управления системой. Включите тесты для состояния блокировки JTAG: злоумышленник не должен быть в состоянии прочитать или перенастроить устройство через интерфейс отладки после обеспечения безопасной загрузки.

Хорошо известной ссылкой на такой поток является руководство по устойчивости NIST к программным продуктам, которое описывает требования к защите, обнаружению и восстановлению, применимые к любому программируемому устройству.

Обновление архитектуры Secure Firmware

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

Создание надежного трубопровода обновления

Безопасный конвейер обновления начинается в инженерной инфраструктуре и заканчивается в логике конфигурации FPGA.

  1. Создание и подписание изображений: Система сборки производит новый битовый поток. HSM подписывает его действующим закрытым ключом. Подпись может быть обернута в манифест, который включает хэши файлов, метаданные версии и временную метку.
  2. Транспортная безопасность: Подписанное изображение перемещается по TLS 1.3 на сервер обновления, а затем на устройство. Взаимная аутентификация между сервером и конечной точкой TLS устройства предотвращает атаки «человек посередине». Сертификат TLS устройства должен быть привязан к его уникальной идентичности, такой как ДНК устройства FPGA.
  3. Постоянная память: Устройство записывает входящее изображение в выделенный флэш-раздел, сохраняя при этом текущее загрузочное изображение неповрежденным. Эта схема раздела «A/B» гарантирует, что неудавшееся обновление не закинет блок. Некоторые конструкции используют три раздела: A (активный), B (резервное копирование) и G (золотой заводской образ) для максимальной надежности.
  4. Предустановочная проверка: Агент обновления — будь то программный режим, работающий на встроенном процессоре или собственный менеджер конфигурации FPGA — проверяет подпись и проверяет номер версии на сохраненном счетчике анти-закрутки.
  5. Атомная активация: Указатель конфигурации загрузки обновляется в одной, энергобезопасной записи. При следующем сбросе загрузки FPGA из нового изображения. Если изображение окажется непригодным, таймер сторожевого пса запускает запасной вариант предыдущего раздела. Тайм-аут сторожевого пса должен быть достаточно длинным, чтобы позволить полную попытку загрузки, но достаточно коротким, чтобы обнаружить застрявшую систему до критического срока.

Анти-Rollback техники

Простое подписание изображения недостаточно, если злоумышленник может воспроизвести действительную, но старую версию прошивки. Чтобы закрыть этот пробел, спроектируйте анти-затворную стойку, хранящуюся в монотонной, энергонезависимой памяти, такой как eFuses или доверенный модуль платформы. Каждый прошивочный манифест включает минимальный номер версии безопасности. Агент обновления сравнивает этот номер с сохраненным счетчиком и отклоняет любое изображение, версия которого ниже. Когда принимается новое обновление, счетчик расширен до этой версии. Поскольку eFuses могут быть взорваны только в одном направлении, они образуют идеальный монотонный счетчик для этой цели. Для устройств, которые поддерживают программируемые предохранители, счетчик может быть увеличен удаленно в рамках транзакции обновления, с безопасным дизайном потери мощности, который проверяет запись, завершенную до маркировки обновления как успешный.

Регулирование частичной конфигурации

Многие высокопроизводительные проекты используют частичную реконфигурацию для замены аппаратных модулей во время выполнения. Эти частичные битовые потоки должны быть аутентифицированы так же строго, как и полные битовые потоки. Например, поток Xilinx Dynamic Function eXchange (DFX) поддерживает аутентифицированные частичные битовые потоки, где каждый реконфигурируемый модуль несет свою собственную подпись. Порт доступа внутренней конфигурации FPGA проверяет подпись перед конфигурацией динамической области, предотвращая боковую загрузку вредоносного наложения. Аналогичные возможности существуют в потоке частичной реконфигурации Intel и интеграции логического анализатора Reveal Lattice. Убедитесь, что ключи аутентификации для частичных битовых потоков получены из того же корня доверия, но могут быть повернуты независимо, чтобы позволить управление жизненным циклом конкретного модуля.

Криптографические примитивы и соображения производительности

Выбор алгоритмов влияет как на безопасность, так и на время загрузки. ECDSA с кривыми P-256 или P-384 предлагает компактные подписи и быструю верификацию на аппаратных ускорителях, что делает его популярным выбором. RSA-2048 по-прежнему распространен в старых устройствах, но требует большего хранения ключей и более длительного времени верификации. Переход NIST на постквантовые алгоритмы в конечном итоге повлияет на аутентификацию битового потока FPGA, но большинство текущих приложений работают в рамках классической модели безопасности.

Для шифрования объемного битового потока AES-256 в режиме GCM обеспечивает как конфиденциальность, так и целостность. Многие новые семейства FPGA включают жесткие двигатели AES-GCM, которые могут расшифровывать и аутентифицировать многомегабайтные битовые потоки на скорости провода. Инженеры должны гарантировать, что векторы инициализации (IV) никогда не будут повторно использованы; аппаратный генератор случайных чисел или монотонный счетчик, завернутый в менеджер ключей, может поставлять уникальные IVs за загрузочную сессию.

Практический анализ задержки из руководства пользователя конфигурации Xilinx показывает, что возможность расшифровки AES-256 и аутентификации на основе HMAC добавляет примерно 50-80 миллисекунд к общему времени конфигурации для типичного битового потока 25 МБ, что хорошо в приемлемых пределах для большинства встроенных приложений. Для критически важных по времени приложений, таких как слияние автомобильных датчиков во время запуска, дизайнеры могут предварительно аутентифицировать битовый поток на фоновом этапе, в то время как FPGA удерживает I / Os в безопасном состоянии.

Управление ключами на протяжении всего жизненного цикла

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

  • Обеспечение фабрики: Корневой хеш открытого ключа запрограммирован в eFuses. Частный ключ заблокирован в автономном HSM и никогда не покидает объект. На этом этапе уникальная идентичность устройства (например, ДНК устройства) может быть слита, чтобы обеспечить связывание ключей с отдельными блоками.
  • Обновления полей: Вторичные ключи подписи используются для обычных обновлений прошивки. Эти ключи сами по себе подписаны корневым ключом и могут иметь более короткий срок службы или храниться в облачном HSM. Вторичное вращение ключа может быть автоматизировано, чтобы устройство никогда не работало с ключом старше, чем, скажем, один год.
  • Конец срока службы: Когда продукт списан, сертификаты отзыва или бит «убить» могут быть настроены на постоянное отключение способности FPGA принимать новое прошивку, что делает устройство непригодным для противника, который получает физический доступ. Некоторые решения также поддерживают криптографическое удаление всех сохраненных ключей, взорвав выделенный eFuse.

Автоматизированное вращение ключей может быть реализовано путем доставки манифеста, который содержит новый открытый ключ, подписанный старым ключом. Агент обновления проверяет цепочку, устанавливает новый ключ в защищенный регистр, а затем продвигает счетчик анти-откатов. Старый ключ может быть удален, как только счетчик распространяется на все устройства. Этот подход документируется в семинаре по обновлению программного обеспечения Интернета вещей IAB и согласуется со стандартом манифеста SUIT, разрабатываемым IETF IETF SUIT Manifest .

Согласование нормативных и отраслевых стандартов

Инженеры в автомобильном, медицинском и промышленном секторах должны привести безопасность FPGA в соответствие с отраслевыми правилами. ISO 21434 для дорожных транспортных средств требует безопасного механизма обновления программного обеспечения и аппаратного корня доверия для любой программируемой логики, которая влияет на безопасность. IEC 62443 для промышленных систем управления предписывает, чтобы устройства проверяли целостность прошивки перед выполнением и поддерживали аутентифицированные обновления поля. Оценка общих критериев для профилей защиты IP теперь ссылается на требования к подписи битового потока конфигурации. Следуя архитектурным шаблонам, описанным ранее, команды продуктов могут удовлетворить эти требования без повторного проектирования платформы.

Для аэрокосмических и оборонных приложений такие стандарты, как DO-254 и FIPS 140-3, предъявляют дополнительные требования к криптографическому модулю и схеме управления ключами. Использование криптографической библиотеки, проверенной FIPS, для проверки подписи — даже если она реализована в структуре FPGA — может упростить сертификацию. Кроме того, спецификация TPM 2.0 Trusted Computing Group обеспечивает стандартизированный интерфейс для хранения ключей и аттестации, который может использоваться FPGA с внешними чипами TPM.

Оперативные лучшие практики для обеспечения безопасности флота FPGA

Только технология не может гарантировать безопасность флота. Команды должны использовать их в надежных оперативных методах:

  • Защитите инфраструктуру сборки: Изолируйте сервер подписи от корпоративной локальной сети. Используйте физический HSM для хранения закрытых ключей и регистрации каждой операции подписи. Внедрите анализ кода для любого изменения в манифесте битового потока.
  • Принудить к ролевому контролю доступа: Отделить обязанности по разработке, тестированию и развертыванию битового потока. Только назначенный менеджер по выпуску должен иметь возможность инициировать подписание производственного изображения. Используйте правила одобрения от двух человек в HSM для предотвращения одностороннего подписания.
  • Монитор и аудит: Базы данных управления активами должны отслеживать версию прошивки, противооткатное значение и последнее успешное время загрузки для каждого развернутого FPGA. Системы обнаружения аномалий должны помечать устройства, которые неоднократно возвращаются к золотистому изображению или показывают счетчики версий, которые движутся назад. Телеметрия может быть собрана через легкий агент на встроенном процессоре или через выделенный процессор управления.
  • План реагирования на инциденты: Иметь предварительно протестированную процедуру распространения аварийного обновления прошивки в ответ на уязвимость нулевого дня. Это включает в себя ведение списка отзывов для скомпрометированных ключей и обеспечение доступности канала обновления даже на частично скомпрометированных устройствах. Практикуйте процедуру в среде постановки по крайней мере ежеквартально.
  • Проведение регулярных тестов на проникновение: Внешние оценки безопасности должны быть нацелены конкретно на цепочку конфигурации FPGA. Общие векторы атак включают сбой питания во время загрузки, извлечение битовых потоков через JTAG или использование слабой IV генерации в механизме дешифрования. Включают тесты для атак с впрыском неисправностей, которые пытаются пропустить шаги аутентификации.
  • Ведите учет всех ключевых материалов, включая дайджест корневого открытого ключа, орган по сертификации открытого ключа и даты ротации ключей. Этот инвентарь необходим при отзыве или обновлении ключей по всему флоту.

Эти методы создают глубинную позицию защиты, которая простирается от кремния до облачного бэкэнда.

Будущее FPGA: постквантовая и вне ее

Заглядывая в будущее, переход к постквантовой криптографии повлияет на проекты защищенной загрузки FPGA. Схемы подписи на основе латтиса, такие как CRYSTALS-Dilithium, предлагают меньшие размеры ключей, чем RSA, для эквивалентной безопасности, но скорость проверки и сложность реализации остаются активными областями исследований. Некоторые поставщики FPGA начали демонстрировать аппаратные ускорители для этих алгоритмов, предвидя, что инфраструктурное оборудование с длительным жизненным циклом потребует пути миграции до появления крупномасштабных квантовых вычислений. Процесс постквантовой стандартизации NIST, теперь находящийся на заключительных стадиях, обеспечит четкий выбор алгоритмов для аутентификации битового потока к 2024-2025 гг. Инженеры, разрабатывающие продукты сегодня, должны обеспечить обновление жесткого блока безопасности FPGA для поддержки новых алгоритмов или включить мягкий ускоритель для постквантовой проверки, который может быть загружен через частичную реконфигурацию.

Кроме того, достижения в технологии PUF позволяют генерировать ключи, которые никогда не хранит ключи в покое, что еще больше сокращает поверхность атаки. объедините PUF с безопасной цепочкой загрузки, которая измеряет выход PUF по сохраненным данным помощника - это позволяет каждому FPGA получать свой собственный уникальный корневой ключ без какого-либо впрыска ключа во время производства. Этот подход, уже доступный в некоторых устройствах Intel и Lattice, устраняет риск воздействия ключа во время предоставления.

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