第1章:网表级检测基础

做硬件安全这些年,我经常被问到同一个问题:「为什么非要盯着网表看?RTL 不是更早发现问题吗?」

嗯,这个问题问得好。今天我就把这事儿彻底讲明白。

1.1 网表(Netlist)到底是什么?

先说说网表。说白了,它就是芯片的「电路连接图」。

你想想看,RTL 代码写的是行为描述——「如果 A 为高,B 就输出低」。但网表不一样,它描述的是:哪个标准单元(AND门、OR门、触发器)的哪个引脚,连到了哪个标准单元的哪个引脚

举个例子,一个简单的 D 触发器在网表里长这样:

DFF_X1 U1 ( .D(net1), .CK(clk), .Q(net2), .QN(net3) );
AND2_X1 U2 ( .A(net2), .B(net4), .ZN(net5) );

看到没?每个单元都有名字(U1、U2),每个连接都有网络名(net1、net2...)。这就是网表——用标准单元拼出来的电路

核心概念:网表 = 标准单元 + 互连网络

它不再有「if-else」这种高级结构,只有「门」和「线」。

1.2 综合后的门级网表 vs RTL

这两者的区别,我打个比方你就懂了:

  • RTL 就像建筑设计图——「这里要一扇窗,那里要一扇门」
  • 门级网表 就像施工图纸——「窗框用铝合金,门把手装在离地1米处」

具体差异,我整理了一张表:

对比维度 RTL 门级网表
抽象层次 行为级/寄存器传输级 结构级(门/触发器级)
可读性 高,接近软件代码 低,全是标准单元实例
时序信息 无(只有时钟沿) 有(门延迟、线延迟)
面积/功耗 无法精确评估 可以精确计算
木马检测能力 只能发现行为级异常 可发现结构级异常

我个人习惯是:RTL 阶段做功能验证,网表阶段做安全检测。两者分工不同,谁也替代不了谁。

1.3 为什么非要在网表级做检测?

这个问题,我用三个真实场景来回答。

场景一:RTL 里看不到的「幽灵连接」

我曾经接手过一个项目,RTL 代码干干净净,没有任何可疑逻辑。但综合后的网表里,多出了一条从密钥寄存器到测试模式的连线。

为什么会这样?因为综合工具在优化时,把某个「看似无害」的测试逻辑合并到了关键路径上。RTL 里根本看不出来,但网表里一目了然。

避坑指南:我曾经以为 RTL 审查就够了,直到那次流片回来发现密钥泄露。从那以后,网表级检测成了我的铁律。

场景二:第三方 IP 的「黑盒陷阱」

你买来的第三方 IP,RTL 可能是加密的,或者只给了行为模型。但综合后的网表是实实在在的——每个标准单元都摆在那里。

我记得有个客户,用了某家公司的 USB IP。RTL 仿真一切正常,但网表里发现了一个「额外」的计数器,每隔 1000 次传输就触发一次数据泄露。这种木马,RTL 阶段根本发现不了。

场景三:制造阶段的「暗门」

嗯,这里要注意。有些木马是在制造阶段植入的——攻击者修改了光刻掩模版,在芯片里加了几个额外的标准单元。

这种木马,RTL 里当然不存在。你只能拿设计网表实际芯片的网表做比对,才能发现差异。

1.4 网表级检测的核心逻辑

说了这么多,我画了一张图来总结网表级检测的整个思路:

网表级硬件木马检测核心逻辑 RTL 代码 行为级描述 综合工具 Design Compiler / Yosys 第三方 IP 黑盒/加密交付 门级网表(Netlist) 标准单元 + 互连网络 结构特征分析 扇入/扇出异常 冗余逻辑检测 功能等价性验证 RTL vs 网表比对 形式化验证 统计异常检测 信号概率分析 罕见事件触发 检测结果:木马存在 / 木马不存在 / 需进一步分析

这张图展示了网表级检测的完整链路:RTL 和第三方 IP 经过综合工具,变成门级网表,然后通过三种核心方法进行检测

我的经验:三种方法要配合使用。单靠结构分析会漏掉功能型木马,单靠等价性验证又发现不了冗余逻辑。我一般先跑结构分析,再用等价性验证做精筛。

1.5 网表级检测的独特优势

总结一下,网表级检测有这几个 RTL 做不到的事:

  1. 看到「真实」的电路——综合工具做的优化、插入的测试逻辑,全都在网表里
  2. 发现「隐藏」的连接——那些通过扫描链、测试模式绕开的木马路径
  3. 检测「物理」的异常——额外的标准单元、异常的扇出负载
  4. 兼容「黑盒」IP——不需要源代码,只要有网表就能检测

说白了,RTL 是「意图」,网表是「现实」。木马往往藏在现实里,而不是意图里。

一句话总结:网表级检测,是硬件木马检测的「底线防线」。RTL 没发现的问题,网表级还有机会发现;但网表级没发现的问题,流片后就真的晚了。

好了,这一章就到这里。下一章我们聊聊具体的检测工具和流程——嗯,到时候我会分享一些实战中踩过的坑。


公众号:蓝海资料掘金营,微信deep3321