阿斯康密码分析:零和区分器、立方攻击与差分线性分析
在密码学领域,对加密算法的安全性进行深入分析至关重要。阿斯康(Ascon)作为一种新兴的加密算法,其安全性备受关注。本文将围绕阿斯康的密码分析展开,介绍零和区分器、立方攻击以及差分和线性密码分析等方法,探讨这些方法在阿斯康算法中的应用及效果。
1. 阿斯康算法基础结构
阿斯康算法的核心由替换层和线性层构成。
-
替换层
:采用5位S盒,该S盒与Keccak的χ映射仿射等价,在状态上并行应用64次。5个64位字(x0, …, x4)的每一位为64个S盒各贡献一位,其中x0始终作为最高有效位。S盒的代数标准型(ANF)如下:
y0 = x4x1 + x3 + x2x1 + x2 + x1x0 + x1 + x0
y1 = x4 + x3x2 + x3x1 + x3 + x2x1 + x2 + x1 + x0
y2 = x4x3 + x4 + x2 + x1 + 1
y3 = x4x0 + x4 + x3x0 + x3 + x2 + x1 + x0
y4 = x4x1 + x4 + x3 + x1x0 + x1
- 线性层 :源自SHA - 2的Σ函数,对5个状态字分别应用Σ函数,每个字使用不同的旋转值:
Σ0(x0) = x0 ⊕(x0 ≫19) ⊕(x0 ≫28)
Σ1(x1) = x1 ⊕(x1 ≫61) ⊕(x1 ≫39)
Σ2(x2) = x2 ⊕(x2 ≫1) ⊕(x2 ≫6)
Σ3(x3) = x3 ⊕(x3 ≫10) ⊕(x3 ≫17)
Σ4(x4) = x4 ⊕(x4 ≫7) ⊕(x4 ≫41)
2. 零和区分器
零和区分器用于展示阿斯康置换的非理想特性。
-
代数模型
:寻找n位置换的一组输入和对应输出,使其在F₂ⁿ上的和为零。从置换中间开始计算,固定320 - d位,改变d位的所有可能赋值,得到2ᵈ个中间状态。若确定输出位的函数度数小于d,输出在F₂ⁿ上的和为零;若逆函数度数小于d,输入在F₂ⁿ上的和也为零,从而得到零和区分器。
-
度数分析
:
- 单个阿斯康S盒的代数度数为2,一轮阿斯康置换的整体度数为2,r轮的度数至多为2r。
- 逆阿斯康S盒的ANF代数度数为3,r轮逆阿斯康置换的度数至多为3r。
-
12轮基本区分器
:针对12轮阿斯康置换,选择第5轮后的中间状态,攻击5轮逆向和7轮正向。7轮置换度数上限为2⁷ = 128,5轮逆置换度数上限为3⁵ = 243。选择d = 244,固定320 - 244 = 76位中间状态,改变其余244位,计算得到的输入和输出在F₂ⁿ上的和为零。类似攻击也适用于11轮(d = 129)和13轮(d = 257)。
-
沃尔什谱分析改进
:通过分析置换的沃尔什谱,可进一步改进12轮区分器的复杂度。阿斯康S盒的沃尔什谱与Keccak S盒相同,为2³ - 可整除。非线性层并行应用64次S盒,其沃尔什谱可被2³·64 = 2¹⁹²整除。由此得到5轮逆置换度数的更精确界限,d = 210即可满足12轮攻击。
-
中间添加免费轮
:可在攻击中几乎免费添加一轮。设置d为5位S盒大小的倍数,选择d个可变位包含完整S盒。中间步骤后,非线性层输出与输入模式相同,可将原中间步骤作为逆向轮起点,非线性层输出作为正向轮起点,扩展攻击轮数。可得到12、13和14轮的零和区分器,d分别为130、210和260。
-
更多轮数
:可区分多达20轮的阿斯康置换,d = 319。不过,阿斯康置换的非理想特性似乎不影响其安全性,复杂度2¹³⁰高于密码声称的安全级别。
以下是零和区分器攻击流程的mermaid流程图:
graph LR
A[开始] --> B[固定320 - d位,改变d位得到2ᵈ中间状态]
B --> C[计算2ᵈ中间状态的输出]
C --> D{输出函数度数 < d?}
D -- 是 --> E[输出和为零]
D -- 否 --> F[重新选择参数]
E --> G[计算输入值]
G --> H{逆函数度数 < d?}
H -- 是 --> I[输入和为零,得到零和区分器]
H -- 否 --> F
I --> J[结束]
F --> B
3. 立方攻击
立方攻击是一种代数攻击方法,可用于阿斯康算法。
-
立方攻击简介
:大多数密码的输出位可表示为Fn₂上的多项式(ANF)。精心选择一组明文位并改变其所有可能值,其他位保持不变,输出的某一位的和(立方和)可能是仅由密钥位组成的线性多项式(超多项式)。通过收集多个这样的线性多项式可找到密钥。攻击分为离线预处理阶段和在线阶段:
-
离线预处理阶段
:随机选择立方变量,检查得到的超多项式是否为线性且包含密钥。
-
在线阶段
:利用离线阶段的知识恢复目标的密钥。
-
阿斯康的立方攻击
:在阿斯康的不同阶段中,只有初始化阶段非重复使用随机数(nonce)的对手能轻松保持置换的某些输入不变并确定性地影响其他输入。5轮初始化的度数至多为32,搜索31个变量的立方,得到的超多项式肯定是线性或常数。随着轮数增加,所需立方变量数上限也增加,6轮初始化时需寻找至多63个变量的立方,7轮时为至多127个变量。
-
立方测试器区分器
:存在一个针对6轮阿斯康置换的立方测试器,生成的输出位在F₂上的和为零,实际复杂度仅为2³³。由于阿斯康置换从替换层开始,5位S盒并行应用64次,若所有立方变量位于同一状态字中,应用S盒层后它们不会出现在同一项中。选择同一状态字的33个变量的立方,可得到空的超多项式,2³³个生成输出的和为零。该区分器可用于区分Ascon - 128在随机数滥用场景下生成的密钥流,但设计者严格禁止随机数重用。
-
类似立方攻击恢复密钥
:可对轮数减少的阿斯康版本(初始化减少到5或6轮)进行密钥恢复攻击。以5轮Ascon - 128为例,攻击分为两个步骤,每个步骤有离线和在线阶段,基于以下两个观察:
-
观察1
:若所有立方变量位于同一状态字中,应用替换层后它们不会出现在输出多项式的同一项中。
-
观察2
:通过S盒的ANF和初始值位置,可构建边界立方。例如,选择N2[0..15]作为立方变量,其余随机数保持不变。第一轮后,立方变量仅与K1[0..15]出现在同一项中,4轮后也不会与其余密钥位一起出现。
-
步骤1
:以16位块为单位恢复密钥字K1。选择4个不同的边界立方,每个立方包含N2中的16个变量,向在线预言机查询。离线阶段,固定其余密钥位,计算每个可能的16位密钥部分的立方和,与在线阶段得到的立方和匹配,得到密钥候选。平均每个16位块只有一个密钥候选,K1平均只有一个密钥候选。
-
步骤2
:以16位块为单位恢复K2。使用N1[i]创建边界立方,由于输出依赖于K1的位,需为上一步得到的每个K1猜测重复离线阶段。其余过程与恢复K1相同,平均每个K2也只有一个密钥猜测。5轮攻击的时间复杂度约为8·2³²,6轮攻击在乐观假设下时间复杂度为4·2⁶⁴。
以下是立方攻击流程的表格总结:
| 攻击步骤 | 阶段 | 操作 |
| ---- | ---- | ---- |
| 离线预处理阶段 | 选择立方变量 | 随机选择立方变量,检查超多项式是否线性且含密钥 |
| 在线阶段 | 恢复密钥 | 利用离线知识,根据需求选择明文获取密文输出,恢复密钥 |
| 密钥恢复攻击步骤1 | 在线阶段 | 选择4个含N2中16个变量的边界立方,查询在线预言机 |
| 密钥恢复攻击步骤1 | 离线阶段 | 固定其余密钥位,计算每个可能16位密钥部分的立方和,匹配得到密钥候选 |
| 密钥恢复攻击步骤2 | 在线阶段 | 使用N1[i]创建边界立方 |
| 密钥恢复攻击步骤2 | 离线阶段 | 为每个K1猜测重复离线阶段,恢复K2 |
阿斯康密码分析:零和区分器、立方攻击与差分线性分析
4. 差分和线性密码分析
差分和线性密码分析是密码分析的两种标准工具,下面将展示对阿斯康现有差分特征的改进,给出阿斯康的首个线性特征,并利用差分和线性特征组合对轮数减少的阿斯康版本进行实际的密钥恢复攻击。
4.1 线性和差分界限
除了使用启发式搜索技术寻找阿斯康的实际特征外,还使用了完全搜索工具(MILP和SAT)来证明最佳可能的线性和差分特征的界限。
-
线性规划
:将减少轮数的阿斯康置换差分特征中活动S盒数量最小化的问题建模为混合整数线性规划(MILP)。模型使用以下变量:
- (x_{r,w,b} \in {0, 1}):指定第r轮S盒输入的第w个64位字的第b位在两个消息之间是否不同((b = 0, \ldots, 63),(w = 0, \ldots, 4))。
- (y_{r,w,b} \in {0, 1}):指定第r轮S盒输出的第w个64位字的第b位在两个消息之间是否不同((b = 0, \ldots, 63),(w = 0, \ldots, 4))。
- (d_{r,b} \in {0, 1}):指定第r轮的第b个S盒是否活动((b = 0, \ldots, 63))。
- (u_{r,w,b} \in {0, 1, 2}):用于第r轮第w个64位字线性层模型的辅助变量。
优化目标是最小化活动S盒的数量:
(\min \sum_{r = 1}^{R} \sum_{b = 0}^{63} d_{r,b})
S盒的建模通过指定其分支数并与每个S盒的活动状态相关联:
(d_{r,b} \leq \sum_{w = 0}^{63} x_{r,w,b} \leq 5d_{r,b})
(\sum_{w = 0}^{63} (x_{r,w,b} + y_{r,w,b}) \geq 3d_{r,b})
(d_{r,b} \leq \sum_{w = 0}^{63} y_{r,w,b} \leq 5d_{r,b})
线性层的建模如下((r = 1, \ldots, R),(b = 0, \ldots, 63)):
(y_{r,0,b} + y_{r,0,b + 19} + y_{r,0,b + 28} + x_{r + 1,0,b} = 2 \cdot u_{r,0,b})
(y_{r,1,b} + y_{r,1,b + 61} + y_{r,1,b + 39} + x_{r + 1,1,b} = 2 \cdot u_{r,1,b})
(y_{r,2,b} + y_{r,2,b + 1} + y_{r,2,b + 6} + x_{r + 1,2,b} = 2 \cdot u_{r,2,b})
(y_{r,3,b} + y_{r,3,b + 10} + y_{r,3,b + 17} + x_{r + 1,3,b} = 2 \cdot u_{r,3,b})
(y_{r,4,b} + y_{r,4,b + 7} + y_{r,4,b + 41} + x_{r + 1,4,b} = 2 \cdot u_{r,4,b})
最后,至少有一个S盒需要活动:
(\sum_{w = 0}^{4} x_{0,w,0} \geq 1)
线性密码分析的模型基本相同,只是旋转值不同。该MILP可以使用现成的线性优化工具(如CPLEX)求解,但由于问题的高度组合性质,SAT求解器更适合此类问题。
- SAT求解器 :使用可满足性模理论(SMT)求解器的扩展建模语言,将基于位向量的CVC模型转换为合取范式(CNF),然后使用并行SAT求解器(如Biere的Treengeling)求解。为了获得更精确的界限,对S盒的建模采用了折中的方法。S盒的线性预处理和后处理部分可以精确建模,非线性核心(等效于Keccak S盒)进行近似建模。
差分模型的约束如下(输入差分字(a_0, \ldots, a_4 \in F_2^{64}),输出差分字(b_0, \ldots, b_4 \in F_2^{64})):
(b_i = a_i \oplus ((a_{i + 1} \vee a_{i + 2}) \wedge t_i)),(t_i \in F_2^{64}),(i = 0, \ldots, 4)
线性模型的约束(线性输入掩码(a_0, \ldots, a_4 \in F_2^{64}),输出掩码(b_0, \ldots, b_4 \in F_2^{64}))如下:
(a_i = b_i \oplus ((b_{i - 1} \vee b_{i - 2}) \wedge t_i)),(t_i \in F_2^{64}),(i = 0, \ldots, 4)
以下是差分和线性密码分析中使用工具的对比表格:
| 工具 | 优点 | 缺点 |
| ---- | ---- | ---- |
| MILP(线性规划) | 可以直接建模优化问题 | 高度组合问题不适合,求解效率低 |
| SAT求解器 | 更适合高度组合问题 | 需要将问题转换为可满足性问题,S盒建模需折中 |
以下是差分和线性密码分析流程的mermaid流程图:
graph LR
A[开始] --> B[选择分析方法(MILP或SAT)]
B --> C{MILP?}
C -- 是 --> D[构建MILP模型]
C -- 否 --> E[构建SAT模型]
D --> F[使用线性优化工具求解]
E --> G[转换为CNF]
G --> H[使用SAT求解器求解]
F --> I[得到结果]
H --> I
I --> J[结束]
总结
本文围绕阿斯康算法的密码分析展开,介绍了阿斯康算法的基础结构,包括替换层和线性层。详细阐述了零和区分器、立方攻击以及差分和线性密码分析等方法在阿斯康算法中的应用。
- 零和区分器 :可用于展示阿斯康置换的非理想特性,通过代数模型和度数分析,可实现对不同轮数的阿斯康置换的区分攻击,还可通过沃尔什谱分析和中间添加免费轮等方法改进攻击复杂度。
- 立方攻击 :是一种代数攻击方法,可在阿斯康的初始化阶段进行。通过立方测试器可区分特定轮数的阿斯康置换生成的密钥流,还可对轮数减少的阿斯康版本进行密钥恢复攻击。
- 差分和线性密码分析 :使用MILP和SAT求解器证明阿斯康的线性和差分特征的界限,并利用这些特征对轮数减少的阿斯康版本进行密钥恢复攻击。
这些密码分析方法有助于深入了解阿斯康算法的安全性,为密码算法的设计和改进提供参考。虽然阿斯康置换存在一些非理想特性,但目前的攻击复杂度大多高于其声称的安全级别,表明阿斯康在一定程度上仍具有较好的安全性。
超级会员免费看
4239

被折叠的 条评论
为什么被折叠?



