自动发现泄露模型的有学习的侧信道攻击方法及加密设备转让专利

申请号 : CN202110284283.7

文献号 : CN113158179B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杜之波

申请人 : 成都信息工程大学

摘要 :

本发明属于密码算法分析检测技术领域,公开了一种自动发现泄露模型的有学习的侧信道攻击方法及加密设备,通过训练攻击模型的神经网络,寻找泄露密钥信息的中间组合值的组合形式,以及相应的能耗组合形式。训练的目标是使中间组合值与能耗组合值的相关性最大化;攻击阶段使用所述攻击模型识别猜测子密钥的正确性;根据攻击得到的子密钥,恢复出加密设备的主密钥。本发明在攻击阶段,使用未知密钥的攻击数据集,通过将猜测子密钥输入到攻击模型中,计算相应的猜测中间组合值与能耗组合值的向量距离。选择距离最小的猜测子密钥为正确子密钥,采用分治原则逐个获得子密钥后,反算主密钥,实现对加密设备主密钥的攻击。

权利要求 :

1.一种自动发现泄露模型的有学习的侧信道攻击方法,其特征在于,所述自动发现泄露模型的有学习的侧信道攻击方法包括:学习阶段通过训练攻击模型的神经网络,寻找泄露密钥信息的中间组合值的组合形式,以及泄露该信息的能耗组合形式;所述攻击模型包括中间组合值拟合网络和能耗组合值拟合网络;

攻击阶段使用所述攻击模型识别猜测子密钥的正确性;

根据攻击得到的子密钥,恢复出加密设备的主密钥;

学习阶段使用一组已知子密钥的训练数据集,包括使用该子密钥进行加密操作的输入状态、子密钥本身和加密操作对应的能耗样本集;

对训练数据集中的任意一组训练数据,中间组合值拟合网络GVNet拟合出中间组合值V,V=GVNet(T,N);能耗组合值拟合网络GENet拟合出能耗组合值E,E=GVNet(L);

网络模型训练的目标是使V和E的相关性最高;V和E的相关性是信息泄露的最终表现;

采用pearson相关系数ρ表达V和E的相关性,训练的损失函数为:其中,第i位的相关系数为:

式中,B是V和E的位数,也就是两个网络的输出层的神经元数量;当B>1时,中间组合值拟合网络和能耗组合值拟合网络拟合出多种泄露;

攻击阶段使用一组未知子密钥的攻击数据集,包括使用未知子密钥进行加密操作的输入状态和加密操作对应的能耗样本集;中间组合值拟合网络GVNet输入猜测的子密钥K和加密操作的输入状态,输出拟合的中间组合值V(K);

能耗组合值拟合网络GENet输入加密操作的能耗样本集,输出与猜测密钥无关的能耗组合值E;根据V(K)和E的匹配程度判断猜测密钥K的正确性;与E最匹配的V(K)所采用的猜测K为正确的子密钥;

输出的V(K)和E的相关系数;具有最大相关系数的K为正确的密钥:*

K=argmaxKρ(V(K),E)。

2.如权利要求1所述的自动发现泄露模型的有学习的侧信道攻击方法,其特征在于,中间组合值的组合形式为中间组合值拟合网络GVNet的连接权重;能耗组合形式为能耗组合值拟合网络GENet的连接权重。

3.如权利要求1所述的自动发现泄露模型的有学习的侧信道攻击方法,其特征在于,所述中间组合值拟合网络的输入包括:采用子密钥进行加密操作时的输入状态的[‑1,1]编码;加密过程产生的所有中间值的[‑1,1]编码;加密中使用的子密钥的[‑1,1]编码;

所述中间组合值拟合网络输出的中间组合值是输入状态与子密钥经过任意组合运算后得到的多种组合值。

4.如权利要求1所述的自动发现泄露模型的有学习的侧信道攻击方法,其特征在于,所述能耗组合值拟合网络包括多层感知器拟合神经网络、基于卷积神经网络的拟合神经网络;

多层感知器拟合神经网络用于对齐能迹的侧信道攻击,基于卷积神经网络用于对抗具有抖动防护的、非对齐能迹的侧信道攻击;

所述能耗组合值拟合网络输入能迹上包括使用子密钥进行加密操作所对应的样本范围的能耗,或该范围能耗的PCA主成分向量;

所述能耗组合值拟合网络的输出值为能耗的任意方式的组合值。

