密码分析(二):线性密码分析



在1993年欧洲密码年会上,日本学者Matsui提出对DES算法的一种新的攻击方法,即线性密码分析。
与差分密码分析不一样的是,线性密码分析属于已知明文攻击,它通过研究明文和密文之间的线性关系来恢复密钥。目前线性密码分析和差分密码分析已经成为了攻击迭代型分组密码最为典型的两种方法。

一、已知明文攻击(known-plaintext attack)

密码分析者不仅可以得到一些消息的密文,而且也知道这些消息的明文。分析者的任务就是就是用加密信息推出用来加密的密钥或导出一个算法,此算法可以对使用相同密钥加密的任何消息进行解密。

已知: P 1 , C 1 = E k ( P 1 ) , P 2 , C 2 = E k ( P 2 ) , . . . , P i , C i = E k ( P i ) P_1,C_1=E_k(P_1),P_2,C_2=E_k(P_2),... ,P_i,C_i=E_k(P_i) P1,C1=Ek(P1),P2,C2=Ek(P2),...,Pi,Ci=Ek(Pi)

推导出:密钥 K K K,或从 C i + 1 = E k ( P i + 1 ) C_{i+1}=E_k(P_{i+1}) Ci+1=Ek(Pi+1)推导出 P i + 1 P_{i+1} Pi+1的算法。

二、线性密码分析基本原理

线性密码分析属于已知明文攻击方法,它通过寻找明文和密文之间的一个“有效”的线性逼近表达式,将分组密码与随机置换分开,并在此基础上进行恢复密钥攻击。

这部分内容会涉及到很多的定义,如果觉得难以读下去的小伙伴,可以先读下面一部分,当下面需要到上面的定义的时候,再返回来看一下,会读起来没有那么的难。或者参考《分组密码的攻击方法与实例分析》(李超 孙兵 李瑞林 著)这本书。

定义2.1(内积) ( a , b ) ∈ { 0 , 1 } n , a = ( a 1 , a 2 , ⋯   , a n ) , b = ( b 1 , b 2 , ⋯   , b n ) (a,b) \in \{0,1\}^n,a=(a_1,a_2,\cdots ,a_n),b= (b_1,b_2,\cdots,b_n) (a,b){ 0,1}n,a=(a1,a2,,an),b=(b1,b2,,bn),向量 a a a b b b的内积定义为 a ⋅ b = ⊕ i = 1 n a i ⋅ b i a\cdot b=\overset{n} {\underset{i=1}{\oplus}}a_i \cdot b_i ab=i=1naibi,其中, a i ⋅ b i a_i \cdot b_i aibi表示比特 a i a_i ai b i b_i bi的与运算,即二元域的乘法运算。

定义2.2(线性掩码) X ∈ { 0 , 1 } n , X X \in \{0,1\}^n,X X{ 0,1}n,X的线性掩码定义为某个向量 Γ X ∈ { 0 , 1 } n \Gamma X \in \{0,1\}^n ΓX{ 0,1}n Γ X \Gamma X ΓX X X X的内积 Γ X ⋅ X \Gamma X \cdot X ΓXX代表 X X X某些分量的线性组合,即 Γ X ⋅ X = ⊕ i , Γ X i = 1 X i \Gamma X \cdot X = \underset{i, \Gamma X_i = 1}{\oplus}X_i ΓXX=i,ΓXi=1Xi

定义2.3(线性逼近表达式) 设迭代分组密码的轮函数为 F ( x , k ) F(x,k) F(x,k),给定一对线性掩码 ( α , β ) (\alpha,\beta) (α,β),称 α ⋅ x ⊕ β ⋅ F ( x , k ) \alpha \cdot x \oplus \beta \cdot F(x,k) αxβF(x,k) F ( x , k ) F(x,k) F(x,k)的线性逼近表达式,同样称 α ⋅ x ⊕ β ⋅ E ( x , k ) \alpha \cdot x \oplus \beta \cdot E(x,k) αxβE(x,k)为分组密码 E ( x , k ) E(x,k) E(x,k)的线性逼近表达式。

