

流密码的安全强度完全取决于它所产生的密钥流的特性
如果密钥流是无限长且为无周期的随机序列,那么流密码属于“一次一密”的密码体制
满足这样条件的随机序列在现实中很难生成
实际应用当中的密钥流都是由有限存储和有限复杂逻辑的电路产生的字符序列
由于密钥流生成器只具有有限状态,那么它产生的序列具有周期性,不是真正的随机序列
现实设计中只能追求密钥流的周期尽可能的长,随机性尽可能的好,近似于真正的随机序列
一个好的密钥流需要考虑下面几个要素:
(1) 加密序列的周期要长。密钥流生成器产生的比特流最终会出现重复。重复的周期越长,密码分析的难度越大。
(2) 密钥流应该尽可能地接近一个真正的随机数流的特征。如,1和0的个数应近似相等。如果密钥流为字节流,则所有的256种可能的字节的值出现频率应近似相等。
(3) 为了防止穷举攻击,种子密钥值也应该有足够的长度,至少要保证它的长度不小于128位。
生成一个具有良好特性的密钥流序列的常见方法有:线性反馈移位寄存器(Linear Feedback Shift Register,LFSR)、非线性移位寄存器(NLFSR)、有限自动机、线性同余以及混沌密码序列等方法
这些方法都是通过一个种子(有限长)密码产生具有足够长周期的、随机性良好的序列。只要生成方法和种子都相同,就会产生完全相同的密钥流。
目前密钥流生成器大都是基于移位寄存器
移位寄存器结构简单,易于实现且运行速度快
密钥流产生器一般由线性移位寄存器和一个非线性组合函数两部分构成。其中线性移位寄存器部分称为驱动部分,另一部分称为非线性组合部分
其工作原理是将驱动部分,即线性移位寄存器在j时刻的状态变量x作为一组值输入非线性组合部分的f,将f(x)作为当前时刻的密钥kj
驱动部分负责提供非线性组合部分使用的周期大、统计性能好的序列,而非线性组合部分以各时刻移位寄存器的状态组合出密钥序列
| 各省软考办 | ||||||||||