
自迭代结构一直很吸引我。线性系统的递推性质天然给了我们计算上的便利;而非线性系统也有不动点或混沌之类的美妙现象,更不必说动力系统与数论等等领域还有着千丝万缕的联系,一直是过去几十年的一大热门数学领域...
你说得对,但是为什么LFSR的相关资料总是自相矛盾
LFSR
Linear feedback shift
register,流密码里最经典的结构之一。为了讨论方便,我们默认下文中的LFSR都是定义在

其实可以把一个LFSR看成一个初始的state向量和一个状态转移矩阵A,每次状态转移取向量中的最后一个分量(或者第一个分量,总之是"边界上的"分量就对了)作为1bit的输出,然后
比如,我们定义一个LFSR反馈函数如下:
写成矩阵形式
LFSR的联结多项式
有了矩阵就可以用一些代数方法去研究反馈函数的性质,比如我们很轻易地就可以求得这个矩阵的特征多项式为
这个矩阵的特征多项式称为这个LFSR的联结多项式 (connection polynomial)。反过来说,这个矩阵称为多项式的 Frobenius companion matrix,下文简称为companion matrix。
容易知道一个companion matrix
周期
有限状态机想做到无限次的状态转移肯定是需要环路的存在的,所以很容易明白一个有限长度的LFSR也是有周期性的。如果一个LFSR的"长度"(状态向量的维数)为n,那么LFSR最大周期不超过
当然,至少我们得要求LFSR不能进入全0的trivial状态。很容易知道,状态转移矩阵A必须要是满秩的才能保证这一点(可逆方阵乘上非零向量能变到0才有鬼了)——而这只需要把将要出队列的元素加入抽头就能保证。(可以自行计算A的行列式验证一下)
但是具体什么时候LFSR才能取得最大周期呢?一个最简单的想法是让A乘方运算后等于单位阵。我们知道
我们的希望是真的
引理 设
是系数在 ( 为素数)中的多项式,且 。则存在某个 ,使得 是 的因子。
证明 环
由线性代数里的Caylay-Hamilton定理可以知道,对LFSR的状态转移矩阵A和联结多项式
自然,所有含有
这说明了当A满秩时,LFSR的周期
更进一步
考虑一个有n个状态的LFSR,记其所有非零状态组成的集合为
回忆我们上面提及的LFSR的联结多项式
其实这一部分完全包含了上一个部分的结论,只不过需要更多代数学知识ww
这里的添根操作,一个不严谨的理解是把以多项式商环构造的
中原本的未定元X直接换作A。这其实类似于通过添加代数元进行代数扩张的操作。
什么时候A是生成元?
A是生成元意味着A是
接下来我们引入一些定义并证明一个定理,来为最终的结论着手准备:
定义
设
容易知道
定义
设
定理 设
是 上的不可约多项式, ,设 为 在 中的根,则 的周期 等于 的阶
证明
所以,如果联结多项式是本原多项式时,A的阶就等于
至此,我们得到了LFSR达到最大周期的充要条件,即LFSR的联结多项式必须是本原多项式。
After story
如果A不是生成元呢?至少,A会生成阶数更小的子群,那么得到的LFSR的所有可能状态组成的群无非是类似陪集分解的对象,其阶数也小于
我所查阅到的中文资料几乎全都没有证明为什么当联结多项式是本原多项式时LFSR达到最大周期,有些资料甚至还错记了联结多项式的指数顺序——联结多项式里,越是即将出队列的抽头对应的指数越小。而有些资料里认为此时抽头对应的指数应该越大,并且认为这样得到的联结多项式(它们称之为LFSR的特征多项式或反馈多项式)是本原多项式时LFSR才达到最大周期——这种定义下,得到的结论是对的吗?我没有继续研究,但是至少,这样得到的多项式,在次数上首先就有可能不对,从而以商环构造有限域的操作就未必能成立。后续的结论,可信度几何呢?
文中将LFSR处理到有限域上的部分,本来是想构造性地处理的。但是不论是把矩阵A处理为多项式还是把多项式处理到矩阵,我都没有想到特别好的构造方法。尤其是把矩阵A处理为多项式,虽然RLWE中用矩阵计算商环上的多项式乘法已是常识,并且直觉上A作用于向量应该就等价于单项式x作用于多项式,但是具体推算时,系数的对应总是差了一次转置,不能很爽快地得到想要的形式。所以最终还是用存在式的手段,利用一个必定存在但我尚未构造出的同构,演示了利用矩阵研究LFSR的可能性。如果读者有更构造性的手法,还请不吝赐教。
本来是想在写针对LFSR的代数免疫攻击之前补充点LFSR的基础知识的,为了一份严格证明不知不觉就写成了单独的一篇blog。那么代数免疫就留待下一篇blog吧,顺便补一补Fast Correlation Attack的知识。