基于SincNet 的侧信道攻击*
2020-11-06董高峰胡红钢
陈 平, 汪 平, 董高峰, 胡红钢
中国科学技术大学 中国科学院电磁空间信息重点实验室, 合肥230027
1 引言
在过去的几年中, 侧信道攻击(Side Channel Attack, SCA) 被证明是攻击加密算法实现的一种非常有效的方法[1]. 攻击者使用算法运行时间、功耗和电磁辐射等侧信道信息, 从目标加密设备中恢复敏感数据, 常见的加密设备主要有智能卡[2]、FPGA[3]、ASIC[4]、RFID 标签[5]、IoT[6]和微控制器[7]等小型嵌入式设备. 此外, 最近的一些研究还针对复杂设备比如PC 级计算机[8]和智能手机[9]的侧信道攻击.
侧信道攻击可以分为两类: 建模类侧信道攻击和非建模类侧信道攻击. 建模类侧信道攻击是最强大的一种侧信道攻击方法, 主要包括建模阶段和攻击阶段, 对应于深度学习中的训练阶段和预测阶段. 在建模阶段, 攻击者使用与目标设备相同的设备来对密钥相关的信息与目标设备的泄露值之间的依赖关系进行建模. 在攻击阶段, 使用已建立的模型对目标设备执行密钥恢复攻击. 这种类型的攻击包括模板攻击(Template Attack, TA)[10]和随机攻击(Stochastic Attack, SA)[11]. 从信息论的角度来看, 模板攻击假设能量轨迹的噪声遵循多变量的高斯分布, 被认为是现阶段最有效的攻击方法. 在实践中, 模板攻击存在一些局限, 比如攻击者无法拥有与目标设备相同的设备, 并且在轨迹非对齐和输入数据是高维的情况下模板攻击处理起来较为困难. 非建模类侧信道攻击, 对应于能力较弱的攻击者, 他只能获取目标设备的侧信道泄漏. 为了恢复密钥, 他可以使用统计分析工具计算泄露点和敏感数据之间的相关性. 这类攻击方法主要包括包括差分能量分析(Diあerential Power Analysis, DPA)[12]、相关能量分析(Correlation Power Analysis, CPA)[13]和互信息分析(Mutual Information Analysis, MIA)[14].
近年来, 基于深度学习的侧信道攻击引起了研究人员的注意. Maghrebi 等人在2016 年首次将深度学习技术应用于侧信道攻击[15]. 2017 年, Cagli 等人提出了一种基于卷积神经网络端到端的建模类攻击方法, 这种方法不需要对轨迹进行预处理也不需要精确的特征点选择, 此外, 他们使用数据增强提升了卷积神经网络的性能[16]. 在2019 年,Robyns 等人提出了一种新的相关优化(Correlation Optimization,CO)方法, 通过在电磁轨迹中选择有用的泄漏样本作为机器学习的优化问题来改进相关电磁分析(Correlation Electromagnetic Analysis, CEMA)[17].
在本文中, 我们提出了一种优化的卷积神经网络侧信道攻击方法, 通过使用基于sinc 函数的Sinc-Conv 层[18]来提升攻击效果, 我们在用于评估深度学习侧信道攻击效果的公开数据集ASCAD[19]和用于侧信道攻击研究的数据集DPA contest v4.1[20]上进行了实验, ASCAD 数据集提供了ATMega8515 MCU 上实现的AES-128 算法运行过程中的电磁能量轨迹, DPA contest v4.1 数据集提供了Atmel ATMega-163 智能卡上的AES-256 的电磁能量轨迹. 在ASCAD 数据集上的实验结果表明该方法减少了攻击成功需要的轨迹条数并且有效地缓解了轨迹非对齐对攻击结果造成的影响. 在DPA contest v4.1 数据集上, SincNet 网络模型和经典的CNN 模型相比需要更少的训练轨迹条数就可以恢复出正确的子密钥. 此外, SincNet 层只需要学习2 个频率参数, 相对于其他卷积层其参数规模更小.
本文的章节安排如下: 在第2 节中, 我们介绍了预备知识; 在第3 节中, 我们提出基于SincNet 的侧信道攻击方法并对其进行解释; 在第4 节中, 我们介绍实验过程并对实验结果进行分析评估; 最后, 在第5节中我们总结了现有的工作并提出未来工作展望.
2 预备知识
2.1 高级加密标准
美国国家标准技术研究所(National Institute of Standards and Technology, NIST) 在2001 年发布了高级加密标准(Advanced Encryption Standard, AES)[21]. AES 是一种分组密码, 其加密密钥和解密密钥相同, 可以在各种平台上高效实现. 我们仅关注AES-128、AES-256 算法, 两者密钥长度不同、加解密轮数不同, 但分组长度一致:
(1) 明文(p), 原始可理解的消息或数据, 加密算法的输入, 解密算法的输出. AES-128 长度为128 位,AES-256 长度为128 位.
(2) 密文(c), 加密算法的输出, 解密算法的输入, 依赖于明文和密钥. AES-128 长度为128 位, AES-256 长度为128 位.
(3) 密钥(k), 在明文转换为密文或将密文转换为明文算法中输入的数据. AES-128 的长度为128 位,AES-256 的长度为256 位.
(4) 轮数(r), AES-128 为10 轮, AES-256 为14 轮.
AES 算法运行时, 其能量消耗依赖于算法所执行的中间值. 执行一次AES 加密算法时, 先将明文与密钥进行异或, 再执行多轮加密操作. 每一轮加密操作的第一个子操作都是字节替换(SubBytes), 为此AES 定义了一个S 盒(Sbox), 它是由16×16 个字节组成的矩阵, 包含了8 位数据所能表示的256 个数的一个置换. 我们定义v 为S 盒的输出, 是AES 加密算法的中间值, 下标s 表示第1 至第16 字节, vs表示第s 个字节的S 盒输出, 同理, ps, ks表示第s 个字节的S 盒输入:
其中, (vs,ps,ks) ∈[0,255]3. 明文是已知的, S 盒是已知且可逆的, 由于v 依赖于k, 所以S 盒的输出v是敏感的数据.
2.2 建模类侧信道攻击
建模类侧信道攻击分为两个阶段: 建模阶段和攻击阶段, 分别对应于深度学习的训练阶段和预测阶段.
在建模阶段, 攻击者采集Np条电磁能量轨迹, 表示为集合Xprofiling={xi|i=1,2,··· ,Np}. 每一条轨迹xi对应于已知密钥k*下加密操作的中间值vi= f(pi,k*), 攻击者根据建模集合{xi,vi}i=1,···,Np构建模型, 计算如下条件概率:
在攻击阶段,攻击者采集Na(Na<Np)条电磁能量轨迹,表示为集合Xattack={xi|i=1,2,··· ,Na},Xattack和Xprofiling是相互独立的, 此时每条轨迹xi对应于固定未知的密钥k*. 攻击者根据贝叶斯定理计算每条能量轨迹猜测密钥k 对应的中间值的后验概率:
然后用极大似然准则(在真实环境下, 每条采集的电磁能量轨迹可以看作是相互独立的) 计算每个猜测密钥对应的似然函数值dk:
求k 极大似然估计值~k:
随着攻击条数Na的增加, ~k 最终等于正确的密钥k*.
2.3 性能指标
在本文中, 我们使用rank 指标来评估基于深度学习方法的建模类侧信道攻击的效果. rank 指标是侧信道攻击中常用的一个指标, 它的定义如下:
其中, i,k ∈{0,1,··· ,255}, 模型的输出dk(密钥k 的后验概率) 是一个有256 个元素的张量, 分别对应着猜测密钥{0,1,··· ,255} 的概率, 我们使用sort() 对dk进行降序排序, 正确密钥的概率对应的索引即为该密钥的rank. 我们希望正确密钥具有最大的输出概率, 即在攻击正确的情况下, dk[real_key] 是张量dk中的最大值, 经过排序后, 它对应于sort(dk) 中索引为0 的值, 即sort(dk)[0]. 所以说, 我们的目的是构建一个模型, 该模型需要较少的能量曲线就能使得正确密钥的rank 为0.
2.4 卷积神经网络
卷积神经网络(Convolutional Neural Network, CNN)[22]是一种具有局部连接、权重共享等特性的深度神经网络, 其起源于对生物神经感受野的研究, 相对于全连接神经网络, 卷积神经网络进步的地方是引入了卷积层和池化层.
CNN 的卷积层是线性层, 它使用过滤器对输入电磁能量轨迹进行卷积操作. 如图1 所示, 不同的过滤器从输入能量轨迹对应的过滤器小窗口中提取不同的特征, 得到不同的特征映射. 随着卷积操作的加深(也就是层数的增加), 输入数据的高层抽象特征被提取出来, 这些高级抽象特征在更深的数据维度上并排排列, 这个几何特性使得CNN 对能量轨迹时间上的变形有很好的鲁棒性. 通俗来讲, 一旦一个特征被提取出来, 只要保存下来它相对于其他特征的大致位置, 它的准确位置变得不再重要, 即使特征出现的位置改变了, 在任何地方也都能识别出这个特征, 不需要再重新学习这个特征.
图1 使用2 个大小为3 的过滤器的卷积操作Figure 1 Convolution operation using 2 filters of size 3
CNN 的池化层是非线性层, 它对卷积操作得到的特征映射进一步处理, 一是为了减少需要处理的特征映射的元素个数, 二是为了让窗口覆盖原始输入轨迹的比例越来越大, 从而引入空间过滤器的层级结构. 池化层会将特征映射某一位置及其相邻位置矩形区域内的特征值进行统计汇总, 比如, 最大池化输出该区域内的最大值; 平均池化输出该区域内的平均值. 如果计算最大池化操作和平均池化操作的区域不重叠, 那么经过池化操作之后的特征映射的大小会进一步缩小, 事实上, 在Keras 2.2.4 API 中池化操作的区域取决于池化窗口(pool_size) 的大小以及池化步长(strides). 图2 展示了一个平均池化操作, 其中,pool_size = 2, strides = 2, 将图1 一条能量轨迹和1 个过滤器卷积操作之后的特征映射(示例仅展示了部分特征值) 分为2 个区域, 输出每个区域的平均值.
在本文中, 由于能量轨迹是一维(1D) 的张量, 所以我们使用的卷积层是Conv1D. 此时, 过滤器也是1D 的.
图2 平均池化操作Figure 2 Average Pooling operation
3 基于SincNet 的建模类侧信道攻击
3.1 SincNet 的原理
在信号处理领域, sinc 滤波器是理想化的低通滤波器, 它可以消除高于给定截止频率的所有频率分量,而不会影响较低的频率.
具有截止频率fl的低通滤波器的冲激响应和传递函数为:
其中, t 表示连续时间, f 表示频率, sinc(t)=sin(t)/t, rect(·) 是频域上的矩形函数, 滤波器的相位是0.具有高截止频率fh和低截止频率fl的带通滤波器是分别具有这两个截止频率低通滤波器的差值:
卷积神经网络的第一层对输入能量轨迹和有限长冲激响应(Finite Impulse Response, FIR) 滤波器执行时域卷积操作. 卷积的定义如下:
其中, n 表示抽样时间样本点, x(n) 对应输入的一段能量轨迹, h(n) 是长度为L 的过滤器, y(n) 是卷积的输出. 在卷积神经网络中, 我们在训练过程中需要学习过滤器h(n) 中的L 个元素.
为了减少学习参数, 并且利用到电磁能量曲线的频域特征, 我们使用仅依赖于截止频率的过滤器来替换原始的过滤器. 为此在SincNet 网络第一层实现具有高和低截止频率的sinc 带通滤波器(SincConv层), 对输入电磁能量轨迹进行滤波操作:
其中, w 表示加窗函数, hw(n,fl,fh) 是时域上的函数, 该函数仅仅依赖于fl和fh这两个参数.
根据逆傅里叶变换 (Inverse Discrete-time Fourier Transform, IDTFT), 得到时域上的函数h(n,fl,fh):
由于经过IDTFT 之后h(n,fl,fh) 是无限长的, 故要用一个有限时长的截断函数(窗函数) 加以截断.
为了防止直接对信号处理产生的频率泄露, 我们使用汉明窗作为截断函数. 汉明窗是信号处理领域比较常用的一个窗函数, 汉明窗是非矩形的, 它的幅频特性是旁瓣衰减较大, 主瓣峰值与第一个旁瓣峰值衰减可达40 db. 汉明窗的定义如下:
对h(n,fl,fh) 应用汉明窗, 得到所需滤波器函数:
3.2 SincNet 的网络结构
Prouあ等人在2018 年对一些最先进的网络结构类型(包括VGG-16, ResNet-50 和Inception-v3) 进行研究, 发现ResNet-50 和Inception-v3 不能提取密钥相关信息, 而VGG-16 在提取密钥相关信息上表现的非常好, 于是他们选择VGG-16 网络结构的设计原则, 并研究了训练参数和网络结构参数对侧信道攻击效率的影响, 提出了ASCAD 数据集原始卷积神经网络模型CNNbest[19].
CNNbest共有14 层(包括输入层和输出层): 1 个输入层, 5 个卷积层后分别跟着5 个平均池化层, 3个全连接层, 参数总量为66 652 544. SincNet 网络在CNN 的基础之上增加一个SincConv 层, 该层实现了sinc 带通滤波器, 一共有15 层(不包括Flatten 层和Dropout 层, 这两个对数据处理的层没有可学习的参数), 参数总量为66 652 546, 比CNNbest多了SincConv 层的两个截止频率参数. 具体的网络结构和参数如图3 所示:
(1) 第一层: InputLayer 层是输入层, 输入是700×1 的能量轨迹.
(2) 第二层: SincConv 层是sinc 滤波器过滤层, 过滤器的大小是11, 步长为1, 输出通道数1, 采样频率2 GHz (根据电磁能量轨迹的采样频率确定), 高和低截止频率随机初始化, 使用same 的填充模式(输出数据的长度和输入长度相同).
(3) 第三层: Conv1D 层是一个卷积层,过滤器的大小是11,步长为1,过滤器的个数是64,使用same的填充模式, 激活函数使用relu.
(4) 第四层: AveragePooling1D 层是一个池化层, 池化窗口大小为2, 步长为2 .
(5) 第五层、第七层、第九层、第十一层: 都是Conv1D 卷积层, 过滤器的大小是11, 步长为1, 过滤器的个数分别是128、256、512、512, 使用same 的填充模式, 激活函数使用relu.
(6) 第六层、第八层、第十层、第十二层: 都是AveragePooling1D 池化层, 池化窗口大小为2, 步长为2 .
(7) 第十三层、第十四层: Dense 层是一个全连接层, 有4096 个单元, 激活函数是relu, 多维数据输入Dense 层之前需要通过Flatten 层将其转换为一维的数据, 为了防止模型出现过拟合, 我们Dense 层之后添加了Dropout 层, Dropout 层使得神经网络在训练过程中随机丢弃一些网络结点, 丢弃结点的比例为0.4.
(8) 第十五层: Dense 层, 也是输出层, 共有256 个单元, 输出具有256 个元素的向量. 最后一层使用了Softmax 激活函数, 网络输出256 个类别的概率分布, 对应于256 个猜测的子密钥.
图3 SincNet 网络结构Figure 3 Architecture of SincNet
4 评估
4.1 实验配置
在本文的工作中, 我们使用了Keras 深度学习开源库(keras-2.2.4) 和tensorflow 后端(tensorflowgpu-1.9.0), 对ASCAD 数据集和DPA contest v4.1 数据集均在搭载80 个逻辑Intel(R) Xeon(R) Gold 6148 CPU @ 2.40 GHz CPUs 和10 块NVIDIA TITAN Xp GP102 GPUs 的服务器上进行实验.
4.2 数据集
我们使用了两个专门用于侧信道攻击领域的公开数据集来评估我们的方法.
4.2.1 ASCAD 数据集
法国国家网络安全局(ANSSI) 提供了两个实现在ATMega8515 MCU 上的掩码AES 的源代码, 可以在以下github 仓库中找到: https://github.com/ANSSI-FR/secAES-ATmega8515. ASCAD 数据库是由Prouあ等人提出[19], 对应于上述掩码AES 的第一个版本(v1) , 第二个版本目前不公开, 它为评估基于机器学习和深度学习的侧信道攻击方法的效率和准确性提供了一个基准. ASCAD 数据库对应的原始电磁能量轨迹保存在5.6 GB 的ATMega8515_raw_traces.h5 中. ATMega8515_raw_traces.h5 一共有60 000 条轨迹, 每条轨迹具有100 000 样本点, 是以2 GHz 的采样率在基于AES (v1) 实现的WB Electronics 64 Kbit ATMega8515 芯片卡上采集的.
ASCAD 数据库中的提供的数据集是从包含原始轨迹的ATMega8515_raw_traces.h5 文件中提取的, 为了避免无用而大量的数据处理, 只保留了从45 400 到46 100 这700 个特征点(这些特征点对应于能量轨迹中第3 个S 盒泄漏操作的时间样本点), 主要包含了以下3 个HDF5 文件格式的数据集:
(1) ASCAD.h5 从原始能量轨迹中提取的数据集.
(2) ASCAD_desync50.h5 经过处理的最大窗口为50 个样本点非对齐的数据集.
(3) ASCAD_desync100.h5 经过处理的最大窗口为100 个样本点非对齐的数据集.
上述3 个数据集是HDF5 文件, 每个均包含了两个标记的数据部分:
(1) 具有50 000 条轨迹的建模数据, 用于训练深度神经网络模型.
(2) 具有10 000 条轨迹的攻击数据, 用于在建模阶段之后检查训练模型的性能.
4.2.2 DPA contest v4.1 数据集
DPA contest v4 数据集是2013 年6 月和7 月法国巴黎高等电信学院数字电子系统研究小组的安全实验室在Atmel ATMega-163 智能卡上采集的电磁轨迹集合, 这款Atmel ATMega-163 智能卡上用软件实现了一个基于旋转S 盒掩码(Rotating Sbox Masking, RSM) 方案的AES-256. 我们仅关注第一轮的第一个掩码S 盒操作:
p1是第一个S 盒的明文字节, m 是已知的掩码字节, 对于DPA contest v4.1 数据集我们选择攻击第一轮的第一个掩码S 盒的输出v1, 通过相关性分析, 定位到第一个掩码S 盒的泄露位置在第100 000 到102 000 个样本点之间, 为了降低模型训练的复杂度, 从其中选取了包含了主要泄露的1000 个连续的样本点.
4.3 ASCAD 数据集攻击结果
我们分别对ASCAD.h5、ASCAD_desync50.h5 和ASCAD_desync100.h5 这3 个数据集分别训练了 3 个模型. 图4、图5 和图6 分别展示了模型在 ASCAD.h5、ASCAD_desync50.h5 和ASCAD_desync100.h 数据集上的攻击结果. 图中的横坐标代表攻击的能量轨迹条数, 纵坐标代表正确密钥的rank, 当rank 的值为0 的时候, 代表攻击成功.
图4 ASCAD.h5 的攻击结果Figure 4 Attack results of ASCAD.h5
图5 ASCAD_desync50.h5 的攻击结果Figure 5 Attack results of ASCAD_desync50.h5
我们和ASCAD 数据集原始卷积神经网络模型CNNbest[19]进行了对比实验. 在ASCAD.h5 数据集上, 如图4 所示, 原始模型攻击成功需要530 条能量轨迹, 而我们的模型只需要170 条. 在图5 中, 对于50个样本点非对齐的数据集ASCAD_desync50.h5, 我们需要990 条能量轨迹就能恢复出密钥, 而原始模型攻击效果不明显. 在图6 中, 对于100 个样本点非对齐的ASCAD_desync100.h5 数据集我们的模型需要4050 条能量轨迹就能恢复出密钥, 而原始模型攻击不出来, 具体比较结果如表1 所示.
图6 ASCAD_desync100.h5 的攻击结果Figure 6 Attack results of ASCAD_desync100.h5
表1 ASCAD 数据集正确子密钥攻击成功需要的轨迹条数Table 1 Number of traces required to successfully get the correct key in ASCAD dataset
4.4 DPA contest v4.1 数据集攻击结果
我们依旧使用CNNbest模型和SincNet 模型进行对比, 并对两个模型做了细微的调整, 但整体网络结构不变. 我们发现攻击第一个掩码S 盒的密钥字节时, 训练轨迹超过400 条, CNNbest模型或SincNet模型都可以使用一条能量轨迹攻击出来. 我们逐渐减小训练轨迹条数到200 条(测试能量轨迹1000 条),加大攻击的难度. 图7 展示了在训练轨迹条数为200 条时, DPA contest v4.1 数据集的攻击结果. SincNet模型需要20 条测试轨迹能够恢复出子密钥, 原始CNNbest模型需要240 条测试轨迹恢复出子密钥.
图7 DPA contest v4.1 数据集的攻击结果Figure 7 Attack results of DPA contest v4.1 dataset
4.5 分析与比较
我们对SincNet 模型和CNNbest模型训练过程中的精确度(acc) 和损失(loss, 定义交叉熵作为损失函数) 进行记录, 并绘制出精确度曲线和损失曲线, 分别用实线和虚线表示. 如图8 所示, 红色曲线表示SincNet 模型, 蓝色曲线表示CNNbest模型, 可以看出, SincNet 模型在训练过程中精确度和损失相比于CNNbest模型能够更快的收敛.
为了说明SincNet 网络SincConv 层的效果, 我们对经过SincConv 层处理之后的轨迹做相关性分析,和原始轨迹的相关性分析结果作对比, 如图9 所示, 横轴表示轨迹的样本点, 纵轴代表相关性. 我们发现经过SincConv 层处理之后的轨迹的相关性有了一定的提高, 这也说明通过训练学习到的SincConv 层能够过滤掉一些无关信息, 提取到有用的特征.
图8 SincNet 模型和CNN 模型训练时收敛情况的对比Figure 8 Comparison of convergence between SincNet model and CNN model during training
图9 经过Sinc 层处理后的轨迹相关性和原始轨迹相关性对比Figure 9 Correlation of traces through Sinc layer vs. Correaltion of raw traces
5 结论
为了研究深度学习在侧信道攻击中的应用, 本文对卷积操作进行优化, 提出了基于SincNet 卷积神经网络的侧信道攻击方法. SincNet 网络的SincConv 层可以自动学习滤波器的截止频率, 通过相关性计算结果发现它能够有效地滤除和泄露无关的信息, 不需要对轨迹进行预处理. 实验结果表明, 我们的方法在ASCAD 和DPA contest v4.1 数据集上均表现出很好的效果并且对于两个非对齐的ASCAD 数据集也有较好的鲁棒性. 此外, 由于SincNet 卷积层只需要学习过滤器的两个截止频率, 和传统的卷积层相比, 参数更少. 在未来的工作中, 我们将继续研究深度学习技术在侧信道攻击中的应用以及探索一些信号处理方法,比如过滤器的设计方法和不同滤波函数的性能比较等.
致谢
在此, 特别感谢中国科学技术大学信息科学实验中心提供的软硬件服务.