尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

TCHES 2026 IC逆向综述解读:从netlist到FPGA与LLM辅助分析

TCHES 2026 IC逆向综述解读:从netlist到FPGA与LLM辅助分析 1. 从一篇综述聊起IC逆向到底在逆什么第一次看到“TCHES 2026 IC逆向综述”这个题目我脑子里冒出来的不是学术会议而是几年前帮朋友看一块来路不明的开发板。板子上有一颗打磨掉丝印的芯片朋友想知道它到底是不是某款常见的FPGA还是别的什么可编程逻辑器件。当时我们手头没有X-ray也没有化学开盖的条件只能靠边界扫描、供电引脚分布和配置Flash的读写时序去猜。那一次折腾了整整两周最后靠一个很土的办法——给配置Flash做全片dump再拿已知器件的bitstream头部特征去比对——才把型号范围缩小到两三个候选。这件事让我意识到IC逆向从来不是单一技术而是一整套从封装、版图、网表到系统行为的推理链条。TCHES是硬件安全领域公认的顶会之一它上面关于IC逆向的综述通常不会只讲“怎么把芯片磨开拍照”这种工艺层面的东西而是会把逆向的抽象层级讲清楚。所谓逆向逆的到底是什么从最底层往上数至少有五层晶体管级、门级、寄存器传输级、网表级、系统级。每一层对应的手段、成本、能拿到的信息量完全不同。很多人一提到逆向就想到显微镜和蚀刻其实那只是最底层的一小段。真正在工程里高频出现的是网表级逆向和系统级行为推断尤其是当目标对象是FPGA这类可编程器件时逆向的入口往往不是硅片本身而是配置文件、位流格式和工具链留下的痕迹。这篇综述之所以值得拿出来聊是因为它把IC逆向和当下两个热得发烫的方向接上了一个是LLM辅助的硬件分析另一个是FPGA生态里的逆向与防护。热搜词里同时出现TCHES、IC逆向、netlist、FPGA、LLM这不是偶然。netlist是逆向的核心中间表示FPGA是逆向的高频目标载体LLM则是最近两年被反复尝试用来加速网表理解和行为推断的新工具。三者叠在一起基本就是当前硬件安全研究的一个缩影。如果你是从FPGA开发转过来看这个题目的可能会觉得逆向离自己很远。其实不然。你做FPGA项目时遇到的“为什么综合出来的网表和我写的RTL差这么多”“为什么别人拿到我的bitstream能改出一样的功能”“为什么我的IP核被人抄了却很难举证”这些问题的背面就是逆向与防护。同样如果你在做LLM相关的应用比如用大模型去读网表、生成测试激励、做单元测试那这篇综述里关于LLM辅助逆向的部分会直接告诉你哪些路已经有人走过、哪些坑已经有人踩过。我写这篇东西不是要复述综述的章节结构而是想把它拆成从业者能直接用的视角IC逆向的层级怎么分、netlist在中间扮演什么角色、FPGA为什么成了逆向的重灾区、LLM到底能在哪一步帮上忙、以及实际动手时哪些细节最容易翻车。适合谁看做硬件安全的、做FPGA开发的、做EDA工具的、以及想用LLM做硬件分析但不知道从哪下手的都能找到对应的段落。2. IC逆向的层级拆解与netlist的核心地位2.1 五层逆向模型从硅片到系统行为IC逆向的层级划分不同综述的切法略有差异但大体逃不出下面这个框架。我把它整理成表格方便对照。层级主要对象典型手段信息量成本晶体管级硅片物理结构开盖、SEM、蚀刻、掺杂分析最高可到单个晶体管极高破坏性门级标准单元连接版图提取、单元库匹配高可到逻辑门高需工艺知识寄存器传输级时序逻辑与数据通路网表分析、状态机提取中高可到寄存器中网表级逻辑连接关系网表解析、图分析、模式匹配中可到模块边界中低系统级整体行为与协议黑盒测试、协议推断、LLM辅助低到中偏行为低这张表里最值得说的是网表级。它处在中间位置往上可以推断系统行为往下可以对应门级结构而且它有一个巨大的优势不依赖物理破坏。你拿到一个FPGA的bitstream或者一个ASIC的网表文件就可以在纯软件环境里做大量分析。这也是为什么netlist会成为IC逆向综述里的核心关键词。晶体管级逆向虽然信息量最大但它的门槛和成本让绝大多数团队望而却步。开盖需要专业设备蚀刻会永久破坏样品SEM成像后的图像拼接和单元识别又是另一个大工程。门级逆向稍微好一点但依然需要版图提取工具和工艺库支持。真正在工程中可复现、可规模化的是网表级和系统级。这也是LLM能插进来的地方——因为这两层的数据形态是文本、图结构、行为序列正好是大模型擅长的领域。2.2 netlist为什么是逆向的“中间语言”netlist本质上是一张图节点是逻辑单元或寄存器边是连接关系。它既不像RTL那样带有丰富的人类可读语义也不像版图那样充满物理细节但它恰好卡在一个“信息足够多、复杂度又可控”的位置。你可以把它当成硬件世界的中间表示类似编译器里的IR。从逆向角度看netlist有几个关键特性。第一它是工具链的必经之路。无论是综合、布局布线还是仿真netlist都是中间产物。这意味着只要你能拿到某个环节的netlist就能绕过前面所有步骤。第二它是可分析的。图算法、模式匹配、子图同构、社区发现这些在软件领域成熟的方法可以直接搬到netlist上。第三它是可生成的。你可以从RTL综合出netlist也可以从bitstream反推netlist两个方向都有工具支持。实际做逆向时netlist分析通常分三步走。第一步是结构识别把网表里的基本单元归类比如哪些是查找表、哪些是触发器、哪些是进位链。第二步是功能推断根据连接关系猜出模块功能比如一个计数器、一个状态机、一个加法树。第三步是边界划分把大网表切成有意义的子模块对应到原始设计里的IP核或功能块。这三步里第一步靠工具第二步靠经验和模式库第三步靠图分割算法加人工判断。注意netlist分析最怕的是“扁平化”。很多综合工具默认会把层次结构打平导致你拿到的是一个几十万节点的平网表。这时候先做层次恢复比直接上功能推断要高效得多。2.3 FPGA逆向的特殊性bitstream就是网表的另一种形态FPGA和ASIC在逆向上最大的区别是ASIC的最终形态是硅片FPGA的最终形态是bitstream。bitstream里包含了查找表内容、布线开关状态、IO配置、时钟资源设置等信息。理论上只要你能完整解析bitstream格式就能恢复出相当精确的网表。这也是为什么FPGA逆向的研究热度一直很高。但bitstream逆向有几个硬骨头。第一格式不公开。主流FPGA厂商的bitstream格式都是私有的虽然社区有一些逆向成果但覆盖度和版本兼容性参差不齐。第二加密和认证。很多器件支持bitstream加密没有密钥就无法配置更别说逆向。第三部分重配置。有些设计只加载部分bitstream动态切换功能这会让静态分析变得很困难。热搜词里出现“fpga怎么编写光口代码”“rocev2 fpga”“fpga网卡测速程序”这些其实都和FPGA逆向有间接关系。因为高速接口和网络协议栈往往是逆向的高价值目标而FPGA又是这些功能的常见实现载体。你如果能从bitstream里恢复出光口或网络相关的逻辑就能理解整个数据通路的架构。3. LLM在IC逆向中的真实作用与边界3.1 LLM能做什么从网表理解到测试生成LLM进入硬件安全领域最早是从代码理解开始的。RTL是代码网表可以转成代码测试激励也是代码这些文本形态的数据天然适合LLM处理。在IC逆向的语境下LLM目前比较靠谱的应用有这么几类。第一类是网表摘要。给LLM一段网表描述让它用自然语言概括这个模块大概在做什么。比如输入一个包含大量加法器和寄存器的子图LLM可以推断出这可能是一个累加器或滤波器。这种能力在人工分析海量网表时非常有用相当于给你配了一个随时能问的助手。第二类是模式匹配的加速。传统的网表模式匹配靠预定义模板覆盖有限。LLM可以通过少量示例学会识别新的模式比如某种特定的状态机编码风格、某种加密算法的轮函数结构。热搜词里“fpga case用独热码和不用独热码区别”就是一个典型例子独热码状态机在网表里有非常明显的特征LLM可以学会这种特征并快速标记。第三类是测试激励生成。逆向过程中经常需要给黑盒或半黑盒模块喂输入观察输出从而推断功能。LLM可以根据已有的接口信息和部分行为生成有针对性的测试向量。这比随机测试效率高得多尤其是在协议推断场景下。第四类是文档与知识关联。LLM可以把你手头的网表特征和公开的IP核、算法库、协议规范关联起来。比如你看到一个特定的CRC多项式结构LLM可以告诉你这对应哪种常见协议。3.2 LLM不能做什么别指望它直接读bitstream这里必须泼一盆冷水。LLM不是魔法它不能直接读二进制bitstream也不能替代版图分析。它的强项是文本和结构化数据的模式识别弱项是精确的数值计算和底层物理推断。具体来说LLM在IC逆向里有几个明确的边界。第一不能做精确的时序分析。网表里的延迟、建立保持时间、时钟域交叉这些需要专门的时序分析工具LLM给不出可靠结果。第二不能替代形式验证。逆向出来的功能是否正确最终要靠形式验证或等价性检查LLM的“猜测”只能作为假设。第三不能处理超大规模网表。上下文窗口再大也装不下百万级节点的完整网表必须做分块和摘要。第四不能保证可复现。同一个网表LLM两次给出的解释可能不同这在工程上是个大问题。热搜词里“llm request failed: provider rejected the request schema or tool payload”这种报错在硬件分析场景里也很常见。因为网表数据往往很大格式又特殊直接塞给LLM API很容易触发schema或payload限制。实际做法是先做本地预处理把网表转成紧凑的文本表示再分批次送进去。3.3 一个可落地的LLM辅助逆向流程我试过的一个流程是这样的不一定最优但可复现。第一步网表预处理。用工具把网表转成边列表或邻接表然后按模块切分。每个模块生成一段文本描述包括单元类型统计、连接密度、关键路径长度等。第二步LLM初筛。把模块描述批量送给LLM让它给每个模块打标签比如“疑似计数器”“疑似状态机”“疑似存储器接口”。这一步不追求精确只做粗分类。第三步人工复核与模式库更新。对LLM标记的高价值模块人工细看确认后把特征加入模式库。模式库可以反过来用于训练更小的专用模型降低对通用LLM的依赖。第四步行为推断与验证。对确认的模块生成测试激励跑仿真或实际测试验证功能推断是否正确。这个流程里LLM的作用是降低人工初筛的成本而不是替代人工。实测下来在中等规模网表上初筛效率能提升三到五倍但最终判断还是得靠人。提示用LLM做网表分析时尽量用本地部署的模型避免把敏感设计数据传到外部服务。热搜词里“安卓本地运行gguf格式llm软件”和“llm studio”反映的就是这种本地化需求。4. FPGA逆向的实操路径与防护思路4.1 从bitstream到网表的典型步骤FPGA逆向的完整链条通常是获取bitstream、解析帧格式、提取配置位、映射到器件资源、恢复网表、功能推断。每一步都有坑。获取bitstream相对直接可以从配置Flash里读也可以从JTAG抓。但如果是加密bitstream这一步就卡住了。解析帧格式需要知道器件的帧结构这部分公开资料很少往往要靠社区积累或自己逆向。提取配置位是把bitstream里的二进制段对应到具体的查找表、布线开关、IO块。映射到器件资源需要器件数据库包括每个可配置点的位置和含义。恢复网表是把配置位翻译成逻辑连接。功能推断就是前面说的netlist分析。热搜词里“fpga 实现串口升级qspi”和“fpga spi”其实和bitstream获取有关。很多FPGA项目用QSPI Flash存配置如果你能通过SPI接口读到Flash内容就拿到了bitstream。这也是为什么防护方案里经常强调要对配置Flash做加密和访问控制。4.2 常见防护手段与它们的局限FPGA逆向的防护主流手段有这么几种。bitstream加密是最直接的没有密钥就无法配置。但加密只保护配置过程如果攻击者能拿到解密后的bitstream防护就失效了。认证确保只有合法bitstream能被加载但同样不保护bitstream本身。混淆是在设计里加入冗余逻辑或改变结构增加逆向难度但会增加面积和功耗。物理防护比如防开盖涂层、传感器针对的是物理攻击对bitstream逆向无效。实际项目中防护往往是组合拳。比如加密加认证加部分重配置让攻击者即使拿到部分bitstream也无法恢复完整功能。但防护和成本永远是一对矛盾你需要根据设计的价值来权衡。4.3 一个容易被忽略的细节工具链留下的指纹很多逆向案例的突破口不是bitstream本身而是工具链指纹。不同综合工具、不同版本、不同优化选项生成的网表和bitstream会有细微差异。这些差异就像指纹可以用来判断设计是用什么工具、什么流程生成的。一旦确定了工具链就可以针对性地用该工具的反向功能或已知漏洞来辅助逆向。热搜词里“安路fpga 仿真”“黑金fpga”“fpga ep4ce10制作fft ip核的信号频谱仪”这些反映的是FPGA生态的多样性。不同厂商、不同系列的工具链差异很大逆向的难度和方法也不同。做防护时了解自己所用工具链的指纹特征有助于评估泄露风险。5. 常见问题与排查技巧实录5.1 网表分析中的典型问题速查问题现象可能原因排查思路解决方向网表节点数异常多层次被打平检查综合选项恢复层次或做图分割功能推断结果不稳定LLM上下文不足检查输入长度分块摘要多次投票bitstream解析失败帧格式不匹配核对器件型号和版本更新器件数据库模式匹配漏报率高模板覆盖不足统计漏报样本扩充模式库或微调模型测试激励无效接口时序不对检查时钟和复位补充时序约束这张表里的每一条都是我或身边人实际踩过的。比如“网表节点数异常多”这一条我第一次遇到时以为是设计本身复杂后来才发现是综合时忘了保留层次导致所有模块被展平。恢复层次后节点数从几十万降到几万分析难度直线下降。5.2 几个独家避坑技巧第一个技巧先做资源统计再做功能推断。拿到网表后别急着猜功能先统计查找表、触发器、乘法器、块存储器的数量。这些统计信息能快速告诉你设计的类型。比如乘法器多可能是信号处理块存储器多可能是缓存或帧缓冲触发器多且连接密集可能是状态机或流水线。第二个技巧用时钟域做天然分割。网表里的时钟域往往是功能边界。先把时钟域识别出来再在每个时钟域内做分析比全局分析高效得多。热搜词里“fpga有固定的复位脚吗”这种问题在逆向时也要注意复位策略往往和时钟域设计强相关。第三个技巧LLM输出必须交叉验证。不要相信单次LLM判断。同一个模块换不同的提示词、不同的分块方式多问几次取一致的结果。不一致的地方就是需要人工重点看的地方。第四个技巧保留原始bitstream和中间文件。逆向过程往往需要反复回溯。今天解析到一半卡住了明天换个工具可能就通了。如果原始文件丢了一切重来。我习惯给每个项目建一个完整的文件树从原始bitstream到每一步的中间产物都留着标注好工具版本和参数。5.3 关于LLM辅助逆向的几点冷静判断热搜词里LLM相关的内容非常多从“llm是什么”到“llm as judge”到“agentpoison: red-teaming llm agents via poisoning memory or knowledge ba”说明大家对LLM的期待和担忧并存。在IC逆向这个具体场景里我的判断是LLM目前是一个高效的辅助工具但远不是自主的逆向引擎。它最擅长的是把非结构化或半结构化的硬件数据转成人类可读的假设然后由人来验证。它不擅长的是精确计算、大规模图算法的替代、以及需要严格可复现性的任务。如果你把LLM当成一个随时能聊的硬件分析助手它会很有用如果你指望它一键逆向整个芯片那一定会失望。另外LLM本身的安全问题也值得注意。用外部LLM服务分析敏感网表等于把设计信息交出去。用本地模型又受限于算力和模型能力。这个权衡在可预见的未来都会存在。热搜词里“支持 nsfw llm 有那些”这种虽然和硬件无关但反映的是同一个问题LLM的部署方式和内容边界始终是实际应用中绕不开的考量。6. 从综述到实践我个人的几点体会TCHES这篇IC逆向综述如果只读摘要很容易觉得它离工程很远。但真正把里面的分类框架和当前工具链对照起来看会发现很多可操作的点。比如它把逆向分成不同抽象层级这个思路直接对应到实际工作中“先确定你在哪一层再选工具”的原则。很多人逆向失败不是因为技术不够而是因为层级搞混了——拿着晶体管级的手段去解决网表级的问题或者反过来。FPGA逆向这块我的体会是bitstream解析是门槛netlist分析是核心功能验证是终点。三者缺一不可。只解析不分析拿不到有用信息只分析不验证结论不可靠。LLM的加入让中间的分析环节效率提升明显但两端的门槛和终点并没有改变。最后分享一个很小但很实用的习惯每次做逆向分析都先画一张层级-工具-产出的对照图。横轴是抽象层级纵轴是可用工具格子里写这一步能产出什么。这张图不用很精细但能帮你在卡住的时候快速定位是工具不对还是层级跳错了还是产出目标不明确。我靠这个习惯至少省下了好几次盲目试错的时间。这个方向后续还可以往几个方向扩展一是把LLM和传统图算法结合做混合分析流水线二是针对特定器件系列建立更完整的bitstream-网表映射库三是把逆向思维反过来用于防护设计做“以攻促防”的评估。这些都不是新概念但在LLM的加持下落地速度确实比以前快了不少。
返回列表