基于卷积自编码器的侧信道分析

2024-04-29 02:43曾钟静昕
计算机与现代化 2024年3期
关键词:编码器密钥信道

曾钟静昕,甘 刚

(成都信息工程大学网络空间安全学院,四川 成都 610225)

0 引 言

密码算法运行时都需要一个外界载体即加密设备,以保障数据的安全操作。而在密码算法中,有些操作是和密钥位相关的,执行这个操作引起的功耗曲线也和密钥位相关。根据电子电路相关理论可知,加密设备在运行时,必然会有一些时间、能量消耗,或电磁辐射之类的相关物理信息泄漏,即侧信道泄露。这种利用侧信道泄漏来获取密钥信息的攻击技术就是侧信道攻击(Side Channel Attack,SCA)[1-3]。由于在实际情况中,攻击者进行密钥攻击时往往采集的真实能量曲线数量有限,因此出现了将神经网络与侧信道攻击相结合的方法,使其更高效地利用有限的能量曲线[4-5],以此来提升侧信道攻击成功率。

1 相关工作

无监督学习的聚类算法可以通过提取数据中的特征点来发现数据间的相关性并自动对数据进行分组。从侧信道攻击的角度看,特征点应该叫“兴趣点”,兴趣点的选择对后续攻击的成功与否至关重要。近年来已有大量实验研究将特征选择或特征提取算法应用到侧信道中,以达到降低计算法复杂度和提高成功率的目的。

2012 年,Batina 等人[6]将主成分分析(Principal Component Analysis,PCA)应用于侧信道攻击,这种方法不仅减小了数据量,而且在抑制能量信息中噪声信息的同时还降低了计算的时间复杂度,使得能量分析攻击的适用性更强,成功率更高。Heyszl 等人[7]在2013 年首次提出了在水平侧信道攻击的背景下使用聚类算法,通过主成分分析降低测量数据的相关性,并利用K-means 聚类算法攻击加密算法,实现了椭圆曲线标量乘法(Elliptic Curve Scalar Multiplication,ECSM)的密钥位恢复。2014 年,Prein 等人[8]利用聚类的结果,将均值差异最大的点作为兴趣点,并对兴趣点进行第二次聚类,之后Prein 等人[9]又提出了基于Fuzzy K-means 算法的聚类攻击方法,结合无监督学习、最大似然估计和模板攻击恢复出了RSA算法的密钥。2020 年,Perin 等人[10]提出了一种基于水平攻击和神经网络技术的聚类攻击框架。该框架利用了2018 年荷兰Nascimento 等人[11]提出的水平聚类攻击框架的前2 个步骤,即聚类泄漏分析(Clustering Leakage Assessment,CLA)和初始密钥恢复(Key Recovery,KR),首先划分波形段使得一个波形段对应密钥一个比特位,对波形段同一位置进行聚类并计算聚类结果得到一条SOST 泄漏分析波形,然后提取其波形较高位位置作为兴趣点作聚类攻击,得到初始密钥恢复结果,再借鉴生成式对抗网络GAN的思想构建交互式神经网络结构,以此纠正了部分错误得到最终密钥恢复结果,提高了聚类攻击准确率,并使用该框架成功攻击了带有防护的ECC 算法。但该方法采用了低识别率的模型对数据进行标注,导致初始聚类攻击的准确率较低,需要进一步纠正错误密钥。2022 年,苏沛源等人[12]提出了一种基于卷积自编码器特征提取的方法,并通过实验对该表面粗糙度预测方法进行了验证,最终实现了较高精确度的精确预测。随后,周梓馨等人[13]提出了一种基于自注意力机制的深度学习侧信道攻击模型SADLSCA,旨在解决基于深度学习的侧信道攻击模型训练过程中存在的快速过拟合、梯度消失和收敛速度慢的问题。该方法以全局视角来提取兴趣点,减少了攻击成功所需的能迹数量。

目前,仍有大量研究在探索侧信道攻击中预处理兴趣点选择算法对攻击准确率的影响[14-15],但一般都将预处理与攻击视作2 个独立模块,为有效地提高神经网络聚类攻击的数据标注识别率和攻击准确率,且可以更好地匹配后续神经网络模型进行误差纠正的过程,本文提出一种采用卷积自编码器对侧信道能量曲线数据进行处理优化的兴趣点选择方法,以提高侧信道中的无监督学习攻击能力。

