DNA ID в FPGA: подробный разбор
Уникальный заводской идентификатор FPGA Xilinx 7-й серии: что это на уровне кристалла, как его считать, зачем к нему привязывают кастомную прошивку и чем он не является.
Коротко
DNA ID — это 57-битное значение только для чтения, которое на заводе прожигается в каждую FPGA Xilinx 7-й серии. Логика считывает его через примитив DNA_PORT. Кастомная прошивка собирается под это значение, поэтому образ работает только на одной плате. Это не лицензионный ключ, и никакой информации о вас в нём нет.
На странице10
Что такое DNA на самом деле
Каждое устройство Xilinx 7-й серии, включая Artix-7, выходит с завода с уникальным идентификатором, записанным в eFUSE. Внутренняя логика читает его через примитив DNA_PORT. Этот примитив загружает значение в сдвиговый регистр и выдаёт его по одному биту за такт. У микросхем 7-й серии доступная ширина — 57 бит. Значение только для чтения. Ни одна команда его не перезапишет, ни один инструмент не подменит его в кремнии, и никакая процедура не даст двум чипам одинаковое значение. Именно эта неизменность и делает его пригодным в качестве ключа привязки.
DNA в двух словах
Свойства, которые важны, когда вы решаете, вставлять ли его в тикет.
- Где хранится
- eFUSE внутри FPGA, записывается при производстве
- Ширина
- 57 бит, доступны логике на микросхемах 7-й серии и читаются через примитив DNA_PORT
- Можно перезаписать
- Нет. Только чтение на весь срок жизни чипа
- Что идентифицирует
- Один кристалл FPGA. Не плату, не flash-чип и не ПК
- Связь с вами
- Никакой. Значение появилось раньше вашей покупки и ничего о вас не знает
- Секретность
- Криптографически не секрет. Относитесь к нему как к идентификатору, который не выкладывают публично, а не как к паролю
Где появляется значение
MemProcFS монтирует виртуальный диск и записывает на него статус-файл. Поддержке нужно значение из строки DNA в этом файле, скопированное точно, без лишних пробелов.
MemProcFS.exe run as Administrator on the second PC
<mounted drive>\misc\pcileech_status.txt
look for the line beginning: DNA_IDКак считать DNA через MemProcFS
Надёжный способ — именно он описан в основном гайде по DNA ID. Делайте это на втором ПК, когда на карту подано питание.
- Сначала загрузите игровой ПК до рабочего стола, чтобы карта получила питание и определилась в системе
- Подключите карту ко второму ПК через порт, который в инструкции к заказу указан для чтения статуса
- Запустите MemProcFS.exe от имени администратора — ту сборку, что выдана с вашим заказом
- Откройте виртуальный диск, который он смонтирует
- Откройте misc\pcileech_status.txt
- Скопируйте значение DNA_ID точно: без пробела в конце и без переформатирования
Внимание
Почему файла иногда нет
Если статус-файла нет, значит, карта не отвечает, а вовсе не пропал DNA. Сначала проверьте порт. Чтение статуса и прошивка идут через разные разъёмы на плате, и неправильный разъём — самая частая причина. Потом кабель, потом драйвер USB-моста на втором ПК, потом холодный старт игрового ПК. Не выдумывайте значение. Не берите значение со старой карты, чтобы сдвинуться с места. Сборку под неправильный DNA придётся переделывать.
Почему прошивку привязывают к DNA
Кастомный образ собирается под одну плату. Привязка битстрима к DNA, под который он собран, делает это техническим ограничением, а не делом честного слова. Логика читает DNA во время работы и работает дальше, только если значение совпало. Отсюда два следствия. Образ нельзя скопировать на вторую карту и пользоваться им — поэтому одна покупка равна одной плате. А если вы меняете карту, у новой FPGA другой DNA. Нужна новая сборка, потому что из старого файла ничего не переносится.
Справка
Чем DNA не является
Его часто принимают за три вещи, и все три мимо. Это не лицензионный ключ. Он идентифицирует железо, а право на прошивку закреплено за вашим заказом, не за чипом. Это не персональные данные. Значение прожжено при производстве, ни из каких данных о вас не выводится, и по нему нельзя установить, кто вы. И само по себе это не вектор детекта. Античит, читающий конфигурационное пространство карты, видит донорский профиль, а не внутренний DNA FPGA.
Что указать в тикете
Всё в одном сообщении. Тикет, по которому приходится задавать три уточняющих вопроса, трижды ждёт ответа.
- Номер заказа
- DNA ID, скопированный точно из файла, который вы действительно открывали
- Модель карты и класс FPGA по маркировке на плате, плюс фото шелкографии
- Каким инструментом получено значение — и полный вывод, а не перепечатанный кусок
- Игра и античит, с которыми вы собираетесь это использовать
- Первая это сборка или пересборка после смены карты
Вопросы о DNA
Можно изменить или подменить DNA ID?
В кремнии — нет. Это заводской eFUSE, только для чтения. Логика в битстриме, конечно, может сообщать программе что угодно. Но значение, которое хранит чип, не меняется.
Безопасно ли отправлять DNA ID в поддержку?
Да, в тикете по заказу. Это аппаратный идентификатор без персональной информации. Не выкладывайте его в публичном канале — по той же причине, по которой не стали бы выкладывать серийный номер.
Две карты — нужны две сборки?
Да. У каждой FPGA свой DNA, и сборка, привязанная к одной, не запустится на другой. Один ID, одна плата, один образ.
Карту заменили по гарантии. Можно оставить старый файл прошивки?
Файл привязан к старому DNA, так что нет. Считайте DNA новой карты и в том же тикете по заказу попросите пересборку под него.
Выдаёт ли меня DNA ID античиту?
Нет. Он существует только внутри FPGA и не входит в то, что карта показывает на шине PCIe. Наружу видно конфигурационное пространство, то есть донорский профиль.
Источники
Как мы привязываем сборку к одной карте — наши собственные правила. Список того, что указывать в тикете, составлен по нашим же тикетам.
- 01AMD/Xilinx DS180, 7 Series FPGAs Data Sheet: Overview
заводской device DNA в микросхемах Xilinx 7-й серии и чипы Artix-7, на которых построены эти карты
docs.amd.com
- 02MemProcFS (Ulf Frisk), AGPL-3.0
программа, которая монтирует виртуальный диск со статус-файлом, где появляется строка DNA
github.com
Читать дальше
Не получилось? Откройте тикет в Discord
Все гайды