密码分析技术 - 复杂度分析

密码分析技术 - 复杂度分析

差分分析

CipherFour的4+1差分分析。4轮区分器: P r ( d i n → 4 r d o u t ) > 1 / 2 4 Pr(din \stackrel{4r}{\rightarrow} dout) > 1/2^{4} Pr(din4rdout)>1/24

S/N:

m:明密文对个数

p:差分概率,81/1024

α \alpha α:去噪后,每个方程的解数,4

β \beta β:去噪比例,7387 / 216

k:密钥长度,4

S / N = m p m β α 2 k = p 2 k α β = 2.56 S/N = \dfrac{mp}{m\beta\frac{\alpha}{2^k}} = \dfrac{p2^k}{\alpha\beta} = 2.56 S/N=mβ2kαmp=αβp2k=2.56

D:

c:正确对个数

1 ≤ S / N ≤ 2 1 \le S/N \le 2 1S/N2时,c = 20~40

S / N ≥ 100 S/N \ge 100 S/N100时,c = 3~4

D = c p \dfrac{c}{p} pc

T:

选取t个明密文对,过滤出 t’ = t β t\beta tβ

每一对明密文,对一个4-bits密钥分组计数

共计4个分组

T = 4 × t ′ × 2 4 4 \times t' \times 2^4 4×t×24

M:

存储明密文对:t

密钥计数器: 4 × 2 4 4 \times 2^4 4×24

截断差分

Cipherfour 的1+3+1截断差分分析。3轮区分器: P r ( S d i n → 3 r S d o u t ) = 1 Pr( S_{din} \stackrel{3r}{\rightarrow} S_{dout} ) = 1 Pr(Sdin3rSdout)=1

S/N:

s:结构体个数

p:截断差分概率,等于1

β \beta β:去噪比例,等于1

k:密钥长度,第1轮4-bits,第5轮4-bits

一个结构体,提供 ( 2 2 4 ) = 2 7 ({}_2^{2^4}) = 2^7 (224)=27对明密文

猜定第一轮密钥,平均得到 2 7 / 2 4 = 2 3 2^7/2^4 = 2^3 27/24=23对明密文

因此,S = 23 s

共计27s个8-bits方程,共计4+4*4 = 20-bits密钥

一个方程可以得到: 2 20 / 2 8 = 2 12 2^{20}/2^8 = 2^{12} 220/28=212个解

共计: 2 7 s × 2 12 2^7s \times 2^{12} 27s×212个解

共计:220个密钥,平均计数:N = 2 19 s / 2 20 = s / 2 2^{19}s / 2^{20} = s/2 219s/220=s/2

S / N = S N = 2 4 S/N = \dfrac{S}{N} = 2^4 S/N=NS=24

D:

c:正确对个数

1 ≤ S / N ≤ 2 1 \le S/N \le 2 1S/N2时,c = 20~40

S / N ≥ 100 S/N \ge 100 S/N100时,c = 3~4

D = c p = c \dfrac{c}{p} = c pc=c

T:

第一轮选定一个4-bits密钥,对结构体进行“过滤”,

2 7 s 2^7s 27s次S-box,得到约 2 3 s 2^3s 23s对明密文

最后一轮对密文解密,4组密钥,每组有24个密钥

4 × ( 2 3 s × 2 4 ) 4 \times (2^3s \times 2^4) 4×(23s×24)次S-box

T = 27s + 29s

M:

存储明密文对:24s

密钥计数器: ( 4 + 1 ) × 2 4 (4+1) \times 2^4 (4+1)×24

不可能差分

Fesitel 结构的5+1不可能差分分析。5轮区分器: P r ( ( α , 0 ) → 5 r ( 0 , α ) ) = 0 Pr( (\alpha,0) \stackrel{5r}{\rightarrow} (0,\alpha) ) = 0 Pr((α,0)5r(0,α))=0

数学工具

x → 0 , ( 1 + 1 x ) x = 1 x \rightarrow 0,(1+\frac{1}{x})^x = 1 x0,(1+x1)x=1

x → o o , ( 1 + 1 x ) x = e x \rightarrow oo,(1+\frac{1}{x})^x = e xoo,(1+x1)x=e

x → 0 , ( 1 + x + x 2 + . . . ) = 1 1 − x x \rightarrow 0, (1+x+x^2+...) = \dfrac{1}{1-x} x0,(1+x+x2+...)=1x1

D:

b:明密文分组长度

s:结构体个数

每个结构体有 2 b / 2 2^{b/2} 2b/2个明文

t:密钥长度