5.如权利要求1所述的自动发现泄露模型的有学习的侧信道攻击方法,其特征在于,学习阶段训练攻击模型的神经网络中,将当前损失采用误差梯度向后传播的方法调节中间组合值拟合网络和能耗组合值拟合网络的连接权重,优化攻击模型。

6.一种计算机加密设备,其特征在于,所述计算机加密设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:学习阶段通过训练攻击模型的神经网络,寻找泄露密钥信息的中间组合值的组合形式,以及泄露该信息的能耗组合形式;所述攻击模型包括中间组合值拟合网络和能耗组合值拟合网络;

攻击阶段使用所述攻击模型识别猜测子密钥的正确性;

根据攻击得到的子密钥,恢复出加密设备的主密钥;

学习阶段使用一组已知子密钥的训练数据集,包括使用该子密钥进行加密操作的输入状态、子密钥本身和加密操作对应的能耗样本集;

对训练数据集中的任意一组训练数据,中间组合值拟合网络GVNet拟合出中间组合值V,V=GVNet(T,N);能耗组合值拟合网络GENet拟合出能耗组合值E,E=GVNet(L);

网络模型训练的目标是使V和E的相关性最高;V和E的相关性是信息泄露的最终表现;

采用pearson相关系数ρ表达V和E的相关性,训练的损失函数为:其中,第i位的相关系数为:

式中,B是V和E的位数,也就是两个网络的输出层的神经元数量;当B>1时,中间组合值拟合网络和能耗组合值拟合网络拟合出多种泄露;

攻击阶段使用一组未知子密钥的攻击数据集,包括使用未知子密钥进行加密操作的输入状态和加密操作对应的能耗样本集;中间组合值拟合网络GVNet输入猜测的子密钥K和加密操作的输入状态,输出拟合的中间组合值V(K);

能耗组合值拟合网络GENet输入加密操作的能耗样本集,输出与猜测密钥无关的能耗组合值E;根据V(K)和E的匹配程度判断猜测密钥K的正确性;与E最匹配的V(K)所采用的猜测K为正确的子密钥;

输出的V(K)和E的相关系数;具有最大相关系数的K为正确的密钥:*

K=argmaxKρ(V(K),E)。

7.一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行权利要求1~5任意一项所述自动发现泄露模型的有学习的侧信道攻击方法,包括下列步骤:学习阶段通过训练攻击模型的神经网络,寻找泄露密钥信息的中间组合值的组合形式,以及泄露该信息的能耗组合形式;所述攻击模型包括中间组合值拟合网络和能耗组合值拟合网络;

攻击阶段使用所述攻击模型识别猜测子密钥的正确性;

根据攻击得到的子密钥,恢复出加密设备的主密钥。

说明书 :

自动发现泄露模型的有学习的侧信道攻击方法及加密设备

技术领域

[0001] 本发明属于密码算法分析检测技术领域,尤其涉及一种自动发现泄露模型的有学习的侧信道攻击方法及加密设备。

背景技术