2 背景知识

2.1 SM2公钥解密算法

公钥解密算法就是接收者用自已的私钥对收到的发送者使用接收者的公钥加密得到的密文进行解密还原成原始消息。

表1 对SM2 公钥解密算法过程中涉及的一些符号进行简单说明。

表1 符号说明

接收方用自已的私钥对收到的密文C=C1||C2||C3进行解密,用户B解密过程包括以下步骤[16]:

步骤1从密文C中取出比特串C1,根据要求将C1的数据类型转换为椭圆曲线上的点,验证C1是否在椭圆曲线上,若不是则报错并退出。

步骤2计算椭圆曲线点S=[h]C1,判断S是否是椭圆曲线上的点,若不是则报错并退出。

步骤3计算[dB]C1=(x2,y2),根据要求将坐标x2、y2的数据类型转换为比特串。

步骤4计算t= KDF(x2||y2,klen),判断t是否为全0比特串,若是则报错并退出。

步骤5从密文C中取出比特串C2,计算M′ =C2⊕t。

步骤6计算u= Hash(x2||M′||y2),判断哈希结果u是否与C中比特串C3相等,若不等则报错并退出。

步骤7输出明文M′。

算法具体流程如图1所示。

图1 SM2解密算法流程图

本文以步骤3 中运用私钥进行椭圆曲线多倍点运算(见算法1)为攻击点,假设1≤k<N,P是椭圆曲线E上阶为N的点,k为正整数,P的k倍点为Q,即k个P相加:

算法1椭圆曲线多倍点运算

2.2 侧信道攻击

侧信道攻击是一种利用物理信息(如执行时间、能量消耗、电磁辐射)进行密钥恢复的技术,它最初由Kocher[17]在1996 年提出的,随后受到广泛应用,成为密码学研究中不可或缺的一环。根据攻击者所利用的介质或信息种类不同,侧信道攻击可以分为多种形式,包括能量分析攻击[18]、电磁分析攻击、计时攻击、模板攻击[19-20]以及故障注入攻击[21-22]等。能量分析的概念于1999 年被Kocher 等人[23]提出,该方法在攻击过程中不需要破坏密码设备,通过利用密码芯片执行过程中泄露的能量信息即可获取中间值,从而进行密钥恢复,属于非入侵式。能量分析主要包括简单能量分析(Simple Power Analysis,SPA)[24-25]、差分能量分析(Differential Power Analysis,DPA)[26-27]、相关性能量分析(Correlation Power Analysis,CPA)[28-30]等。

简单能量分析就是通过观察加密操作与能量消耗之间的关系,直接从测量的能量曲线中分析得到密钥信息。当算法执行时,电路状态随着时间的变化而变化,比如数据存取、算术或逻辑运算等操作对应着不同的状态。如果把电路运行周期对应不同状态划分为不同的时间段,那么在每个不同状态的电路能量消耗都不相同。其本质上是对能量曲线中的各波形段进行分析,猜测在某时间内执行的特定指令以及指令中涉及的一些秘密参数。

相关性能量分析[31-32]采用了统计学的方法,计算密码算法运行时,使用猜测密钥获取的中间结果的汉明重量或汉明距离与实际的能量数据之间的相关性,以此来恢复密钥,相关系数最高的即对应猜测正确的密钥。

差分能量分析[33]与相关性能量分析方法类似,它主要是利用不同的明文输入对应不同的能量曲线,结合统计分析和纠错技术,从大量的能量曲线分布差异中进行推断,找出使得差异最大的中间结果,最终实现对密钥的恢复,无需了解加密的具体细节。与SPA 相比具有更高的攻击强度,对密码芯片造成的安全威胁更大。

2.3 卷积自编码器