2 b / 2 2^{b/2} 2b/2个明文可以组成 ( 2 2 b / 2 ) = 2 b − 1 ({}_2^{2^{b/2}}) = 2^{b-1} (22b/2)=2b1

去噪,要满足明文差分与密文差分都为 α \alpha α,若密文差分均匀分布,得到: 2 b − 1 / 2 b / 2 = 2 b / 2 − 1 2^{b-1} / 2^{b/2} = 2^{b/2-1} 2b1/2b/2=2b/21

一个b/2-bits方程,得到 $\dfrac{2t}{2{b/2}} $个解,不可能是正确密钥,排除掉

令: ( 2 t − 1 ) ( 1 − 2 t − 2 b / 2 2 t ) 2 b / 2 − 1 s = ( 2 t − 1 ) e − 0.5 s = ( 2 t − 1 ) 0.6 1 s < 1 (2^t-1)(1-\dfrac{2^{t-2^{b/2}}}{2^t})^{2^{b/2-1}s} = (2^t-1)e^{-0.5s} = (2^t-1)0.61^s< 1 (2t1)(12t2t2b/2)2b/21s=(2t1)e0.5s=(2t1)0.61s<1

s > 2 t × l n 2 s > 2t \times ln2 s>2t×ln2

D = 2 b / 2 s 2^{b/2}s 2b/2s

T:

采样: s 2 b / 2 s2^{b/2} s2b/2次加密

去噪: 2 × s 2 b / 2 2 \times s2^{b/2} 2×s2b/2次差分

恢复密钥,每个结构体可以排除一些密钥,剩余e-0.5

2 b / 2 Σ i = 1 s 2 t e − 0.5 i = 2 t 2 b / 2 / ( 1 − e − 0.5 ) = 2 t + b / 2 + 1.34 2^{b/2}\Sigma_{i=1}^{s}2^te^{-0.5i} = 2^t2^{b/2} / (1-e^{-0.5}) = 2^{t+b/2+1.34} 2b/2Σi=1s2te0.5i=2t2b/2/(1e0.5)=2t+b/2+1.34

M:

一共2t个密钥,各对应一个1-bit计数器

回飞棒攻击

原型 选择明文(m1,m2),选择密文(c3,c4),统计(m3,m4)差分为 α \alpha α的频率:

增强型 选择明文(m1,m2)与(m3,m4):

矩形攻击增强型类似,不要求 β = β ′ \beta = \beta' β=β,考虑所有的 α \alpha α 经 ENC1 可以到达的 β , β ′ \beta,\beta' β,β

  1. 选择(m1,m2)与(m3,m4),满足差分为 α \alpha α
  2. 统计(c1,c3)与(c2,c4)差分同时 γ \gamma γ的频率

线性分析

CipherD 的4+1线性分析。4轮区分器: P r ( α → 4 r β ) = 0.5 + ϵ Pr( \alpha \stackrel{4r}{\rightarrow} \beta ) = 0.5+\epsilon Pr(α4rβ)=0.5+ϵ

D:

Ps:成功率

l l l:待破解密钥的长度

r:选取计数器前2r高的密钥

ϵ \epsilon ϵ:线性壳的偏差

N = ( ϕ − 1 ( P s ) + ϕ − 1 ( 1 − 2 − l + r − 1 ) 2 ) 2 × 1 ϵ 2 N = (\dfrac{\phi^{-1}(Ps) + \phi^{-1}(1-2^{-l+r-1})}{2})^2 \times \frac{1}{\epsilon^2} N=(2ϕ1(Ps)+ϕ1(12l+r1))2×ϵ21

T:

最后一轮对密文解密,4组密钥,每组有24个密钥

T = 4 × ( N × 2 4 ) 4 \times (N \times 2^4) 4×(N×24)次S-box

M:

存储明密文对:N

密钥计数器: 4 × 2 4 4 \times 2^4 4×24

零相关线性分析

AES-192 的1+4+1零相关线性分析。4轮区分器: C o r ( α → 4 r β ) = 0 Cor( \alpha \stackrel{4r}{\rightarrow} \beta ) = 0 Cor(α4rβ)=0

D:

选取一半的明文

D = 2n-1

T:

第一轮猜测4字节密钥,最后一轮猜测4字节密钥,共8字节

D × 2 8 ∗ 8 D \times 2^{8*8} D×288次S-box运算

然后,换区分器,计算最后一轮的另外4字节密钥

D × 2 4 ∗ 8 D \times 2^{4*8} D×248次S-box运算

再换区分器,计算最后一轮的另外4字节密钥

D × 2 4 ∗ 8 D \times 2^{4*8} D×248次S-box运算

穷举最后一轮剩余4字节密钥,只需要2个明密文对