[0002] 目前,加密算法是保障数据安全的关键手段。现代加密算法在理论上是不可破解或其破解成本过高,使破解密钥不具有实际意义。然而侧信道攻击对各种加密算法的安全性提出了非常严峻的挑战,以至于各种加密设备的认证都必须通过侧信道攻击的验证。侧信道攻击的理念是:加密计算过程中的某个中间值的计算操作、存取操作所产生的能量消耗与该中间值的数值有相关性,因此可以通过能耗来识别中间值,进而反推产生该中间值的密钥。如果加密过程中存在某些中间值与操作的能耗具有相关性,则称该加密实现具有泄露。
[0003] 所谓中间值是指在加密过程中,根据加密算法对明文和密钥进行各种组合变化生成的值。加密设备一般不会在能耗中直接泄露密钥,而是泄露与密钥相关的一些中间计算结果。例如,各种块加密算法的基本方法是对明文进行多轮的非线性和线性转换。每轮转换中,将上一轮的输出(对第一轮而言就是明文) 分为多个部分x1,…,xn(称为初始状态),分别与轮密钥的相应子密钥进行异或操作 再分别进行非线性转换然后将各SBOX非线性转换的结果作为一个整体进行线性转换(行移位和
列混淆),得到本轮的输出,再进行下一轮的加密操作。加密计算过程的中间值,如和 或它们的异或值,可能会以电流、电压或电磁辐射的方式泄露出来,即泄露的能耗与中间值具有一定的相关性。攻击者通过猜测各轮加密的子密钥,并根据加密算法计算与猜测子密钥相应的猜测中间值。利用能耗与中间值之间的相关性,攻击者可以判断猜测子密钥的正确性,从而实现攻击。由于这种攻击方法采用设备在加密过程中泄露的能量实施攻击,因此被也称为“能量攻击”或“能量分析”。侧信道攻击的具体实现中采用分治原则,逐个攻破加密中使用的子密钥,进而恢复出加密设备的主密钥。
[0004] 现有的侧信道攻击方法的一个困难是攻击者事先并不知道泄露密钥信息的中间值是什么,只能进行随机猜测。对于具有直接泄露的中间值(即能耗的单个样本与中间值具有相关性),攻击者可以采用多种指标事先验证中间值是否存在泄露。这些指标包括组间差(SOD)、组间均方差(SOSD)、组间学生统计(SOST)、信噪比(SNR)、皮尔斯相关系数(Person Coeffeicent)、互信息(MI)等。但由于可选的中间值很多,例如发生泄露的是某个中间计算结果的某些位的某种组合。此时,采用这些指标进行验证的效率也会非常低下。而对于具有间接泄露的中间值(即能耗的多个样本的某种组合值与中间值具有相关性),则无法采用上述方式识别是否具有泄露。因为能耗的组合方式是无穷的。此时,攻击者只能在攻击时任意选择中间值进行攻击。如果攻击不成功,说明选择的中间值没有泄露,只能另选一种中间值再进行尝试。
[0005] 现有的侧信道攻击方法的另一个困难是可能并不存在单个中间值的泄露。攻击者还需要猜测具有泄露的中间组合值(即多个中间值的某种组合)。这是因为,为了对抗能量攻击,加密设备一般采用“加掩防护”的方式来实现加密算法。所谓加掩防护,就是在每次加密时,设备生成一个或多个随机掩码,并使用掩码与加密中间值进行异或处理,从而使中间值呈现出随机状态,不再与能耗有直接的相关性,从而实现对能量攻击的防御。然而从理论上分析,虽然能耗没有对单个中间值的泄露,但能耗的组合值与多个中间值的组合值之间仍然具有一定的、比较微弱的相关性,攻击者仍然可以利用这种相关性实现攻击。但由于攻击者必须尝试各种能耗组合方式和各种中间值的组合方式,其攻击时间复杂度大为提高。现有的侧信道攻击实践中,攻击者一般只能采用非常有限的几种中间值组合形式(如SBOX输入与输出的异或值),尝试与能耗的非常有限的组合形式(如两个样本位置能耗的乘积或差的绝对值)的相关性。在这种现实的情况下,真正有泄露的中间组合值很可能没有考虑到,而且由于能耗上泄露信息的样本位置是不知道的,需要对能迹上各种样本位置进行组合尝试,效率也是极其低下的。以目前的技术方法实现对加掩防护的加密设备的攻击,成功的可能性非常低。
[0006] 侧信道攻击主要可以分为两种形式:无学习的攻击和有学习的攻击。
[0007] 有学习的能量攻击包含两个阶段:学习阶段和攻击阶段。学习阶段使用一个所谓的“训练设备”来收集训练能迹集。训练设备是攻击者可以自由控制的一个加密设备,攻击者可以设置和记录该设备的密钥、采用的掩码等信息。所谓“能迹”就是在加密过程中采集得到的能耗样本的序列。学习阶段首先通过一些统计指标(如,SOD,SSOD,SSOT,SNR,NICV等)来判断哪个中间值在能耗中有泄露以及泄露的能耗样本位置,然后统计方法或机器学习方法来获得对特定中间值的能耗概率分布模型。该分布可以计算任意一条能迹相对于特定中间值的概率。在攻击阶段,攻击者攻击与训练设备同样类型的另一台加密设备的密钥。攻击者无法完全控制被攻击的设备,只能采集其加密过程的能迹(称为攻击能迹)并记录被加密的明文和输出的密文。攻击者首先猜测一个子密钥值,并根据加密算法计算出猜测中间值。然后采用训练阶段得到的能耗模型,计算猜测中间值相对于其能迹的概率,选择具有最高概率的猜测中间值所对应的猜测子密钥为正确子密钥。一般在攻击中需要采用多条攻击能迹,计算它们对应某个猜测子密钥的联合概率。根据联合概率来判断正确的子密钥可以有效地提高判断的准确性。有学习的侧信道攻击的优点是,其成功攻击所需的攻击能迹数比无学习的侧信道攻击少很多,因而攻击的时间效率较高。最理想的情况是,仅使用一条攻击能迹即可攻击出正确的子密钥。
[0008] 当加密设备采用加掩防护时,现有的有学习的侧信道攻击一般分为攻击掩码和攻击密钥两个部分。学习阶段需要分别统计和训练两种能耗模型,即掩码的能耗分布模型和带掩中间值的能耗分布模型。攻击时,首先使用掩码的能耗分布模型提取出攻击能迹所采用的掩码,再使用掩码计算出带掩中间值,然后根据带掩中间值的能耗分布模型获取正确子密钥。但这种方法的缺点是,攻击者必须完全了解加密设备的加掩防护实现方法,并能够获得每次加密时采用的随机掩码,而这一条件往往难以具备。加密算法可以是公开的,但其加掩实现往往是加密设备厂商保密的。另外,由于需要首先攻击掩码,再利用得到的掩码攻击子密钥,掩码攻击的成功率会极大影响子密钥的攻击成功率。更麻烦的是,掩码也不一定有直接的泄露。如果掩码没有泄露,这种攻击方法就无法实施。
[0009] 对具有加掩防护的加密设备的攻击还有一种不太常用的方式,即直接攻击无掩中间值的组合值。所谓无掩中间值就是使用加密算法,根据明文和密钥直接计算出来的中间值,其中不包含任何掩码信息。这种攻击方式成立的原因是:理论上,无论采用多少掩码,多个无掩中间值的某种形式上的组合值与能迹上多个特定位置的能耗的某种组合仍然存在一定的(微弱)的相关性。采用这种方式时,攻击者必须猜测哪些无掩中间值的哪种组合形式与哪些位置的能耗的哪种组合形式有相关性。其中未知的、需要猜测的目标太多,且各种能耗组合形式的组合值计算量非常大,攻击成功的可能性很小,因此并不常用。但这种攻击方式的价值在于,攻击者并不需要了解设备加掩的实现方式。本发明由于可以自动发现任意可能发生泄露的中间组合值和能耗组合形式,因此不需要攻击者进行低效、不完备的猜测,从而使这种攻击方式变得非常实用。
[0010] 通过上述分析,现有技术存在的问题及缺陷为:
[0011] (1)在现有技术中,事实上具有能耗泄露的中间值可能不只一个。在具有加掩防护的实现中,具有能耗泄露的中间组合值也可能不只一种。对于无加掩防护的设备攻击,目前有一些方法综合利用多种中间值的泄露,进行所谓联合攻击,以便提高攻击成功率。但这些方法仍然是利用那些具有明显泄露的中间值,泄露比较微弱的中间值仍然会被丢弃。
[0012] 而且,目前还没有方法可以对具有加掩防护的加密设备实施联合攻击。原因非常明显,找到一种具有泄露的中间组合值以及其相应的能耗组合形式已经非常困难了,更何况联合统计需要找到多种这样的组合值。
[0013] (2)对加掩防护的加密设备,由于密钥信息并不存在一阶泄露。即与密钥相关的信息,并不直接发生在一个中间值及其相应的能耗上,而是反映在多个中间值的某种组合值与能迹上多个位置能耗的某种组合的相关性上。目前没有任何技术可以自动发现哪些中间值的哪种组合形式,与哪些位置上能耗的哪种组合方式具有相关性。
[0014] 解决以上问题及缺陷的难度为:
[0015] 首先,在侧信道上的信息泄露较为微弱,通过大量的人工测试,一般仅能发现一种较为明显的泄露。通过人工去发现所有或大部分微弱的泄露,不仅要花费大量的人力和时间,同时微弱的泄露特征也可能是噪声。此外,如何有效地综合利用多种程度不同的泄露也是一个难题:强弱不同的泄露对信息识别的判断可靠性存在差异,但这种差异难以量化,因而现在还不存在一种统一可靠的方法来综合利用多种泄露进行侧信道分析。
[0016] 其次,对于加掩防护的加密设备,如果在设计中不存在致命缺陷而造成一阶泄露,则只能利用其高阶泄露。而高阶泄露表现为多个中间值的某种组合值与多个样本位置上的能耗值的某种组合值具有微弱的相关性。加密计算的中间值有很多,且很难确定其组合方式—理论上可以以任何线性或非线性的方式进行组合。确定能耗组合值则根据困难。理论上需要找到组合中间值中使用的多个中间值计算时的样本位置,而这基本是不可能的。同时,即使找到这些位置,能耗组合的方式同样难以确定。目前提出的组合方式有相减和相乘,但有实验证明这些组合方式并非最佳的组合方式。事实上,多个能耗的组合方式也可以是任何的线性或非线性组合。
[0017] 解决以上问题及缺陷的意义为:
[0018] 首先,本发明不仅可以自动发现有泄露的中间组合值,而且可以自动发现多种有泄露的中间组合值及相应的多种能耗组合形式,其攻击实际上实现了联合攻击,极大地提高了攻击效率,从而提高芯片安全检测结构的工作效率。
[0019] 其次,本发明可以自动发现高阶泄露中需要哪些中间值和哪些样本位置的能耗,以及它们各自的组合方式,而不需要人工探索。解决了目前几乎无法实现的侧信道高阶攻击。对安全芯片设计提出了更高的要求。

