Differential-Linear Cryptanalysis from an Algebraic Perspective 论文阅读笔记

前言

这学期上一门密码分析学的课, 期末考核要汇报一篇密码分析的论文, 所以…
读一篇密码分析学的论文Differential-Linear Cryptanalysis from an Algebraic Perspective
发表在crypto2021上, 是国科大大佬的论文(如果有密码分析大佬看到我的blog, 还请轻喷)
这是作者的论文汇报视频https://www.youtube.com/watch?v=RvKJzc1r40g

导论

差分线性密码分析是一种重要的密码攻击手段, 本文提出一种代数系统并应用在差分密码分析中, 主要贡献有三个方面
(1) 构建一套应用于差分线性密码分析的代数方法, ANF, ATF, DATF
(2) 提出两种描述估计差分线性偏差的可行框架
(3) 将理论和技术应用到三种不同类型的密码算法并取得当前最佳效果, Ascon, Serpent, Grain v1

差分线性密码分析由两个阶段组成. 第一阶段确保在密码中间传播有用的属性,由差分密码分析覆盖. 第二阶段是从密码中间到密文使用线性密码分析执行.
在这里插入图片描述
E = E 0 ∘ E 1 E = E_0 \circ E_1 E=E0E1 E E E为可以表示为两个子密码的级联
Δ i n \Delta_{in} Δin E 0 E_0 E0的输入差分
Δ o u t \Delta_{out} Δout E 0 E_0 E0的输出差分
λ i n \lambda_{in} λin E 1 E_1 E1的线性特征的输入掩码
λ o u t \lambda_{out} λout E 1 E_1 E1的线性特征的输出掩码

设差分 Δ i n → Δ o u t \Delta_{in} \rightarrow \Delta_{out} ΔinΔout的概率为 p p p, 线性近似 λ i n → λ o u t \lambda_{in} \rightarrow \lambda_{out} λinλout概率为 1 / 2 + q 1/2 + q 1/2+q (q为偏差)
对于输入差分为 Δ i n \Delta_{in} Δin, 满足 λ i n C = λ o u t C ′ \lambda_{in} C = \lambda_{out} C' λinC=λoutC的概率为 1 / 2 + 2 p q 2 1/2 + 2pq^2 1/2+2pq2
差分线性攻击的数据复杂度为 O ( p − 2 q − 4 ) O(p^{-2}q^{-4}) O(p2q4)

