侧信道多层感知器攻击中基于贝叶斯优化的超参数寻优
2021-05-14杜之波
杨 欢 吴 震* 王 燚 杜之波 王 敏 习 伟 颜 伟
1(成都信息工程大学网络空间安全学院 四川 成都 610225) 2(南方电网科学研究院有限公司 广东 广州 510080) 3(振芯科技有限公司 四川 成都 640041)
0 引 言
在密码学中,侧信道攻击常用于提取(寻找)加密设备的密钥。在密码算法实际运行时,硬件电路会泄漏出相关的电磁辐射、功耗等侧信道信息。侧信道攻击就是指利用这些泄露出来的侧信道信息,以及密码学、统计学原理相关知识,来分析和破译密钥信息[1-4]。通常侧信道攻击分为有学习攻击和无学习攻击两类,由于有学习攻击与机器学习技术原理类似,也包括训练与测试两个阶段,所以有学习攻击又被称为基于机器学习的攻击。有学习攻击是指利用一台可以被攻击人员所控制的、与攻击目标设备相似或相同的设备(称为实验设备[5]),来建立泄露信息的能耗模型(称为模板),这样就能对这一类型设备进行攻击。正是由于有学习攻击与机器学习原理类似,使得采用机器学习方法实现有学习攻击成为可能[6]。Backes等[5]使用机器学习技术对打印机成功进行了声学侧通道攻击;Maghrebi等[4]分别使用随机森林、支持向量机、深度网络等机器算法在DPAContest比赛数据中进行了侧信道模板分析,实验结果表明基于深度网络的模板攻击在匹配成功率方面要优于其他方法。
有学习攻击中的模板攻击[5]是目前众多攻击方法中研究得最深入也是最成功的一种,常用多元高斯分布表示模板。为提高模板攻击效率,目前的部分研究着眼于改进多元高斯分布中的协方差矩阵。这些研究分别尝试了单位协方差、共享协方差、池化协方差等方法,这些改进能在一定程度上降低计算成本、提高攻击效果[6-10]。其他提高模板攻击效率方法包括:利用相位相关性消除构架模板中的数据干扰,以构建高质量的模板;采用主成分分析(Principal Component Analysis,PCA)方法对能耗数据进行降维处理,该方法能有效降低协方差矩阵的计算复杂度并在一定程度上提高攻击效率[11-12]。
模板攻击另一种研究思路是采用机器学习中分类算法代替传统多元高斯分布模板,例如,利用多类支持向量机作为模板实施模板攻击[13-14],采用神经网络作为模板进行模板攻击等[15-16]。在传统模板攻击中,首先使用多元高斯分布对旁路信号轨迹特征进行刻画;然后用极大似然方法对功率跟踪进行分类。
众多研究表明,基于神经网络的模板攻击是机器学习算法与侧信道攻击结合中的最优方案,而对于神经网络而言超参数是至关重要的因素,它往往决定了该神经网络学习性能与效率。对于某一个神经网络至少必须指定控制学习速度或底层模型容量等参数,比如学习率、神经网络层数等。因为不同模型在不同场景下需要不同的超参数,而且每个超参数的意义又各不相同,这就需要技术人员拥有丰富的调参经验以及投入大量工作时间。基于此,如果没有一个成熟的自动化的调参方案,算法开发人员也很难在有限时间和计算量情况下解决这一问题。在不同实际场景中对于众多训练数据集,很难事先知道什么方案是合适的,尽管是拥有丰富机器学习算法开发经验的人员也只有通过不断地尝试和更新迭代来找到合适的解决办法。因此,实现自动调参功能是十分必要的。时至今日,非参数学习研究正在帮助深度学习更加自动的优化模型中所需的超参数选择[17],比如常用的几种寻优方法:网格寻优、随机寻优[18]以及贝叶斯寻优[19]。其中贝叶斯寻优已经被证明在许多具有挑战性的优化基准函数上优于其他全局优化算法。对于连续函数,贝叶斯优化的工作原理通常是假设未知函数是从高斯过程中采样的,并在进行观察时保持该函数的后验分布[20]。目前尚未有将贝叶斯优化方法运用于侧信道攻击中的研究。为了使得基于神经网络的模板攻击效果更佳,本文尝试将基于贝叶斯的超参数自动优化方法应用在侧信道攻击神经网络结构寻优中,帮助我们更好地借助神经网络方法实现侧信道攻击。
基于前人的研究成果,本文借鉴了基于神经网络侧信道攻击的模型,实现了将多层感知器用于模板攻击,而且首次将贝叶斯优化方法运用在基于多层感知器的模板攻击中,为多层感知器寻找合适的超参数使其用于模板攻击时攻击效果最佳;其次,在原有的贝叶斯更新先验分布理论基础上发展出对离散值超参数的特殊处理方法,将超参数设置的经验结合到寻优算法中,更进一步地提高寻优效率。为与贝叶斯寻优算法作对比,本文还实现了人工寻优算法,分析了两种算法的优劣。
1 有学习攻击与多层感知器
1.1 侧信道攻击
1996年,Kocher[20]提出了侧信道攻击概念,它是利用设备功耗等侧信道泄露的相关信息来提取密钥。侧信道攻击可以分为以下两类:
(1) 有学习攻击,比如模板攻击、随机攻击[21]或被称为基于机器学习的攻击。
(2) 无学习攻击,比如差分能量分析攻击[22]、相关性能量分析[23]或被称为相互信息分析。
想要实现有学习侧信道攻击,首先需要拥有两台几乎相同的设备。其中一台接近于目标设备,而且技术人员应该对其具有一定的控制权,然后在上面运行一个具有固定密钥值k∈K的加密操作,K是所有可能的密钥值的集合。对于一个有学习能力的设备,应该对其输入和密钥具有充分的认识和控制权。在这种情况下,有学习的攻击分为以下两步执行:
(1) 分析阶段,同时使用从有学习能力的设备收集到的侧信道能迹与目标设备执行加密操作的能量泄露来分析所有可能的密钥值k∈K。
(2) 攻击阶段,对从目标设备泄露收集到的能迹进行分析与分类,以恢复密钥值k。
在分析阶段,为每个可能的键值k∈K收集一组侧信道能迹。通常情况下,应该采用分而治之的策略。例如,K=0,1,…,255意味着收集256组能迹来执行分析。在攻击阶段,选择从目标设备收集最合适的侧信道能迹模型来揭示正确键值k。有学习攻击被认为是最强大的侧信道攻击形式,因为攻击者能够在攻击前描述设备的侧信道泄露信息[24]。
1.2 模板攻击
(1)
1.3 多层感知器
由于模板实际上就是一个分类器,自然可以将其应用于分类神经网络实现攻击。同时神经网络是研究深度学习的基础,其中的深度神经网络技术已被应用于多个领域,如图像分类、语音识别等[24]。而多层感知器可以称得上是神经网络中一个里程碑的发展,它克服了单层感知器不能解决非线性可分的问题,为整个神经网络后续发展提供了可能。
图1 多层感知器
将f记为激活函数,网络中任意一层输出可以表示为:
(2)
可以发现,隐含层每个神经元均是由输入特征X的线性组合构成。然而仅仅是线性组合,那么无论这个神经网络有多少层,结果都将与特征线性相关。于是在每个神经元计算结果之后,添加一个激活函数(Activation Function),从而改变线性规则。常用的激活函数有修正线性函数(ReLU)、双曲正切函数(tanh)、Sigmod函数等。
2 贝叶斯优化原理
2.1 超参数优化
超参数是指模型定义和训练中事先需要设置的参数。如神经网络层数、类型、层宽、激活函数、学习率、学习的批大小、L2正则化项大小等。又例如机器学习算法中的支持向量机(Support Vector Machine,SVM)就有gamma、kernel、ceof等超参数需要调整。对于机器学习而言几乎所有算法都需要设置超参数。这些超参数直接决定了模型性能训练是否能够成功或达到最优。然而针对不同模型找到最合适该模型的超参数组合(即超参数优化)确实是一项复杂的工作,如今越来越多调参工作使用了自动优化方法,这些方法旨在使用带有策略的启发式搜索在更短时间内找到最优超参数,除了少量初始设置之外,并不需要额外人工干预[16-17]。目前为止,已有多种较为成熟的自动调参算法,其中贝叶斯优化算法已被证明是目前最佳自动调参算法[15],本文正是通过运用这一算法对自动寻优进行研究。
2.2 贝叶斯优化算法
网格搜索和随机搜索在计算资源有限情况下推荐的结果不一定比建模工程师个人经验表现要好,而贝叶斯优化就是“很可能”比普通开发者或建模工程师调参能力更好的算法。
贝叶斯优化是贝叶斯回归的一种应用。贝叶斯回归是一种无参数函数回归方法。它利用高斯随机过程,根据观察到的函数输入和输出,使用贝叶斯定义,将假设的先验概率分布转换为后验分布。随着观察数据增加,函数的后验概率越来越准确。贝叶斯优化是根据拟合出的后验概率分布和一定策略,发现下一个寻优的位置。该策略称为acquisition[19]。我们的目标是选择下一个观察位置,以便尽快发现该数据范围内的最大函数值。其策略需要考虑两个可能:一是开发(exploit),即在当前观察的最大值附近寻找,这是一种保守策略;二是探索(explore),即在方差最大的位置寻找,这是一种激进策略,方差最大地方可能带来意外的惊喜,而方差小的地方已经没有探索的价值了。根据这两种策略可以得到多种选择函数。典型的有PI(Probability of Improvement)、EI(Expected Improvement)、GP-UCB(GP Upper Confidence Bound)等。
3 多层感知器的模板与贝叶斯优化
3.1 基于多层感知器的模板攻击
模板攻击是有学习攻击中研究得最深入也是有效率的一种攻击方式,而其中模板最基本形式是多元高斯分布。为进一步提高模板攻击效率,研究人员提出了多种改进方法。一种研究思路是采用机器学习中的部分算法代替传统多元高斯分布模板。例如,采用支持向量机作为模板进行模板攻击,采用神经网络作为模板进行攻击,将随机森林算法运用到模板攻击中等。本文就采用了结合多层感知器模板攻击方法。若攻击时使用m条攻击能迹,则密钥为:
(3)
式中:K*代表正确密钥;ej代表能量曲线;comb(x,k)代表无掩码中间组合值;MLP(ej|comb(xj,k))表示训练过程中学习到的分类器概率模型。在该攻击方式中,多层感知器训练结果起着关键作用。若通过学习得到模型本身分类效果就不好,那么攻击效果肯定也会不理想。
为成功实现基于多层感知器的模板攻击,本次实验使用的是无抖动防御的公开能迹集ACAD。该能迹集是基于AES加掩码算法实现的一种电磁信号泄露数据,包含60 000条能迹数据,其中:50 000条作为训练数据,10 000条作为攻击数据[24]。采用模型训练的验证精度作为模型好坏的衡量指标。其中验证精度是机器学习中常用指标,反映了模型对数据的分类能力。模型训练验证精度定义为:
(4)
式中:Dtest表示验证集能迹;ei表示能迹;K*表示正确密钥;Pr(K|ei)表示猜测密钥。简而言之,验证精度就是当猜测密钥与正确密钥相等时的能迹数与验证集能迹数之比。
有了数据集以及衡量指标作为前提,基于多层感知器的模板攻击具体实现步骤分为训练与攻击两个阶段,其中训练阶段主要步骤如下。
(1) 采用PCA对加掩AES算法能迹数据集进行降维处理。
(2) 针对降维后的能迹数据,建立相应多层感知器(MLP)模板。
(3) 利用数据集中的50 000条能迹数据对预测网络进行训练。
攻击阶段的主要步骤如下:
(1) 利用训练的多层感知器模板,对验证集能迹Dtest进行分类。
(2) 根据分类结果计算正确密钥对应的能迹数与验证集能迹数之比也就是最大验证精度。
3.2 基于贝叶斯寻优先验分布的更新
贝叶斯优化与其他优化方法的不同之处在于,它首先为f(x)构造一个概率模型(即先验分布),然后利用这个模型来决定下一步x取什么数值来计算函数值(更新先验分布)。其基本思想是利用以前对f(x)评估所获得的所有信息,而不是简单地依赖于局部梯度和海森近似。
在使用贝叶斯优化时,首先通过样本点对高斯过程进行估计与更新,然后通过选择函数来确定新的采样点。自然对贝叶斯寻优的研究重点就放在了高斯过程与选择函数上。
3.2.1高斯过程
贝叶斯优化过程中使用高斯过程作为先验函数,它是一种强大、方便的先验分布函数,能有效拟合现实中的分布[20]。一个完整的高斯过程由且仅由均值函数m(x)与协方差函数k(x,x′)确定,其中均值函数为一个向量,而协方差函数为矩阵。如此一来高斯过程gp就可以表示为:
f~gp(m,k)
(5)
现假设有一组样本点D={(x1:t,y1:t)},其协方差矩阵为:
(6)
一个新样本xt+1加入会更新上述协方差矩阵K,假设有k=[k(xt+1,x1),k(xt+1,x2),…,k(xt+1,xt)]那么更新后的协方差可表示为:
(7)
有了更新后协方差矩阵就可以通过前t个样本估计出ft+1的后验概率分布:
P(ft+1|D1:t,xt+1)}~N(u,σ2)
(8)
u=kTK-1f1:t
(9)
σ2=k(xt+1,xt+1)-kTK-1k
(10)
上述公式的详细推导过程以及核函数与均值函数的选择详见文献[18]。
可以根据新加入的样本点对先验中高斯过程进行更新,使其能更好拟合现实情况。
3.2.2选择函数
有了先验概率分布,接下来就需要通过选择函数确定用于更新先验的采样点。它是决定贝叶斯优化能否成功的另一重要因素。通过该采样点获得后验分布,使该分布更贴切模拟现实情况。虽然目前已有多种选择函数可供使用但它们主要思想都是平衡上面提到的两种策略即explore与exploit。本文使用EI准则作为选择函数,经验证EI准则比PI表现得更好[19],而且与GP_UCB不同的是它自己不再需要确定额外参数。EI准则a(·)如下:
a(x|D)=Ey~f(x|D)[max(0,y-fbest)]=
(11)
4 实 验
为验证提出的基于多层感知器的攻击方法,本文对AES加掩数据集进行了攻击实验;同时为了验证贝叶斯寻优算法,在攻击模型基础上使用了两种不同寻优方法:人工寻优与贝叶斯寻优,并对这两种寻优方式进行了比较。为了进一步提高贝叶斯寻优算法效率,根据贝叶斯寻优理论知识分析了离散值超参数与连续值超参数的处理方式,并进行了改进。
4.1 实验环境
本文实验使用了ASCAD公开数据集作为实验数据,采用最大精度衡量优化算法好坏的指标。本文针对MLP神经网络所需超参数的搜索空间如表1所示。
表1 多层感知器的超参数及其范围
4.2 实验实施
4.2.1离散值与连续值
(1) 离散超参数寻优。根据3.2节中描述的高斯过程中计算后验概率步骤,将离散型超参数看作枚举型(enum)处理。如需要推荐超参数中的Layer_size与L2,它们的可能取值分别为[16,32,48,64]与[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0],而后在处理这些数据时将每一个可能取值都当作单独一维,根据sobol序列函数产生的随机矩阵中最大的某一位置的原矩阵(存储的是需要优化超参数所有可能取值)值为本次推荐超参数。这样推荐参数的随机性较大,每个超参数成为推荐值概率都一样;但由于新采样点是由EI准则所确定,若下一个采样点不存在该离散超参数取值范围内,就只能取最靠近计算出来采样点存在于取值范围内的值作为新的采样点,这样就不能使更新后的后验分布更好模拟真实情况。
(2) 连续超参数寻优。连续超参数寻优与离散超参数处理类似,唯一不同是将连续超参数看作整型(int)处理。在配置文件中存的是它的取值范围,而不是具体值;在后面处理该类型数据时将每一种连续超参数视为一维,同样根据sobol序列函数产生的随机矩阵中最大的某一位置对应原矩阵中的值为本次推荐超参数。连续值超参数寻优较离散值超参数寻优的优点为:根据EI准则得到下一个采样点可以精确用于更新先验分布,能最大程度模拟真实情况中的分布。
由于离散型超参数不能取到两个数之间的值,本文借鉴了对连续超参数的处理方式对离散超参数进行优化:将一个离散超参数当且仅当作一维,通过一系列的处理,将应推荐超参数对应位置的值置为最大,从而得到推荐值。根据以上所述的两种处理方式,本文做了一个针对离散超参数寻优不同处理方式的对比实验,实验结果如图2所示。
图2 离散超参数寻优不同处理方式对结果的影响
由对比实验可知对离散值采取类似连续值处理方式要优于离散值原本处理方式。为进一步提高贝叶斯寻优效率,在后面实验过程中对离散值均采取了类似连续值的处理方式。
4.2.2贝叶斯寻优与人工寻优
对比了采用贝叶斯优化算法进行自动寻优与人工寻优得到超参数所构建的多层感知器(MLP)网络结构运用于模板攻击中的两种结果。
(1) 贝叶斯自动寻优算法。针对上面需要寻优的5种超参数共进行了5轮贝叶斯自动寻优,将每轮寻优结果用于构建MLP,将该MLP用于模板攻击,最终得到了每一轮攻击结果的最大精度,如图3所示。
图3 贝叶斯寻优算法在不同推荐次数下实验对比
在5轮推荐中,第4轮18次推荐次数使得攻击结果最大精度达到0.025 8。其次,可以看出推荐次数与最大精度并不严格形成正比关系,但若是推荐次数过小,想要得到较好的结果则不太可能。
由图3和表2可知第四轮推荐结果最佳。当隐含层、神经元大小、PCA、L2分别取1、64、94、0.0时,激活函数为Sigmoid构成的MLP用于模板攻击结果最佳。
(2) 人工寻优。在该部分中,实验对MLP需要的超参数进行了人工调整,得到了一个相对较好的结果。在此过程中针对5个超参数共进行了40次实验。实验采用了排列组合方式,即针对每个超参数可能取值都进行了测试。出于时间与人工成本考虑,实验过程中首先固定其他4个超参数取值再对剩下超参数所有可能取值进行测试,找到该超参数使得实验结果表现最佳的值。在接下来的实验中固定该超参数值,依次改变其他超参数,最终得到一个在所有实验中使得模板攻击在最大准确度与最小损失衡量下均表现为最佳的组合。对于上面的实验描述,得到实验结果如图4所示。
图4 人工调参实验结果
在40次实验中表现最好为第37次实验,它最大精准度与最小损失分别为0.016 9与5.369 38;而表现最差为第2次实验,最大精度仅有0.004 5,如表3所示。
表3 人工调参中实验结果表现最好与最差超参数
4.3 实验结果
经过上面两种不同寻优算法实验,得到了两种算法各自对应的最佳结果,现就两种算法得到结果进行对比并分析它们各自优缺点。将上面进行的5轮贝叶斯超参数优化实验中使得攻击结果表现得最好与最差的第1轮和第4轮分别从最大精度与最小损失以及所耗费的时间三个方面与使用人工寻优算法的攻击结果进行了对比,结果如图5所示。具体分析两种算法每次训练结果对实验的影响,结果如图6所示。
图5 贝叶斯寻优算法与人工寻优的结果对比
图6 贝叶斯寻优与人工寻优每次寻优结果对比
可以看到,使用贝叶斯寻优算法时若推荐(训练)次数过小会使得实验结果表现远不如训练次数多的人工寻优算法。可当贝叶斯寻优算法训练次数达到一定值时,不管是最大精度还是最小损失均优于人工寻优,且此时贝叶斯寻优算法推荐次数还不到人工寻优的一半,与之对应时间是使用人工寻优算法的二分之一。
4.4 实验分析
贝叶斯自动寻优算法与人工寻优算法各自的优缺点如下:贝叶斯自动寻优算法不用人为干预,只要确定需要训练的超参数就可以得到该轮训练最佳结果;达到相同实验结果贝叶斯自动调参算法效率更高。但贝叶斯算法存在偶然性,若是本轮训练次数少那么它的结果大概率会表现得很糟糕。由图6可以看到贝叶斯寻优明显存在冷启动问题,而人工寻优算法寻找组合更为全面,但是效率低下,需要大量重复劳动力。
5 结 语
本文基于现有的侧信道攻击神经网络调参技术,提出贝叶斯自动寻优算法,该方法利用高斯过程建立先验分布模型,通过选择函数确定采样点得到后验分布,继而根据后验更新先验分布。实验结果表明,贝叶斯寻优算法相对人工寻优具有高效性以及独立性,它能提供比其他寻优算法更好的学习效率,有利于减少训练次数,攻击质量取得了明显提高。在今后研究中,我们将致力于探索如何消除贝叶斯自动寻优算法冷启动的问题,以便于进一步提高贝叶斯寻优算法效率。