APP下载

基于CBAPD 网络的侧信道攻击*

2022-05-09李亚宁张美玲

密码学报 2022年2期
关键词:密钥信道卷积

郑 东, 李亚宁, 张美玲

西安邮电大学无线网络安全技术国家工程实验室, 西安 710121

1 引言

侧信道攻击[1]是一类强大的密码分析攻击, 它利用运行密码算法的物理设备所泄露的一些物理信息来对密码算法进行分析. 在物理设备执行加密操作的过程中, 总会产生一些依赖于敏感变量或敏感操作的物理信息的泄露, 攻击者会利用这些物理信息来对密钥进行恢复. 一些研究人员针对侧信道攻击的各种角度进行分析. 例如: 王等人[2]提出了一种基于t检验的评估密码设备的一阶侧信道信息泄露的方法; 戴等人[3]提出的双重匹配架构可以在无触发信号的侧信道分析场景中对加解密区间进行快速定位.

侧信道攻击通常可以分为建模攻击和非建模攻击. 在侧信道攻击中广泛使用的能量分析攻击, 如差分能量分析攻击(differential power analysis, DPA)[4]、相关能量分析攻击(correlation power analysis,CPA)[5]以及简单能量分析攻击(simple power analysis, SPA) 等都属于非建模攻击. 在这一类攻击中,攻击者不能事先对攻击目标进行操控来采集与加密操作相关的物理信息, 只有在攻击时才能采集. 而在建模攻击中, 攻击者拥有一个与攻击目标完全相同的设备, 可以操控设备执行任意操作(如加解密等), 并采集所需要的泄露信息, 然后利用这些泄露信息建立一个模板, 以此来对攻击目标进行攻击. 常用的建模攻击方法有模板攻击[6]和基于机器学习的建模攻击等.

随着近年来计算机硬件的飞速发展, 算力得到了极大的提高, 深度学习[7]技术也随之成为各个研究领域的得力工具. 同样的, 研究人员也把深度学习与侧信道攻击结合起来, 使得侧信道攻击的性能得到了一定的提升[8]. 相比于模板攻击, 基于深度学习的侧信道攻击突破了模板攻击的局限性. 首先, 模板攻击都是建立在噪声分布为多元高斯分布的假设之上, 而利用深度学习进行侧信道攻击则不需要此假设. 其次, 对于未对齐的能量迹和高维的数据, 模板攻击需要做一些预处理, 如使用主成分分析(principal component analysis, PCA) 技术[9]进行降维, 而使用卷积神经网络则并不需要预处理. 另外, 在性能方面, 即使传统的模板攻击与一些降维技术相结合, 其表现也不如卷积神经网络[10].

2019 年, Timon[11]介绍了一种在非建模情况下基于深度学习的侧信道攻击的新方法. 这种方法只需要攻击者从被攻击设备中收集到使用某未知且固定密钥情况下的有限数量的能量迹. Timon 的研究表明, 在进行非建模攻击时, 可以利用卷积神经网络的平移不变性来针对异步的能量迹. 并且, 他们还证明了这种方法比经典的非模板攻击(例如CPA) 的性能更好. Zhou 等人[12]引入了广义残差网络进行侧信道攻击. 在他们的实验案例中, 广义残差网络的性能优于其他三个已经发布的最新神经网络模型(ASCAD_CNN 模型、SPACE_CNN 模型和SCANet 模型), 甚至在公开的ASCAD 数据集上也优于已发布的优化的CNN 模型. 2020 年, Zhang 等人[13]提出了一种新的交叉熵比(CER) 指标来评估侧信道攻击中深度学习模型的性能. 在处理不平衡数据时, 相比于传统的侧信道评价指标猜测熵(GE) 和成功率(SR)[14], 使用CER 作为损失函数可以显著地改善攻击性能. 王等人[15]提出了一种使用改进残差网络和数据增强技术相结合的攻击方法, 可以直接恢复密钥字节. 相比于直接使用经典残差网络, 他们提出的改进的残差网络有效地减少了模型参数和训练时间. 陈等人[16]提出了基于SincNet 的侧信道攻击, 在这种方法中他们将一种新的结构SincNet 加入了卷积神经网络, 有效地过滤了一些无关的信息. 相比于文献[10] 提出的卷积神经网络, 其模型性能有了一定的提升.

