因为随机序列是没法人为生成的,所以伪随机序列在密码学上就尤为重要。
首先要介绍几个概念
游程
设a是二元域GF(2)上周期为P的周期序列,选定其中一个周期,将该周期的序列首尾相连。在这个圆环上形容0111110和100001中的0和1的部分就称作一个1游程或0游程.1游程中1的个数或0游程中0的个数就叫做游程的长度
自相关函数
二元域GF(2)上周期为T的序列a的## 自相关函数 ##的定义为$$ R(t) = sum_{k=1}T(-1){a_k}(-1)^{a_{k+t}}, 0 leq t leq T-1 $$,当t=0时,R(t)=T;当t!=0时,称R(t)为异相自相关函数,这个对伪随机性的定义比较重要
Golomb伪随机公设
- 在序列的一个周期内,0与1的个数相差至多为一
- 说明序列中0和1出现的概率基本相同
- 在序列的一个周期内,长为i的游程占总游程数的1/2i,且在等长的游程中0的游程个数和1的游程个数相等
- 说明0与1在序列中每一位置上出现的概率相等
- 异相自相关函数是一个常数
- 意味着通过对序列与其平移后的序列作比较,不能给出其他任何信息
- 因为t是函数的自变量,是不是就是说每次平移之后看到的结果都差不多,很难区分
伪随机序列的定义
设a是二元域上一个周期为P的周期序列。如果对于一切t != 0(mod P),有$$ R(t)=-1 $$,则称其为伪随机序列。
除此之外,还要满足3个条件:
1.周期P要足够大
2.序列要易于高速产生
3.当序列的任何部分暴露时,要分析整个序列,提取产生它的电路结构信息,在计算上是不可行的,称此为不可预测性