ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

IC逆向从物理层到网表:FPGA比特流恢复与LLM辅助实践

IC逆向从物理层到网表:FPGA比特流恢复与LLM辅助实践 1. 从一篇综述说起IC逆向到底在逆什么第一次看到“TCHES 2026 IC逆向综述”这个标题我脑子里蹦出来的不是论文而是几年前帮朋友看一块来路不明的开发板时那种抓耳挠腮的感觉。板子上有一颗打磨掉丝印的芯片没有原理图没有BOM连供电脚都得靠万用表一个个试。那时候我就想要是有系统性的方法论该多好。IC逆向这个领域说白了就是在信息不完整甚至完全缺失的条件下通过外部观测、信号激励和结构推断还原出芯片内部逻辑功能、网表结构乃至设计意图的一整套技术体系。它跟软件逆向最大的区别在于软件逆向面对的是二进制指令流而IC逆向面对的是物理器件——你没法“反编译”一个晶体管只能通过它对外表现出来的行为去猜它内部长什么样。TCHES是硬件安全领域的顶刊能在这个刊物上发逆向综述说明这个方向已经从早年的“手艺活”逐渐沉淀出了方法论。我翻了一圈相关材料结合自己在FPGA开发和数字逻辑验证上踩过的坑把这篇综述涉及的核心脉络梳理一下。netlist网表是逆向的最终交付物之一它描述的是门级或晶体管级的连接关系FPGA在这里扮演双重角色——既是被逆向的对象比如从比特流恢复设计也是逆向工具的实现平台比如用FPGA做高速激励采集LLM则是近两年冒出来的新变量大模型在代码理解、模式识别上的能力正在被尝试引入逆向流程的自动化环节。这篇文章适合谁看如果你是做硬件安全的、做FPGA开发的、或者单纯对“一块芯片怎么被拆解理解”这件事好奇的工程师下面的内容应该能给你一个相对完整的图景。我会尽量把综述里的框架拆成能上手理解的模块同时补上我在实际项目里觉得真正管用的细节。2. 逆向的层次模型从封装到网表要翻几座山2.1 物理层、门级、行为级三个抽象台阶IC逆向不是一步到位的事情它有一个清晰的抽象阶梯。最底层是物理层你面对的是芯片的版图照片、金属层走线、扩散区形状。往上走一层是门级把晶体管连接关系归纳成标准单元——与门、或门、触发器。再往上是行为级/功能级你不再关心具体用了几个门而是理解“这个模块在做CRC校验”或者“这是一个SPI从机”。每一层之间的转换都伴随着信息损失和推断不确定性。物理层到门级难点在于标准单元库的识别——不同工艺、不同厂商的单元版图长得不一样同一个功能可能有十几种画法。门级到行为级难点在于控制逻辑的归纳——一堆门连在一起可能实现的是状态机但状态编码方式、状态转移条件都需要从连接关系中反推。注意很多初学者一上来就想直接得到行为级描述这是不现实的。逆向的精度是逐层累积的物理层识别错了上面全错。2.2 网表恢复为什么是核心交付物netlist之所以成为逆向的核心目标是因为它是可验证、可仿真、可对比的中间表示。你拿到一个网表可以把它灌进仿真器跑测试向量看输出是否和原芯片一致也可以和已知设计做结构比对判断是否抄袭。在FPGA场景下网表恢复还有一层特殊含义从比特流反推设计。FPGA的比特流本质上是对查找表内容、布线开关、IO配置的编码逆向就是解码这个过程。我实测过从某款FPGA的比特流里恢复简单设计感受是布线信息的恢复比逻辑信息的恢复难得多。查找表内容相对容易定位因为它的编码格式通常比较规整但布线开关的配置位分散在比特流各处而且和具体器件架构强相关换一个系列就得重新做数据库。2.3 综述里提到的分类框架那篇综述我理解下来它把逆向方法分成了几大类基于图像处理的版图分析、基于侧信道信息的逻辑推断、基于激励-响应行为的黑盒建模、以及基于机器学习的自动化识别。这个分类的好处是它把“你手里有什么”和“你能得到什么”对应起来了。有版图照片就走图像路线有功耗曲线就走侧信道路线什么都没有只能加激励看输出就走黑盒路线。方法类别输入数据输出粒度典型工具/技术版图图像分析显微照片、SEM图像门级网表图像分割、模板匹配侧信道分析功耗、电磁辐射曲线功能模块识别相关性分析、聚类黑盒行为建模激励-响应序列行为级模型状态机学习、LLM辅助比特流逆向FPGA配置文件门级网表位流数据库、布线推断这个表格是我根据综述内容和自己的理解整理的实际项目中往往是多种方法混用。比如先用侧信道定位感兴趣的区域再用版图图像做精细识别最后用行为测试验证。3. FPGA在逆向里的双重身份靶子和工具3.1 从比特流到网表FPGA逆向的独特挑战FPGA逆向和ASIC逆向有个根本区别ASIC逆向面对的是不可重构的硅片FPGA逆向面对的是可重构的配置数据。这意味着FPGA逆向理论上可以做到100%精确——因为比特流里包含了完整的设计信息问题只是你能不能解码。但挑战也在这里比特流的编码格式是厂商私有的而且不同系列、不同密度器件之间的编码规则可能完全不同。我拿手头的安路FPGA和黑金开发板做过对比实验同样是实现一个简单的计数器两款器件的比特流长度、配置位分布、甚至查找表的编码顺序都不一样。这意味着做FPGA比特流逆向必须针对具体器件建立位流数据库。建库的过程通常是用已知设计生成比特流改变设计参数观察比特流哪些位发生变化从而建立“设计变更-比特变化”的对应关系。实操心得建库时一定要控制变量。一次只改一个查找表的内容或者只改一个布线开关的状态否则比特流变化太复杂根本没法归因。3.2 用FPGA做逆向工具高速激励与采集反过来FPGA也是逆向的利器。ASIC逆向里经常需要给芯片加高速激励并采集响应用通用仪器成本高、灵活性差。FPGA的优势在于可以定制时序、可以并行多通道采集、可以实时处理。比如你要逆向一个高速ADC接口用FPGA生成测试图案同时采集输出比用逻辑分析仪更灵活。综述里提到用FPGA做侧信道采集平台我觉得这个思路很实用。功耗侧信道需要高采样率、低抖动的采集FPGA的LVDS接收和高速ADC采样能力正好匹配。我自己搭过一个简易的采集平台用FPGA的进位链TDC测量时间间隔虽然精度比不上专业设备但做相对比较够用了。3.3 比特流逆向的实操路径如果你真想动手做FPGA比特流逆向我建议的路径是这样的选定目标器件从简单、公开资料多的器件入手比如某些老型号的FPGA。建立参考设计集设计一系列功能已知、结构简单的电路覆盖查找表、触发器、布线、IO等基本元素。差分比特流分析对每个参考设计生成比特流然后做微小修改再生成对比差异位。建立映射表把差异位和设计变更对应起来逐步积累位流数据库。验证与迭代用未知设计测试你的解码规则看恢复出的网表是否功能一致。这个过程很枯燥但每一步都有明确的反馈。我试过用Python脚本自动化差分分析效率比手工高很多。4. LLM入场大模型能给逆向带来什么4.1 代码理解与模式识别LLM在逆向里最直接的应用是代码和网表的理解。逆向出来的网表通常是扁平的、没有语义的LLM可以帮忙做模式识别——比如识别出“这是一组触发器构成的移位寄存器”或者“这是一个状态机的次态逻辑”。我试过把门级网表转成文本描述然后让LLM分析功能对于小规模电路效果还不错规模一大就力不从心了。另一个方向是从行为描述生成测试向量。逆向需要大量激励来区分不同功能LLM可以根据已有的功能假设生成有针对性的测试序列。这个思路在软件逆向里已经有实践硬件领域还在早期。4.2 逆向流程的自动化编排LLM的agent能力可以用来自动编排逆向流程。比如一个agent负责图像分割一个负责网表提取一个负责功能验证LLM作为调度器决定下一步做什么。综述里提到这个方向我觉得是合理的但目前的可靠性还不够——逆向是个容错率很低的活一步错步步错LLM的幻觉问题在这里是致命的。注意LLM在逆向里的定位应该是“辅助”而不是“替代”。它可以帮你快速筛选可能性、生成假设、写分析脚本但最终的判断和验证必须由人来做。4.3 当前局限与我的判断LLM在IC逆向里的局限很明显训练数据里硬件逆向的语料远少于软件逆向导致模型对硬件概念的理解不够深逆向任务往往需要精确的数值推理和结构推理而LLM在这两方面都不擅长逆向的验证闭环很长LLM很难从错误中快速学习。我的判断是未来几年LLM在逆向里的角色会逐渐清晰做前端的信息提取和假设生成做中端的脚本自动化做后端的报告整理。核心的推断和验证还是得靠专业工具和人的经验。5. 常见问题与排查技巧实录5.1 版图图像识别不准怎么办版图图像分析最常见的问题是光照不均、噪声干扰、单元粘连。我的经验是预处理比识别算法本身更重要。先做直方图均衡化再做自适应阈值分割最后用形态学操作断开粘连。如果标准单元库已知用模板匹配比用通用分割更可靠。5.2 侧信道曲线对齐困难侧信道分析里曲线对齐是老大难。不同次采集的曲线在时间轴上会有偏移导致相关性分析失效。解决办法找一个稳定的触发信号做对齐基准或者用动态时间规整算法做软对齐。我试过用FPGA生成精确的触发脉冲对齐效果比软件对齐好很多。5.3 比特流差分分析找不到规律比特流差分分析卡住的时候先检查你的参考设计是否真的只改了一个变量。FPGA工具在综合和布局布线时可能会因为微小改动而重新优化整个设计导致比特流大面积变化。解决办法用增量编译或者手动锁定布局布线。问题现象可能原因排查方向网表仿真功能不对单元识别错误检查标准单元库映射侧信道相关性低曲线未对齐重新对齐或换触发方式比特流差分无规律设计被重新优化锁定布局布线后重试LLM分析结果离谱输入描述不完整补充上下文或换模型5.4 逆向结果怎么验证验证是逆向里最容易被忽视的环节。我的做法是功能验证结构验证双管齐下。功能验证用测试向量跑仿真对比原芯片输出结构验证把恢复的网表和已知设计做图同构比对。两者都通过才能说逆向结果是可信的。6. 我在这条路上踩过的坑最早接触IC逆向是想从一块FPGA开发板里恢复一个丢失源码的设计。当时天真地以为比特流逆向就是查表结果发现不同器件的编码规则完全不同网上能找到的资料少得可怜。后来转向侧信道分析又发现采集平台的建设成本比想象中高。再后来尝试用LLM辅助分析网表发现模型对硬件结构的理解确实有限。踩坑踩多了反而对这个领域有了更实际的预期。IC逆向没有银弹它是一个需要耐心、需要多方法交叉验证、需要不断积累经验的方向。那篇TCHES综述的价值在于它把散落在各处的技术和方法论串起来了让后来者少走一些弯路。如果你也在做类似的事情我的建议是从一个小目标开始把一条路径走通再扩展。别一上来就想逆向整个SoC那是不现实的。
返回列表