5.7线性密码分析原理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档