视频
每个 LFSR 为 g(x(i)) 提供一个位的输入。只要输入向量序列平衡且周期很大,乱数序列 di 也很可能平衡且周期很大。
控制-选择变换:通过 x2 控制输出 x1 或 x3。
要求:三个输入均为本原且级数互不相同。
该乱数序列是平衡的,且其周期是三个输入 LFSR 的周期乘积。
设非线性组合模型由 n 个本原 LFSR 组成,它们的级数 L1,L2,...,Ln 两两不同且都大于 2,其非线性组合函数是代数正规型(二元域上的多元多项式函数表示),表示为 g(x1,x2,...,xn) 的布尔函数,则乱数序列的线性复杂度为 g(L1,L2,...,Ln)。
其中 g(L1,L2,...,Ln) 的运算是将 g(x1,x2,...,xn) 中的模 2 加和乘法都换成整数~和~。
则 Geffe 生成器的线性复杂度为 g(L1,L2,L3)=L1L2+(L2+1)L3 。
Boole 函数的代数正规型表示:
g(x)=a∈Z2n⨁caxa=定义a∈Z2n⨁cax1a1x2a2...xnan
其中∀a=(a1,a2,...,an)∈Z2n,ca∈{0,1},x1a1是x1的a1的次方。
g(x)的次数(使得系数ca=0的最大的a):
max{wt(a):a∈Z2n且ca=0}
向量 a 的重量:
wt(a)=a1+a2+...+an
设 g(x) 是代数正规型表示,定义 x&a=(a1x1,a2x2,...,anxn) (逐比特与运算)。则 ∀a∈Z2n 都有
ca=x∈Z2n且x=x&a⨁g(x)
特别地,有
c11...1=x∈Z2n且x=x&a⨁g(x)
再限定 x的第k+1,k+2,...,n分量全是0,则g(x)退化为一个k元布尔函数
f(x1,...,xk)=g(x1,...,xk,0,0,...,0)
(等价于x=x&(1,...,1,0,...,0) )
此时,c11...10...0就是k元布尔函数f(x1,...,xk)最高次项的系数。
设 n≥2,且 n 元 Boole 函数是平衡的,则其次数 ≤n−1。
先攻击一部分密钥比特,再借此攻击其他密钥比特。
借助乱序与部分 LFSR 输出序列之间的相关性,先攻击一个或数个 LFSR 的初态,然后再借此攻击其他 LFSR 的初态。
若相等个数n比总信号个数N,Nn≈43,则为初态;若Nn≈43则不为初态。
如何对抗这种攻击?
使少量 LFSR 输出与乱数不存在相关性(相互独立)。
设f(x1,x2,...,xn)是一个Boole函数,X1,X2,...,Xn是相互独立且都服从均匀分布的二元随机变量。若f对任意m个不同的随机向量(Xi1,Xi2,...,Xin)独立,则f是m阶相关免疫函数。
其本质在于不可能利用输出获取任何 m 个输入变量组的信息。
f(x1,x2,...,xn)=x1⊕x2⊕...⊕xn
n元Boole函数f(x)是m阶相关免疫函数⇔对重量≤m的二元非零向量a,都有
W(f)(a)=0
(实际上也=p(f(X)⊕a⋅X=0)−p(f(X) oplusa⋅X=1) 取零概率减取一概率,用全概率公式可转 Walth 谱)
设n元Boole函数g(x)是m阶相关免疫函数,则g(x)的次数≤n−m;又若g(x)为平衡函数,则当m≤n−2,g(x)的次数≤n−m−1。
证明上,令 t=n−wt(a) 即 x 中 0 的个数,wt(a)>n−m,故t<m,则 ca=[2n−tp(g(ξ)=1∣ξ1=ξ2=...=ξt=0)]mod2=[2∗#{x∈Z2n:g(x)=1,x1=x2=...=xi+1=0}]mod2=0。