130
应用科学学报
22卷
分析密码系统无疑是大有帮助的.比如BAA¨。攻击
需要有一定量的密钥,尤其是当系统中的各个LF—
SR级数增大时,密钥量需求随之增加,此时如果辅
以本文的差分分析方法,则可以保证密钥量的需求,
提高攻击成功的概率.
3.2攻击实例
为了更好地说明问题,下面举一个例子进行分析,主要目的是让大家对差分分析在序列密码分析中的应用有个感性的认识.这个例子是文献[7]中设计的一个密钥流序列.其方法是这样的:当用规级线性反馈移位寄存器的≠(2”~1)/,z种不同反馈组合中的某种反馈组合和某种初始状态产生的m序列达到一个周期时,通过另一个伪随机序列(可以是m序列)控制选择另一种反馈组合,并且将先前各级移位寄存器的末态作为产生新的m序列的各级移位寄存器的初态;当该m序列输出为一个周期时,又以此时各级移位寄存器的末态作为下一个具有不同反馈组合的以级线性反馈移位寄存器的初态,进入下一个m序列;如此循环,即可通过改变卵级线性反馈移位寄存器的反馈结构和改变各级移位寄存器的初值,产生周期非常长的伪随机序列.为方便起见,下面给出文献[7]中的新序列构成框图(如图
示):
图密钥流生成器
Fig.
Keystream
sequence
generator
仍旧延用文献[7]中的两个优序列,其中
fl(z)一z7+z+1,初态为1111111;f2(z)一z7+z3+1,初态为0000001.设控制序列也为m序列,g(z)一z2+z+1,初态为01.
由文献[7]中的结论,图中产生的密钥流序列的
周期T一(22—1)(27—1)一381.以下即为一个周期
的密钥流序列,记为K:
0000001000001100001010001111001000101100111010100111110100001110001001001101101011011110
万
方数据11000110100101110111001100101010111111100000010000011000010100011110010001011001110101001111101000011100010010011011010110111101100011010010111011100110010101011111110000111011110010110010010000001000100110001011101011011000001100110101001110011110110100001010101111101001010001101110001111111
现在不妨假设明文P为
000000000000000101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000000011001100110011001100101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
则密文C为
000000100000110lOlllll01101001110111100110111111001010010000111000100100110110101101111011000110100101110111001100101010111111111001110110000001110001001011000100001100100000011010111101001001000111001110000011101000110110000111101110110011000000001010100101101110100111100111000101011101110011011110111110001101011001100000011011001011100001011111111010111100000100111011011010101
现在暂且不讨论其他情况下的攻击,只考虑唯密文攻击.对于密文序列C,我们先把它按f。(z)的周期127划分为3组子序列,分别设为a,b,C.对这三组子序列分别进行移位差分,得到第一类差分序
列,设为△口,△6,△f.然后用B—M(Berlekamp—
Massey)算法分别求序列△口,△6,△f的极小多项式,具体算法如下:
Stepl把第一类差分序列分成127—2n+1(咒一7)个截断序列,对每个截断序列用B—M算法求出
其反馈多项式.
Step2统计所有截断序列的反馈多项式出现的次数,找出出现次数最多的那个反馈多项式.
StepS
用step2中找出的反馈多项式生成一
条序列,与第一类差分序列进行符合.若符合率较高(比如大于60%),则我们可以基本判断该反馈多项式即为所求.