反馈移位寄存器
移位寄存器是流密码产生密钥流的一个主要组成部分。
GF(2)上一个n级反馈移位寄存器由n个二元寄存器与一个反馈函数f(a1,…,an)组成
- a1到an占一个bit,都是一个寄存器
- 工作方式:首先计算反馈函数,然后把a1输出,a2移到a1,an移到an-1,接着把反馈函数计算的值移到an,依次循环下去
- 这些级的内容构成该反馈移位寄存器的状态,每一状态对应GF(2)上的一个n维向量,共有2n种,因为每个寄存器的内容只能是0或1
- a1到an的初始状态由用户确定
- 反馈函数f(a1,…,an)是布尔函数,自变量和因变量只取0和1
如图是一个3级反馈移位寄存器,其初始状态是(a1,a2,a3)=(1,0,1)
输出为:
线性反馈移位寄存器LFSR
线性反馈移位寄存器的反馈函数是一个线性函数
- an和cn只能取0或者1
输出序列满足:
下图是一个5级线性反馈移位寄存器,其初始状态为(a1,a2,a3,a4,a5)=(1,0,0,1,1)
我们可以计算出反馈函数:a5+t=a3+t+at,t=1,2,…
a6=0
LFSR性质
- c1,…,cn中至少有一个不为0,总是假定cn=1
- 输出序列的周期=状态周期
- 选择合适的反馈函数可使序列的周期达到最大值2n-1,周期达到最大值的序列称为m序列