2 × 2 192 − 64 − 32 − 32 = 2 65 2 \times 2^{192-64-32-32} = 2^{65} 2×2192643232=265次加密

6轮加密,每一轮有16个S盒运算;每次破解,要计算8次S-box

T = D × ( 2 64 + 2 32 + 2 32 ( 6 ∗ 16 / 8 ) + 2 65 T = \dfrac{D \times (2^{64} + 2^{32} + 2^{32}}{(6*16/8)} + 2^{65} T=(616/8)D×264+232+232+265 次6轮加密

M:

存储明密文对:D

密钥计数器: ( 4 + 16 ) × 2 8 (4+16) \times 2^8 4+16×28 可忽略

积分攻击

AES-192 的3+2积分攻击。区分器: P r ( [ A , C , C , . . . ] → 3 r [ B , B , B , . . . ] ) = 1 Pr([A,C,C,...] \stackrel{3r}{\rightarrow} [B,B,B,...]) = 1 Pr([A,C,C,...]3r[B,B,B,...])=1

D:

要恢复5字节密钥,40-bits

一个结构体,若区分器尾部的积分以均匀概率到达s=0,

那么一个结构体包含8-bits信息

需要6个结构体,可以确定唯一解

D = 6 × 2 8 6\times2^{8} 6×28

T:

可以通过更换区分器,分4次,恢复最后一轮的全部16字节密钥。

每次计算,需要计算5次S-box。

T = 4 × 5 × ( 2 8 × 2 40 + 2 8 × 2 32 + . . . + 2 8 × 2 ) = 2 50 4 \times 5 \times (2^8 \times 2^{40} + 2^8 \times 2^{32} + ... + 2^8 \times 2 ) = 2^{50} 4×5×(28×240+28×232+...+28×2)=250 次S-box

M:

存储明密文:D

存储(处理完第一个结构体后的)密钥:232

中间相遇攻击

AES 的1+4+2中间相遇攻击。

区分器: P r ( [ a 11 , C , C , . . . ] → 3 r [ c 11 , C , C , . . . ] ) = 1 Pr([a_{11},C,C,...] \stackrel{3r}{\rightarrow} [c_{11},C,C,...]) = 1 Pr([a11,C,C,...]3r[c11,C,C,...])=1

其中 a 11 a_{11} a11 c 11 c_{11} c11有映射表,映射表与25个字节有关,矩阵大小为: 256 × 2 25 × 8 256 \times 2^{25 \times 8} 256×225×8

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EIoWhkLx-1606801824580)(D:\Typora\My.jpg\f10.png)]

D:

a 11 a_{11} a11是活跃字节,猜定K(1),然后再猜Kinit,选择明文。

为了恢复Kinit,最终需要全部的4字节的活跃集。

D = 2 4 × 8 2^{4 \times 8} 24×8

T:

可以更换区分器,恢复全部的最后一轮的16字节密钥。

预计算4个映射表: 4 × 256 × 2 25 × 8 = 2 210 4 \times 256 \times 2^{25 \times 8} = 2^{210} 4×256×225×8=2210

在线阶段,分4次每次恢复4+1+1+4=10字节的密钥:

4 × 10 × 2 80 × 256 = 10 × 2 90 4 \times 10 \times 2^{80} \times 256 = 10 \times 2^{90} 4×10×280×256=10×290 次 S-box 运算

M:

存储4个映射表: 4 × 256 × 2 25 × 8 = 2 210 4 \times 256 \times 2^{25 \times 8} = 2^{210} 4×256×225×8=2210

存储明密文:D

生日攻击

k-SUM 问题的碰撞

D:

为了找到一个碰撞,选取k个大小 2 n / k 2^{n/k} 2n/k的随机集合。

当然,也可以是同一个集合。

D = k 2 n / k k2^{n/k} k2n/k

T:

理论下界:2n/k

要保证最顶上的集合至少有一个元素,

且每次两两 l − b i t s l-bits lbits部分碰撞的耗时尽可能少

k-SUM算法的复杂度给出了上界: k 2 n / ( 1 + l o g 2 ( k ) ) k2^{n/(1+log_2(k))} k2n/(1+log2(k))

当k= 2 n 2^{\sqrt{n}} 2n 时,为 2 2 n 2^{2\sqrt{n}} 22n ,亚指数级

M:

要保证最顶上的集合至少有一个元素,

且每次两两 l − b i t s l-bits lbits部分碰撞的耗时尽可能少

存储各个集合,最底层的占主体: k 2 n / ( 1 + l o g 2 ( k ) ) k2^{n/(1+log_2(k))} k2n/(1+log2(k))

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值