详解 FPGA 的 DNA ID
Xilinx 7 系列 FPGA 出厂就烧录的唯一 ID。从硅片层面讲它是什么、怎么读取、为什么定制固件要绑定它,以及它不是什么。
简短回答
DNA ID 是一个 57 位、只读的数值,出厂时烧进每颗 Xilinx 7 系列 FPGA。FPGA 内部逻辑通过 DNA_PORT 原语读取它。定制固件是针对这个数值编译的,所以镜像只能在这一块板卡上运行。它不是许可证密钥,也不包含任何关于你的信息。
DNA 到底是什么
每颗 Xilinx 7 系列器件,包括 Artix-7,出厂时都在 eFUSE 里烧进了一个唯一标识符。内部逻辑通过一个叫 DNA_PORT 的原语读取它。这个原语把数值载入一个移位寄存器,再一位一位地移出来。在 7 系列器件上,可访问的位宽是 57 位。这个数值是只读的:没有命令能改写它,没有工具能在硅片层面伪造它,也没有任何办法让两颗芯片得到相同的数值。正是这种永久性,让它能充当绑定用的密钥。
DNA 一览
在你决定要不要把它贴进工单时,真正要紧的那些属性。
- 存放位置
- FPGA 内部的 eFUSE,制造时烧录
- 位宽
- 7 系列器件上逻辑可访问 57 位,通过 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用 MemProcFS 读取
这是可靠的做法,也是站内现有 DNA ID 指南介绍的方法。在副机(第二台电脑)上操作,板卡要处于通电状态。
- 先启动游戏主机并进入桌面,让板卡通电并被枚举
- 按订单说明中指定用于状态读取的端口,把板卡连到副机
- 以管理员身份运行 MemProcFS.exe,用随订单下发的版本
- 打开它挂载出来的虚拟盘
- 打开 misc\pcileech_status.txt
- 原样复制 DNA_ID 数值,末尾不要带空格,也不要改动格式
警告
状态文件为什么有时会不见
状态文件不见了,说明板卡没在通信,并不是 DNA 没了。先查端口。状态读取和刷写用的是板上不同的插口,插错口是最常见的原因。然后查线,再查副机上的 USB 桥接驱动,最后冷启动游戏主机。不要凭空编一个数值,也不要为了图省事拿旧卡的数值凑数。针对错误 DNA 编译出的镜像,你迟早得推倒重来。
固件为什么要绑定它
定制镜像是为一块板卡编译的。把比特流绑定到它所针对的那个 DNA,让这件事变成机械约束,而不是靠自觉。逻辑在运行时读取 DNA,只有匹配才继续。由此有两个后果。镜像无法复制到第二块卡上使用,这就是为什么一次购买对应一块板卡。而如果你换了卡,新 FPGA 有不同的 DNA,你就需要重新编译一份,因为旧文件里没有任何东西能带过去。
说明
DNA 做不到什么
人们常把它当成三样东西,可它一样都不是。它不是许可证密钥。它标识的是硬件,你的使用权在订单上,而不在芯片里。它不是个人数据。它是制造时烧进去的,不是从任何关于你的信息推导出来的,也无法反推回一个身份。它本身也不是一条检测途径。反作弊读取板卡配置空间时,看到的是捐赠者配置,而不是 FPGA 内部的 DNA。
工单里该写什么
全都写在一条消息里。一张要被追问三次的工单,就是一张要等三次的工单。
- 订单号
- 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
Xilinx 7 系列器件出厂烧录的 device DNA,以及这些板卡用到的 Artix-7 型号
docs.amd.com
- 02
继续阅读
仍然没有解决?在 Discord 提交工单
全部指南