前言
这学期上一门密码分析学的课, 期末考核要汇报一篇密码分析的论文, 所以…
读一篇密码分析学的论文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=E0∘E1
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(p−2q−4)
(不要问, 问就是我也没看懂, 密码分析学基础为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)∈F2n⨁aci=1∏nxici,ac∈F2
孤立变量, 指只出现在ANF中线性部分的变量, 如
x
1
⊕
x
2
x
3
⊕
x
4
x
5
x_1 \oplus x_2x_3 \oplus x_4x_5
x1⊕x2x3⊕x4x5中的
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(X⊕xΔ)
可以证明:
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=x1⊕x2x3⊕x3⊕(x1⊕1⊕x2x3⊕x3⊕x3)=x3⊕1
下面的的
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Δ=(x1⊕x)⊕(x2⊕x)x3⊕x3=x1⊕x⊕x3x⊕x2x3⊕x3=(x3⊕1)x⊕x1⊕x2x3⊕x3
代数过渡形式(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(X⊕xΔ)=φi⊕(DΔφi)x. 通过引入过渡变量
α
i
和
β
i
α_i和 β_i
αi和βi ,我们将
φ
i
(
X
⊕
x
Δ
)
φ_i(X ⊕xΔ)
φi(X⊕xΔ) 表示为
α
i
⊕
x
β
i
α_i ⊕ xβ_i
αi⊕xβ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(X⊕xΔ) 可以表示为
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(α1⊕xβ1,α2⊕xβ2,⋯,αm⊕xβ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(X⊕xΔ)=g(Φ(X⊕xΔ))=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⊕Δ)=(x3⊕1,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)=(x1⊕x2x3⊕x3,x2⊕x3x4⊕x4,x3⊕x4x5⊕x5)确定
其余计算按上面的给出定义计算就行
算法
计算差分线性偏差
理论上,差分线性偏差可以由输出位的代数范式 (ANF) 确定,输入位作为变量. 然而,计算密码输出位的 ANF 在计算上是不可行的. 为了使其可行,我们计算它们的代数转换形式 (ATF) 而不是 ANF. 更准确地说,我们计算内部bits的差分代数转换形式 (DATF) 以及密码的输出bits,然后估计差分线性偏差.
下面先介绍过渡规则
过渡规则:对于布尔多项式
u
=
u
′
x
⊕
u
′
′
u = u' x ⊕ u''
u=u′x⊕u′′ 且
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′′)x⊕ATF(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
λout•C⊕λout•C=0,即
λ
o
u
t
•
E
(
P
)
⊕
λ
o
u
t
•
E
(
P
⊕
Δ
i
n
)
=
0
λ_{out} •E(P)⊕λ_{out} •E(P ⊕Δ_{in}) = 0
λout•E(P)⊕λout•E(P⊕Δin)=0. 表示
f
=
λ
o
u
t
•
E
f = λ_{out} • E
f=λout•E 给出
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)=X⊕xΔ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(i−1) 重写为
Y
′
(
i
−
1
)
⊕
x
Y
′
′
(
i
−
1
)
Y'^{(i-1)} ⊕ xY''^{(i-1)}
Y′(i−1)⊕xY′′(i−1),其中
Y
′
(
i
−
1
)
Y'^{(i-1)}
Y′(i−1) 和
Y
′
′
(
i
−
1
)
Y''^{(i-1)}
Y′′(i−1)均独立于
x
x
x,引入新的变量向量
α
(
i
−
1
)
和
β
(
i
−
1
)
α^{(i-1)} 和 β^{(i-1)}
α(i−1)和β(i−1),并记录表达式
α
(
i
−
1
)
=
Y
′
(
i
−
1
)
α^{(i-1)} = Y'^{(i-1)}
α(i−1)=Y′(i−1) 和
β
(
i
−
1
)
=
Y
′
′
(
i
−
1
)
β^{(i-1)} = Y''^{(i-1)}
β(i−1)=Y′′(i−1) 到一个方程组
Q
Q
Q。
算法1
这里解释一下算法1, 初始输入是
Y
(
0
)
=
X
⊕
x
Δ
i
n
Y^{(0)} = X ⊕ xΔ_{in}
Y(0)=X⊕xΔin, 经过轮函数以后得到的结果为
Y
(
1
)
Y^{(1)}
Y(1), 可以表示为
Y
′
(
i
−
1
)
⊕
x
Y
′
′
(
i
−
1
)
Y'^{(i-1)} ⊕ xY''^{(i-1)}
Y′(i−1)⊕xY′′(i−1), 然后应用过渡规则, 写成代数过渡形式
A
T
F
(
Y
(
1
)
,
x
)
=
α
(
i
−
1
)
⊕
x
β
(
i
−
1
)
ATF(Y^{(1)}, x) = α^{(i-1)} ⊕ xβ^{(i-1)}
ATF(Y(1),x)=α(i−1)⊕xβ(i−1)作为下一轮的输入, 依次迭代直到最后一轮, 每次的过渡变量和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∣p−1/2∣−Φ−1(1−2−a−1))
论文对密钥恢复的预计算遵循算法 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=0∣f∈QI}。 假设 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} 2−20, 但实验表明偏差为 2 − 2 2^{−2} 2−2, 明显更高.
通过 算法1 计算 Ascon 的 DATF
然后在4轮Ascon上分别应用 算法2 和 算法3 估计偏差
算法2得到偏差为
2
−
3
2^{−3}
2−3
算法3得到偏差为
2
−
2.365
2^{−2.365}
2−2.365
算法3比算法2和之前的相关工作更接近实验得到的偏差
2
−
2
2^{−2}
2−2
将密钥恢复算法 算法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}
2−60
08年 Dunkelman 等人测出 Serpent 简化轮变体(reduced round variants)的实验偏差为
2
−
57.75
2^{−57.75}
2−57.75
19年 Bar-On 等人使用 DLCT 重新计算判别器的偏差并获得为
2
−
57.68
2^{−57.68}
2−57.68
通过 DATF 技术对区分器的偏差进行分析, 得到
2
−
57.736
2^{−57.736}
2−57.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}
2−12.8
Banik 在14年提出基于差分引擎(Differential Engine)的方法对120轮的条件差分攻击估计的偏差为
2
−
18.13
2^{−18.13}
2−18.13
应用 算法1 和 算法2
对120条件差分Grain v1得到的偏差为
2
−
13.39
2^{−13.39}
2−13.39, 与实验值
2
−
12.8
2^{−12.8}
2−12.8相近
而且高于差分引擎得到的
2
−
18.13
2^{−18.13}
2−18.13
对125轮Grain v1得到的偏差为
2
−
20.77
2^{−20.77}
2−20.77
相比 Banik 的结果
2
−
24.78
2^{−24.78}
2−24.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, 还是记录一下个人的理解, 不然以后万一要用到又得重读一遍浪费时间.