El DNA ID de la FPGA, en detalle
El identificador único grabado de fábrica en las FPGA Xilinx de la serie 7. Qué es a nivel de silicio, cómo leerlo, por qué el firmware a medida se ata a él y qué no es.
Respuesta corta
El DNA ID es un valor de 57 bits, de solo lectura, grabado de fábrica en cada FPGA Xilinx de la serie 7. La lógica lo lee a través de la primitiva DNA_PORT. El firmware a medida se compila contra ese valor, así que la imagen funciona en una sola placa. No es una clave de licencia y no contiene ninguna información sobre ti.
En esta página10
Qué es el DNA en realidad
Todos los dispositivos Xilinx de la serie 7, Artix-7 incluida, salen de fábrica con un identificador único programado en eFUSE. La lógica interna lo lee a través de una primitiva llamada DNA_PORT, que carga el valor en un registro de desplazamiento y lo va sacando bit a bit. En las piezas de la serie 7 el ancho accesible es de 57 bits. El valor es de solo lectura. Ningún comando lo reescribe, ninguna herramienta lo falsifica en el silicio y ningún procedimiento hace que dos chips tengan el mismo valor. Esa permanencia es justo la razón de que funcione como clave de vinculación.
El DNA de un vistazo
Las propiedades que importan cuando estás decidiendo si pegarlo en un ticket.
- Dónde vive
- En los eFUSE del interior de la FPGA, programados durante la fabricación
- Ancho
- 57 bits accesibles a la lógica en las piezas de la serie 7, leídos con la primitiva DNA_PORT
- ¿Se puede escribir?
- No. Solo lectura durante toda la vida del chip
- Alcance
- Identifica un die de FPGA. Ni la placa, ni el chip de flash, ni el PC
- ¿Sale de ti?
- Nada. Es anterior a tu compra y no sabe nada de ti
- ¿Es secreto?
- No en términos criptográficos. Trátalo como un identificador que no publicas, no como una contraseña
Dónde aparece el valor
MemProcFS monta una unidad virtual y escribe dentro un archivo de estado. La línea del DNA de ese archivo es el valor que necesita soporte, copiado tal cual, sin espacios de más.
MemProcFS.exe run as Administrator on the second PC
<mounted drive>\misc\pcileech_status.txt
look for the line beginning: DNA_IDLeerlo con MemProcFS
La vía fiable, y la que describe la guía del DNA ID que viene con el pedido. Hazlo en el segundo PC, con la tarjeta alimentada.
- Arranca primero el PC de juego y deja que llegue al escritorio, para que la tarjeta tenga corriente y esté enumerada
- Conecta la tarjeta al segundo PC por el puerto que indiquen las instrucciones de tu pedido para una lectura de estado
- Ejecuta MemProcFS.exe como administrador, con la versión que viene con tu pedido
- Abre la unidad virtual que monta
- Abre misc\pcileech_status.txt
- Copia el valor de DNA_ID exactamente, sin espacio al final y sin reformatearlo
Aviso
Por qué a veces falta el archivo
Que falte el archivo de estado significa que la tarjeta no está hablando, no que el DNA haya desaparecido. Revisa primero el puerto: una lectura de estado y un flasheo usan conectores distintos de la placa, y el conector equivocado es con diferencia la causa más común. Después el cable, después el driver del puente USB en el segundo PC, y después un arranque en frío del PC de juego. No te inventes un valor. No reutilices el de una tarjeta antigua para salir del paso. Una compilación contra el DNA equivocado es una compilación que tendrás que repetir.
Por qué el firmware se ata a él
Una imagen a medida se compila para una sola placa. Atar el bitstream al DNA contra el que se compiló convierte eso en algo mecánico, en vez de un sistema basado en la confianza. La lógica lee el DNA mientras funciona y solo sigue adelante si coincide. De ahí salen dos consecuencias. La imagen no se puede copiar a una segunda tarjeta y usarla ahí, y por eso una compra es una placa. Y si cambias de tarjeta, la FPGA nueva tiene otro DNA: necesitas una compilación nueva, porque del archivo antiguo no se hereda nada.
Info
Qué no hace el DNA
Tres cosas que la gente da por hechas, y no es ninguna de ellas. No es una clave de licencia: identifica hardware, y tu derecho de uso vive en tu pedido, no en el chip. No es un dato personal: se grabó durante la fabricación, no deriva de nada tuyo y no se puede convertir de vuelta en una identidad. Y no es un vector de detección por sí mismo: un anticheat que lee el espacio de configuración de la tarjeta ve el perfil de donante, no el DNA interno de la FPGA.
Qué poner en el ticket
Todo en un solo mensaje. Un ticket al que hay que hacer tres preguntas de seguimiento es un ticket que espera tres veces.
- El ID del pedido
- El DNA ID, copiado exactamente del archivo que abriste tú
- El modelo de la tarjeta y la clase de FPGA tal y como vienen marcados en la placa, más una foto de la serigrafía
- Qué herramienta produjo el valor, y la salida completa en vez de un fragmento retecleado
- El juego y el anticheat con los que piensas usarlo
- Si es una primera compilación o el reemplazo de una tarjeta que has cambiado
Preguntas sobre el DNA
¿Se puede cambiar o falsificar el DNA ID?
En el silicio, no. Es eFUSE de fábrica y de solo lectura. La lógica de un bitstream puede, claro está, informar a una herramienta de lo que le dé la gana. Pero el valor que guarda el chip no cambia.
¿Es seguro enviar mi DNA ID a soporte?
Sí, en el ticket del pedido. Es un identificador de hardware sin ninguna información personal dentro. No lo publiques en un canal público, por la misma razón por la que no publicarías un número de serie.
Dos tarjetas, ¿necesito dos compilaciones?
Sí. Cada FPGA tiene su propio DNA, y una imagen atada a una no funciona en la otra. Un ID, una placa, una imagen.
He cambiado la tarjeta por garantía. ¿Puedo quedarme con mi archivo de firmware?
El archivo está atado al DNA antiguo, así que no. Lee el DNA de la tarjeta nueva y pide en el mismo ticket del pedido que te la recompilen contra él.
¿El DNA ID me identifica ante un anticheat?
No. Es interno a la FPGA y no forma parte de lo que la tarjeta expone en el bus PCIe. Lo que se expone es el espacio de configuración, que es el perfil de donante.
Fuentes
Cómo atamos una compilación a una sola tarjeta es política nuestra. Lo que debe ir en un ticket sale de nuestros propios tickets.
- 01AMD/Xilinx DS180, 7 Series FPGAs Data Sheet: Overview
el device DNA programado en fábrica en las piezas Xilinx de la serie 7, y los modelos Artix-7 que usan estas tarjetas
docs.amd.com
- 02MemProcFS (Ulf Frisk), AGPL-3.0
la herramienta que monta la unidad virtual con el archivo de estado donde aparece la línea del DNA
github.com
Sigue leyendo
¿Sigues atascado? Abre un ticket en Discord
Todas las guías