时间:
1 引言
近些年,随着信息技术的不断更新迭代,信息安全问题逐渐获得社会广泛关注,密码学作为保障信息安全的核心技术,在现代信息安全领域中发挥着越来越重要的作用。在无线传感器网络、射频识别技术等资源受限的设备中,轻量级分组密码是保障数据安全的关键算法。但是,轻量级分组密码追求低消耗、高效率,必然会导致安全性的降低。因此,轻量级分组密码的安全性分析是至关重要的。
迄今为止,深度学习技术已日渐成熟,广泛应用于生物信息、计算机视觉、自然语言处理等各个领域。1991 年,RIVEST 概述了深度学习与密码学之间的关系,并提出了将深度学习应用于密码学领域中的一些可能的研究方向。2008 年,BAFGHI 等人提出将分组密码的整个差分特征空间用多级加权有向图表示,将最佳差分特征的问题简化为寻找有向图中两个已知节点之间的最小权重的多分支路径问题。相关文献表明,利用递归神经网络和结合模拟退火的玻尔兹曼机寻找分组密码最佳差分路径的方法具有更好的性能。
2012 年,ALANI 等人提出基于神经网络的已知明文攻击,并将其成功应用于 DES 和三重 DES。相关文献表明,在攻击过程中,神经网络无需加密密钥,可直接从密文中获取明文。2014 年,DANZIGER 等人利用神经网络发现 S-DES 中明文、密钥和密文之间的映射关系,在此基础上提出关于 S-DES 新的 S 盒设计方案,经验证,该 S 盒对差分攻击更有抵抗力。2018 年,HU 等人开发了一种前馈神经网络攻击 AES 密码,该网络恢复整个明文字节的概率大于 40%,恢复一半以上明文字节的概率大于 89%。
2019 年,GOHR 提出了基于深度学习的减轮 SPECK32/64 差分攻击,通过训练深度残差网络构造差分区分器,用于区分固定明文差分加密的密文对和随机数据。2020 年,BAKSI 等人受 GOHR 工作的启发,提出尝试通过机器学习模拟非马尔科夫密码的所有 “单输入多输出” 差分路径,利用机器学习成功构造了 8 轮 Gimli-Hash 区分器、8 轮 Gimli-Cipher 区分器、8 轮 Gimli-Permutation 区分器、3 轮 Ascon-Permutation 区分器、10 轮 Knot256-Permutation 区分器、12 轮 Knot-512-Permutation 区分器和 4 轮 Chaskey-Permutation 区分器。相关文献表明,攻击者能够通过使用机器学习技术降低寻找区分器的复杂度。
2021 年,BENAMIRA 等人对相关文献中的神经网络差分区分器的内在工作原理进行深入研究,并设计了基于决策树的 LGBM 区分器,其与神经网络差分区分器具有相同效果。2022 年,PAL 等人提出通过深度学习工具自动查找神经网络差分区分器,并将其应用于 ARX 型密码 HIGHT、LEA、SPARX 和 SAND。相关文献证明了神经网络差分区分器输入差分的汉明权重与对应的最大轮数之间的关系,也改进了差分密码分析的数据复杂度下界。2023 年,BAO 等人深入分析解释相关文献提出的神经网络差分区分器优于基于差分分布表的区分器的优势原因。相关文献表明,控制差分传播是提高神经网络差分区分器准确率的关键。2024 年,ZHENG 等人从密文对的概率分布的角度分析相关文献中的神经网络差分区分器学习到的特征,并以此减小网络模型参数。相关文献表明,神经网络差分区分器不仅从密文对中学习到差分特征,还学习到密文对左右分支的异或信息。
基于深度学习的密码安全性分析逐渐成为一个全新的研究热点,使得密码安全性分析工作有了新的突破。现如今,国内外学者对密码算法安全性分析的相关研究工作表明,借助深度学习技术的安全性分析相比于传统的攻击手段能够降低攻击的复杂度,减少资源成本,具有一定的现实意义。然而,目前的研究工作仍存在一些未得到充分研究和解决的问题:
研究如何改进神经网络模型来进一步提高神经网络差分区分器的精度;
探究输入差分对神经网络差分区分器精度的影响;
探究输入数据格式对神经网络差分区分器精度的影响。
基于上述问题,文中要进行的工作如下:
文中尝试将注意力机制引入神经网络模型中,以提高神经网络差分区分器的精度。基于此,文中提出采用引入注意力机制的深度残差网络构造神经网络差分区分器,并将其应用于 SIMON、SIMECK 和 SPECK 3 类轻量级分组密码,期望得到有效改进的神经网络差分分析模型。
对于 SIMON、SIMECK 和 SPECK 3 类密码算法,文中提出借助神经网络模型测试并总结不同的输入差分对神经网络差分区分器精度的影响,期望寻找到神经网络差分区分器的合适输入差分。
文中尝试利用轻量级分组密码的单轮加解密过程生成额外的输入数据信息,为神经网络模型提供更多的特征。针对 SIMON、SIMECK 和 SPECK 3 类密码算法,文中研究输入数据中只包含密文对信息和包含密文对信息以及倒数第 2 轮差分信息两种不同的格式,探究包含不同信息量的输入数据格式对神经网络差分区分器精度的影响。
以 SIMON32/64 密码为例,进一步探究不同明密文对数量对密钥恢复攻击成功率的影响。文中尝试改变密钥恢复攻击时输入明密文对的数量,依次比较在不同明密文对数量下,11 轮 SIMON32/64 最后一轮子密钥恢复攻击的成功率。
2 基础知识
2.1 符号说明
文中用到的符号说明。
2.2 差分分析
差分分析是目前已知攻击分组密码最有效的方法之一,由 BIHAM 等人提出。该方法是利用密码算法在加解密过程中差分传播特性的不均匀性,寻找一条高概率的差分特征,从而将密码算法与随机数据区分开。
假设给定一个 r 轮迭代分组密码 E,其分组长度为 n,记 r 轮差分为 Λ=(α→β),明文 X∈F₂ⁿ,则 r 轮差分特征概率定义为特定公式。
差分分析是研究满足特定差分值 α 的输入明文对(X,X⊕α)在每一步加密过程中对应密文对的差分变化情况,即根据差分值在加密过程中的高概率传播特性,从而识别不随机特性,建立区分器;在区分出真实密文对的基础上,统计明密文对差分之间的分布规律,恢复部分密钥信息,从而实现密钥恢复攻击。
2.3 神经网络差分区分器
传统差分分析需要寻找一条高概率的差分特征,进而利用高概率的差分特征构造差分区分器对真实密文和随机数据进行分类。与传统差分区分器效果相同,神经网络差分区分器是在输入差分确定的情况下,对大量已知密文数据进行学习、挖掘并提取大量有效密文数据特征,从而实现对未知密文数据的分类。在 2019 年美密会上,GOHR 首次提出采用深度残差网络构造神经网络差分区分器,并将其成功应用于减轮 SPECK32/64。相关文献表明,相比于传统差分区分器,神经网络差分区分器的区分精度更高,性能也更好。
GOHR 的文章第 1 次表明神经网络可以用来产生与公开的现有技术水平相当的攻击,展示了深度学习在密码分析的应用潜力。在 2021 年欧密会上,BENAMIRA 等人深入研究 GOHR 提出的神经网络差分区分器,表明神经网络差分区分器的区分效果主要依赖于密文对的差分分布,但也依赖于倒数第 2 轮的差分分布。此后,密码分析者主要从优化神经网络结构和改进输入数据格式两方面来进一步提高神经网络差分区分器的精度。
在优化神经网络结构方面,ZHANG 等人在神经网络残差结构之前引入 Inception 结构,扩大了网络的感受野;KIM 等人在神经网络结构中加入残差连接和门控线性单元;在改进输入数据格式方面,HOU 等人使用多组输出差分改进神经网络差分区分器;CHEN 等人使用多个密文对作为输入数据集,为神经网络提供更多差分特征。另外,在 2023 年亚密会上,BAO 等人指出 GOHR 提出的神经网络差分区分器除了利用纯密文差分信息,还利用了密文的偏值、密文对的差分和中间状态的差分之间的相关性。相关文献表明,神经网络差分密码分析在相关密钥的设置下可以比在单密钥设置下攻击更多的轮数。
随着深度学习的兴起,密码分析者着眼于将深度学习与传统密码分析方法相结合,为密码安全性分析提供了全新的思路,有助于进一步发现密码算法潜在的安全性缺陷,以改进现有密码算法或协议的设计方案。因此,基于深度学习的密码安全性分析将是未来研究工作的重点之一。
2.4 注意力机制
注意力机制最早由 BAHDANAU 等人于 2014 年提出,通过引入注意力机制,神经网络能够自动学习并动态地关注不同的特征,从而提高模型的性能和泛化能力。在 2022 年亚密会上,BAO 等人采用 SEResNeXt 变体构造神经网络差分区分器,并将其应用于 SIMON32/64 密码算法中。2023 年,DENG 等人在残差网络的输出层引入注意力机制,用于分析 SPECK 密码算法的安全性。相关文献将 SEblock 应用于 ResNeXt 中。相关文献将多头注意力机制应用于残差网络的输出层,两者均为神经网络提取更多特征,进一步提高了神经网络差分区分器的性能。
由于注意力机制的结构和添加位置可变,故文中尝试采用一维卷积神经网络、批量归一化、ReLU 激活函数和乘法层构成注意力机制,并将注意力机制应用于残差块中,使神经网络能够集中学习明密文对之间的特征信息。
2.5 模型评估指标
模型评估指标用来衡量模型的训练效果和性能。神经网络差分区分器的评估指标分别为精度、损失、真阳性率和真阴性率。
2.5.1 精度
精度为区分器预测值与真实值完全一致的数量比率,是神经网络差分区分器的主要评估指标,其定义为特定公式,其中 m 为样本数量,Zᵢ为样本对应的预测值即神经网络差分区分器模型的分数;Yᵢ为样本对应的真实值即标签值。
2.5.2 损失
损失用均方误差来衡量,反映区分器预测值与真实值的差异程度,其定义为特定公式。
2.5.3 真阳性率和真阴性率
区分器预测值与真实值的混淆矩阵。
只有当区分器预测值与真实值完全一致时才能判定为区分器分类正确,即当真正例(R_TP)和真反例(R_FN)出现时区分器分类正确,其对应的指标分别为真阳性率(R_TPR)和真阴性率(R_TNK)。其计算式为特定公式。
3 神经网络差分区分器的构造
为改进相关文献提出的神经网络差分区分器,文中基于引入注意力机制的深度残差网络构造神经网络差分区分器,下面介绍其具体结构和数据集生成过程。
3.1 神经网络差分区分器结构
文中构造的神经网络差分区分器模型主要采用注意力机制结构构造引入注意力机制的深度残差神经网络,记为 Attention-ResNets神经网络差分区分器模型主要分为:输入表示层、引入注意力机制的残差块和输出层。
输入表示层是对输入数据集进行数据处理。输入表示层包括输入层、数据整形层、重新排列层和初始卷积层。由于神经网络结构的训练是面向 16bit 的字结构,所以,输入层的输入数据格式为(None,4w),其中,w=16。经过数据整形层及重新排列层后输出数据格式变为(None,w,4),并连接到初始卷积层,该层由内核大小为 1 的一维卷积网络、批量归一化和 ReLU 激活函数组成。其中,一维卷积网络包含 32 个滤波器。经过初始卷积层后的输出数据格式为(None,w,2w)。
引入注意力机制的残差块是对经过处理变型后的数据进行特征提取。文中构造的残差块由两层卷积神经网络、一个注意力机制、一个连接输入输出的旁路和 ReLU 激活函数组成。其中,卷积神经网络采用内核大小为 3 的一维卷积网络,而后连接批量归一化和 ReLU 激活函数;注意力机制包括 4 个部分:内核大小为 3 的一维卷积网络、批量归一化、ReLU 激活函数和连接输入输出的乘法层;旁路采用加法层。经过引入注意力机制的残差块后的输出数据格式为(None,w,2w)。
输出层则是对数据进行分类,判别其是真实密文对或是随机数据。输出层由一个平铺层、两个隐藏层和一个输出单元组成。经过平铺层后,输出数据格式变为(None,w×2w),并连接到隐藏层。每个隐藏层均由全连接层、批量归一化和 ReLU 激活函数组成。经过两个隐藏层后,输出数据格式为(None,4w)。输出单元包括全连接层和 Sigmoid 激活函数。经过输出单元后,得到最终输出数据格式为(None,1)。以最终输出数据作为神经网络差分区分器模型的分数,该分数位于(0,1)区间内,在分类判别时,将分数大于 0.5 的对象判为真实密文对;而分数小于或等于 0.5 的对象则判为随机数据。
3.2 数据集的生成
神经网络模型的学习需要大量的训练数据和验证数据,数据集的选取会影响模型的精度。在神经网络差分区分器的构造中,选取的数据集应该尽可能覆盖所有的情况。因此,文中通常采用随机数生成器来生成数据集。
与传统差分区分器一样,神经网络差分区分器也需要给定输入差分。假设文中选取固定输入差分作为神经网络差分区分器的输入差分,记为 Δ,神经网络差分区分器的数据集生成过程如下:随机生成 m 个明文 Pᵢ₁、Pᵢ₂,初始密钥 keyᵢ和标签数据 Yᵢ。其中,明文 Pᵢ₁、Pᵢ₂均为长度不超过 n 的非负整数,初始密钥 keyᵢ是长度不超过 K 的非负整数,标签数据 Yᵢ=0 或 Yᵢ=1,i=0,1,…,m-1,n 表示所研究的轻量级分组密码的分组长度,K 表示其密钥长度。
若标签数据 Yᵢ=0,对应的随机明文 Pᵢ₁、Pᵢ₂保持不变;若标签数据 Yᵢ=1,令 Pᵢ₂=Pᵢ₁⊕Δ,此时,明文 Pᵢ₁、Pᵢ₂具有固定输入差分 Δ。对初始密钥 keyᵢ进行密钥扩展,得到密钥 sk。使用密钥 sk 对 m 个明文 Pᵢ₁、Pᵢ₂分别进行加密,得到对应的 m 个密文 Cᵢ₁、Cᵢ₂和标签数据 Yᵢ,记 Cᵢ₁=(Cᵢ₁ₗ,Cᵢ₁ᵣ),Cᵢ₂=(Cᵢ₂ₗ,Cᵢ₂ᵣ)。5. 将 m 个密文(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ)进行二进制化得到 Xᵢ和标签数据 Yᵢ,作为神经网络差分区分器的输入数据集。
4 基于神经网络的轻量级分组密码 SIMON 安全性分析
文中采用第 3 节介绍的神经网络差分区分器的构造方法对轻量级分组密码 SIMON 进行安全性分析。在分析过程中,文中构建神经网络模型寻找 SIMON32/64 神经网络差分区分器的合适输入差分,以此研究不同的输入差分对神经网络差分区分器精度的影响;结合 SIMON32/64 密码的单轮加解密过程改变输入数据包含信息量,以此研究包含不同信息量的输入数据格式对神经网络差分区分器精度的影响。
4.1 SIMON 密码算法
SIMON 系列算法是由美国国家安全局(NSA)于 2013 年推出的一款轻量级分组密码算法,与 SPECK 系列算法是同一时间推出的。SIMON 系列算法基于平衡的 Feistel 结构,由线性运算(比特移位运算、比特异或运算)和非线性运算(逻辑与运算)经过多轮迭代组成,摒弃了传统分组密码具有的 S 盒。SIMON 有多种不同的版本,但在文中,重点关注 SIMON32/64,它由 32 轮组成。设密码算法的第 i 轮输入为(Lᵢ₋₁,Rᵢ₋₁),轮密钥为 kᵢ₋₁。
4.2 区分器性能指标测试
文中采用第 3.1 节介绍的 Attention-ResNets 模型构造 SIMON32/64 神经网络差分区分器,随机选取 Δ=0x0000/0001 作为神经网络差分区分器的输入差分,加密轮数 nᵣ=6,7,8,9,采用第 3.2 节介绍的方法,使用加密算法分别生成 10⁷bit 训练数据集和 10⁶bit 验证数据集,并以此训练构造 6~9 轮 SIMON32/64 神经网络差分区分器。其中,神经网络差分区分器模型的参数。
在训练 SIMON32/64 神经网络差分区分器过程中,一个训练周期(Epoch)是指神经网络差分分析模型学习整个数据集中的所有样本一次,并记录当前训练周期(Epoch)下神经网络差分区分器的损失和精度,以反映模型对当前数据集的拟合程度。文中设置训练周期数(Epochs)为 50,共进行 50 个周期的训练。
随着训练周期数的不断增加,7 轮 SIMON32/64 神经网络差分区分器的损失函数不断下降,精度不断上升,且在大约 20 个训练周期后,损失函数和精度的波动范围始终维持在 1% 以内。由此可以表明,文中选择训练周期数(Epochs)为 50 是较为合适的,此时模型已基本收敛。
经过训练后可得到 4 个神经网络差分区分器,分别记为 Net6、Net7、Net8 和 Net9。同样地,采用第 3.2 节中的方法使用加密算法生成 10⁶bit 测试数据集,然后分别使用 Net6、Net7、Net8 和 Net9 在 10⁶bit 测试数据集上进行评估,可得到 6~9 轮神经网络差分区分器的评估指标。
当尝试改变神经网络差分区分器的输入差分为 Δ=0x0040/0000,在保持其他神经网络结构参数、SIMON32/64 加密轮数、训练数据集、验证数据集和测试数据集大小相同的情况下,分别使用相同的方法训练 6~9 轮 SIMON32/64 神经网络差分区分器,并对其性能进行测试评估。
采用上述方法,当仅改变神经网络差分区分器的输入差分为 Δ=0x0000/0001 或 0x0040/0000 时,6~9 轮 SIMON32/64 神经网络差分区分器评估指标。
当改变神经网络差分区分器的输入差分时,6~9 轮 SIMON32/64 神经网络差分区分器的精度有明显差异。由于训练数据集、验证数据集和测试数据集样本数量较大,因此可以忽略因生成数据集的随机性而导致的区分器精度的差异。因而,猜测输入差分能够对神经网络差分区分器的精度产生一定影响。
4.3 寻找 SIMON32/64 神经网络差分区分器的合适输入差分
输入差分的不同会对密文数据输出差分的分布产生一定影响,对于神经网络差分区分器,其本质是在给定输入差分的情况下,学习大量密文数据特征。因此,在神经网络模型参数确定的情况下,研究合适输入差分对于提高神经网络差分区分器的精度是十分有必要的。
近年来,密码分析者大多基于 SAT/SMT 求解器搜索高概率差分特征,进而寻找神经网络差分区分器的合适输入差分 [22,28-29]。相较于借助 SAT/SMT 的自动搜索工具,神经网络模型实现较为简单,并不需要密码分析者具备一定的先验知识。因此,文中使用神经网络的快速训练寻找 SIMON32/64 神经网络差分区分器的合适输入差分。
神经网络模型的输入数据集包括密文数据和标签数据。其中,密文数据是具有固定输入差分的明文对经过 SIMON32/64 加密算法得到的。所示的预处理器是借助第 3.1 节中构造的 Attention-ResNets 模型的输入层和倒数第 2 层的输出组成的。为了使实验结果更加具有可信度和客观性,尽可能地覆盖所有情况,文中使用随机数生成器来生成神经网络差分区分器的输入差分。
2015 年,KÖLBL 等人 [30] 提出 SIMON-like 轮函数的非线性部件的差分传播规律;2016 年,BEIERLE [31] 进一步证明 SIMON-like 轮函数的差分概率上界仅与输入差分的汉明重量有关。由文献 [30] 和文献 [31] 可知,SIMON32/64 轮函数的差分概率只与输入差分的汉明重量有关,当输入差分的汉明重量较低时,密文对的差分分布会不均匀,从而导致密文数据和随机数据差异性较高,使得神经网络能够进行有效的特征学习。因此,文中在寻找 SIMON32/64 神经网络差分区分器的合适输入差分时,会对其汉明重量有所限制,控制随机生成的神经网络差分区分器的输入差分具有低汉明重量的特点。
文中采用第 3.2 节介绍的方法,使用加密算法生成 10⁷bit 训练数据集,并以此针对采用上述模型构造的 9 轮 SIMON32/64 神经网络差分区分器进行训练,且使用训练好的 9 轮 SIMON32/64 神经网络差分区分器分别对具有不同输入差分的 2000bit 测试数据集进行评估。在本次实验中,设置神经网络差分区分器的输入差分汉明重量阈值为 4,引入注意力机制的残差块个数为 1。
选取不同的输入差分对神经网络差分区分器的精度是有一定影响的,低汉明重量且高概率的输入差分能够使神经网络模型学习到更多的特征,从而提高神经网络差分区分器的精度。实验结果表明,采用神经网络模型寻找到 SIMON32/64 神经网络差分区分器的合适输入差分为 0x0000/0040,且与 KÖLBL 等人 [30] 基于 SAT/SMT 求解器搜索出来的高概率差分轨迹一致,间接验证了该方法的正确性。另外,相比于传统分析方法,采用神经网络模型搜索合适输入差分能够大大降低数据复杂度和计算复杂度。因此,在设计和训练神经网络差分区分器的过程中,通过选取合适的输入差分能够促使神经网络更加有效地捕捉到输入数据中细微而关键的变化特征,从而优化神经网络差分区分器的性能。
4.4 改变输入数据格式
上述实验采用的输入数据为 m 个密文 Cᵢ₁、Cᵢ₂的实际值,即(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ),其中,i=0,1,…,m-1。此类输入数据格式使得神经网络差分区分器模型仅接收密文对作为输入,模型在训练过程中学习的是密文对之间的特征。文献 [14] 指出,神经网络差分区分器的区分效果主要依赖于密文对的差分分布,但也依赖于倒数第 2 轮的差分分布。同时,文献 [16] 表明,相比基于差分分布表构造的差分区分器,神经网络差分区分器利用了密文的偏值、密文对差分和中间状态的差分之间的相关性。鉴于文献 [14]、文献 [16] 分析结果的启示,为了更加直观地研究包含额外的差分信息的输入数据格式对神经网络差分区分器的影响,文中设计对比实验,利用 SIMON32/64 单轮加解密过程改变输入数据中包含的密文信息量,为神经网络提供更多的可学习密文分布特征。
将神经网络差分区分器的输入数据格式取为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,t₀⊕t₁),其中,t₀和 t₁可分别表示为特定公式。
若将 m 个密文 Cᵢ₁、Cᵢ₂使用最后一轮子密钥 k 解密至倒数第 2 轮密文 Cᵢ₁'、Cᵢ₂',且记 Cᵢ₁'=(Cᵢ₁ₗ',Cᵢ₁ᵣ'),Cᵢ₂'=(Cᵢ₂ₗ',Cᵢ₂ᵣ'),其中,i=0,1,…,m-1,由相关图示可以看出有以下等式成立(公式内容略)。
将相关公式左右两边分别取异或运算得到 Cᵢ₁ₗ'⊕Cᵢ₂ₗ'=Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,t₀⊕t₁=Cᵢ₁ᵣ'⊕Cᵢ₂ᵣ',由此可以看到 Cᵢ₁ᵣ⊕Cᵢ₂ᵣ和 t₀⊕t₁中包含倒数第 2 轮的差分信息。基于此分析结果可知,本节所选取的输入数据格式(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,t₀⊕t₁)中包含密文对信息以及倒数第 2 轮差分信息。
4.5 区分器对比
选择合适输入差分 Δ=0x0000/0040 作为神经网络差分区分器的输入差分,加密轮数 nᵣ=6,7,8,9,10,11,采用第 3.2 节介绍的方法及不同的输入数据格式,使用加密算法分别生成 10⁷bit 训练数据集、10⁶bit 验证数据集和 10⁶bit 测试数据集,以训练数据集和验证数据集训练神经网络差分区分器,并在相应的测试数据集上对其进行评估,可得到 6~11 轮 SIMON32/64 神经网络差分区分器的评估指标,I₀表示(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ),I₁表示(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,t₀⊕t₁),i=0,1,…,m-1。
4.6 实验结果分析
相比于随机选取的输入差分,合适输入差分 0x0000/0040 能够使 9 轮 SIMON32/64 神经网络差分区分器的精度达到较高值,并且随着 SIMON32/64 加密轮数的不断增加,区分器的精度降低速率较为缓慢。另外可以看到,当输入差分分别为 0x0040/0000 和 0x0000/0040 时,SIMON32/64 神经网络差分区分器的精度有显著差异,也就是说,当输入差分的汉明重量为 1 时,其非零位分布在前 16 位或后 16 位会对神经网络差分区分器的精度产生一定影响,其原因主要与 SIMON32/64 密码算法的轮函数有关,因为在 SIMON32/64 密码算法的轮函数中,非线性运算主要集中在前 16 位。如果输入差分的前 16 位中存在非零位,经过非线性运算后,非零位在下一轮的离散度会更大,继续扩散到下一轮输入中,导致下一轮输入差分的汉明重量继续增加,会让密文数据和随机数据具有较高的相似性,使神经网络难以进行有效的特征学习。
根据表 6 的输入数据格式纵向比较可以看出,在相同的实验条件下,新的输入数据格式 I₁较原输入数据格式 I₀精度有所提升,其中 8 轮、9 轮和 11 轮的提升较为明显。由此可以表明,相比于只包含密文对信息,输入数据中包含密文对信息以及倒数第 2 轮差分信息时,具有更多差分特性的数据样本能够使神经网络学习到更多特征,提高神经网络模型的泛化能力,从而使 SIMON32/64 神经网络差分区分器的精度得到进一步提高。另外,当输入数据格式为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ)时,有效区分器最高为 9 轮,而当输入数据格式为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,t₀⊕t₁)时,SIMON32/64 的有效区分器最高可达 11 轮,有效提高了 SIMON32/64 神经网络差分区分器加密的最大轮数。
4.7 实验结果对比
文中构造的 9 轮 SIMON32/64 神经网络差分区分器与文献 [12,22,25,28,32] 的分析结果对比如表 7 所示(表格内容略)。其中,输入数据格式(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ)记为 I₀;输入数据格式(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,t₀⊕t₁)记为 I₁,i=0,1,…,m-1;文献 [28] 中的输入数据格式记为 I₂;文献 [32] 中的输入数据格式记为 I₃,采用的输入差分(0x0000/0008,0x0000/0004,0x0000/0002)记为 PD。
文中采用第 3.1 节介绍的 Attention-ResNets 模型构造的 9 轮 SIMON32/64 神经网络差分区分器具有较高的精度,证实文中提出的引入注意力机制的神经网络模型改进方法是有效的,注意力机制能够让神经网络从密文数据中学习到更多相关信息,进一步提高神经网络差分区分器的精度;当改变神经网络差分区分器输入数据格式为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,t₀⊕t₁)时,9 轮神经网络差分区分器的精度得到进一步提高,间接证明神经网络能够从输入数据中学习到更多的特征,区分效果更好。
另外,文献 [28] 的 9 轮 SIMON32/64 神经网络差分区分器的精度较高,主要原因在于其采用多密文对(8 个密文对)生成输入数据集,相比于文中采用的单密文对,会提供更多的特征信息,从而提高神经网络差分区分器的性能。但同样也会存在一些不足之处,由于引入了多密文对作为输入,神经网络需要学习更多的输入特征,从而增加了模型的训练成本和训练时间,导致大量的内存消耗,还可能引起过拟合等风险。同时,文献 [28] 中 10~11 轮 SIMON32/64 神经网络差分区分器的精度分别为 0.6975 和 0.5609,由此可以表明,随着加密轮数的增加,相比于文中分析结果,文献 [28] 构造的神经网络差分区分器的性能下降速率较快。
5 改进模型的通用性
在第 4 节的分析过程中,文中采用 Attention-ResNets 模型对 SIMON32/64 密码算法进行差分分析,并进一步提出寻找合适输入差分和改变输入数据格式的方法,为神经网络提供了更多的可学习特征,使得 SIMON32/64 神经网络差分区分器在精度上取得了较为显著的效果,也进一步从实验角度证明文中提出的改进模型方法是有效的。为了探究文中提出的构建神经网络差分区分器、寻找合适输入差分以及改变输入数据格式的改进方法的通用性,文中分别将其应用于 SIMECK 和 SPECK 两类轻量级分组密码算法。
5.1 应用于 SIMECK 轻量级分组密码算法
文中采用第 3 节阐述的 Attention-ResNets 模型对 SIMECK 轻量级分组密码算法进行安全性分析。在分析过程中,采用 4.3 节构建的神经网络模型寻找 SIMECK32/64 神经网络差分区分器的合适输入差分,以此研究不同的输入差分对神经网络差分区分器精度的影响;采用第 4.4 节介绍的方法改变 SIMECK32/64 神经网络差分区分器的输入数据格式,以此研究输入数据格式对神经网络差分区分器精度的影响。
5.1.1 SIMECK 密码算法
SIMECK 算法是由 YANG 等人 [33] 在 CHES2015 中提出的轻量级分组密码,其设计思想结合了 SIMON 和 SPECK 分组密码算法的优点,在硬件实现上更加高效。SIMECK 系列算法采用 Feistel 结构,其轮函数与 SIMON 算法类似。由于 SIMECK 系列算法的分组长度和密钥长度会有所不同,它同样也有 3 个版本,文中重点关注 SIMECK32/64,由 32 轮组成。设密码算法的第 i 轮输入为(Lᵢ₋₁,Rᵢ₋₁),轮密钥为 kᵢ₋₁。
5.1.2 寻找 SIMECK32/64 神经网络差分区分器合适输入差分
本节采用第 3.2 节介绍的方法,使用加密算法生成 10⁷bit 训练数据集,并以此针对采用神经网络模型构造的 9 轮 SIMECK32/64 神经网络差分区分器进行训练。使用训练好的 9 轮 SIMECK32/64 神经网络差分区分器分别对具有不同输入差分的 2000bit 测试数据集进行评估。在本次实验中,设置神经网络差分区分器的输入差分汉明重量阈值为 4,引入注意力机制的残差块个数为 1。
当选取不同的输入差分时,SIMECK32/64 神经网络差分区分器的精度有所不同,低汉明重量且高概率的输入差分能够使神经网络差分区分器获得更高的精度。实验结果表明,采用神经网络模型寻找到 SIMECK32/64 神经网络差分区分器的合适输入差分为 0x0000/0001。
5.1.3 改变输入数据格式
上述实验采用的输入数据为 m 个密文 Cᵢ₁、Cᵢ₂的实际值,即(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ),其中,i=0,1,…,m-1。通过第 4.4 节的分析及实验结果可知,神经网络差分区分器的输入数据中包含倒数第 2 轮的差分信息,能够进一步提高神经网络差分区分器的精度。基于此分析结果,本节将 SIMECK32/64 神经网络差分区分器的输入数据格式取为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,s₀⊕s₁),s₀和 s₁可分别表示为特定公式。
5.1.4 区分器对比
选择合适输入差分 Δ=0x0000/0001 作为神经网络差分区分器的输入差分,加密轮数 nᵣ=6,7,8,9,10,11,结合第 3.2 节介绍的方法及两种不同的输入数据格式 I₀和 I₁,分别使用 SIMECK32/64 加密算法生成 10⁷bit 训练数据集、10⁶bit 验证数据集和 10⁶bit 测试数据集,以此对神经网络差分区分器进行训练和评估,可得到 6~11 轮 SIMECK32/64 神经网络差分区分器的评估指标。
5.1.5 实验结果分析
在维持实验条件一致性的前提下,采用新的输入数据格式 I₁相较于原有格式 I₀显著提升了模型的预测精度,特别值得注意的是在第 8 轮、第 9 轮以及第 10 轮的实验过程中,神经网络差分区分器精度的提升效果尤为突出且明显。这一发现有力地证明,改变输入数据中包含的信息量,能够在一定程度上影响 SIMECK32/64 神经网络差分区分器的精度。当 SIMECK32/64 神经网络差分区分器的输入数据格式取为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,s₀⊕s₁)时,能够给神经网络提供更多的密码算法特征,从而提高神经网络差分区分器的精度。另外,当输入数据格式为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ)时,SIMECK32/64 的有效区分器最高为 10 轮;而当引入倒数第 2 轮差分信息后,SIMECK32/64 的有效区分器最高可达 11 轮,有效提高了 SIMECK32/64 神经网络差分区分器加密的最大轮数。
可以明显察觉到一种趋势,随着 SIMECK32/64 密码算法加密轮数的不断增加,神经网络差分区分器的精度会持续下降。其根本原因是,基于密码算法的混淆和扩散原理,随着 SIMECK32/64 加密轮数不断增加,明文、密文和密钥之间的统计规律不断降低,从而导致密文数据和随机数据之间相似性较高,使神经网络无法进行有效的特征学习,进而导致神经网络差分区分器的精度下降。
5.1.6 实验结果对比
文中构造的 9 轮 SIMECK32/64 神经网络差分区分器与文献 [12,28,34,35] 的分析结果对比。输入数据格式(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ)记为 I₀;输入数据格式(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,s₀⊕s₁)记为 I₁,i=0,1,…,m-1;文献 [28] 中的输入数据格式记为 I₂;文献 [35] 中的输入数据格式记为 I₄,采用的神经网络模型记为 Inception-Nets。
对于 9 轮 SIMECK32/64 轻量级分组密码算法,文中采用第 3.1 节介绍的 Attention-ResNets 模型构造的神经网络差分区分器具有较高的精度,证实文中提出的引入注意力机制的神经网络模型改进方法是有效的;当改变神经网络差分区分器输入数据格式为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,Cᵢ₁ᵣ⊕Cᵢ₂ᵣ,s₀⊕s₁)时,9 轮神经网络差分区分器的精度得到进一步提高,区分能力更好。另外,文献 [28] 的 9 轮 SIMECK32/64 神经网络差分区分器的精度较高,其采用多密文对作为输入,会让神经网络学习到更多有用的特征,在一定程度上增强区分效果,但相比于单密文对,多密文输入数据会消耗更多内存,增加计算成本,导致训练时间过长。同时,文献 [28] 中 10~11 轮 SIMECK32/64 神经网络差分区分器的精度分别为 0.7354 和 0.5646,这一实验结果也可以表明,随着加密轮数的增加,相比于文中的分析结果,文献 [28] 构造的神经网络差分区分器的性能衰减速度显著。
5.2 应用于 SPECK 轻量级分组密码算法
文中采用第 3 节介绍的 Attention-ResNets 模型对 SPECK 轻量级分组密码算法进行安全性分析。在分析过程中,采用 4.3 节构建的神经网络模型寻找 SPECK32/64 神经网络差分区分器的合适输入差分,以此研究不同的输入差分对神经网络差分区分器精度的影响;文中采用 4.4 节介绍的方法改变 SPECK32/64 神经网络差分区分器的输入数据格式,以此研究输入数据格式对神经网络差分区分器精度的影响。
5.2.1 SPECK 密码算法
与 SIMON 系列算法类似,SPECK 系列算法 [27] 同样是由 NSA 于 2013 年提出的一类 ARX 型轻量级分组密码。SPECK 系列算法基于广义的 Feistel 结构,由比特移位运算、比特异或运算和模加运算经过多轮迭代组成,有多种不同的版本,文中重点关注 SPECK32/64,由 22 轮组成。设密码算法的第 i 轮输入为(Lᵢ₋₁,Rᵢ₋₁),轮密钥为 kᵢ₋₁。
5.2.2 寻找 SPECK32/64 神经网络差分区分器的合适输入差分
采用第 3.2 节介绍的方法,使用加密算法生成 10⁷bit 训练数据集,并以此针对介绍的神经网络模型构造的 7 轮 SPECK32/64 神经网络差分区分器进行训练,且使用成功训练的 7 轮 SPECK32/64 神经网络差分区分器分别对具有不同输入差分的 2000bit 测试数据集进行评估。在本次实验中,设置神经网络差分区分器的输入差分汉明重量阈值为 3,引入注意力机制的残差块个数为 1。
输入差分的取值影响 SPECK32/64 神经网络差分区分器的精度,低汉明重量且高概率的输入差分能够使神经网络模型进行有效的特征学习,从而提高神经网络差分区分器的精度。实验结果表明,采用神经网络模型寻找到 SPECK32/64 神经网络差分区分器的合适输入差分为 0x0040/0000。
5.2.3 改变输入数据格式
上述实验采用的输入数据为 m 个密文 Cᵢ₁、Cᵢ₂的实际值,即(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ),其中,i=0,1,…,m-1。根据 4.4 节的分析及实验结果,为进一步提高神经网络差分区分器的精度,本节将 SPECK32/64 神经网络差分区分器的输入数据格式取为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,l₀⊕l₁,r₀⊕r₁),l₀、l₁、r₀和 r₁可分别表示为特定公式(公式内容略)。
5.2.4 区分器对比
选择合适输入差分 Δ=0x0040/0000 作为神经网络差分区分器的输入差分,加密轮数 nᵣ=5,6,7,8。采用第 3.2 节介绍的方法及两种不同的输入数据格式 I₀、I₁,使用加密算法分别生成 10⁷bit 训练数据集、10⁶bit 验证数据集和 10⁶bit 测试数据集,以训练数据集和验证数据集训练神经网络差分区分器,并在测试数据集上对其进行评估,可得到 5~8 轮 SPECK32/64 神经网络差分区分器的评估指标。
5.2.5 实验结果分析
在控制实验条件相同的前提下,相比于只包含密文对信息,输入数据中包含密文对信息以及倒数第 2 轮差分信息会显著提高 SPECK32/64 神经网络差分区分器的精度;当输入数据格式取为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,l₀⊕l₁,r₀⊕r₁)时,输入数据中包含更多的信息量会让神经网络学习到更多特征,从而使 SPECK32/64 神经网络差分区分器的区分能力更强。另外,当输入数据格式为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ)时,有效区分器最高为 7 轮;而当输入数据格式中增加了倒数第 2 轮的差分信息后,SPECK32/64 的有效区分器最高可达 8 轮,有效提高了 SPECK32/64 神经网络差分区分器加密的最大轮数。
对于 5~8 轮 SPECK32/64 神经网络差分区分器,其精度均显著高于 0.5,具有较好的区分效果,证明神经网络可以成功提取密文数据和随机数据特征并进行正确分类。但是,对于更多轮数的 SPECK32/64 神经网络差分区分器,其精度近似为 0.5,意味着密文数据与随机数据相似度较高,神经网络无法进行有效的特征学习,已经不具备分类能力。
5.2.6 实验结果对比
文中构造的 7 轮 SPECK32/64 神经网络差分区分器与文献 [12,23,26] 的分析结果对比。其中,仅包含密文对信息的输入数据格式(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ)记为 I₀;同时包含密文对信息及倒数第 2 轮差分信息的输入数据格式(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,l₀⊕l₁,r₀⊕r₁)记为 I₁,i=0,1,…,m-1;文献 [23] 中的输入数据格式记为 I₅;文献 [26] 中的输入数据格式记为I₆,采用的神经网络模型记为 Nets。
对于 7 轮 SPECK32/64 轻量级分组密码算法,文中采用 3.1 节介绍的 Attention-ResNets 模型构造的神经网络差分区分器具有较高的精度,证实文中提出的引入注意力机制的神经网络模型改进方法是有效的;当改变输入数据格式为(Cᵢ₁ₗ,Cᵢ₁ᵣ,Cᵢ₂ₗ,Cᵢ₂ᵣ,l₀⊕l₁,r₀⊕r₁)时,7 轮神经网络差分区分器的精度得到进一步提高,区分效果更好。另外,文献 [23,26] 中均采用多密文对作为输入数据,在一定范围内增加了密文信息,但是其精度并不如文中的分析结果,也从侧面反映了多密文对的输入数据格式并不一定意味着神经网络差分区分器的性能会是最优的,可能也会与具体的密码算法有关,也可能由于多密文对会过多地消耗计算资源,导致训练时间过长,容易使神经网络差分区分器在训练过程中产生过拟合现象。因此,在实际应用中,应该根据具体的密码算法和成本需求选择合适的输入数据格式,以提高神经网络差分区分器的精度。
6 密钥恢复攻击
以 SIMON 密码算法为例,文中进一步探讨轻量级分组密码的密钥恢复攻击过程。在第 4 节研究的基础上,进一步对 11 轮 SIMON32/64 进行部分密钥恢复攻击,并探究不同明密文对数量对密钥恢复攻击的成功率的影响。
SIMON 密码算法加密过程的第 1 轮子密钥异或运算发生在首次进行非线性运算之后。因此,文中可以在没有额外成本的情况下将所有神经网络差分区分器扩展一轮。基于此分析,文中基于 9 轮 SIMON32/64 神经网络差分区分器对 11 轮 SIMON32/64 最后一轮子密钥进行攻击,并计算攻击成功率。
6.1 基本攻击思想
11 轮 SIMON32/64 子密钥恢复攻击的详细过程。
算法 1 候选子密钥排序
输入:输入差分 Δ=0x0000/0040,m 个明文对(Pᵢ₁,Pᵢ₂)(i=0,1,…,m-1),9 轮神经网络差分区分器 model₉
输出:候选子密钥排序 key_rank
①random Pi1, i=0,1,…,m-1
②Pi2=Pi1⊕Δ, i=0,1,…,m-1 ∥选择具有固定输入差分的明文对
③Pi1←decrypt_one_round (Pi1,0)
④Pi2←decrypt_one_round (Pi2,0)
⑤random key
⑥ks←expand_key (key,11)
⑦key_right←ks [10] ∥记录正确子密钥
⑧Ci1←encrypt (Pi1,ks)
⑨Ci2←encrypt (Pi2,ks)
⑩FOR k∈(0,2¹⁶-1) DO ∥尝试所有可能候选子密钥
Ci1←decrypt_one_round (Ci1,k)
Ci2←decrypt_one_round (Ci2,k)
t₀=((Ci1r<<<1) & (Ci1r<<<8)) ⊕ (Ci1r<<<2) ⊕ Ci1l
t₁=((Ci2r<<<1) & (Ci2r<<<8)) ⊕ (Ci2r<<<2) ⊕ Ci2l
Zᵢᵏ←model₉(Ci1l,Ci1r,Ci2l,Ci2r,Ci1r⊕Ci2r,t₀⊕t₁)
vk←grade (Zᵢᵏ) ∥参见式 (18)
⑪ENDFOR
⑫RETURN key_rank←descending_sort (vk) ∥降序排列
在算法中,对于每一个候选子密钥 k,将分数 Zᵢᵏ合并成一个分数 vₖ,公式为特定表达式。
在对候选子密钥排序时,将分数 vₖ最高的子密钥记为 key_guess,若出现 key_guess=key_right,则视为攻击成功。
6.2 11 轮 SIMON32/64 子密钥恢复攻击
文中采用算法 1 对 11 轮 SIMON32/64 最后一轮候选子密钥进行 100 次密钥排序,并以此计算 100 次子密钥恢复攻击成功率。为了探究不同明密文对数量对密钥恢复攻击成功率的影响,文中尝试改变密钥恢复攻击时输入明密文对的数量,依次比较在不同明密文对数量下,11 轮 SIMON32/64 最后一轮子密钥恢复攻击的成功率。因此,在本次实验中设置输入明密文对数量分别为 n=2⁶、2⁷、2⁸、2⁹,采用第 4 节成功训练的 9 轮神经网络差分区分器对 11 轮 SIMON32/64 最后一轮子密钥进行 100 次攻击,并计算 100 次攻击成功率。
当选择明密文对数量不同时,11 轮 SIMON32/64 子密钥恢复攻击成功率是有显著差异的,较多的选择明密文对数量让神经网络接触到更多数据样本,意味着能够使神经网络获得更多有效的可学习特征,从而捕捉到不同候选子密钥之间的细微差异,以提高密钥恢复攻击成功率。同时,在有限的样本数量下,神经网络差分区分器的性能可能会受到随机性的影响,导致攻击成功率不稳定,然而,当选择明密文对数量较多时,会对随机性进行平均化,进而使攻击性能更加稳定和可靠。
6.3 实验结果对比
文中针对 11 轮 SIMON32/64 进行子密钥恢复攻击与文献 [29,32,36] 的攻击结果。
文中进行的 11 轮 SIMON32/64 子密钥恢复攻击结果是十分可观的,其攻击成功率最高可达 100%,数据复杂度为 2⁹,计算复杂度为 2²⁵,时间复杂度小于 2¹⁷・¹。相比于传统密码分析方法,基于神经网络的密码分析方法具有较低的攻击复杂度,在密钥恢复攻击中具有更大的优势,其原因主要在于神经网络差分区分器在给定输入差分的情况下,能够从密文对中学习到更多有效的特征,进一步提高密钥恢复攻击成功率。
7 结束语
文中从神经网络、输入差分和输入数据格式 3 个角度出发改进神经网络差分区分器,并将其应用于 SIMON、SIMECK 和 SPECK 3 类轻量级分组密码。首先,文中提出采用引入注意力机制的深度残差网络构造神经网络差分区分器,这一优化方法具有先进性,并以轻量级分组密码为例,进一步验证该优化方法的可行性和有效性;其次,文中利用神经网络的快速训练寻找神经网络差分区分器的合适输入差分,进一步提高区分器精度;最后,利用轻量级分组密码的单轮加解密过程改变输入数据格式中包含的信息量,为神经网络提供具有更多差分特性的数据样本。此外,文中进一步对 11 轮 SIMON32/64 进行部分密钥恢复攻击,攻击成功率最高可达 100%,并且大大降低了密码分析攻击复杂度,体现了深度学习应用于密码安全性分析这一研究方向的潜在优势。
栗琳轲;陈杰;刘君,西安电子科技大学通信工程学院;河南省网络密码技术重点实验室;陕西师范大学计算机科学学院,202501