本文提出了一种在侧信道攻击中更加高效的卷积神经网络. 该网络首先在卷积层后添加一个批标准化层, 并将卷积层中的激活函数去除, 然后再在批标准化层之后加入一个激活层. 为评估模型性能, 我们在ASCAD 公开数据集以及DPA-contest v4 公共数据集上进行了实验. 实验结果表明, 本文所设计的模型在ASCAD 同步数据集和最大异步量为50 个样本点的数据集上, 比文献[10] 所提出的卷积神经网络、文献[16] 所提出的SincNet 模型和文献[20] 所提出的模型性能更好, 攻击成功时使用的能量迹数量在不同情形下可以减少34.426%~96.8%. 针对在能量迹中添加随机延迟来抵抗侧信道攻击的对策, 本文提出的模型可以在一定程度上消除这种对策所带来的影响.

本文的组织结构如下: 第2 节为预备知识; 第3 节为本文提出的CBAPD 模型的具体结构及其原理;第4 节为本文对模型进行评估的实验结果; 第5 节总结了全文.

2 预备知识

2.1 高级加密标准AES

高级加密标准(advanced encryption standard, AES)[17]是目前使用最广泛的对称密码之一, 其分组大小为128 位, 密钥长度有128、192 和256 位三种选择. 由于本文用到的公开数据集是使用AES-128和AES-256 进行加密的, 所以, 这里只考虑密钥长度为128 位和256 位的情形. AES 是一种面向字节的分组密码, 用P表示明文的一个字节,K表示对明文P进行密钥加(异或) 操作时所使用的密钥字节,Y表示经过字节代换S 盒后的输出, 则:

因为S 盒的输出与密钥相关, 即S 盒输出为敏感数据, 所以可以选择S 盒输出作为攻击点.

2.2 卷积神经网络在侧信道攻击中的应用

卷积神经网络[18]是一种专门用来处理具有类似网格结构的数据的神经网络, 例如时间序列数据(可以认为是在时间轴上有规律的采样形成的一维网格) 和图像数据(可以看作二维的像素网格). 在人工智能领域, 卷积神经网络常常被用来解决分类问题, 并且取得了一些很好的成果. 建模侧信道攻击可以映射为一个分类问题, 所以可以利用卷积神经网络来实施建模侧信道攻击.

本文的攻击场景: 攻击者拥有与被攻击设备E1完全相同的设备E2, 可以操控设备进行任意加密操作.

首先是数据集制作阶段, 攻击者在设备E2中固定秘钥下, 对n个随机明文执行加密操作. 一方面, 采集加密过程中的能量迹L=[l1,l2,··· ,ln], 然后将每一条能量迹中S 盒输出对应的采样点截取出来; 另一方面, 针对每一个随机明文和密钥按公式(1) 计算S 盒的输出Y作为标签(即一个随机明文对应一条能量迹和一个标签).

在训练阶段, 攻击者将制作好的数据集输入搭建好的卷积神经网络中. 卷积神经网络对数据进行前向传播, 之后在输出层可以得到256 种分类(S 盒输出的256 种可能) 对应的概率. 攻击者取出概率最大的分类, 然后使用此分类和标签计算损失函数, 再使用梯度下降算法进行反向传播, 更新卷积神经网络中神经元的权重与偏置, 最终使得损失函数最小.

在攻击阶段, 攻击者对目标板E1采集能量迹, 然后将采集到的能量迹制作成数据集并输入训练好的模型. 模型对S 盒的输出作出预测, 然后攻击者将预测结果中概率最大的值取出来, 再对S 盒进行逆向查表操作, 利用已知明文推出密钥.

卷积神经网络最大的特点是引入了卷积层和池化层. 卷积层可以对输入数据的特征进行提取, 不同的卷积核提取不同的特征. 数据经过卷积层之后维度和参数量都会大大增加, 池化层的加入可以降低数据的维度, 同时还可以防止过拟合, 从而提高模型的容错性.

2.3 数据集

