通用电路的1/0之“光”
撰文 | 张可言
编辑 | 刘梦迪
一、背景介绍
通用电路(UC)是一种可编程电路,能够通过配置位模拟任何特定大小的电路。UCs在多个密码学子领域中有广泛应用,如隐私函数评估(PFE)和半导体知识产权(IP)保护等。尽管UCs在理论上被认为是安全的,但在实际应用中,攻击者可能通过侧信道分析来获取额外信息,进而获取电路的配置位。
在2024年的CHES会议上,来自美国伍斯特理工学院的的Dev M. Mehta和Mohammad Hashemi等人首次提出了基于光子发射显微镜(PEM)的侧信道分析方法,旨在揭示UCs在物理实现中的泄露信息问题。该方法基于计算机视觉技术,利用低成本的光子发射显微镜拍摄图像,并通过现成的图像处理算法成功提取了配置位[1]。
二、实验假设
对于敌手模型,作者考虑了对IP盗版感兴趣的攻击者。在专用集成电路(ASIC)情况下,攻击者可能是一个不受信任的代工厂,可以访问所有IP设计细节。在FPGA情况下,攻击者可能是系统设计过程中的IP集成商。作者假设攻击者可以访问UC电路的所有设计细节(例如,其网表、布局和布线),但配置位除外。在部署FPGA后,配置位将被安全地加载到FPGA中。否则,它们可能已被预编程到一些可用的非易失存储区中,以配置UC电路。需要注意的是,存储的配置位可能分布在整个芯片上,这使得直接读出它们具有挑战性且成本高昂。作者进一步假设FPGA具有适当的比特流保护,使得攻击者无法访问明文比特流进行逆向工程和IP提取。最后,假设攻击者可以访问光子发射显微镜并将输入馈送到UC电路。
三、实验装置
作者使用Genesys 2开发套件进行所有实验。该套件配备了一个采用28纳米技术制造的AMD/Xilinx Kintex 7(XC7K325T-2FFG900C)FPGA。FPGA芯片采用倒装芯片封装。因此,通过移除风扇和散热器,即可接触到FPGA的背面硅,如下图所示。作者没有对封装或电路板进行任何其他修改(例如硅抛光或减薄)。对于所有实验,FPGA内核由1.0 V供电,全局时钟以200 MHz运行。
被移除散热器的FPGA背面硅板
作者使用ALPhANOV S-LMS作为近红外和发射显微镜。显微镜由一个用于捕获图像的相机系统和一个位于XYZ载物台上的透镜组成,用于聚焦一个区域。该装置中的镜头为20倍超高分辨率(NA=0.6),典型视场为480×380µm。相机系统由一个InGaAs相机组成,用于检测待测设备的光子发射。相机通过热电方式冷却至-25°C,以尽量减少暗电流引起的噪声。使用的InGaAs相机的分辨率为640×512px2,其中每个像素的大小为15×15µm2。使用软件和硬件开关控制组合设置,以控制XYZ载物台和相机选项。该软件提供2个视图,一个用于导航的芯片红外视图,一个显示捕获光子的光子发射视图。除了对相机捕获参数(如积分时间、增益和帧率)的精细控制外,该软件还具有图像处理功能,如重叠和暗图像减法。具体实验装置如下图所示。
用于PEM的ALPhANOV InGaAs相机和显微镜
首先,在计算机上用Vivado 2021工具编写并烧录FPGA配置比特流。在FPGA的逻辑设计中,输入信号通过PMOD(外围模块接口)与Arduino板连接,用于控制输入的翻转状态。作者通过UART使用计算机向Arduino发送控制消息。接下来,显微镜被移动并聚焦在感兴趣的区域。一旦聚焦,软件就用于捕获图像。为了实现图像的一致性,一旦实验开始,显微镜就不会在UC设计的XY维度上移动。然而,由于环境中存在的振动,可能需要不时地重新聚焦。整体实验装置如下图所示。
实验装置
四、攻击方法
在CMOS电路中,晶体管在开关状态变化时会产生光子辐射,且不同逻辑状态的电路部分会发射不同强度的光子。通过高精度近红外摄像机,可以从背面捕获FPGA不同LUT(查找表)单元的光子辐射模式,进而通过图像处理和计算机视觉方法推测 UC 的配置比特。
(一)获取光子辐射图像
作者首先捕获图像,然后对这些图像进行后处理,以提取配置位信息。
具体的图像捕获流程如下:移除FPGA散热片和风扇,暴露其背面硅层,因为该区域对近红外光透明,不会被金属布线层阻挡;调整XYZ载物台,精确对焦FPGA上的目标电路区域;逐个输入不同的激励信号模式,拍摄UC在不同输入模式下的光子辐射图像。
实验中有两种类型的设计:分析和攻击设计。根据所需的设计模式对FPGA进行编程。
PEM能够捕获晶体管的开关活动,为了执行攻击,可以通过切换UC的输入来强制晶体管打开FPGA。作者考虑了2输入模式,因为UC中使用的所有块都是2输入块,下图是构成UC的三种基本模块——X块、Y块和Z块。
UC的基本模块
X块和Y块用于路由,即输出值与特定的基于输入的配置位有关。例如,对于Y块,如果输入A连接到翻转位,并且输出也显示翻转值,则配置位为0。否则,配置位为1。然而,U块的配置位并不容易识别。U块充当通用门,其中4个配置位充当多路选择器的输入,2个输入充当选择器。这种行为与FPGA中的LUT非常相似。这种特性导致U块的翻转输入不会转化为输出端的翻转行为,与X和Y块的情况相比,不能保证光子发射。因此,需要添加更多的输入模式来识别U块中的配置位。作者在2个现有模式的基础上增加了4个模式,使实验总共有6个模式,如下表所示。
输入模式及其对块输出的影响
(二)图像处理
基于计算机视觉算法的工作流程包括裁剪、去噪、对比度增强、特征提取和一系列基于特征的图像检索,如下图所示。每一步都是通过应用现成的算法来强调攻击的直接性。在这里,我们简要解释每个步骤的用途。
图像处理步骤
图像对齐:由于不同输入模式下拍摄的FPGA图像可能有轻微的偏移,因此需要对齐图像,确保每个逻辑单元(LUT)在不同图像中的位置一致。作者使用归一化二维互相关方法在MATLAB中进行图像对齐。首先选取一张基准图像,在其中手动选定LUT位置;然后对比所有其他图像,计算相似度最高的区域,确定需要偏移的距离;最后通过坐标变换对所有图像进行裁剪和调整,保证LUT在所有图像中对齐。这样就可以确保后续的特征提取步骤能够准确识别LUT位置,而不会受到相机微小移动或FPGA热胀冷缩的影响。
图像去噪:由于光子辐射图像的信噪比较低,存在大量椒盐噪声,需要去除噪声,以便后续特征提取。首先采用中值滤波技术去除椒盐噪声,保持图像边缘细节;接着用双边滤波进一步平滑图像,同时保持光子辐射区域的亮度。通过这两步滤波,可以显著减少背景噪声,同时保留 LUT 发光区域的特征,提高后续分析的准确性。
对比度增强:由于FPGA的LUT光子辐射较弱,经过滤波后对比度可能较低,难以区分发光区域和背景,因此需要增强对比度。作者采用直方图拉伸方法,提高了LUT区域的亮度。在MATLAB中,通过调整灰度级来提升LUT区域的发光强度,使其更容易与背景区分。
特征提取:采用尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)算法进行特征提取。首先检测关键点,定位LUT光子发射区域;然后计算描述子,提取局部区域的强度分布特征,使其不受缩放、旋转影响。通过 SIFT 识别 LUT 位置,并为每个 LUT 生成唯一的特征描述子。
基于图像检索的攻击:本文的攻击依赖于基于内容的图像检索(CBIR)这一概念,以找到与查询图像在视觉上相似的图像。具体来说,作者应用了一个使用视觉词袋的CBIR系统,也称为特征袋。特征袋是一种将图像特征用作描述图像的视觉单词的技术。换言之,一袋特征是一组视觉单词,它为每张图像的特征创建了一个数据集,这一灵感来自使用词袋的文档检索系统。
在分析过程中,SIFT算法从图像中提取的特征用于为每个X/Y/U块形成一个特征包,其中包含所有可能的输入和配置位组合。特征的分析包被捕获一次,可以应用于具有不同设置的所有图像集。在图像数据集中,每张图像都与其特征包和捕获图像时设置的配置位一起存储。配置位可以被认为是数据集中每个图像的标签。
攻击阶段始于捕获目标图像以获得配置位。该目标图像也经过相同的处理流水线,以获得处理后的干净图像;但是,不会为目标图像创建特征包,因为这是分析步骤的一部分。之后,使用特征包将从受攻击的UC中裁剪出的块与数据集中的图像进行比较。从每个图像中提取的特征被用来返回分数,即相似性度量,从最好到最差排序。对攻击图像中的UC的每个块自动重复此操作。具体过程如下图所示:
分析和攻击阶段
五、实验结果
UC中有3种类型的块,作者先从每个块中单独捕获图像进行分析,了解不同实现元素在图像中的表现,这有助于理解它们在LUT发射方面的行为。X块和Y块的光子发射图像如下图所示,其中颜色的差异是为了便于演示。
Y块(左)和X块(右)的光子发射图像
左侧图像是Y块,采用了输入模式5,配置位为“0”。因此,块的两个输入都在翻转,当Y块将输入A路由到输出时,输出也在翻转。这可以在图像中看到,其形状为“Y”形,顶部有2条线标记为输入,底部标记为输出。中央水平照明条表示包含Y块逻辑的LUT。同时还能看到LUT周围的其他一些发射点:路由点和LUT输入/输出的缓冲区。右侧图像是X块发射图像,我们也可以识别出LUT发射和缓冲区。与Y块相比,输入和输出没有那么明显的区别,且光子辐射较弱。这是噪声和X块LUT逻辑的变化造成的。对于X块,在输入模式6下,无论配置位如何,输入和输出都会翻转。因此,可以将发射图案与Y块区分开。
U块由三个Y块组成,因此它表现出类似的发射模式,3个LUT组成一个块,但缓冲区和路由略有不同,如下图左侧所示。在Vivado实现视图中构建完整U块的3个Y块的位置,如下图右侧所示。
U块的光子发射图像(左)和U块在Vivado中的实现(右)
接下来,作者在两种不同情况下进行了实验,分别是求和电路和C17电路。
(一)求和电路
求和设计包括使用XOR门的1位求和。当交给UC编译器时,该设计被转换为6块设计(6个基本逻辑模块),包括2个X块、1个U块和3个Y块,如下图所示。
1-bit求和电路的UC示意图
输入可用于为设计中的所有块提供开关活动。X_0和X_1块直接连接到输入端,而U_2块基于配置位间接连接到两个输入端;Y块不直接连接到两个输入端。Y_3和Y_4每个都有一个连接到U块的输入端和输出端。最后,Y_5连接到Y_3和Y_4。
PMOD接口连接Arduino,用于动态控制输入A和B。然后,通过Vivado 2021进行布局,并确定LUT位置,这样,FPGA就可以放在显微镜下了。在实际场景中,当布局布线已知时,或者通过逆向工程比特流来收集这些信息,就可以达到这个阶段。在捕获图像后,为了获取块的配置位,例如X_0,作者对从所有可能的输入组合中获取的X_0的LUT图像进行对齐(6种输入模式对应图像集中6个图像)。将对齐的图像提供给图像检索算法,该算法将每个图像与数据集中的图像进行匹配,根据图像检索算法提供的相似性度量和数据集中为每个图像存储的标签从匹配中提取配置位。对X_1重复这样的操作。对于X_0,在对应于不同输入模式的4个图像中得到排名1,而对于X_1,最佳排名为2,如下表所示,其中“-”表示在前5个猜测中没有正确猜测配置位。这可能是图像集的质量不佳导致的。
求和电路配置位提取成功率
输入通过X_0和X_1块路由到U块。因此,我们可以重复对下一层U块(U_2)的配置位进行提取。U块的输出被路由到两个Y形块。Y块的其他输入是X块的输出。我们使用为Y块创建的包重复该层的图像检索过程。Y_3和Y_4配置位揭示了Y_3将U块输出路由,Y_4将X_1输出路由到最后一个块。最后,Y_5将U块输出作为具有求和功能的UC的输出进行路由。每个块的排名都可以在上表中找到,还有提取电路配置位的成功率(SR)。根据实验结果,SR1(1)和SR2(1)最多为0.66,这表明只有一个输入模式时,即使考虑到排名第二的猜测,SR也不令人满意。将输入模式的数量和模板的数量增加到6有助于提高成功率,并实现SR2(6)=1。有趣的是,SR1(6)没有太大改善,表明图像质量不够好。
(二)C17电路
该电路作为一个大型电路的示例,攻击的核心思想是采用“分而治之”策略提取大型电路的秘密配置位,即攻击者为实现目标能够从FPGA的多个部分拍摄图像,无论其大小。
C17由6个与非门组成,如下图所示。它有5个输入和2个输出,使用UC编译器将6门电路转换为81块设计。在本实验中,作者研究了连接到电路中第一个U块的16个块。
C17电路结构
由于光学系统的限制,不可能在一帧内监测所有LUT,因此,作者从观察连接到电路第一个U块的16个块开始,在电路的这一部分,只对连接到第一个U块的两个输入感兴趣。该子电路如下图所示。在该子电路中,使用了6个Y块、9个X块和1个U块。这些连接使用棕色和黄色线显示,而紫色线连接到常数“0”。作者感兴趣的U块在示意图的右上角以蓝色突出显示。
C17电路子电路
使用Vivado的电路布局和输入模式6下的光子发射如下图所示。从布局可以看出,连接到U_24块的LUT是按顺序放置的。为了确定每个块的配置位,采用相同的流程进行后处理和图像检索。
Vivado下的电路布局和输入模式6下的光子发射图
六、总结
本篇文章中,作者首次展示了基于光子发射的侧信道分析攻击对UCs的有效性。通过结合计算机视觉技术,攻击者能够以较低的成本提取UCs的配置位。实验结果表明,即使对于大规模电路,攻击依然可行。本文的研究揭示了UCs在物理实现中的潜在安全漏洞,并提出了未来研究方向,如改进光子发射显微镜的分辨率和测量时间,以及探索针对此类攻击的防御措施。作者还讨论了可能的防护措施,如硬件随机化方案和封装级别的保护措施,以防止光子发射侧信道攻击。
参考资料
[1] MEHTA D M, HASHEMI M, FORTE D, et al. 1/0 Shades of UC: Photonic Side-Channel Analysis of Universal Circuits[EB/OL]. Cryptology ePrint Archive, 2024: 2024/072[2024-04-03]. https://eprint.iacr.org/2024/072.
往期精彩文章推荐
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...