卷积自编码器(Convolutional Auto-Encoder,CAE)是一种无监督的人工神经网络,可以最大化信息并最小化重构误差,其作用是对输入信息进行特征学习。学习过程就是把输入信息作为学习目标,将输入信息压缩为一种低维隐藏空间表示,然后重构这种表示作为输出。自编码器由2 个部分组成:编码器(Encoder)和解码器(Decoder)。编码器是将输入信息压缩为隐藏空间表示,即编码特征Code;解码器则是对隐含层特征Code进行重构,如图2所示。

图2 自编码器网络结构

卷积自编码器与传统自编码器非常相似,其主要区别在于卷积自编码器采用卷积方式对输入信号进行线性变换,即使用卷积层代替全连接层,其权重是共享的,原理和自编码器一样,对输入的数据特征进行下采样以提供较小维度的隐藏层特征表示,并强制自编码器学习特征的压缩版本,重建过程就是基于隐藏编码的基本图像块的线性组合。

假设有卷积核W1和偏置b1,激活函数ReLU表示为f1,输入数据x经卷积操作后生成特征图h,计算公式为:

对特征图h进行反卷积操作得到重构数据̂,反卷积核为W2,偏置为b2,激活函数通常为Sigmoid 函数,表示为f2,计算公式为:

对输入样本x与根据特征重构出的结果̂使用均方误差计算,得到最终卷积自编码器的误差值,n表示输入数据的维度,计算公式为:

3 实验与结果分析

3.1 实验环境

本文实验环境所使用的卷积自编码器及攻击代码都基于Python Keras 库编写,实验数据由Riscure Power tracer、LeCroy Oscilloscope 和嵌入式芯片智能卡对无防护措施的SM2 解密算法执行时产生的能量曲线进行采集,采样频率为50 MHz,采样点数为1000 万,触发电压为1.5 V,侧信道能量曲线数据处理软件使用Inspector 2022。

3.2 数据采集

根据椭圆曲线多倍点运算原理可以知道其主要是进行倍点和倍加运算(算法1 中步骤2~步骤5),在本文实验中,假设能迹曲线长度为L,每一次倍加或倍点操作被划分为一条波形段,放大并观察能量曲线波形可以划分出波形段,如图3 中虚线所示。图3 展示了示波器上采集到的部分能量曲线图,横轴表示算法的运行时间,纵轴表示运行过程中泄漏的能量,实验中每条波形段数据包含10000个样本点。

图3 能量曲线图

可以将样本和波形段用一个矩阵T表示:

矩阵T的每一行都是一条波形段代表一个波形段操作Oi,n是波形段中的样本点数,l是波形段个数,即操作执行次数,也是算法1(步骤2~步骤5)中的迭代数。

3.3 兴趣点选择

攻击是否成功很大程度上取决于兴趣点的选择。兴趣点是指侧信道能量数据中包含最多泄露信息的点,从信息泄露的角度来看,不同信息产生的能量差异越大,信息泄露就越强烈,即泄漏分析曲线出现明显尖峰。所以选择兴趣点的基本原则是:选择能量曲线上对不同信息表现出能量差异较大的地方,也就是说选择泄漏分析能量曲线中峰值较大的位置。在聚类攻击的训练中,根据不同的“操作”将能量曲线分为不同的组别,选择各分组间能量差异较大处的样本点,即兴趣点,使得聚类结果更准确。

不同于常规的兴趣点选择方式,本文采用卷积自编码器来提取兴趣点,编码的过程就是对每条波形段进行卷积操作,得到一个包含数据特征的低维向量,即编码后的波形段数据,也就是样本点集合这些样本点就是选择出来的兴趣点,其中m代表编码后一条波形段中的样本点数。实验所使用的卷积自编码器网络结构设计如图2 所示,输入是经过预处理的波形段能量曲线矩阵T,输出是经过编码解码操作的重构波形段能量曲线矩阵T′。其中编码器每层包含1 个卷积层和1 个池化层,卷积层所使用的卷积核大小为3、步长为1,激活函数为ReLU,过滤器个数分别为16和8,池化层大小为2,步长为2。