假设 p ( α , β ) = P r o b X , K { α ⋅ X = β ⋅ F ( X , K ) } p(\alpha,\beta)=\underset{X,K}{Prob}\{\alpha\cdot X = \beta \cdot F(X,K) \} p(α,β)=X,KProb{ αX=βF(X,K)},则 p p p表示线性逼近表达式 ( α , β ) (\alpha,\beta) (α,β),称 α ⋅ x ⊕ β ⋅ F ( x , k ) = 0 \alpha \cdot x \oplus \beta \cdot F(x,k)=0 αxβF(x,k)=0的概率。在线性密码分析中一般采用偏差、相关性或势的概念来描述线性逼近表达式的概率特性,依次定义为
ε F ( α , β ) = p ( α , β ) − 1 2 C o r F ( α , β ) = 2 p ( α , β ) − 1 P o t F ( α , β ) = ( p ( α , β ) − 1 2 ) 2 \varepsilon _F(\alpha,\beta) = p(\alpha,\beta) - \frac{1}{2} \\ Cor_F(\alpha,\beta) = 2p(\alpha,\beta) - 1 \\ Pot_F(\alpha,\beta) = (p(\alpha,\beta) - \frac{1}{2})^2 εF(α,β)=p(α,β)21CorF(α,β)=2p(α,β)1PotF(α,β)=(p(α,β)21)2

由于,我们的机器内部都是以二进制存储的,所以这些定义呢,是对于二进制 即二元域上的定义。

三、实例

能读到这里的小伙伴非常的厉害了。返回去看了一下,我觉得呢,嗯~,有点难理解。但是,这些都是很有必要的,我们的分析是需要用到他们的,所以,你懂的。

了解了线性密码分析的基本原理,我相信大部分人也跟我一样似懂非懂,很虚,感觉一点儿也不连贯,不是很好理解,那么接下来我就使用S盒来讲解一下线性分析方法。

依然使用我在差分密码分析中用到的S盒,还是给大家放出来。

x x x 0 1 2 3 4 5 6 7 8 9
S [ x ] S[x] S[x] 2 6 8 7 1 4 9 5 3 0

3.1 S盒线性逼近表

Matsui对DES算法进行线性分析的关键在于观察到由S盒导出的线性逼近表达式的偏差特性,并给出了线性逼近表的概念。
定义3.1(S盒的线性逼近表) m , n ∈ N m,n \in N m,nN,从 F 2 m F_2^{m} F2m F 2 n F_2^{n} F2n的非线性映射(也称为S盒)记为 S : F 2 m → F 2 n S:F_2^{m} \rarr F_2^{n} SF2mF2n 。给定 α ∈ F 2 m , β ∈ F 2 n \alpha \in F_2^{m},\beta \in F_2^{n} αF2m,βF2n,定义 I N S ( α , β ) = { x ∈ F 2 m : α ⋅ x = β ⋅ S ( x ) } , N S ( α , β ) = # I N S ( α , β ) . IN_S(\alpha,\beta) = \{x \in F_2^{m}: \alpha \cdot x = \beta \cdot S(x) \},\\ N_S(\alpha, \beta) = \#IN_S(\alpha,\beta). INS(α,β)={ xF2m:αx=βS(x)},NS(α,β)=#INS(α,β).

由于我们的S盒不是使用二进制,在FSE 2006上,Granboulan等人1定义了当分组不是比特串时的一个通用的框架。使用到的符号表示的含义:

Σ               数字集合 { 0 , 1 , 2 , ⋯   , N − 1 } \Sigma \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{数字集合} \{0,1,2,\cdots,N-1\} Σ              数字集合{ 0,1,2,,N1}
N               数字集合的大小 ∣ Σ ∣ N \ \ \ \ \ \ \ \ \ \ \ \ \ \ \text{数字集合的大小} |\Sigma| N              数字集合的大小Σ
定义3.2 (分布向量即线性逼近)
Λ 0 ( S ) { a , b } = ( # { x ∈ Σ ∣ ⟨ a , b ∣ x , S ( x ) ⟩ = u } ) u ∈ { Z } , w h e r e ⟨ a , b ∣ x , y ⟩ = ⟨ a ∣ x ⟩ − ⟨ b ∣ y ⟩ \Lambda _0(S)_{\{a,b\}}=(\# \{x \in \Sigma | \langle a,b|x,S(x) \rangle =u\})_{u \in \{Z\}},where \langle a,b|x,y \rangle = \langle a|x \rangle - \langle b|y \rangle Λ0(S){ a,b}=(#{ xΣa,bx,S(x)=u})u{ Z},wherea,bx,y=axby ⟨ a , x ⟩ 表 示 a 和 x 的 标 量 积 \langle a,x \rangle 表示 a 和x的标量积 a,xax

定义 3.3 随机行为
f a , b ; u = 1 N # ( x , y ) ∈ Σ × Σ ∣ ⟨ a , b ∣ x , y ⟩ = u f_{a,b;u}=\frac 1 N \#(x,y) \in \Sigma \times \Sigma| \langle a,b|x,y \rangle =u fa,b;u=N1#(x,y)Σ×Σa,bx,y=u

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网安小蔡不辅

在千山万水人海里相遇是缘分

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值