5.7线性密码分析原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七节线性密码分析原理
1
2
对随机给定的明文P 和相应的密文C 上面的等式成立的概率p ≠1/2.
线性密码分析的方法是寻找一个给定密码算法的具有下列形式的“有效的”线性表达式
P [i 1, i 2,…, i a ] ⊕ C [j 1, j 2,…, j b ] = K [k 1, k 2,…, k c ] (4.11)这里i 1, i 2,…, i a ; j 1, j 2,…, j b 和 k 1, k 2,…, k c , 表示固定的比特位置。
需要解决的问题
1.是否存在线性优势?
2.如何求单轮变换的线性优势?
3.如何求多轮变换的线性优势?
3
我们需要的是等式成立的概率具有非均匀的分布,所以用⏐p −1/2⏐来刻画等式的有效性(定义εi = p i− 1/2为偏差).
4
我们把最有效的线性表达式(也就是⏐p −1/2⏐是最大的)称作最佳线性逼近式, 相应的概率p称作最佳概率. 为了计算等式(4.11)成立和有效的概率, 我们先给出一些理论上要用到的结果.
5
6
设 X 1, X 2, …, X k 是取值于集合{0,1}的独立随机变量. 设p 1, p 2,….都是实数, 且对所有的i , i =1,2,…, k 有0 ≤ p i ≤ 1, 再设Pr[X i = 0] = p i , 则Pr[X i = 1] = 1−p i .对取值于{0,1}的随机变量, 用分布偏差来表示它的概率分布. 随机变量X i 的偏差定义为
12
i i p ε=− 堆积引理
7
引理(堆积引理. Piling-up lemma ) 设1,......,k i i X X 是独立的随机变量, 12......k i i i ε表示随机变量X i 1⊕ X i 2-⊕…⊕X i k 的偏差, 则
121 (12)
k j k k i i i i j εε−==∏ 证明:用数学归纳法。
首先k = 2时……
8
推论 设1,......,k i i X X 是独立的随机变量,
12......k
i i i ε表示随机变量X i 1⊕ X i 2⊕…⊕X i k 的偏差, 若对某个j 有0j i ε=, 则12......0k i i i ε=.
注:引理4.1只在相关随机变量是统计独立的情况下才成立.
利用堆积引理, 我们可以将每轮变换中偏差最大的线性逼近式进行组合, 组合后的所有轮变换的线性逼近式, 也将拥有最佳的偏差, 即寻找分组密码的最佳线性逼近式.
9
S-盒的线性逼近
由上述分析我们知道, 分组密码的最佳线性逼近式的寻找, 归结为每轮线性逼近式的寻找, 而每轮的变换中, 除了非线性变换(即S-盒)部分, 线性部分是自然的线性关系, 也就是说, 每轮线性逼近式的寻找, 只需寻求S-盒部分的最佳线性逼近式.
10
11
考虑如下一个S-盒:{0,1}{0,1}m n
s π→(我们并未假定s π是一个置换, 甚至也未假定m = n ). m 重输入X = (x 1, x 2, …, x m ) 均匀随机地从集合{0,1}m
中选取,这就是说, 每一个坐标x i 定义了一个随机变量i X , i X 取值于{0,1}, 并且其偏差0i ε=即
(0)(1)1/2i i p X p X ====.
12
进一步, 假设这m 个随机变量相互独立, n 重输出Y = (y 1, y 2,…, y n )中每一个坐标y i 定义了一个随机变量i Y , i Y 取值于{0,1}. 这n 个随机变量一般来说不是相互独立的, 与X i 也不相互独立.
13
现在考虑计算如下形式的随机变量的偏差值:
()()1
1
m m i i j j i i a X b Y ==⊕⊕⊕
其中a = (a 1,…, a m )和b = (b 1,…, b n )分别为m 和n 维随机向量, a i 和b j 为0或1.
14
设N L (a , b )表示满足如下条件的二元m + n 组(x 1,x 2,…, x m , y 1,…, y n )的个数:
(y 1,…, y n ) = πs (x 1, x 2,…, x m )(记为条件B )且
1
1
()()0m
n
i i j j i j a X b Y ==⊕=⊕⊕(记为条件A )
则
P (A / B) = P (A, B) / P(B) = (N L (a , b ) / 2
m +n
) / (2m / 2
m +n
)
= N L (a , b ) / 2m
,
15
对于一个具有输入a 与输出b 的随机变量
()()
1
1
m m i i j j i i a X b Y ==⊕⊕⊕的偏差计算公式为:
ε(a , b )= N L (a , b )/2m
−1/2
正是由于S-盒的ε(a , b )的不同, 使得线性分析的实现成为可能.
下面举一个例子。
16
例:设S-盒4
4
:{0,1}{0,1}s π→。在下表中,给出了8个随机变量1414,......,,,......,X X Y Y 所有可能的取值:输入z 和输出πs (z )都以十六进制表示(0↔(0,0,0,0), 1↔ (0,0,0,1), …,…,F ↔(1,1,1,1)):
z 0 1 2 3 4 5 6 7 πs (z )
E 4 D 1 2
F B 8
z 8 9 A B C D E F πs (z )
3 A 6 C 5 9 0 7