发明内容

[0020] 针对现有技术存在的问题,本发明提供了一种自动发现泄露模型的有学习的侧信道攻击方法及加密设备。
[0021] 本发明的目的是设计一种特殊的、基于两个神经网络的攻击模型,通过特定的训练方法,在学习阶段使模型可以高效地自动学习得到加密设备具有泄露的一种或多种中间组合值,以及其相应的能耗组合形式。不仅免除了攻击者猜测泄露模型的负担,同时避免了攻击者猜测泄露模型的不完备性,从而达到提高学习阶段的效率、保证攻击模型有效性以及提高攻击成功率的目的。
[0022] 本发明,一种自动发现泄露模型的有学习的侧信道攻击方法,其实现包括:
[0023] 学习阶段通过训练攻击模型的神经网络,自动获得泄露密钥信息的中间组合值的组合形式,以及泄露该信息的能耗组合形式;所述攻击模型包括中间组合值拟合网络和能耗组合值拟合网络;
[0024] 攻击阶段使用所述攻击模型识别猜测子密钥的正确性;
[0025] 根据攻击得到的子密钥,恢复出加密设备的主密钥。
[0026] 进一步,中间组合值的组合形式为中间组合值拟合网络GVNet的连接权重;能耗组合形式为能耗组合值拟合网络GENet的连接权重。
[0027] 进一步,所述中间组合值拟合网络的输入包括:采用子密钥进行加密操作时的输入状态的[‑1,1]编码子密钥的[‑1,1]编码;
[0028] 所述中间组合值拟合网络输出的中间组合值是输入状态与子密钥经过任意组合运算后得到的多种组合值。
[0029] 进一步,所述能耗组合值拟合网络包括多层感知器拟合神经网络、基于卷积神经网络的拟合神经网络;
[0030] 多层感知器拟合神经网络用于对齐能迹的侧信道攻击,基于卷积神经网络用于对抗具有抖动防护的、非对齐能迹的侧信道攻击;
[0031] 所述能耗组合值拟合网络输入能迹上包括使用子密钥进行加密操作所对应的样本范围的能耗;
[0032] 所述能耗组合值拟合网络的输出值为能耗的任意方式的组合值。
[0033] 进一步,学习阶段使用一组已知子密钥的训练数据集,包括使用该子密钥进行加密操作的输入状态、子密钥本身和加密操作对应的能耗样本集;
[0034] 对训练数据集中的任意一组训练数据,中间组合值拟合网络GVNet拟合出中间组合值V,V=GVNet(T,K);能耗组合值拟合网络GENet拟合出能耗组合值 E,E=GVNet(L);
[0035] V和E具有相关性,表明组合能耗E具有对中间组合值V的泄露,损失函数采用pearson相关系数的补来表达:
[0036]
[0037] 式中,B是V和E的位数,也就是两个网络的输出层的神经元数量;当B>1 时,中间组合值拟合网络和能耗组合值拟合网络拟合出多种泄露。
[0038] 进一步,学习阶段训练攻击模型的神经网络中,将当前损失采用误差梯度向后传播的方法调节中间组合值拟合网络和能耗组合值拟合网络的连接权重,优化攻击模型。
[0039] 进一步,攻击阶段使用一组未知子密钥的攻击数据集,包括使用未知子密钥进行加密操作的输入状态和加密操作对应的能耗样本集;中间组合值拟合网络GVNet输入猜测的子密钥K和加密操作的输入状态,输出拟合的猜测子密钥K 的中间组合值V(K);
[0040] 能耗组合值拟合网络GENet输入加密操作的能耗样本集,输出与猜测密钥无关的能耗组合值E;根据V(K)和E的匹配程度判断猜测密钥K的正确性;与E 最匹配的V(K)所采用的猜测K为正确的子密钥。
[0041] 进一步,输出的V(K)和E的相关性。具有最小距离的K为正确的密钥:
[0042] K*=argmaxKρ(V(K),E)
[0043] 本发明的另一目的在于提供一种计算机加密设备,所述计算机加密设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
[0044] 学习阶段通过训练攻击模型的神经网络,寻找泄露密钥信息的中间组合值的组合形式,以及泄露该信息的能耗组合形式;所述攻击模型包括中间组合值拟合网络和能耗组合值拟合网络;
[0045] 攻击阶段使用所述攻击模型识别猜测子密钥的正确性;
[0046] 根据攻击得到的子密钥,恢复出加密设备的主密钥。
[0047] 本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行所述自动发现泄露模型的有学习的侧信道攻击方法,包括下列步骤:
[0048] 学习阶段通过训练攻击模型的神经网络,寻找泄露密钥信息的中间组合值的组合形式,以及泄露该信息的能耗组合形式;所述攻击模型包括中间组合值拟合网络和能耗组合值拟合网络;
[0049] 攻击阶段使用所述攻击模型识别猜测子密钥的正确性;
[0050] 根据攻击得到的子密钥,恢复出加密设备的主密钥。
[0051] 结合上述的所有技术方案,本发明所具备的优点及积极效果为:
[0052] 在密码算法分析检测技术领域,公开了一种自动发现泄露模型的有学习的侧信道攻击方法及系统。其优点是:
[0053] 首次,使侧信道分析中的高阶攻击真正可以实施。现有针对高阶泄露的攻击的方案是人工分析特定加密设备实现的代码,从理论推导具有相关性的中间组合值中所需的中间值和组合方式,以及能耗组合值的组合方式。这种方式不仅对攻击者的权限要求过高,而且对攻击者的编程能力、理论分析能力有极高的要求。同时,即使能够发现具有相关性的中间组合值和能耗组合值,在真正实施攻击时,还需要在代码中插入触发信号,以便确定泄露中间值的能耗在能迹上的样本位置。或者采用遍历的方式,从能迹上任意选择两个或多个样本位置进行组合,尝试与中间组合值的相关性。而能迹通常都包含上万个样本,这种遍历方式从计算量上看是不实际的。如果无法获得加密设备实现的代码,就只能随意尝试中间值的组合方式,是否可以成功具有很大的偶然性,且成功率极低。本发明使用中间值拟合神经网络和能耗拟合神经网络,以两个网络输出的中间组合值和能耗组合值相关系数最大化为目标,训练神经网络,使神经网络自动发现和提取中间值的组合方式和能耗的组合方式,从而避免了人工推理或猜测,不仅提高了分析效率,也提高了分析的可靠性。
[0054] 与现有技术相比,本发明的优点进一步包括:
[0055] 本发明的模型在训练中可以同时发现加密设备的多种泄露模型,并加以综合利用,达到极高的攻击成功率。现有的侧信道分析中,攻击者一般只能发现和利用一种泄露,因此需要的攻击能迹较多,攻击成功率较低。
[0056] 我们对掌握的所有侧信道数据集,包括侧信道业界的公开数据集,如 ASCAD,DPA Contest V4,DPA Contest V2等,以及自己收集的侧信道数据集和一些加密设备制造商提供的数据集,采用本发明方法,单条攻击能迹的攻击成功率均达到100%。与现有技术比较,采用现有的各种攻击方式,绝大部分数据集需要从几条到几百条的攻击能迹才能攻击成功。

