1. 项目概述当图神经网络遇上硬件木马在芯片设计这个精密如微雕的领域每一根连线的走向、每一个逻辑门的布局都关乎着最终产品的性能与安全。然而一个幽灵——“硬件木马”Hardware Trojan——正游荡在全球化的集成电路供应链中。它可能是在第三方代工厂生产时被恶意植入的几颗多余晶体管也可能是在设计阶段被篡改的一段微码。其目的各异从在特定条件下触发功能失效到悄无声息地泄露加密密钥对国防、金融、通信等关键领域的信息基础设施构成了严峻威胁。传统的硬件木马检测好比在茫茫人海中寻找一个精心伪装的特工。我们过去依赖“黄金模型”对比即拿设计阶段确认无误的电路图网表与制造出来的芯片进行逐点比对。但问题在于对于大量使用的商业现货芯片或集成了众多第三方知识产权的复杂片上系统我们往往拿不到那个完美的“黄金模型”。另一种思路是进行功能测试或侧信道分析试图通过异常的功耗、时序或电磁辐射来捕捉木马的蛛丝马迹但这通常需要昂贵的设备、复杂的激励生成且对设计精巧的木马收效甚微。近年来一个有趣的想法开始流行为什么不把芯片的电路网表看作一张巨大的、关系错综复杂的“社交网络”呢在这张网络里每个逻辑门如与门、或门、寄存器就是一个“人”节点它们之间的导线连接就是“人际关系”边。硬件木马无论是为了窃听还是破坏为了隐藏自身其内部逻辑门之间的连接模式与正常功能电路相比总会存在某种结构或功能上的“社交异常”。图神经网络正是处理这类关系数据的利器。它能深入这个“社交网络”学习正常电路的连接模式从而敏锐地揪出那些行为“不合群”的恶意节点。但GNN也有其局限。一个孤立的异常节点可能很难被发现但如果观察它的“朋友圈”呢这就是最近邻算法的用武之地。通过分析一个可疑节点及其一层、两层邻居的特征我们可以获得更丰富的上下文信息。想象一下在社交网络上判断一个账号是否异常只看它自己的发帖可能难以定论但如果发现它关注和互动的都是一批已知的水军或僵尸账号那么嫌疑就大大增加了。将最近邻的思想融入GNN正是为了给每个节点的“诊断”提供更广阔的视野。本文要探讨的正是这样一套融合了GNN与最近邻算法的硬件木马门级网表定位技术。它不依赖黄金模型直接从芯片的网表结构出发通过机器学习自动学习并识别恶意模式。我将结合一篇前沿研究论文的核心思路为你拆解这套方法从原理到实现的完整路径分享其中关键的工程抉择、踩过的坑以及最终的实战效果。无论你是硬件安全领域的研究者还是对机器学习在EDA电子设计自动化中应用感兴趣的工程师相信都能从中获得启发。2. 核心思路与方案选型为什么是“图”“邻居”在深入技术细节之前我们首先要回答一个根本问题为什么选择“图神经网络”加“最近邻”这套组合拳这背后是对硬件木马检测核心挑战的深刻理解以及对不同技术路径优劣的权衡。2.1 从网表到图一种更本质的表示芯片的门级网表本质上是一个由基本逻辑单元标准单元和它们之间的互连关系构成的网络。传统的检测方法无论是基于仿真、形式验证还是简单的特征统计都或多或少地丢失了这种丰富的拓扑结构信息。图的天然优势将网表建模为图Graph是极其自然的。节点Node可以代表每个逻辑门或寄存器边Edge代表信号线。节点的属性可以包括门类型AND, OR, XOR, DFF等、扇入扇出数、逻辑深度等边的属性可以包括信号名称、位宽等。这种表示方法完整保留了电路的结构信息为机器学习模型提供了最原始、最丰富的素材。GNN的能力图神经网络是专门为处理这类非欧几里得数据图像、文本是规整的网格或序列而图结构是不规则的而设计的。它通过“消息传递”机制让每个节点可以聚合其邻居节点的信息。经过多层迭代一个节点最终的表征Embedding就包含了其多跳邻居的拓扑和特征信息。这使得GNN能够捕捉到电路中那些由多个门协同工作形成的局部功能模块如加法器、选择器的微妙模式而硬件木马的植入很可能会破坏或引入这种局部模式。2.2 单一GNN的局限与最近邻的补强然而标准的GNN节点分类任务在硬件木马检测这个特定场景下面临两个主要挑战类别极端不平衡在一个包含数十万甚至数百万个门的芯片中硬件木马可能只由几十到几百个门构成。这意味着数据集中“恶意”节点的样本数量远远少于“正常”节点。直接训练一个GNN去给每个节点打上“正常/恶意”的标签模型很容易倾向于将所有节点都预测为正常从而忽略掉数量极少但至关重要的恶意节点。上下文信息不足一个精心设计的木马其内部节点之间的连接可能看起来是正常的但将其作为一个整体子图与周围正常电路隔离来看其结构模式可能是异常的。单一的节点分类可能无法充分利用这种“子图级别”的异常信号。最近邻算法的引入正是为了应对这两个挑战。它的作用体现在两个层面特征增强在生成每个节点的特征向量后我们不仅使用该节点自身的特征还将其第一最近邻1st Nearest Neighbour和第二最近邻2nd Nearest Neighbour节点的特征以某种方式如拼接、求平均融合进来。这相当于在诊断一个节点时不仅看它自己还看了它最亲密的两个“朋友”的状态。这极大地丰富了用于分类的特征上下文。后处理与精炼在GNN初步给出节点级别的预测概率后我们可以利用最近邻关系进行后处理。例如如果一个节点被预测为“可疑”但其所有直接邻居都被确信为“正常”那么这个节点的可疑度可能会被降低可能是误报。反之如果一个“正常”节点被一群“可疑”节点包围它的风险等级可能需要被重新评估。这种基于图结构的平滑或投票机制可以有效减少孤立噪声点带来的误报。2.3 方案演进从决策树到GNN再到GNNNN参考论文中清晰地展示了技术方案的演进路径这背后是精度与复杂度之间的权衡Case I: 基于决策树与PCA的基线方法思路将电路图通过graph2vec等方法转化为全局特征向量然后使用决策树等传统机器学习模型进行分类判断整个电路是否含木马。为了降维和提升特征质量引入了主成分分析。优点简单、快速可作为性能基准。缺点本质上是“图分类”只能判断“有”或“无”无法定位木马具体在哪个门。对于复杂、微小的木马区分度有限。论文中显示即使使用PCA优化在部分数据集上准确率也仅在42%-98%之间波动稳定性不足。Case II: 基于GNN的图到图分类思路将每个电路视为一个整体图训练GNN模型学习“干净电路图和“感染木马电路图”在整体结构特征上的差异实现图级别的分类。优点利用了GNN强大的图结构学习能力。缺点依然是“定性”而非“定位”。它告诉你这个芯片可能有问题但无法指出问题出在哪个区域。论文中其基础准确率为62.8%。Case III: 基于GNN的节点分类核心思路这才是实现“定位”的关键。训练GNN模型为网图中的每一个节点逻辑门预测一个标签正常 or 木马。这样模型的输出就直接指向了可疑的硬件单元。挑战与方案直接面对类别不平衡问题。此时引入最近邻NN算法作为特征增强器。在构建每个节点的输入特征时不仅包含其自身属性还显式地融合了其第1层和第2层邻居的特征。这相当于给模型一个“放大镜”让它能同时观察目标节点及其局部邻域。飞跃论文数据显示基础GNN节点分类准确率为79.8%。融合1st NN后准确率提升至93.0%融合2nd NN后准确率进一步提升至97.7%。同时检测时间大幅缩短节省约50%-92%的时间因为最近邻信息帮助模型更快地聚焦于可疑区域。选型结论因此GNN节点分类 最近邻特征增强构成了当前硬件木马门级定位的最优技术路径。它既继承了GNN对图结构强大的表征能力又通过最近邻机制巧妙地缓解了类别不平衡问题并增强了局部上下文感知最终实现了高精度、可定位的检测目标。3. 实操流程详解从网表到定位报告理论很美好但如何落地下面我将以一个典型的开源硬件木马基准电路例如Trust-Hub上的AES-T100为例拆解整个定位流程的实操步骤。你可以将其视为一份可以“抄作业”的工程指南。3.1 环境与数据准备工具链搭建网表处理Yosys。这是一个开源的逻辑综合工具我们的起点通常是RTL代码Verilog。使用Yosys可以将RTL综合synth并优化opt成目标工艺库下的门级网表write_verilog。更重要的是Yosys内部有强大的电路图表示便于我们后续提取。# 示例使用Yosys将RTL转换为门级网表 yosys read_verilog ./design/aes_core.v yosys synth -top aes_core yosys opt yosys write_verilog ./netlist/aes_core_gatelevel.v图数据处理Python PyTorch Geometric (PyG) 或 Deep Graph Library (DGL)。这是构建和训练GNN的核心。PyG和DGL都提供了丰富的GNN层实现和便捷的图数据加载接口。我个人更倾向于PyG因其与PyTorch生态结合更紧密API设计非常直观。机器学习框架PyTorch。用于构建和训练GNN模型。辅助库networkx用于基础的图操作和可视化scikit-learn用于数据划分、评估指标计算numpy,pandas用于数据处理。数据集构建 这是最耗时但也最关键的步骤。我们需要一个包含“干净电路”和“植入木马电路”配对数据的数据集。来源黄金标准Trust-Hub基准测试平台。它提供了多种基准电路如AES, RS232, RISC-V及其对应的多种硬件木马变种。每个电路都有“golden”无木马和“trojan”植入木马两个版本。自建数据使用Yosys对开源RTL设计如OpenCores上的项目进行综合然后使用脚本在网表中随机或按特定模式插入木马结构。木马模型可以参考学术论文中常见的类型如触发-载荷型、始终开启型等。数据处理流水线步骤一网表解析。编写一个解析器读取write_verilog输出的门级网表。将每个标准单元实例如AND2X1 U123 (.A(net45), .B(net67), .Y(net89))转化为一个节点。节点特征可以初始化为该单元类型的one-hot编码。单元之间的连接关系转化为边。步骤二图构建。使用networkx或直接使用PyG的Data对象将节点和边构建成图。每个图对应一个完整的电路网表。步骤三节点标注。这是监督学习的关键。对于“干净电路”所有节点标签为0正常。对于“木马电路”我们需要知道木马具体由哪些节点构成。在Trust-Hub或自建数据时这个信息是已知的木马模块的实例名。将这些节点标注为1木马。注意这是一个极度稀疏的标签可能1万个节点里只有10个标签为1。步骤四特征工程除了门类型可以计算并添加更多节点特征如fan_in,fan_out节点的扇入扇出数。closeness_centrality节点在图中的紧密中心性。pagerank节点的PageRank值。最近邻特征对于每个节点计算其第1跳和第2跳邻居的上述特征的统计量如均值、最大值、最小值并与自身特征拼接。这是精度提升的关键一步。步骤五数据集划分。按电路划分训练集、验证集和测试集确保同一个电路的不同版本干净/木马出现在同一个集合中避免数据泄露。3.2 GNN模型构建与训练我们选择图卷积网络作为骨干并围绕其设计节点分类模型。import torch import torch.nn.functional as F from torch_geometric.nn import GCNConv, global_mean_pool from torch_geometric.data import Data, DataLoader class HardwareTrojanGNN(torch.nn.Module): def __init__(self, node_feature_dim, hidden_dim, num_classes2): super(HardwareTrojanGNN, self).__init__() # 第一层GCN将原始特征映射到隐藏空间 self.conv1 GCNConv(node_feature_dim, hidden_dim) # 第二层GCN进一步聚合信息 self.conv2 GCNConv(hidden_dim, hidden_dim) # 分类头将节点表征映射为类别概率 self.classifier torch.nn.Linear(hidden_dim, num_classes) # 可选的Dropout层防止过拟合 self.dropout torch.nn.Dropout(p0.5) def forward(self, data): x, edge_index data.x, data.edge_index # 第一层卷积 ReLU激活 x self.conv1(x, edge_index) x F.relu(x) x self.dropout(x) # 训练时使用 # 第二层卷积 x self.conv2(x, edge_index) # 最终分类 out self.classifier(x) return F.log_softmax(out, dim1) # 输出log概率模型训练要点损失函数由于正负样本木马节点/正常节点数量悬殊不能使用普通的交叉熵损失。必须使用带权重的交叉熵损失Weighted CrossEntropyLoss或Focal Loss。Focal Loss通过降低易分类样本的权重让模型更关注难分的、稀少的正样本。# 计算类别权重倒数样本越少权重越大 class_weights 1.0 / torch.bincount(train_dataset.data.y[train_mask]) class_weights class_weights / class_weights.sum() criterion torch.nn.CrossEntropyLoss(weightclass_weights) # 或者使用Focal Loss # criterion FocalLoss(alpha0.75, gamma2.0)优化器与学习率论文中使用Adam优化器学习率设为0.001这是GNN训练的常见配。可以加入学习率调度器如ReduceLROnPlateau在验证集指标停滞时降低学习率。训练技巧早停监控验证集上的F1-score或召回率连续多个epoch不提升则停止训练防止过拟合。梯度裁剪对于深层GNN梯度爆炸是个风险设置torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm1.0)。批处理使用PyG的DataLoader进行小批量训练注意设置follow_batch来正确处理不同图中可变大小的节点特征。3.3 最近邻信息的融合策略这是本项目的精髓。如何在GNN中有效利用最近邻信息有两种主流方式特征预处理阶段融合论文主要方法在构建图数据Data对象时除了节点自身特征x_self额外计算x_1hop该节点所有直接邻居特征的均值或求和、最大值。x_2hop该节点所有二跳邻居邻居的邻居特征的均值。将[x_self, x_1hop, x_2hop]拼接起来作为该节点新的特征向量x_new。优点简单直接易于实现。GNN模型本身不需要修改。缺点邻居特征是通过简单的统计聚合得到的可能丢失了邻居间的结构信息。模型架构层面融合设计一个多跳消息传递层。例如第一层卷积聚合1跳邻居信息第二层卷积在上一层的基础上自然聚合了2跳邻居信息。这就是标准GCN的工作方式。更高级的做法是使用Jumping Knowledge Networks或APPNP等架构它们可以自适应地学习如何从不同跳数聚合信息。优点更灵活能学习更复杂的邻居信息聚合函数。缺点模型更复杂需要更多的数据和调参。实操建议对于入门强烈推荐第一种特征预处理融合。它效果显著如论文中从79.8%提升至93%且实现简单。你只需要在数据预处理脚本中增加计算邻居统计特征的函数即可。3.4 推理与定位模型训练完成后对新的未知网表进行预测预处理同样流程将新网表解析为图并计算节点特征含最近邻特征。预测将图数据输入训练好的模型得到每个节点属于“木马”类别的概率prob_trojan。后处理阈值化设定一个概率阈值如0.7。prob_trojan 0.7的节点被标记为“可疑”。聚类由于一个木马通常由多个相邻节点构成所有孤立的可疑节点很可能是误报。使用基于图的聚类算法如DBSCAN其距离度量可以用节点在网表中的最短路径长度将空间上临近的可疑节点聚合成“可疑簇”。结果映射将最终筛选出的“可疑簇”节点列表映射回原始的网表文件中的实例名如U123,U456。生成一份报告明确指出“在模块AES_core中实例U123、U456、U789构成的子电路有极高概率为硬件木马。”可视化使用networkx或matplotlib将网表图绘制出来并用高亮颜色标记预测出的木马节点和簇直观展示定位结果。4. 关键参数、调优与避坑指南纸上得来终觉浅绝知此事要躬行。在实际复现和调优过程中以下几个环节最容易踩坑也是决定项目成败的关键。4.1 特征工程什么才是好特征GNN的性能严重依赖于输入的节点特征。初始的门类型one-hot编码信息量很低。必须添加的拓扑特征度中心性节点的度连接数。木马触发电路可能具有异常的扇入/扇出。路径特征计算节点到主要输入/输出端口、到时钟树根节点的最短路径长度。木马节点为了隐蔽其位置可能具有规律性。环路特征检查节点是否存在于组合环路或时序环路中。某些木马设计会避免使用环路。尝试添加的仿真特征如果条件允许对电路进行若干随机向量仿真记录每个节点在仿真中的逻辑值0/1变化频率跳变率。木马节点在大部分情况下处于非活跃状态其跳变率可能与功能节点有差异。注意这需要逻辑仿真器如Icarus Verilog和编写测试向量计算成本高但可能带来显著增益。最近邻特征的聚合方式论文中使用的是简单的均值。你可以尝试最大值池化捕捉异常值、求和或拼接所有邻居特征信息最全但维度爆炸。实践中均值通常是一个稳健的起点。4.2 模型选择与超参数调优GNN层类型除了基础的GCN一定要尝试GAT和GraphSAGE。GAT使用注意力机制可以学习邻居的不同重要性。对于电路网表某些输入端口如时钟、复位的连接可能比数据端口更重要GAT可能能捕捉到这一点。GraphSAGE通过采样邻居进行聚合对于大规模电路节点数10万非常高效。论文中未提及规模但对于真正的工业级网表GraphSAGE几乎是必选项。层数与过平滑GNN层数不是越深越好。通常2-3层足以捕获2-3跳邻居的信息。层数太深会导致“过平滑”即所有节点的表征变得相似反而丢失区分度。如果感觉模型性能到3层后下降就要考虑这个问题。隐藏层维度论文中尝试了10、12、16维。这是一个需要调节的关键参数。可以从64或128开始尝试如果模型过大导致过拟合再逐步减小。维度太小会导致表征能力不足。学习率与优化器Adam优化器初始学习率1e-3是安全的选择。可以配合CosineAnnealingLR调度器。论文中对比了Adam和AdamW发现Adam更优这与许多视觉、NLP任务中AdamW占优的情况不同值得注意。4.3 类别不平衡问题的实战处理这是本项目最大的挑战没有之一。损失函数是第一位Focal Loss在大多数场景下优于带权重的交叉熵损失。它的gamma参数控制了对难易样本的关注程度通常设为2.0alpha参数可以平衡正负样本可以设置为正样本比例的倒数。过采样与欠采样图级别过采样在数据加载时对包含木马的电路图进行重复采样增加其出现在一个训练epoch中的次数。节点级别过采样在计算损失时只对小批量的所有节点计算损失但这样计算开销大。更实用的方法是设计一个“困难样本挖掘”策略在每个训练批次中不仅随机采样所有节点还强制包含一定比例如20%的已知正样本木马节点及其邻居。评估指标的选择绝对不能只看准确率在99.9%的节点都是正常的情况下一个把所有节点都预测为正常的傻瓜模型也有99.9%的准确率。核心指标召回率、精确率、F1-score。我们的首要目标是尽可能抓住所有木马节点高召回率同时控制误报在一个可接受的范围内高精确率。F1-score是两者的调和平均。绘制PR曲线精确率-召回率曲线比ROC曲线更适合极端不平衡的分类问题。曲线下的面积AUPRC是一个很好的综合指标。4.4 效率与可扩展性图规模一个中等规模的芯片门级网表可能有几十万个节点和上百万条边。将整个图一次性加载进GPU训练可能内存不足。解决方案使用子图采样。PyG提供了NeighborSampler等工具可以让你在训练时只加载目标节点及其多跳邻居构成的子图进行计算。这是处理大规模工业网表的必备技术。最近邻计算对于百万级节点的图为每个节点计算其2跳邻居的统计特征预处理阶段可能非常耗时。优化使用networkx的single_source_shortest_path_length函数并设定cutoff2或利用稀疏矩阵的幂运算来高效计算2跳邻居关系。这个预处理可以离线完成一次计算多次使用。5. 结果分析与常见问题排查根据论文数据和我们的实践经验这套方案能达到非常不错的性能但过程中会遇到各种问题。5.1 预期结果与性能分析参照论文中的实验数据我们可以建立一个性能预期基线模型方案检测准确率平均代码覆盖率最大代码覆盖率平均检测时间时间节省GNN 图分类 (Case II)62.8%3.5%6.7%0.805s~93% 1st NN73.2%5.0%7.8%0.430s~92% 2nd NN97.7%32.1%50.0%0.302s~50%GNN 节点分类 (Case III)79.8%3.9%5.4%0.840s~94% 1st NN93.0%5.5%7.7%0.510s~92% 2nd NN97.7%32.1%50.0%0.420s~50%关键洞察节点分类优于图分类Case III的基础准确率79.8%远高于Case II62.8%这印证了“定位”任务本身比“检测”任务提供了更细粒度的监督信号模型能学得更好。最近邻的威力无论是图分类还是节点分类引入2nd NN都带来了质的飞跃将准确率提升至97.7%。这证明了局部邻域上下文信息对于识别结构异常至关重要。时间与精度的权衡2nd NN虽然精度最高但其检测时间相对于1st NN有所增加从0.43s到0.42s此处论文数据似乎有矛盾Case III中2nd NN时间比1st NN少可能是统计误差或模型优化所致。但总体来看所有基于GNNNN的方案都比传统仿真方法快几个数量级节省50%-94%的时间。代码覆盖率这是一个重要指标指被模型标记为“可疑”的节点数占总节点数的比例。2nd NN模型的高覆盖率32.1%意味着它扫描了电路近三分之一的区域来定位木马虽然范围更广但凭借高精度最终能准确定位。5.2 常见问题与排查清单在实际操作中如果你的模型效果远未达到预期请按以下清单逐一排查问题现象可能原因排查与解决思路准确率极高99%但召回率为0类别极端不平衡模型将所有节点预测为“正常”。1.检查损失函数确认是否使用了Focal Loss或带权重的CrossEntropyLoss。2.检查数据标签确认训练数据中是否确实存在正样本木马节点且标签正确。3.调整类别权重或Focal Loss参数增大正样本的权重或调整alpha,gamma。训练损失震荡不降验证集指标无提升学习率可能过大模型结构或特征不合适数据存在严重噪声。1.降低学习率尝试1e-4, 1e-5。2.简化模型先使用1层GNN确保能过拟合一个小数据集训练损失降到接近0。3.可视化特征对节点特征进行PCA或t-SNE降维后画图看正负样本是否在特征空间有区分度。模型在训练集上表现好在验证/测试集上差过拟合模型复杂度过高训练数据太少或缺乏多样性。1.增加正则化提高Dropout比率如0.5-0.7在GCN层后加入BatchNorm。2.数据增强对训练集电路图进行“轻微扰动”如随机重命名部分线网、在不改变功能的前提下交换一些等价门的顺序生成更多的训练样本。3.使用更简单的GNN层如将GAT换回GCN。推理速度非常慢图规模太大最近邻特征计算或模型前向传播效率低。1.启用子图采样不要在完整大图上做推理。使用邻居采样器为每个批次生成子图。2.优化特征计算将最近邻特征的计算从Python循环改为基于稀疏矩阵的向量化操作。3.模型剪枝与量化训练后对模型进行剪枝和量化以减小模型大小并加速推理。定位出的“可疑簇”过于分散或巨大概率阈值设置过低后处理聚类参数不合适。1.调整阈值逐步提高分类阈值如从0.5提高到0.8, 0.9观察精确率和召回率的变化在PR曲线上选择一个合适的操作点。2.调整聚类参数对于DBSCAN调整eps邻域距离和min_samples最小样本数。对于电路网表eps可以设置为2或32-3跳以内min_samples设置为木马可能的最小门数如3-5。对某些类型的木马检测效果差训练数据中缺乏此类木马的样本当前特征无法表征此类木马。1.数据层面收集或合成更多该类型的木马样本加入训练集。2.特征层面分析该类木马的结构特点例如是否总是连接在特定类型的端口上是否形成特定的子图模式并设计针对性的特征加入节点特征中。5.3 对工业级应用的思考将这项技术从实验室推向真实的芯片安全检测还需要跨越几道鸿沟黄金模型的缺失本文方法虽然不依赖黄金网表进行直接比对但训练模型仍然需要大量“干净”和“感染”的配对数据。对于一款全新的、没有参考设计的芯片如何获取其“干净”的图表示一个思路是利用芯片设计阶段的功能仿真日志或形式验证属性来间接推断其“正常行为模式”作为监督信号。可解释性当模型报出一个“可疑簇”时我们如何向安全工程师解释“为什么”这就需要发展GNN的可解释性技术例如使用GNNExplainer或PGExplainer来生成解释子图说明是哪些节点和连接关系导致了“木马”的判断。对抗性攻击攻击者可能会设计针对性的“对抗性木马”其结构经过特殊优化旨在欺骗GNN模型使其将其判定为正常。研究模型的鲁棒性和防御对抗性攻击的方法是下一阶段的重要方向。回过头看这套“图神经网络最近邻”的方案其强大之处在于它用一种相对统一和自动化的方式逼近了资深硬件安全专家在审视网表时的思维模式不孤立地看某个门而是观察它所在的局部环境看它与周围电路的互动是否“合乎常理”。它把这种基于经验的、模糊的直觉转化为了可计算、可优化的数学模型。尽管前路仍有挑战但它无疑为应对日益严峻的硬件供应链安全威胁提供了一把锋利且智能的新武器。