本文一共使用了两个数据集: 其一是2019 年Benadjila 等人[10]提出的ASCAD 公开数据集; 另外一个数据集是DPA-contest v4, 即DPA 竞赛的第四版[19].

2.3.1 ASCAD 公开数据集

ASCAD 公开数据集包含了四个子数据集: ATMega8515_raw_traces.h5 原始数据集和从其中提取的三个数据集. 这三个数据集分别是完全同步的数据集ASCAD.h5、最大异步量为50 个样本点的ASCAD_desync50.h5 和最大异步量为100 个样本点的ASCAD_desync100.h5.

原始数据集ATMega8515_raw_traces.h5 中包含一个元数据子集和一个能量迹子集. 元数据子集中有60 000 个随机明文、对应的密文、密钥和掩码. 每个明文对应一条能量迹, 因此能量迹子集中有60 000条能量迹, 而每条能量迹有100 000 个采样点. 原始能量迹是在8 位ATMega8515 硬件设备(工作频率为4 MHz) 上运行带有掩码的AES-128 时在第一轮加密操作中使用数字示波器进行采样得到的, 采样频率为2G/s.

提取出来的数据集ASCAD.h5、ASCAD_desync50.h5 和ASCAD_desync100.h5 都包含一个训练子集和一个攻击子集. 训练子集用于训练模型, 攻击子集用于评估模型的性能. 在训练子集中包含50 000条能量迹、对应的标签以及一个元数据集, 其中每条能量迹有700 个点, 此700 个点包含AES 第一轮加密过程中第三个S 盒的输出. 元数据集中有50 000 条能量迹各自对应的明文、密文、密钥、掩码和异步量. 攻击子集中能量迹数量为10 000 条, 其中每条能量迹有700 个点. 攻击子集中还包含一个元数据集,元数据集中有10 000 条能量迹各自对应的明文、密文、密钥、掩码和异步量.

2.3.2 DPA-contest v4 公开数据集