附图说明

[0057] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
[0058] 图1是本发明的攻击模型的基本结构图。
[0059] 图2是本发明实施例提供模板中基于多层感知器实现的中间组合值拟合神经网络GVNet的示意图。
[0060] 图3是本发明实施例提供模板中采用的卷积神经网络的能耗组合值拟合网络GENet的示意图。
[0061] 图4是本发明实施例中一个SBOX加密过程的侧信道能耗对中间值SBOX‑OUT 的泄露情况,用信噪比表示。横轴表示样本位置,纵轴表示信噪比。图中所有样本位置上都没有明显的信噪比尖峰,说明能耗中没有对SBOX‑OUT的直接泄露。
[0062] 图5是本发明实施例中,几种传统攻击方法与本发明方法的攻击效果对比图。其中横轴为攻击使用的攻击能迹数量,纵轴是攻击结果—猜测熵。猜测熵表示正确子密钥在模型输出的猜测子密钥队列中的平均排名。其数值越小,表示排名越靠前,相应攻击的成功率越高。

具体实施方式

[0063] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0064] 针对现有技术存在的问题,本发明提供了一种自动发现泄露模型的有学习的侧信道攻击方法及加密设备,下面结合附图对本发明作详细的描述。
[0065] 本发明提供一种自动发现泄露模型的有学习的侧信道攻击方法,包括:
[0066] 学习阶段通过训练攻击模型的神经网络,自动获得泄露密钥信息的中间组合值的组合形式,以及泄露该信息的能耗组合形式;所述攻击模型包括中间组合值拟合网络和能耗组合值拟合网络;
[0067] 攻击阶段使用所述攻击模型识别猜测子密钥的正确性;
[0068] 根据攻击得到的子密钥,恢复出加密设备的主密钥。
[0069] 其中,本发明的攻击模型是一个具有两个子网络的神经网络(图1)。一个子网称为中间组合值拟合网络(GVNet,Generating Value combination Network)。GVNet是一个多层感知器的拟合神经网络,由一个输入层、任意个全连接的隐层和一个全连接的输出层组成。该网络输入某个子密钥加密操作的初始状态T(如,对块加密算法,攻击第一轮的轮子密钥时,T是明文的一部分)、子密钥K以及全部或选择的多个加密中间值。通过神经网络的非线性转换,拟合出中间组合值向量(V‑‑Value Combination),V=GVNet(T,K)。
[0070] 另一个子网络称为能耗组合值拟合网络(GENet,Generating Energy combination Network)。GENet可以是一个与GVNet类似的多层感知器的拟合神经网络(图2),也可以是采用卷积网络+多层感知器网络的拟合神经网络(图3)。前者用于对齐能迹的能耗组合值的拟合,后者用于有抖动防御的、非对齐的能迹的能耗组合值的拟合。该网络输入能迹向量L,拟合出某种能耗组合值向量 (E‑‑Energy combination),E=GVNet(L)。模型训练的目标是使GVNet拟合的中间组合值V与GENet拟合的能耗组合值E的相关系数最大化,其损失函数为:
[0071]
[0072] 式中,B是V和E的位数,也就是两个网络的输出层的神经元数量。B也可以理解为两个网络拟合出的中间组合值和能耗组合值的种类数量。因为任意一种加密设备可能有多种发生泄漏的中间组合值。当B>1时,双网络可以拟合出多种可能的泄露,从而能够充分利用加密设备的各种泄露,获得更高的攻击成功率。
[0073] 在攻击阶段,GVNet输入待攻击子密钥的加密操作的初始状态和猜测子密钥K,输出猜测中间值V(K);GENet输入攻击能迹的能耗,输出能耗组合值E。神经网络最后输出V(K)和E的相关系数,具有最大相关系数的K即为正确的密钥:
[0074] K*=argmaxkρ(V(k),E)
[0075] 需要指出的是,GVNet输入的初始状态和子密钥需要采用[‑1,1]的方式进行编码。即,将为0的位编码为‑1,为1的位编码为+1。这样做的目的有两个:其一是采用位编码作为输入,可以使神经网络更容易拟合出各种中间组合值。例如,采用位编码作为输入时,可以非常容易地拟合出两个字节的异或值。而如果输入字节值本身,则异或神经网络非常难以训练,而且难以达到令人满意的拟合精度;其二,采用[‑1,1]编码,而非[0,1]编码,是为了使输入的各位的值在训练中都可以被用于基于梯度下降的权重优化。在神经网络的训练中,输入为0的连接的权重将无法得到更新。
[0076] 对于软实现的加密设备,GENet的输入一般不是整条能迹(即整个加密过程中采集的全部能耗),而且能迹的一个区域中样本,经主成分分析降维后的结果。由于采集设备加密时的能耗一般使用极高的采样频率,由于软实现的加密时间较长,通常一条能迹的降采样后的样本数仍然有几十万个,全部输入神经网络将导致非常高的空间和时间复杂度。在能量攻击中的一个非常常见的做法是,通过观察能迹波动的周期性,判断需要攻击的轮密钥的样本范围。攻击时只使用该范围内的能耗样本,从而提高攻击效率。但是一轮范围内的样本数仍然可能达到上万个,所以通常使用主成分分析(PCA—Principle Component Analysis)对该区域的样本进行降维处理。一般降维后,主成分个数都在100 以内。对于硬实现的加密设备,其加密速度非常快,有的设计中,一轮加密仅在一个时钟周期内完成。这样,采样的样本数量不多,可以直接对全能迹采用 PCA降维后输入神经网络。
[0077] 下面结合具体实施例对本发明作进一步描述。
[0078] 实施例
[0079] 具体实施例中,攻击模型的中间组合值拟合网络GVNet定义为输入层宽度为48,用于输入一个明文字节的[‑1,1]编码的8位数据、一个子密钥字节的[‑1,1] 编码的8位数据、加密中间值ROUND‑IN、ADD‑KEY、SBOX‑IN和SBOX‑OUT的各一个字节的[‑1,1]编码的共32位数据;中间层为3个宽度为128的全连接层,神经元激活函数选择tanh;输出层是宽度为8个神经元的全连接层,神经元激活函数为tanh。能耗组合值拟合网络GENet为卷积升级网络。输入层大小为 10000,用于输入SBOX0加密过程产生的所有能耗样本;采用5个卷积块,每个卷积块包含一个1D的步长为2的卷积层和一个1D的步长为2的最大池化层。卷积层激活函数采用Relu。每个卷积块后,输入向量维度减小为输入向量的1/4。同时,通道数增加到输入层的2倍。第一卷积块产生8个通道,最后的卷积块的通道数为256。展平后连接一个宽度为128的全连接层,神经元激活函数为 relu;最后连接到输出层。输出层宽度与GVNet相同,也是8个神经元,神经元激活函数为tanh。神经网络的训练损失函数为:
[0080]
[0081] 具体实施例中侧信道数据采用公开数据集ASCAD。该数据集来源于一个AES 软实现的加密设备上采集的电磁辐射信号。该软实现的加密算法采用汇编语言编写,以尽可能防止无意的信息泄露。同时,该实现中采用了两种加掩防护手段:一种是对明文的16个字节加掩的16字节随机掩码,另一种是对SBOX输入和输出状态进行加掩的两个字节的随机掩码。数据集中包含6万次加密随机明文的能迹、以及明文、密文和采用的掩码。
[0082] ASCAD数据集中,加密计算的无掩中间值几乎不存在单样本的泄露。采用信噪比(SNR)来测试能迹上各样本上对SBOX输出值的泄露情况,其结果见图3。信噪比定义为:
[0083] SNR(t)=var(E[Lt|Z])/E[var(Lt|Z)]。
[0084] 其中,Lt表示能迹上采样位置为t的能耗,Lt|Z表示按SBOX输出值Z对能耗进行分组,E[.]为计算数学期望(均值),var(.)为计算方差。SNR表达了按 SBOX输出值分组后,各组能耗均值的方差与各组能耗的平均方差的比。前者表示按不同的SBOX输出值,其平均能耗的差异;后者表示总体的能耗差异。因此, SNR越大,SBOX输出值的泄露越明显。SNR最小值为0,最大值为1。图4为ASCAD 在首轮加密的样本范围[40000‑50000]之间的信噪比。其最大信噪比仅为 0.017,说明单个样本对SBOX输出值的泄露非常微弱。
[0085] 图5为以SBOX输出值为目标,采用传统模板攻击(TA‑Template Attack) 方法的攻击与本发明的方法(AA‑Auto‑Attack)结果比较。其中,纵轴为猜测熵,表示多次攻击后,正确子密钥在猜测密钥中的平均排名。如果每次均排名第1,表示攻击成功率为100%,猜测熵等于0。猜测熵越大,表示攻击的效果越差。从图5可以看出,无论采用主成分数量40、50或60(TA‑PCA40,TA‑PCA50, TA‑PCA60),TA攻击的效果差异不大。达到猜测熵等于0所需要的攻击能迹数为 800条左右。而本发明的方法攻击中(AA‑PCA60),只需要1条能迹就能达到猜测熵等于0,成功率为100%。
[0086] 应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD‑ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。