学习了一下LFSR
一个LFSR由若干时钟存储元件(触发器)和一个反馈路径组成。存储元件的数目即为LFSR的度,即一个拥有m个存储元件的LFSR可称为“度为m”。反馈网络计算位移寄存器中某些触发器的XOR和,并将其作为上一个触发器的输入。
举个简单的LFSR例子:
图为拥有三个触发器FF0,FF1,FF2的LFSR,即此LFSR的度为3,反馈路径如图所示,内部状态用si表示。在每个时钟滴答内,内部状态会向右移动一位。最右边为LFSR的输出位,最左边位输入位。输入位的状态是在反馈路径中计算的,它是前面时钟周期中一些触发器的XOR和。
假设初始状态s0=0、s1=0、s2=1,则计算可得此LFSR产生的序列为0100111,周期长度为7
据此可写出计算LFSR输出位的公式:
假设初始状态位s0、s1、s2,可得
这个例子非常简单,但阐明了LFSR的原理,接下来看看通用的LFSR
1.LFSR的数学描述
这张展示了一个度为m的LFSR,这个LFSR拥有m个可能的反馈位置,触发器与反馈位置通过XOR连接。之所以将反馈位置称为“可能”,是因为每条反馈路径的活跃与否取决于p0,p1,p2,...,pm-1:
- 如果pi=1(关闭开关),此反馈是活跃的
- 如果Pi=0(打开开关),对应触发器的输出将不会反馈
于是可以将一个触发器的输出通过输出值与对应系数的乘积来表示,即pi*si
假设某个LFSR的初始加载值为s0,s1,s2,...,sm-1,则下一个输出位可通过触发器输出值与对应系数的乘积的XOR和表示:
2.关于LFSR的其它属性
LFSR通常用以下多项式来指定:反馈系数向量为(pm-1,pm-2,pm-3,...,p0)的LFSR可以表示为以下多项式:
当LFSR拥有最大长度(即周期)时,对应的的反馈系数向量多项式被称为本原多项式。对于一个给定的度m而言,可能存在多个本原多项式
3.针对单个LFSR的攻击
谈完了LFSR的原理,现在来说一下针对LFSR的攻击方式
假设攻击者Oscar知道部分明文和对应的密文,他就可以发起攻击。假设Oscar知道明文x0,x1,...,x2m-1,它们对应的密文为y0,y1,...y2m-1。Oscar利用这2m对明文和密文位,就可以重构开头的2m个密钥序列
注:插图来自《深入浅出密码学》