DPA 竞赛的第四版是由 Télécom ParisTech 组织在 2013 年推出的.本文使用的 DPAcontest v4 公开数据集源于 github 仓库[20](https://github.com/gabzai/Methodology-for-efficient-CNN-architectures-in-SCA). 此数据集是在SASEBO-W 板控制的8 位ATmega163 智能卡上采集到的, 采样率为500 MS/s, 其中每条能量迹包含了AES 第一轮操作的435 002 个采样. 智能卡实现的是基于旋转S 盒的带有掩码的AES-256.

此数据集中共有训练用的4500 条能量迹及其对应的标签和明文, 其中每条能量迹有4000 个点. 标签对应的是第一个带掩码的S 盒输出, 即: 原始S 盒输出与输出掩码的异或值. 攻击时使用的能量迹共有500 条, 每条能量迹有4000 个点.

2.4 模型评价指标

本文使用的评价指标有rank、模型的精确度(accuracy) 和损失(loss).

其中, rank 是侧信道领域中最常用的评价指标, 它代表的是正确密钥在所有可能密钥中的排序, 通常会随着攻击时所使用的能量迹条数的增加而逐渐降低. 当rank 值降低为0 时, 表示深度学习模型将正确密钥排到了所有可能密钥的第一位, 即此时模型已经成功找到了正确密钥. 本文的目标是构建一个模型,使得rank 值降到0 并保持稳定时使用的能量迹尽可能少.

精确度(accuracy) 和损失值(loss) 是深度学习领域中评价模型性能的通用指标, 是模型在前向传播过程中每一个epoch 结束之后进行计算的. 精确度的计算过程如下:

Step1 将能量迹输入模型, 计算预测结果y. 因为是针对密钥的一个字节进行攻击, 所以此时输出的预测结果为此字节的256 种可能值分别对应的概率.

Step2 将y中最大的概率值对应的索引号返回, 并将其与标签进行比较.

Step3 若将所有能量迹中预测结果正确的能量迹的数量记为N并赋初值0, 则当(Step2) 中最大概率值对应的索引号与标签相同时, 代表模型预测正确,N的值加1.

Step4 当模型将所有能量迹遍历一遍后, 为一个epoch 结束. 此时, 精确度为:

其中,M为训练时使用的能量迹总条数.

本文使用的损失函数为Keras 库中提供的多分类交叉熵损失函数(categorical crossentropy) , 其计算过程如下:

其中,C为待分类的类别总数, 在本文中C=256;x为输入样本;fi(x) 为对应的模型的输出值;yi为第i个类别对应的实际标签.

3 基于CBAPD 网络的侧信道攻击

文献[10] 中设计卷积神经网络模型的思路源于VGG-16, 在他们所设计的卷积神经网络中, 将激活函数放入了卷积层, 在卷积层之后是池化层. 通常情况下, 随着神经网络层数的增加, 特征数据的分布会出现偏移或者变动, 导致反向传播时低层神经网络的梯度消失, 神经网络收敛会越来越慢. 为了克服此缺点, 本文提出了CBAPD 模型(以convolutional, batch normalization, activation, pooling 和dropout 的首字母命名) .

3.1 CBAPD 的网络结构

在本文所提出的CBAPD 模型中, 包含5 个块, 每个块包含一个卷积层、一个批标准化层、一个激活层和一个池化层. 在5 个块之后有一个flatten 层、两个全连接层、两个舍弃层和一个输出层. 其详细结构见图1.

图1 CBAPD 网络结构Figure 1 Network structure of CBAPD

3.2 CBAPD 网络的原理

本文对ASCAD 数据集中的原始能量迹进行相关性分析, 发现能量迹的敏感值范围在[-54, 29]内. 因为卷积层中神经元的初始化分布关于x=0 对称, 故经过卷积操作后其输出在正负范围内都有分布. 本文使用在正负范围都可激活的激活函数进行实验, 实验结果表明Selu 激活函数性能最好. 由于Selu 激活函数在x <0 时对0 附近的值更敏感, 所以在激活层前加入批标准化层对数据进行处理, 使得偏移的数据重新分布在0 附近.

3.2.1 卷积层

卷积层是卷积神经网络中最重要的一层, 其主要功能是提取输入数据的特征. 在卷积层中存在很多个卷积滤波器, 每个卷积滤波器在输入数据上进行滑动, 并在滑动的过程中输出其提取到的特征.

在本文中, 卷积层参数使用了文献[10] 中经过实验得出的结论. 基本原则是先学习输入的能量迹的粗特征, 然后逐层细化. 另外, 过滤器数量越多, 性能越好, 但是消耗的时间也会增加, 所以为了平衡性能与时间, 最终选择了以下参数. 所有卷积层中卷积滤波器的大小都为11, 此参数是根据能量迹中S 盒相关的兴趣点的个数来决定的. 第一个卷积层使用64 个卷积滤波器, 之后的每一个卷积层中卷积滤波器的数量都为前一个卷积层中卷积滤波器数量的2 倍, 而最后一个卷积层中卷积滤波器的个数与前一个卷积层中卷积滤波器的个数相同. 使用的填充模式为全0 填充, 此填充模式可以使输入数据和输出数据的大小保持相同.

与文献[10] 所设计的模型的不同之处在于, 本文将卷积层中的激活函数去除, 然后在卷积层之后加入了批标准化层, 并在批标准化后再加入激活层进行激活.

3.2.2 批标准化层和激活层

批标准化层是Ioffe 等人[21]提出的, 通过减少神经网络中的内部协变量移位来加快深度神经网络的训练速度. 其中, 协变量移位定义为训练过程中由于网络参数的变化而引起的网络激活分布的变化.

神经网络对0 附近的数据更敏感, 但是随着网络层数的增加, 特征数据会出现偏移0 均值的情况. 标准化可以使数据符合均值为0, 标准差为1 的正态分布, 即把偏移的特征数据重新拉回到0 附近. 对应的,批标准化就是对一个batch 的数据做标准化处理, 使数据回归标准正态分布, 常用在卷积操作和激活操作之间. 可以通过下式计算批标准化后的输出特征图:

反向传播时, 缩放因子γ和偏移因子β会与其他待训练参数一同被训练优化. 标准正态分布后的特征数据通过缩放因子和偏移因子优化了特征数据分布的宽窄和偏移量, 保证了网络的非线性表达力.

在卷积神经网络中, 激活层的主要作用是引入非线性. 由于在很多情况下, 线性的表达能力不够, 使得网络不能够有效地模拟实际情况, 所以需要引入非线性来提升网络的表达能力. 在激活层中常用的激活函数有Sigmoid、Tanh、Relu 等, 文献[10] 中使用的激活函数为Relu, 其函数表达式为:

由公式(7)可以看出, 当进入激活函数的值小于0 时, Selu 激活函数不会直接将其转换为0, 即不会直接丢弃这一部分有效特征. 并且, 当输入大于0 时, Selu 激活函数会将其微小的变化放大λ倍, 能够更好地学习到能量迹的特征.

为获得敏感变量(S 盒输出) 的数据特点, 利用相关系数p(h,Tr) 来定位与敏感变量相关性大的能量迹区间, 并以此分析出敏感变量的数据范围. 其中h为S 盒输出的汉明重量构成的列向量, Tr 为相应的能量迹,p(h,Tr) 结果如图2 所示.

由图2 可以看出, 最高尖峰所对应的点为第492 个点, 即这一点所对应的时刻的能量消耗与敏感数据的相关性最大, 达到了0.649 96, 并且在第507、521、559、584 个点都分别对应了一个较小的尖峰. 所以这几个点所对应时刻的能量消耗对敏感数据的依赖性较高.

图2 汉明重量与能量迹的相关系数Figure 2 Correlation coefficient of Hamming weights with traces

使用ASCAD 数据集中的原始能量迹数据集对能量迹进行绘制, 如图3 所示. 查找这五个点所对应的能量值的范围如表1 所示.

图3 1000 条能量迹Figure 3 One thousand traces

表1 尖峰所对应的点及能量迹取值范围Table 1 Point corresponding to peak and value range of traces

由表1 可知, 能量迹的敏感值范围为[-54,29]. 在卷积层中, 过滤器中神经元的初始化值的分布关于x= 0 对称. 本文使用常用的几种初始化函数进行实验, 实验结果表明: TensorFlow 框架中卷积层Conv1d 的默认初始化函数glorot_uniform 性能最好, 其频数分布直方图如图4 所示. 此初始化函数上下限范围为[-limit,limit], 其中:

图4 glorot_uniform 初始化函数频数分布直方图Figure 4 Histogram of frequency distribution of glorot_uniform initialization functions

公式(9)中, fanin和fanout分别表示输入和输出神经元的数量.

我们使用在正负范围内都有分布的激活函数进行实验, 发现使用Selu 激活函数时模型的性能最好, 所以本文使用Selu 激活函数进行激活. 当进入Selu 激活函数的值小于0 时, 越靠近0, 激活函数对其越敏感. 因此, 本文加入批标准化层来对卷积后的值进行处理, 然后再将处理后的数据输入激活层, 以此使得整个模型能够学习到更多能量迹的特征.

3.2.3 池化层

池化层也叫下采样层, 在卷积神经网络中的作用是保留主要特征的同时减少数据量, 防止模型过拟合.池化层还可以提升模型的尺度不变性和旋转不变性, 并且当输入做出少量平移时, 池化层也可以使其保持近似的不变.

池化函数使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出. 目前常用的池化方法有最大池化和平均池化. 最大池化是在池化窗口中选择一个最大的值, 用来代表这一窗口区域内的值,并将其输出; 平均池化是计算池化窗口内所有值的平均值, 用这一平均值来表示此窗口区域内的值. 本文使用的是平均池化, 池化窗口大小均为2, 步长均为2. 通常情况下, 池化窗口大小和步长相同, 这样所操作的输入片段就不会发生重叠. 此参数的选择参考了深度学习领域中的模型(VGG-16).

3.2.4 舍弃层

舍弃层是为了缓解深度学习模型的过拟合问题而提出来的. 在神经网络训练的过程中常把隐藏层中的部分神经元按一定比例暂时从神经网络中舍弃, 在使用神经网络时, 再把所有神经元都恢复到神经网络中.

在本文提出的CBAPD 模型中, 当使用同步数据集时, 没有使用舍弃层, 而使用带有对抗措施的数据集, 即ASCAD_desync50.h5 和ASCAD_desync100.h5 时, 使用了舍弃层. 这是因为当能量迹不同步时, 对于神经网络来说, 相当于引入了一些噪声, 神经网络会将这些噪声错误地识别为能量迹的特征, 从而造成过拟合现象, 导致在攻击时不能展现其良好的性能. 所以, 在针对不同步的数据集时, 本文加入了舍弃层来减轻过拟合的影响. 使用ASCAD_desync50.h5 数据集时, 丢弃节点比例为0.2, 使用ASCAD_desync100.h5 数据集时, 丢弃节点比例为0.3.

3.2.5 全连接层和输出层

全连接层的作用是利用前面网络结构提取到的特征进行分类. 全连接层中神经元的数量均为4096, 使用Relu 激活函数. 此参数的选择借鉴了AlexNet 网络. 输出层实质上也是一个全连接层, 它的作用是进行256 种密钥可能值的分类, 所以使用了256 个神经元, 使用的激活函数为Softmax. Softmax 激活函数是进行多分类任务时的经典选择.

此外, 训练时使用CategoricalCrossentropy 损失函数和RMSprop 优化器, 学习率设置为0.000 01.由于CategoricalCrossentropy 损失函数易于使用标准的基于梯度的方法进行优化, 所以是一个经典的选择. 对RMSprop、Adam、SGD 等优化器进行实验, 结果表明使用RMSprop 优化器时模型性能最好. 学习率是在1e-07~0.001 范围内进行实验得到的最佳选择.

4 实验

4.1 实验配置

本文中所有的实验都使用了Keras 深度学习开源库和TensorFlow 后端(tensorflow-gpu-2.4.0rc0) ,运行在搭载了Intel-i9-10900k 处理器和一块NVIDIA RTX-3090 显卡的硬件平台, 并且使用了ASCAD公开数据集和DPA-contest v4 公共数据集1https://github.com/qwserft/Side-channel-attacks-based-on-CBAPD-network.

4.2 模型性能对比

在训练过程中, 关于能量迹数量的选择问题, 我们进行了一些测试, 实验结果显示: 训练数据量越小,模型性能越差, 恢复密钥所需能量迹越多. 故本文使用了数据集中所有用于训练的能量迹.

4.2.1 ASCAD 数据集攻击性能对比

我们使用2.3.1 节中介绍的数据集来训练模型, 并且重现了文献[10,16,20] 的模型, 以此来作对比. 训练时均使用了训练子集中所有的50 000 条能量迹, 使用2.4 节中所介绍的三种评价指标rank、accuracy和loss 来比较这三个模型的性能. 当目标数据集为ASCAD.h5 时, 实验结果如图5、6 和7 所示.

图5 ASCAD 数据集模型训练损失对比Figure 5 Model training loss comparison of ASCAD dataset

由图5 和图6 可以看出: CBAPD 模型在经过100 个epoch 后, 损失(loss) 可以降到0.7396, 精度(accuracy) 可以达到0.8786, 性能优于其他三个模型. 由图7 可以看出: 文献[10] 所提出的模型需要510条能量迹以后, rank 才能完全降到0; 文献[16] 所提出的SincNet 网络攻击成功时需要170 条能量迹; 文献[20] 所提出的模型需要191 条能量迹才能攻击成功. 相比而言, 本文所提出的CBAPD 模型在成功攻击时仅需要50 条能量迹.

图6 ASCAD 数据集模型训练精度对比Figure 6 Model training accuracy comparison of ASCAD dataset

图7 ASCAD 数据集攻击结果Figure 7 Attack result of ASCAD dataset

在ASCAD_desync50.h5 数据集上的实验结果如图8、9 和10 所示.

图8 ASCAD_desync50 数据集模型训练损失对比Figure 8 Model training loss comparison of ASCAD_desync50 dataset

图9 ASCAD_desync50 数据集模型训练精度对比Figure 9 Model training accuracy comparison of ASCAD_desync50 dataset

由图10 可以看出: CBAPD 模型在最大异步量为50 个样本点的ASCAD 数据集中仅需要160 条能量迹就可以成功将正确密钥排到第一位; 文献[10] 所提出的模型在攻击时使用了5000 条能量迹, rank 仍没有完全降到0; 基于SincNet 的模型虽然在使用了270 条能量迹时将正确密钥排到了第一位, 但是由图10 可以看出, 之后还有小幅度的波动, 一直到1670 条能量迹之后, rank 值才完全降到了0; 文献[20] 所提出的模型需要244 条能量迹才能成功恢复密钥.

图10 ASCAD_desync50 数据集攻击结果Figure 10 Attack result of ASCAD_desync50 dataset

虽然文献[10] 的模型精度(accuracy) 超过了CBAPD 模型并且损失(loss) 低于CBAPD 模型, 但其rank 指标并不佳, 所以可以推断出其模型存在过拟合现象. 而基于SincNet 的模型在训练了300 个epoch 后其模型的精度和损失仍然没有达到CBAPD 模型的性能.

在ASCAD_desync100. h5 数据集上的实验结果如图11、12 和13 所示.

图11 ASCAD_desync100 数据集模型训练损失对比Figure 11 Model training loss comparison of ASCAD_desync100 dataset

由图13 可以看出, 在最大异步量为100 个样本点的ASCAD 数据集上, CBAPD 模型仅需要1850条能量迹就可以找到正确密钥; 基于SinNet 的网络在使用4320 条能量迹之后rank 值才能完全为0; 文献[10] 中的模型在使用5000 条能量迹后仍然有小幅度的抖动, rank 值并没有完全为0; 文献[20] 所提出的模型在使用了270 条能量迹后就成功恢复了密钥.

图13 ASCAD_desync100 数据集攻击结果Figure 13 Attack result of ASCAD_desync100 dataset

同样的, 虽然文献[10] 的模型精度很高, 损失很低, 但是由其rank 图可以推断出, 其模型存在过拟合现象. 由此可见, 在全连接层加入舍弃层来舍弃一定比例的神经元对整个模型的性能有非常大的提高作用,尤其在针对有异步对抗措施的情况下, 舍弃层的作用更加明显.

图12 ASCAD_desync100 数据集模型训练精度对比Figure 12 Model training accuracy comparison of ASCAD_desync100 dataset

4.2.2 DPA-contest v4 数据集攻击性能对比

在DPA-contest v4 数据集上的实验结果如图14、15和16所示.

图14 DPA-contest v4 数据集模型训练损失对比Figure 14 Model training loss comparison of DPA-contest v4 dataset

在对模型进行训练时, 均使用了数据集中提供的用于训练的所有能量迹共4500 条. 由图16 可以看出,CBAPD 模型和文献[20] 所提出的模型在DPA-contest v4 数据集上只需要3 条能量迹即可恢复出密钥,而文献[10]所提出的模型和基于SincNet 的模型都未能将rank 值降到0, rank 曲线没有收敛. 并且由图14 和图15 可以看出, CBAPD 模型性能非常好. 相比于文献[20] 中专门针对DPA-contest v4 数据集来构建模型, 本文所提出的CBAPD 模型更具有通用性.

图15 DPA-contest v4 数据集模型训练精度对比Figure 15 Model training accuracy comparison of DPA-contest v4 dataset

图16 DPA-contest v4 数据集攻击结果Figure 16 Attack result of DPA-contest v4 dataset

5 结论

本文在基于深度学习的侧信道攻击方法中将一种新的卷积神经网络结构用于侧信道分析, 并在ASCAD 公开数据集和DPA-contest v4 公开数据集上进行实验. 实验结果表明, 本文所提出的CBAPD 卷积神经网络能够更加有效地学习能量迹的特征, 在针对带有异步对抗措施的数据集时, CBAPD 模型可以更好地消除异步所带来的影响, 从而大大降低了进行侧信道分析时所需能量迹的数量.

在未来的研究工作中, 我们将探索如何把深度学习技术与传统的侧信道攻击技术相结合, 例如将侧信道碰撞攻击与深度学习技术相结合等.

猜你喜欢

密钥信道卷积
基于全卷积神经网络的猪背膘厚快速准确测定
基于信道分类分析的无线通信改进均衡方法
基于自适应学习的5G通信系统信道估计方法
幻中邂逅之金色密钥
幻中邂逅之金色密钥
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
Android密钥库简析
一种基于向量回归的无人机通信信道选择方法