2.1 流密码(stream cipher)的基本概念
流密码定义
流密码(stream cipher),也称为序列密码(Sequence Cipher),特点是明文消息按字符(如单个字母)或比特(编码的基本单元)逐位加密,字符分别与密钥流作用进行加密,解密时以同步产生的同样的密钥流实现。
流密码的基本思想
密钥k
产生一个密钥流z
密钥流z:z=z0z1z2…
消息流m:m=m0m1m2…
密文流c:c=c0c1c2…=Ez0(m0) Ez1(m1) Ez2(m2)…
滚动密钥流
密钥流由密钥流发生器 f 产生:
zi=f(k,σi)
-
流密码的滚动密钥由函数f、密钥k和
指定的初态σ~0~
完全确定; -
f 是由k, σi产生的函数
-
σi:加密器中的记忆元件在时刻 i 的状态,可表示为 σi=(an, an-1, … , a1)
-
记忆元件:由一组移位寄存器
(Feedback Shift Register, FSR)
构成,这里假设有n个移位寄存器.
输入加密器的明文可能影响加密器中的内部记忆元件的存储状态,因而σi(i>0)可能依赖于k,σ0,m0,m1,…,mi-1,即前 i 个明文和密钥及初态
流密码的分类
按照加密器中记忆元件的存储状态σi是否依赖于输入的明文字符流,流密码可进一步分成同步流密码和自同步流密码两种
同步流密码:密码序列仅仅取决于密钥,即σi 独立于明文字符流;
自同步步流密码:密钥序列则取决于密钥和密文
由于自同步流密码的密钥流产生与明文有关,所以理论上难于分析。绝大多数实际中使用的序列密码都是同步流密码,因为密文不依赖于此前的明文字符,因此可将同步流密码的加密器分为密钥流产生器和加密变换器两个部分
加密变换:
加密变换 Ezi可有多种选择,保证变换可逆性即可
- 比如明文流和密钥流对应位异或;
- 实际数字保密通信系统一般都是二元的{0,1},在有限域GF(2)上讨论二元加法流密码是目前最常用的流密码体制;
加密变换可表示为yi=zi ⊕ xi,加法流密码体制模型
同步流密码算法的设计主要是密钥流产生器的设计
密钥产生器目标是:使密钥k经其扩展成的密钥流序列z具有:
- 极大的周期
- 良好的统计特性
- 抗差分分析
- 抗线性分析等性质
加密变换:Ezi(xi)
解密变换:Dzi(mi)
2.2 有限状态自动机
有限状态自动机的模型
有限状态自动机的有向图表示
有限状态自动机的实例
有限状态自动机的矩阵表示
2.3 密钥流生成器
同步流密码的关键是密钥流产生器(Key Generator)
密钥流生成器定义
作为有限状态自动机的密钥流生成器模型
密钥流生成器设计的关键——实现非线性函数
密钥流生成器的分解
- 由于具有非线性的φ的有限状态自动机理论很不完善,相应的密钥流产生器的分析工作受到极大的限制。
- 相反地,当采用线性的φ和非线性的ψ时,将能够进行深入的分析并可以得到好的生成器
- 为方便讨论,可将这类生成器分成驱动部分和非线性组合部分