☰
TCHES 2026 IC逆向综述解读:从netlist到FPGA与LLM辅助分析
2026/10/6 7:10:54 网站建设 项目流程

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的加持下,落地速度确实比以前快了不少。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询