O DNA ID do FPGA, em detalhe
O identificador único queimado de fábrica nos FPGAs Xilinx série 7. O que ele é no nível do silício, como ler, por que o firmware personalizado é amarrado a ele e o que ele não é.
Resposta curta
O DNA ID é um valor de 57 bits, somente leitura, queimado na fábrica em cada FPGA Xilinx série 7. A lógica lê esse valor pela primitiva DNA_PORT. O firmware personalizado é compilado contra esse valor, então a imagem roda em uma única placa. Ele não é uma chave de licença e não guarda nenhuma informação sobre você.
Nesta página10
O que o DNA é de verdade
Todo dispositivo Xilinx série 7, Artix-7 incluído, sai da fábrica com um identificador único programado em eFUSE. A lógica interna lê esse valor por uma primitiva chamada DNA_PORT. Essa primitiva carrega o valor num registrador de deslocamento e o entrega bit a bit. Nas peças da série 7, a largura acessível é de 57 bits. O valor é somente leitura. Nenhum comando reescreve, nenhuma ferramenta falsifica no silício e nenhum procedimento faz dois chips terem o mesmo valor. Essa permanência é toda a razão de ele funcionar como chave de vínculo.
O DNA em resumo
As propriedades que importam na hora de decidir se você cola esse valor num chamado.
- Onde fica
- Em eFUSE dentro do FPGA, programado na fabricação
- Largura
- 57 bits acessíveis à lógica nas peças da série 7, lidos pela primitiva DNA_PORT
- Gravável
- Não. Somente leitura por toda a vida do chip
- Alcance
- Identifica um die de FPGA. Não a placa, não o chip de flash, não o PC
- Derivado de você
- Nada. Ele é anterior à sua compra e não sabe nada sobre você
- Secreto
- Não no sentido criptográfico. Trate como um identificador que você não publica, e não como uma senha
Onde o valor aparece
O MemProcFS monta uma unidade virtual e escreve um arquivo de status dentro dela. A linha do DNA nesse arquivo é o valor de que o suporte precisa, copiado exatamente, sem espaços a mais.
MemProcFS.exe run as Administrator on the second PC
<mounted drive>\misc\pcileech_status.txt
look for the line beginning: DNA_IDComo ler com o MemProcFS
É o caminho confiável, e o mesmo que o guia de DNA ID entregue com o pedido descreve. Faça isso no segundo PC, com a placa energizada.
- Ligue o PC de jogo primeiro e deixe ele chegar até a área de trabalho, para a placa estar energizada e enumerada
- Conecte a placa ao segundo PC pela porta que a instrução do seu pedido indica para leitura de status
- Rode o MemProcFS.exe como administrador, usando a versão entregue com o seu pedido
- Abra a unidade virtual que ele monta
- Abra misc\pcileech_status.txt
- Copie o valor de DNA_ID exatamente, sem espaço no fim e sem reformatar
Atenção
Por que às vezes o arquivo não está lá
Um arquivo de status ausente quer dizer que a placa não está se comunicando, não que o DNA sumiu. Confira a porta primeiro. Leitura de status e gravação usam soquetes diferentes na placa, e o soquete errado é de longe a causa mais comum. Depois o cabo, depois o driver da ponte USB no segundo PC, depois um boot a frio do PC de jogo. Não invente um valor. Não reaproveite o de uma placa antiga para se desbloquear. Uma versão compilada contra o DNA errado é uma versão que você vai ter que refazer.
Por que o firmware é amarrado a ele
Uma imagem personalizada é feita para uma placa. Amarrar o bitstream ao DNA contra o qual ele foi compilado torna isso mecânico, em vez de uma questão de confiança. A lógica lê o DNA em tempo de execução e só segue adiante se houver correspondência. Daí saem duas consequências. A imagem não pode ser copiada para uma segunda placa e usada, e é por isso que uma compra é uma placa. E, se você trocar de placa, o novo FPGA tem outro DNA. Você precisa de uma nova versão, porque nada do arquivo antigo se transfere.
Info
O que o DNA não faz
Três coisas que as pessoas acham que ele é, e ele não é nenhuma delas. Não é uma chave de licença. Ele identifica hardware, e o seu direito de uso vive no seu pedido, e não no chip. Não é dado pessoal. Foi queimado na fabricação, não é derivado de nada sobre você e não dá para transformar de volta numa identidade. E não é, por si só, um vetor de detecção. Um anticheat que lê o espaço de configuração da placa vê o perfil de doador, não o DNA interno do FPGA.
O que colocar no chamado
Tudo numa mensagem só. Um chamado que precisa de três perguntas de retorno é um chamado que espera três vezes.
- O ID do pedido
- O DNA ID, copiado exatamente do arquivo que você realmente abriu
- O modelo da placa e a classe de FPGA como estão marcados nela, mais uma foto da serigrafia
- Qual ferramenta produziu o valor, e a saída completa em vez de um trecho redigitado
- O jogo e o anticheat com que você pretende usar
- Se esta é a primeira versão ou a substituição de uma placa que você trocou
Perguntas sobre o DNA
Dá para mudar ou falsificar o DNA ID?
No silício, não. É eFUSE de fábrica e somente leitura. A lógica de um bitstream pode, claro, reportar o que quiser a uma ferramenta. Mas o valor que o chip guarda não muda.
É seguro mandar meu DNA ID para o suporte?
É, dentro do chamado do pedido. É um identificador de hardware sem nenhuma informação pessoal. Não publique em canal aberto, pelo mesmo motivo que você não publicaria um número de série.
Duas placas, preciso de duas versões?
Precisa. Cada FPGA tem o seu próprio DNA, e uma versão amarrada a um não roda no outro. Um ID, uma placa, uma imagem.
Troquei de placa na garantia. Posso manter o meu arquivo de firmware?
O arquivo está amarrado ao DNA antigo, então não. Leia o DNA da placa nova e peça, no mesmo chamado do pedido, uma recompilação contra ele.
O DNA ID me identifica para um anticheat?
Não. Ele é interno ao FPGA e não faz parte do que a placa expõe no barramento PCIe. O que fica exposto é o espaço de configuração, que é o perfil de doador.
Fontes
Como amarramos uma versão a uma única placa é política nossa. O que deve ir num chamado vem dos nossos próprios chamados.
- 01AMD/Xilinx DS180, 7 Series FPGAs Data Sheet: Overview
o device DNA programado de fábrica nas peças Xilinx série 7, e as peças Artix-7 que essas placas usam
docs.amd.com
- 02MemProcFS (Ulf Frisk), AGPL-3.0
a ferramenta que monta a unidade virtual com o arquivo de status em que a linha do DNA aparece
github.com
Leia em seguida
Ainda travado? Abra um ticket no Discord
Todos os guias