Geffe序列生成器
Geffe序列生成器由三个长度为L1,L2,L3的最长LFSR定义组成,其中L1,L2,L3两两互素其中LFSR2作为控制生成器使用。其非线性组合函数为:
f
(
x
1
,
x
2
,
x
3
)
=
x
1
x
2
⊕
x
2
x
3
⊕
x
3
f(x_1,x_2,x_3)=x_1x_2\oplus x_2x_3\oplus x_3
f(x1,x2,x3)=x1x2⊕x2x3⊕x3
其密钥流周期为 (2L1-1) (2L2-1) (2L3-1)
线性复杂度为 L=L1L2+L2L3+L3
结构图为
+++
当LFSR2输出为1时,LFSR2与LFSR1相连接;当LFSR2输出0时,LFSR2与LFSR3相连接。若设LFSRi的输出序列为(a(i) k}(i=1,2,3),则输出序列(bk)可以表示为
b
k
=
a
k
1
a
k
2
+
a
k
3
a
k
1
‾
=
a
k
1
a
k
2
+
a
k
3
a
k
2
+
a
k
3
b_k=a_k^1a_k^2+a_k^3\overline{a_k^1}=a_k^1a_k^2+a_k^3a_k^2+a_k^3
bk=ak1ak2+ak3ak1=ak1ak2+ak3ak2+ak3
Geffe生成器是否能够抵御相关攻击?为什么?
Geffe生成器实际上认为是不够安全的。
虽然这个发生器从理论上来看似乎很好,但是实质上你是一个很弱的密码,不能够抵御相关的攻击。
这是因为发射器的输出有75%与LFSR1的时间系数相同。因此若已知LFSR的级数n1和各级的系数c1,c2,…,cn1,便能猜出LFSR1的初始值和寄存器所输出的序列,就可猜出LFSR2 的输出中与这个发射器的相同的次数。如果猜对了,这两个序列相同的概论就是75%,若猜错了,两个序列相同的概率为50%。
类似的 ,发射器输出与LFSR3的输出相等的概论为75%,有了这种相关性,密钥序列发生器很容易被破译。
例如,如果三个本原多项式都是三项,其中最大长度为n,那么仅需要37n的一段输出序列就能够重构这三个LFSR的内部状态。