(不要问, 问就是我也没看懂, 密码分析学基础为0…

代数系统

代数范式(ANF, algebraic normal form)

F 2 F_2 F2 表示二进制域,让 F 2 n F_2^n F2n表示 F 2 F_2 F2 上的 n 维向量空间。n 变量布尔多项式是从 F 2 n F_2^n F2n F 2 F_2 F2 的映射,它可以唯一地表示为 F 2 F_2 F2 上的多元多项式,称为代数范式(ANF)
f ( x 1 , x 2 , ⋯   , x n ) = ⨁ c = ( c 1 , ⋯   , c n ) ∈ F 2 n a c ∏ i = 1 n x i c i , a c ∈ F 2 f\left(x_{1}, x_{2}, \cdots, x_{n}\right)=\bigoplus_{c=\left(c_{1}, \cdots, c_{n}\right) \in \mathbb{F}_{2}^{n}} a_{c} \prod_{i=1}^{n} x_{i}^{c_{i}}, a_{c} \in \mathbb{F}_{2} f(x1,x2,,xn)=c=(c1,,cn)F2naci=1nxici,acF2
孤立变量, 指只出现在ANF中线性部分的变量, 如 x 1 ⊕ x 2 x 3 ⊕ x 4 x 5 x_1 \oplus x_2x_3 \oplus x_4x_5 x1x2x3x4x5中的 x 1 x_1 x1为孤立变量
对于 Δ ∈ F 2 n Δ ∈ F^n_2 ΔF2n和X上的n维变量多项式 f f f, f f f关于 Δ Δ Δ的导数为
D Δ f ( X ) = f ( X ) ⊕ f ( X ⊕ Δ ) D_{\Delta} f(X)=f(X) \oplus f(X \oplus \Delta) DΔf(X)=f(X)f(XΔ)
而多项式 f Δ f_{\Delta} fΔ定义为
f Δ ( X , x ) = f ( X ⊕ x Δ ) f_{\Delta}(X,x) = f(X \oplus x\Delta) fΔ(X,x)=f(XxΔ)
可以证明:
D x f Δ = D Δ f D_xf_{\Delta} = D_{\Delta}f DxfΔ=DΔf
其中 D x f Δ D_xf_{\Delta} DxfΔ表示 f Δ f_{\Delta} fΔ关于x的偏导数

这里论文给了个例子说明上述等式(水印有点烦, 看不清的直接看原文就行)
在这里插入图片描述
解释一下这个例子, ⊕ \oplus 满足分配律交换律和结合律, 所以 D Δ f = x 1 ⊕ x 2 x 3 ⊕ x 3 ⊕ ( x 1 ⊕ 1 ⊕ x 2 x 3 ⊕ x 3 ⊕ x 3 ) = x 3 ⊕ 1 D_{\Delta}f = x_1 \oplus x_2x_3 \oplus x_3 \oplus (x_1 \oplus 1 \oplus x_2x_3 \oplus x_3 \oplus x_3) = x_3 \oplus 1 DΔf=x1x2x3x3(x11x2x3x3x3)=x31
下面的的 f Δ = ( x 1 ⊕ x ) ⊕ ( x 2 ⊕ x ) x 3 ⊕ x 3 = x 1 ⊕ x ⊕ x 3 x ⊕ x 2 x 3 ⊕ x 3 = ( x 3 ⊕ 1 ) x ⊕ x 1 ⊕ x 2 x 3 ⊕ x 3 f_{\Delta} = (x_1\oplus x) \oplus (x_2\oplus x)x_3 \oplus x_3 = x_1 \oplus x \oplus x_3x \oplus x_2x_3 \oplus x_3 = (x_3 \oplus 1)x \oplus x_1 \oplus x_2x_3 \oplus x_3 fΔ=(x1x)(x2x)x3x3=x1xx3xx2x3x3=(x31)xx1x2x3x3

代数过渡形式(ATF, algebraic transitional form)

给定一个在 X = ( x 1 , x 2 , … , x n ) X = (x_1,x_2,…,x_n) X=(x1,x2,,xn)上的布尔多项式 f f f, 如果 f f f可以表示为在 ( y 1 , y 2 , . . . , y m ) (y_1,y_2,...,y_m) (y1,y2,...,ym)上的多项式 g g g,其中 y i y_i yi可以看作 X X X上的一个多项式, 即 y i = φ i ( X ) y_i = φ_i (X) yi=φi(X) ,则 g g g 的 ANF 称为 f f f 的代数过渡形式(ATF). 变量 y 1 , y 2 , . . . , y m y_1 ,y_2 ,...,y_m y1,y2,...,ym 称为过渡变量. 请注意,布尔多项式的 ATF 不是唯一的。 实际上,多项式 f f f g g g Φ = ( φ 1 , φ 2 , . . . , φ m ) Φ = (φ_1,φ_2,...,φ_m) Φ=(φ1,φ2,...,φm) 的复合,即 f ( X ) = g ( Φ ( X ) ) f(X) = g(Φ(X)) f(X)=g(Φ(X)),记为 f = g ◦ Φ f = g ◦ Φ f=gΦ.

每个多项式 φ i φ_i φi 也可以用 ATF 表示。 从这个角度来看,如果计算一个轮函数的 ANF 是可行的,则迭代密码可以在实际时间由 ATF 迭代表示。 它可以扩展为迭代计算密码差分的 ATF.

差分代数过渡形式(DATF, differential algebraic transitional form)

对于输入差分 Δ ∈ F 2 n Δ ∈ F_2^n ΔF2n φ i ( X ⊕ x Δ ) = φ i ⊕ ( D Δ φ i ) x φ_i(X ⊕xΔ) = φ_i ⊕(D_Δφ_i)x φi(XxΔ)=φi(DΔφi)x. 通过引入过渡变量 α i 和 β i α_i和 β_i αiβi ,我们将 φ i ( X ⊕ x Δ ) φ_i(X ⊕xΔ) φi(XxΔ) 表示为 α i ⊕ x β i α_i ⊕ xβ_i αixβi. 其中 α = ( α 1 , α 2 , . . . , α m ) α = (α_1,α_2,...,α_m) α=(α1,α2,...,αm) β = ( β 1 , β 2 , . . . , β m ) β = (β_1,β_2,...,β_m) β=(β1,β2,...,βm). 那么多项式 f Δ = f ( X ⊕ x Δ ) f_Δ = f(X ⊕ xΔ) fΔ=f(XxΔ) 可以表示为
g ( α ⊕ x β ) = g ( α 1 ⊕ x β 1 , α 2 ⊕ x β 2 , ⋯   , α m ⊕ x β m ) g(\alpha \oplus x \beta)=g\left(\alpha_{1} \oplus x \beta_{1}, \alpha_{2} \oplus x \beta_{2}, \cdots, \alpha_{m} \oplus x \beta_{m}\right) g(αxβ)=g(α1xβ1,α2xβ2,,αmxβm)
对于差分代数过渡形式, 可以写出 f Δ f_\Delta fΔ f f f关于 Δ \Delta Δ导数的表达式
f Δ = f ( X ⊕ x Δ ) = g ( Φ ( X ⊕ x Δ ) ) = g ( Φ ⊕ ( D Δ Φ ) x ) = g ( α ⊕ x β ) ∘ Ψ D Δ f = D x f Δ = D x ( g ( α ⊕ x β ) ∘ Ψ ) = ( D x g ( α ⊕ x β ) ) ∘ Ψ f_{\Delta}=f(X \oplus x \Delta)=g(\Phi(X \oplus x \Delta))=g\left(\Phi \oplus\left(D_{\Delta} \Phi\right) x\right)=g(\alpha \oplus x \beta) \circ \Psi \\ D_{\Delta} f=D_{x} f_{\Delta}=D_{x}(g(\alpha \oplus x \beta) \circ \Psi)=\left(D_{x} g(\alpha \oplus x \beta)\right) \circ \Psi fΔ=f(XxΔ)=g(Φ(XxΔ))=g(Φ(DΔΦ)x)=g(αxβ)ΨDΔf=DxfΔ=Dx(g(αxβ)Ψ)=(Dxg(αxβ))Ψ

关于DATF有
命题 1. 如果 n 变量布尔多项式 f f f 是 m 变量布尔多项式 g g g 和从 F 2 n F_2^n F2n F 2 m F_2^m F2m 的函数 Φ Φ Φ 的复合,即 f = g ◦ Φ f = g ◦Φ f=gΦ,则 f f f Δ Δ Δ 的导数为 DATF g ( α ⊕ x β ) g(α ⊕ xβ) g(αxβ) 关于 x x x 的偏导数和函数 Ψ = ( Φ , D Δ Φ ) Ψ = (Φ,D_Δ Φ) Ψ=(Φ,DΔΦ) 的复合,即 D Δ f = ( D x g ( α ⊕ x β ) ) ◦ Ψ D_Δ f = (D_x g(α ⊕ xβ)) ◦ Ψ DΔf=(Dxg(αxβ))Ψ,其中 α α α β β β 是 m-变量向量, x x x 是一个二元变量。

论文同样给出第二个例子, 演示了DATF的计算过程
在这里插入图片描述
这里稍微难理解, Ψ Ψ Ψ可以看作是将过渡变量 α , β \alpha, \beta α,β映射到 ϕ \phi ϕ参数的函数
按定义 D Δ Φ = Φ ( X ) ⊕ Φ ( X ⊕ Δ ) = ( x 3 ⊕ 1 , 1 , 0 ) D_\Delta \Phi = \Phi(X) \oplus \Phi(X \oplus \Delta) = (x_3 \oplus 1, 1, 0) DΔΦ=Φ(X)Φ(XΔ)=(x31,1,0)计算过程将 X X X Δ \Delta Δ代入计算即可, 这里可以计算出过渡变量 β \beta β, 过渡变量直接可以由 Φ ( X ) = ( x 1 ⊕ x 2 x 3 ⊕ x 3 , x 2 ⊕ x 3 x 4 ⊕ x 4 , x 3 ⊕ x 4 x 5 ⊕ x 5 ) \Phi(X) = (x_1 \oplus x_2x_3 \oplus x_3, x_2\oplus x_3x_4\oplus x_4, x_3 \oplus x_4x_5 \oplus x_5) Φ(X)=(x1x2x3x3,x2x3x4x4,x3x4x5x5)确定
其余计算按上面的给出定义计算就行

算法

计算差分线性偏差

理论上,差分线性偏差可以由输出位的代数范式 (ANF) 确定,输入位作为变量. 然而,计算密码输出位的 ANF 在计算上是不可行的. 为了使其可行,我们计算它们的代数转换形式 (ATF) 而不是 ANF. 更准确地说,我们计算内部bits的差分代数转换形式 (DATF) 以及密码的输出bits,然后估计差分线性偏差.

下面先介绍过渡规则
过渡规则:对于布尔多项式 u = u ′ x ⊕ u ′ ′ u = u' x ⊕ u'' u=uxu u ′ , u ′ ′ u',u'' u,u 与变量 x x x 无关,如果 u ′ u' u 涉及两个或多个变量,则用新的过渡变量替换 u ′ u' u; 如果 u ′ ′ u'' u 涉及两个或多个变量,则用另一个新的过渡变量替换 u ′ ′ u'' u。 从 u u u 导出的新表达式用 A T F ( u , x ) ATF(u, x) ATF(u,x) 表示,或简称为 A T F ( u ) ATF(u) ATF(u)。 换句话说,对于任何不涉及变量 x x x 的多项式 w w w,我们有
ATF ⁡ ( w ) = { var ⁡ w ,  if  w  involves two or more variables  w ,  otherwise  \operatorname{ATF}(w)= \begin{cases}\operatorname{var}_{w}, & \text { if } w \text { involves two or more variables } \\ w, & \text { otherwise }\end{cases} ATF(w)={varw,w, if w involves two or more variables  otherwise 
其中 v a r w var_w varw 是一个由 w w w 标识的过渡变量,因此 A T F ( w ) ATF(w) ATF(w) 是一个常数或一个由常数决定的变量。 根据规则,我们知道 A T F ( u , x ) = A T F ( u ′ ′ ) x ⊕ A T F ( u ′ ) ATF(u,x) = ATF(u'')x⊕ATF(u') ATF(u,x)=ATF(u)xATF(u) 最多包含三个变量,包括 x x x。 对于多项式向量,ATF 对向量的每个分量进行运算。 该规则以非常简化的方式确保 A T F ( f , x ) ATF(f,x) ATF(f,x) f f f 的 ATF,从而保持 x x x 不变。(通过实验发现, 在非线性操作之前应用过渡规则会达到最佳性能)

对于密码 E E E,我们将其视为从 F 2 n F_2^n F2n F 2 m F_2^m F2m 的函数。 ( Δ i n , λ o u t ) (Δ_{in}, λ_{out}) (Δin,λout) 对应的差分线性偏差描述了差分线性逼近的偏差 λ o u t • C ⊕ λ o u t • C = 0 λ_{out} •C ⊕λ_{out} •C = 0 λoutCλoutC=0,即 λ o u t • E ( P ) ⊕ λ o u t • E ( P ⊕ Δ i n ) = 0 λ_{out} •E(P)⊕λ_{out} •E(P ⊕Δ_{in}) = 0 λoutE(P)λoutE(PΔin)=0. 表示 f = λ o u t • E f = λ_{out} • E f=λoutE 给出 f ( X ) ⊕ f ( X ⊕ Δ i n ) = 0 f(X) ⊕ f(X ⊕ Δ_{in}) = 0 f(X)f(XΔin)=0。偏差由 f Δ i n = f ( X + x Δ i n ) f_{Δ_{in}} = f(X + xΔ_{in}) fΔin=f(X+xΔin) 的偏导数关于 x x x 的汉明权重确定。 根据命题 1,我们知道 f f f Δ i n Δ_{in} Δin 的导数可以从它的 DATF 计算出来。
对于输入的二元变量向量 X X X,我们首先初始化 Y ( 0 ) = X ⊕ x Δ i n Y^{(0)} = X ⊕ xΔ_{in} Y(0)=XxΔin 其中 x x x 是一个二进制变量。 ( Y ( 0 ) ∣ x = 0 , Y ( 0 ) ∣ x = 1 ) (Y^{(0)} |_{x=0},Y^{(0)} |_{x=1}) (Y(0)x=0,Y(0)x=1) 的任何实例都对应于约定中具有差分 Δ i n Δ_{in} Δin 的pair。 接下来我们计算第一轮输出的代数范式,即 Y ( 1 ) = R ( Y ( 0 ) ) Y^{(1)} = R(Y^{(0)}) Y(1)=R(Y(0))。然后我们将 Y ( i − 1 ) Y^{(i-1)} Y(i1) 重写为 Y ′ ( i − 1 ) ⊕ x Y ′ ′ ( i − 1 ) Y'^{(i-1)} ⊕ xY''^{(i-1)} Y(i1)xY(i1),其中 Y ′ ( i − 1 ) Y'^{(i-1)} Y(i1) Y ′ ′ ( i − 1 ) Y''^{(i-1)} Y(i1)均独立于 x x x,引入新的变量向量 α ( i − 1 ) 和 β ( i − 1 ) α^{(i-1)} 和 β^{(i-1)} α(i1)β(i1),并记录表达式 α ( i − 1 ) = Y ′ ( i − 1 ) α^{(i-1)} = Y'^{(i-1)} α(i1)=Y(i1) β ( i − 1 ) = Y ′ ′ ( i − 1 ) β^{(i-1)} = Y''^{(i-1)} β(i1)=Y(i1) 到一个方程组 Q Q Q

算法1
在这里插入图片描述
在这里插入图片描述
这里解释一下算法1, 初始输入是 Y ( 0 ) = X ⊕ x Δ i n Y^{(0)} = X ⊕ xΔ_{in} Y(0)=XxΔin, 经过轮函数以后得到的结果为 Y ( 1 ) Y^{(1)} Y(1), 可以表示为 Y ′ ( i − 1 ) ⊕ x Y ′ ′ ( i − 1 ) Y'^{(i-1)} ⊕ xY''^{(i-1)} Y(i1)xY(i1), 然后应用过渡规则, 写成代数过渡形式 A T F ( Y ( 1 ) , x ) = α ( i − 1 ) ⊕ x β ( i − 1 ) ATF(Y^{(1)}, x) = α^{(i-1)} ⊕ xβ^{(i-1)} ATF(Y(1),x)=α(i1)xβ(i1)作为下一轮的输入, 依次迭代直到最后一轮, 每次的过渡变量和ATF表达式都记录下来到方程组Q中.
算法1的复杂度为 O ( 2 d r t R ) O(2^drt_R) O(2drtR), t R t_R tR为计算轮函数ANF的计算代价, d为R轮的代数精度, r为轮数. 算法1复杂度主要来自line 9的ATF计算

下面给出计算差分线性偏差估计的算法2
在这里插入图片描述

算法2输出具有线性掩码 λ o u t \lambda_{out} λout的输出对parity的差分线性偏差(the differential-linear bias of the parity of the output pair with linear mask λ o u t λ_{out} λout. )
ATF of the parity: e = λ o u t Y ′ ′ ( r ) e = \lambda_{out}Y''^{(r)} e=λoutY(r), 其中 Y ′ ′ ( r ) Y''^{(r)} Y(r) Y ( r ) Y^{(r)} Y(r)关于 x x x的偏导数
当e中有孤立变量时, bias为0, 于是去掉e中孤立变量得到新的表达式, 不断更迭e, 直到为0即可得到bias ϵ \epsilon ϵ

关于算法 B i a s ( ) Bias() Bias()给出
引理2 给定 f 的 ATF,如果变量独立且同分布,则 Bias(f) 的输出给出 f 的偏差.
证明见论文p13

关于算法2给出
定理 3 假设算法 2 中 e ∗ e^* e 的所有变量都是独立同分布的,算法 2 的输出 ε ε ε 是差分线性逼近的偏差 Δ i n → λ o u t Δ_{in} → λ_{out} Δinλout.

算法2复杂度, 由line 5的 B i a s ( e ∗ ) Bias(e^*) Bias(e)计算决定, 而Bias()算法复杂度是 O ( 2 m ∗ ) O(2^{m^*}) O(2m), m ∗ m^* m是Separate()中多项式的变量集的最大基数. 所以算法2复杂度为 O ( 2 m ) O(2^{m}) O(2m), m取 m ∗ m^* m最大值. 从实际角度看, 一般迭代密码的S-box较小时, m也会比较小, 所以算法复杂度在实际应用中是可以接受的.

如果考虑DATF, 当每一轮的变量 Y ( i ) Y^{(i)} Y(i)是独立的, 可以给出另一个计算差分线性估计偏差的计算算法
算法3
在这里插入图片描述

关于算法3有
定理 4. 假设 DATF 的变量,即 Y ( i ) Y^{(i)} Y(i),在每一轮都是独立的,算法 3 的输出 ε ε ε 是差分线性逼近的偏差 Δ i n → λ o u t Δ_{in} → λ_{out} Δinλout.

算法3的复杂度是算法1和算法2复杂度的结合, O ( 2 d r t R + n 2 m + 1 ) O(2^drt_R + n2^{m+1}) O(2drtR+n2m+1), n为状态大小

密钥恢复攻击

为了将差分线性区分器转换为密钥恢复攻击,对于分组密码,我们通常猜测一些关键bits,执行部分加密或解密,并应用区分器。 在之前的工作中,区分器和密钥猜测的过程是分开处理的。 论文中展示了一种同时处理这两个过程的代数方法。 该方法也适用于其他类型的迭代密码,包括流密码和认证加密密码。

算法4 密钥恢复算法
在这里插入图片描述
关于算法4有
定理 5. 用 Φ Φ Φ表示标准正态分布的累积分布函数。 令 P S P_S PS 是对 m m m位子密钥的线性攻击的概率,具有概率 p p p 的线性近似,具有 N N N 个已知明文块,提供 a a a 位或更高的优势。 假设线性近似的概率对于每个尝试的键都是独立的,并且对于所有错误的键都等于 1/2,则有,对于足够大的 m 和 N,满足
P S = Φ ( 2 N ∣ p − 1 / 2 ∣ − Φ − 1 ( 1 − 2 − a − 1 ) ) P_{S}=\Phi\left(2 \sqrt{N}|p-1 / 2|-\Phi^{-1}\left(1-2^{-a-1}\right)\right) PS=Φ(2N p1/2Φ1(12a1))

论文对密钥恢复的预计算遵循算法 3 中估计差分线性偏差的主要框架。算法4与算法3主要区别是在前 r 1 r_1 r1 轮中附加了一些条件 I。 注意在 ANF 和 ATF 的每次计算中,都会在 I I I 的条件上化简多项式,用 m o d I mod I modI表示。
如算法 4 所示,在对密钥恢复进行预计算后,获得了一组表达式 Q I Q_I QI 和一个差分线性偏差 ε ε ε。 然后推导出方程组 S = { f = 0 ∣ f ∈ Q I } S = \{f = 0|f ∈ Q_I\} S={f=0fQI}。 假设 S 中的方程是独立并且它们对于任意固定key总是一致的。 用 n 表示 S 中方程的数量,用 m 表示 S 中关键bits的独立表达式的数量。
在密钥恢复攻击中,密钥是未知的,因此我们需要猜测涉及密钥位的表达式的值。 对于这些表达式的每个猜测, 具有输入差异 Δ i n Δ_{in} Δin O ( 1 / ε 2 ) O( 1/ε^2 ) O(1/ε2)明文对就足以应用区分器。 并为错误的密钥假设一种输出子集的奇偶校验的随机行为。 那么攻击的数据复杂度为 D = O ( 2 n / ε 2 ) D = O( 2^n/ε^2 ) D=O(2n/ε2)。 攻击中需要猜测的m个表达式有 2 m 2^m 2m个值,因此攻击时间为 T = O ( 2 m / ε 2 ) T=O(2^m/ε^2) T=O(2m/ε2)

算法4的复杂度, 除了算法3的复杂度, 算法4的复杂度依赖于 m o d I mod I modI的时间开销 t I t_I tI, 所以为 O ( 2 d r t R + n 2 m + 1 + n r t I ) O(2^drt_R + n2^{m+1} + nrt_I) O(2drtR+n2m+1+nrtI)

应用

论文的理论应用于Ascon, Serpent, Grain v1算法都达到了目前最好的效果

Ascon

Ascon 是由 Dobraunig 等人设计的一系列经过验证的散列算法, 已被选为 CAESAR 竞(2014-2019 年)最终产品组合中轻量级认证加密的主要选择, 目前正在参加 NIST 轻量级密码术竞赛. 论文分析的重点是Ascon-128.

Dobraunig 等人. 基于 4 轮差分线性区分器,提出了实际对 5 轮 Ascon 置换的差分线性攻击. 得到近似值的总体偏差预计为 2 − 20 2^{−20} 220, 但实验表明偏差为 2 − 2 2^{−2} 22, 明显更高.

通过 算法1 计算 Ascon 的 DATF
然后在4轮Ascon上分别应用 算法2 和 算法3 估计偏差
算法2得到偏差为 2 − 3 2^{−3} 23
算法3得到偏差为 2 − 2.365 2^{−2.365} 22.365
算法3比算法2和之前的相关工作更接近实验得到的偏差 2 − 2 2^{−2} 22

将密钥恢复算法 算法4 应用于 5 轮的Ascon-128
实验验证得到的时间复杂度约为 2 26 2^{26} 226
相比于Dobraunig的攻击方法的复杂度 2 36 2^{36} 236得到显著改善

在这里插入图片描述

Serpent

Serpent 是 AES 决赛算法. 是由Anderson, Biham 和 Knudsen 提出的分组密码. Serpent 的块大小为 128 位,并支持 128、192 或 256 位的密钥大小.

03年 Biham 等人提出对 Serpent 的11轮变体的攻击, 该攻击基于 9 轮差分线性区分器,偏差为 2 − 60 2^{−60} 260
08年 Dunkelman 等人测出 Serpent 简化轮变体(reduced round variants)的实验偏差为 2 − 57.75 2^{−57.75} 257.75
19年 Bar-On 等人使用 DLCT 重新计算判别器的偏差并获得为 2 − 57.68 2^{−57.68} 257.68

通过 DATF 技术对区分器的偏差进行分析, 得到 2 − 57.736 2^{−57.736} 257.736的估计值. 这个值非常接近实验值.
在算法 4 的帮助下,可以改进在选择密文攻击的设置下对 11-round Serpent 的攻击
改进后的11轮Serpent攻击的数据复杂度为 2 113.7 2^{113.7} 2113.7
时间复杂度为 2 137.7 2^{137.7} 2137.7次内存访问
内存复杂度为 2 99 2^{99} 299字节
攻击成功率达到99%

扩展到 12 轮
实现首次成功的12轮Serpent攻击
数据复杂度为 2 127 2^{127} 2127
时间复杂度为 2 251 2^{251} 2251次内存访问
内存复杂度为 2 99 2^{99} 299字节
攻击成功率达到77%

在这里插入图片描述

Grain v1

Grain v1 是 Hell 等人提出的基于 NFSR 的流密码, 是 eSTREAM 的决赛算法之一

ASIACRYPT 2010 上,Knellwolf 等人提出了对基于 NFSR 的密码系统的条件差分攻击(conditional differential attacks),并应用于 104 轮 Grain v1
Li and Guan在19年对Grain v1提出120轮的条件差分攻击, 偏差为 2 − 12.8 2^{−12.8} 212.8
Banik 在14年提出基于差分引擎(Differential Engine)的方法对120轮的条件差分攻击估计的偏差为 2 − 18.13 2^{−18.13} 218.13

应用 算法1 和 算法2
对120条件差分Grain v1得到的偏差为 2 − 13.39 2^{−13.39} 213.39, 与实验值 2 − 12.8 2^{−12.8} 212.8相近
而且高于差分引擎得到的 2 − 18.13 2^{−18.13} 218.13
对125轮Grain v1得到的偏差为 2 − 20.77 2^{−20.77} 220.77
相比 Banik 的结果 2 − 24.78 2^{−24.78} 224.78要高很多

密钥恢复攻击
攻击中需要猜测的关键bits的独立表达式共有20个
数据复杂度 2 52 2^{52} 252
时间复杂度 2 59 2^{59} 259
完整密钥恢复的时间复杂度是 2 60 2^{60} 260
攻击成功的概率是87.7%

在这里插入图片描述

总结

论文贡献
(1) 从代数的角度展示了一种新的差分线性密码分析理论,包括差分线性偏差的估计和密钥恢复技术
(2) 并将其应用于 CAESAR 决赛算法 Ascon、AES 决赛算法 Serpent 和 eSTREAM 决赛算法 Grain v1,并获得了最准确的偏差估计以及目前最好的差分线性或差分攻击
(3) 本文中的结果又更新了一轮 Serpent 的密码分析
(4) 提出的技术是一种通用的密码分析技术, 可以应用于大部分迭代式的加密算法的密码分析
(5) 可以作为密码分析技术的补充, 与经典的差分线性密码分析方法一起使用
(6) 等等很多…

ps:
虽说是应试的读论文, 但是时间都花了, 干脆还是水一篇blog, 还是记录一下个人的理解, 不然以后万一要用到又得重读一遍浪费时间.

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值