Современные серверные платформы AMD, базирующиеся на архитектуре Turin, задают новые стандарты в производительности и безопасности. Однако вместе с развитием вычислительных возможностей возрастает и сложность прошивок, управляющих инициализацией и защитой процессоров. Одной из ключевых составляющих является AMD Platform Security Processor (PSP), известный также как AMD Security Processor (ASP). Его бинарные файлы и их взаимодействие с открытыми прошивками вызывают большой интерес у сообщества разработчиков альтернативного программного обеспечения и энтузиастов, стремящихся раскрыть полный потенциал оборудования. В данном материале мы рассмотрим ключевые аспекты анализа PSP-бинарников для платформы AMD Turin и раскроем важные детали, с которыми сталкиваются разработчики при портировании и интеграции прошивок в проекты с открытым исходным кодом, на примере работы с платой Gigabyte MZ33-AR1.
Современная архитектура x86-процессоров все меньше сводится к монолитному исполнению кода CPU, а больше напоминает сложную мультипроцессорную систему, где специализированные сопроцессоры берут на себя отдельные задачи. Среди таких компонентов - Intel Management Engine (ME) и AMD PSP. PSP в случае AMD отвечает за безопасность и контроль доверенной загрузки, а также проведение криптографических операций и управление инициализацией процессора. При этом его прошивки зачастую сложены в структуру, переплетающуюся с BIOS-прошивкой, что осложняет их анализ и модификацию. В отличие от Intel, где прошивка ME выделена в отдельный зашитый регион памяти, в системах AMD Turin прошивка PSP и сопутствующие бинарные файлы хранятся в рамках единого флеш-образа, сложенным в определенные директории.
Для корректного запуска ЦП в состоянии сброса, PSP использует специальную структуру шифрованных и подписанных бинарников, которая называется Embedded Firmware Structure (EFS). EFS выступает как своего рода указатель и конфигуратор - она указывает расположение директорий, где хранятся образы PSP и BIOS, а также задаёт параметры интерфейса SPI для флеш-памяти и настраивает eSPI-шину, необходимую для взаимодействия с периферией и контроллерами управления платформой. Для разработчиков открытых прошивок, таких как coreboot, понимание и точное воспроизведение EFS является критичным моментом. Процесс сборки таких прошивок подразумевает использование утилиты amdfwtool, которая объединяет публично доступные бинарные компоненты в единый загрузочный образ. Недавно данная утилита получила обновления, связанные с улучшением парсинга Embedded Firmware Structure и корректной обработкой моделей адресации, что особенно актуально для платформы Turin.
Эти доработки позволили разработчикам анализировать как официальные образы от производителей, так и свои сборки, выявляя ключевые различия, влияющие на работоспособность микросхемы безопасности и успешное снятие процессора со сброса. Одной из важнейших проблем при портировании firmware для AMD Turin стала несостыковка SPI-скоростей и параметров конфигурации eSPI-шины, присутствующая между official Vendor BIOS и ранними сборками open-source прошивок. Неправильная настройка скорости чтения и передачи данных на SPI-шине зачастую приводит к сбоям в загрузке и невозможности взаимодействия с встроенными контроллерами. Помимо этого, параметр Multi Gen EFS в Embedded Firmware Structure обладает высоким значением - он строго фиксирован для семейства Turin и играет роль при сопоставлении структуры с аппаратной платформой. Несоответствие таких параметров приводит к прекращению работы PSP, что делает невозможным загрузку процессора.
После исправления основных параметров и создания сопоставимых образов, обнаружилась еще более серьезная проблема - неполнота и несовпадение наборов бинарных файлов PSP и BIOS между vendor-образом и теми, что доступны публично. Vendor-фирменный образ включал гораздо большее количество записей в директориях PSP и BIOS. Исследование показало, что некоторые ключевые бинарные компоненты отсутствуют в публичных наборах, что опять же делало сборку на основе открытых blobs непригодной для запуска. Решением стало извлечение необходимых бинарных файлов из официального образа платы Gigabyte MZ33-AR1 при помощи специально модифицированного инструмента PSPTool, который позволяет не просто извлечь файлы, но и получить метаданные о подпрограммах и экземплярах, необходимых для корректной их интеграции. Данная модификация PSPTool оказалась важным шагом к успешной интеграции - после подстановки недостающих бинарников и обновления конфигурационных файлов сборки open-source прошивки coreboot удалось добиться снятия CPU со сброса и успешного запуска загрузочного кода.
Однако попытки использовать только публичные blobs из официального пакета Turin PI оказались безрезультатными, что вызывало немало вопросов. Следующим ключевым моментом стало наблюдение за процессом верификации подписи внутри бинарных компонентов PSP. Инструмент PSPTool выявил, что AMD Root Key, используемый для проверки подписей в vendor-образе, значительно отличается по идентификатору от ключа в публичных blobs. Это стало подтверждением того, что vendor-прошивка Gigabyte могла содержать либо кастомизированные компоненты либо подписанные другим, более ранним или промышленным ключом, что препятствовало нормальной верификации и запуску BIOS собранного из публичных компонентов. На основании этого была сделана гипотеза о различиях в ключах подписей, однако последующее тестирование и сборка с комплектом из Turin PI показали совпадение root-ключа с vendor-изображением, опровергая версию о кастомных ключах в Gigabyte.
Вероятно, AMD публикует разные версии blobs для разных целей, например, публичные сборки могут быть выпущены с пред-производственными ключами, которые не проходят проверку в конечных продуктах. Эти открытия подчеркивают важность доступа к актуальным и корректно подписанным бинарникам, если сообщество намерено развивать поддержку процессоров AMD Turin в альтернативных прошивках. К счастью, наличие обновленного набора Turin PI и возможность его интеграции позволяют надеяться на скорое решение проблемы отсутствия корректных blobов. При использовании данных blobs CPU успешно выводится из состояния сброса, а верифицированные debug-сообщения coreboot подтверждают правильность инициализации. Окончательным итогом исследования стало создание актуальных патчей и обновлений для coreboot, включающих поддержку нового оборудования, расширение возможностей amdfwtool для работы с различными амфибиями данных PSP и BIOS, а также разработка оптимизированных конфигурационных файлов для сборок на базе открытых компонентов.
Несмотря на то, что путь к полной поддержке сервера на базе AMD Turin с open-source-прошивками еще долог и полон трудностей, первые успешные результаты демонстрируют потенциал и важность системного подхода и тесного взаимодействия с вендорами и сообществом. Портирование Gigabyte MZ33-AR1 с процессором Turin - пример того, как сложность современной аппаратной безопасности требует глубоких знаний и терпения. Анализ и модификация бинарных blobов PSP, правильная настройка SPI и eSPI интерфейсов, понимание форматов и ключей подписи - все это неотъемлемые части процесса, которые должны быть решены для создания надежного и безопасного альтернативного программного обеспечения. Эти наблюдения и полученные знания могут служить не только специалистам по прошивкам, но и инженерам, исследователям безопасности, а также менеджерам проектов в области встраиваемых систем и серверных решений. Открытый доступ к информации и инструментам, таким как amdfwtool и PSPTool, в сочетании с глубоким техническим анализом помогают продвигать идею цифрового суверенитета и контроля над аппаратным обеспечением, что сегодня особенно актуально в эпоху растущих угроз безопасности и контроля над данными.
Следует отметить поддержку и спонсорство проекта со стороны NLnet Foundation и усилия компании 3mdeb, которая позиционирует себя как эксперт в области безопасности и оптимизации прошивок, предоставляя решения для интеграции современного аппаратного обеспечения с открытым программным обеспечением. Их опыт и инструментарий активно используются для ускорения разработки и тестирования, а публикация подробной документации повышает уровень открытости и информационной поддержки сообщества. В заключение, задача по созданию открытых и безопасных прошивок для платформ AMD Turin - это сложный, но нужный шаг на пути к обеспечению контроля над вычислительными системами и обеспечению их прозрачности. Благодаря усилиям исследователей, разработчиков и сообществ, постепенно создаются условия для использования серверного оборудования с максимальной эффективностью и безо всяких ограничений, накладываемых проприетарными компонентами и закрытыми форматами. Продолжение исследований и публикация новых материалов помогут расширить понимание внутренностей современных процессоров и обеспечат качественное развитие open-source решений как базис надежного и независимого технологического будущего.
.