为了验证该方法对兴趣点的选择是否合理可行,本文对编码前后的能量曲线进行了泄漏分析,结果如图4 和图5 所示。图4 是编码前对10000 个样本点进行泄漏分析的曲线图,可以看出只有中间极个别的少数样本点具有极高的泄漏,而图5 中显示的是针对编码后得到的140 个样本点进行泄漏分析的曲线图,可以看出纵轴泄漏指标均大于0.5,超过半数在1 以上。经对比可以得出结论,编码后的数据较编码前的数据保留了一定程度的泄漏且具有较好降噪效果,验证了采用卷积自编码器对能量曲线数据进行编码训练后可以提取出更大范围的精确兴趣点。

图4 预处理前泄漏分析

图5 预处理后泄漏分析

3.4 聚类攻击

将经过卷积自编码后的曲线样本点{ }t1:l,j作为输入,对每条波形段的同一位置j进行聚类,将波形段划分为2 个不同类别,本文使用K-means 算法对波形段样本中的某处兴趣点进行了聚类,结果如图6所示。

图6 K-means 聚类结果图

整个实验的重点在于如何确定每个聚类中心代表什么类别或操作,即数据标签为0还是1,解决方案是基于对能量曲线数据本身的分析来界定。对比分析发现倍点操作对应波形段能量曲线平均值振幅大于点加操作对应波形段能量曲线平均值振幅,因此在每一次聚类算法初始化时就根据其振幅从聚类样本中选择最大和最小样本来作为初始聚类中心,这样就保证了聚类后μ1>μ2。

为了找到最佳的卷积自编码器结构,本文还做了对不同聚类算法和不同网络结构的一些对比实验,实验结果如表2 所示,并采用了传统提取兴趣点方法(SOST)对相同数据完成了攻击实验,准确率为82%。观察表2 可以发现添加一层Batch Normalization 层大约可增加2.86%的准确率,且当同时采用Max Pooling 池化层和Fuzzy K-means 聚类算法时准确率最高可达到97.02%,而采用传统提取兴趣点方法的攻击准确率只有82%。

表2 不同网络结构攻击准确率对比

这是因为侧信道攻击中的数据往往还存在一定程度的噪声和背景干扰,添加Batch Normalization 层使得输入的特征归一化,增加了卷积自编码器模型的鲁棒性和泛化能力,而Max Pooling 池化层可以提取出数据中的重要特征,有助于产生更加有针对性的特征表示。同时,Fuzzy K-means 算法能够更好地处理具有模糊性质的数据,它允许每个数据点属于多个聚类中心,而不只是一个。这一特性使得采用Fuzzy K-means 算法相较于K-means 算法对侧信道攻击中的聚类分析具有更高的准确率。

3.5 密钥恢复

本文采用了文献[9]中提出的方法对波形段集合中每个位置j进行聚类,对每个位置聚类之后将会得到一组聚类结果,但每组结果可能存在一定的错误位,需要将它们组合以获得最终结果。本文采用文献[8]中提出的多数决定方法来估计最终结果,用多个位置的不同聚类结果来纠正错误的标签分类。

接下来便是最终的密钥恢复环节了,首先将聚类得到的每个标签按照对应的波形段顺序依次排列,然后根据算法1 中所描述的,将单独的倍点操作化为比特位0,倍点操作和点加操作一起化为比特位1,便可恢复出密钥。

4 结束语

在侧信道攻击过程中,兴趣点的选择和提取很大程度上决定了攻击的成功与否,当提取出足够有效的兴趣点时可以很好地构造攻击模型。本文提出将卷积自编码器结合聚类算法用于侧信道分析中,并对SM2解密算法中的私钥多倍点运算成功实现了攻击,实验结果验证了该方法的有效性和可行性。后续将结合卷积自编码器进行深度嵌入神经网络聚类模型的研究,以减小误差,提高聚类攻击的成功率,从而对芯片安全提出更高的要求。

猜你喜欢
编码器密钥信道
探索企业创新密钥
密码系统中密钥的状态与保护*
基于FPGA的同步机轴角编码器
一种对称密钥的密钥管理方法及系统
基于ECC的智能家居密钥管理机制的实现
基于PRBS检测的8B/IOB编码器设计
基于导频的OFDM信道估计技术
JESD204B接口协议中的8B10B编码器设计
一种改进的基于DFT-MMSE的信道估计方法
基于MED信道选择和虚拟嵌入块的YASS改进算法