密码学系列文(2)--流密码
一、流密码的基本概念
RC4(Rivest Cipher 4)是由密码学家 Ron Rivest(RSA 算法发明者之一)于 1987 年设计的对称流加密算法。它以简单、高效著称,曾广泛应用于网络安全协议(如 SSL/TLS、WEP/WPA),但因存在严重安全漏洞,现已逐渐被淘汰。
1.1 流密码概念
流密码是将明文划分成字符(如单个字母),或其编码的基本单元(如0,1数字),字符分别与密钥流作用进行加密,解密时以同步产生的同样的密钥流实现;
- 流密码强度完全依赖于密钥序列的随机性和不可预测性;
- 核心问题是密钥流生成器的设计
- 保持收发两端密钥流的精确同步是实现可靠解密的关键技术;
流密码框图如下:KG指密钥流生成器
- 消息流:
,其中
- 密文流:
,其中
- 密钥流:
- 加法流密码:
密钥流:是一个完全随机的非周期序列,可以实现一次一密体制。但需要无限存储单元和复杂的输出逻辑函数。
是第
时刻密钥流生成器的内部状态,以存储单元的存数矢量描述。
1.2 有限状态自动机FA
具有离散输入和输出(输入集和输出集均有限)的一种数学模型
- 有限状态集
- 有限输入字符集
- 有限输出字符集
- 转移函数
;
,第
时刻输入
,输出
;
例如2-1:
转移函数:
那么FA的状态图表示为:初始状态为
若输入为
那么输出为,状态转移为
。
1.3 作为FA的密钥流产生器
- 同步流密码的密钥流产生器可看为一个参数为
的FA;
- 输出集
,状态集
,状态转移函数
和输出函数
,初始状态
- 设计的关键是
和
;
- 具有非线性
的的FA理论很不完善,通常采用线性
以及非线性的
- 可将此类产生器分为驱动部分和非线性组合部分
- 驱动部分控制状态转移
- 非线性组合部分提供统计特性良好的序列
两种目前最为流行和实用的密钥流产生器如图所示,其驱动部分是一个或多个线性反馈移位寄存器:
1.4 流密码的分类
1.4.1 同步流密码SSC
与明文消息无关,密钥流将独立于明文
同步流密码的特点
- 对于明文而言,这类加密变换是无记忆的,但它是时变的;
- 只有保持两端精确同步才能正常工作;
- 对主动攻击时异常敏感而利于检测;
- 无差错传播
1.4.2 自同步流密码SSSC
依赖于
,使密文
不仅与当前输入
有关,而且由于
对
的关系而与以前的输入
有关。一般在有限的
级存储下将与
有关。
优点:具有自同步能力,强化了其抗统计分析的能力;
缺点:有位长的差错传播;
如图所示:
1.5 序列的伪随机性
1.5.1 周期
- 周期:序列
,使对所有
,
成立的最小整数
;
- 长度为
的串
,在序列
的一个周期中,
例如:长度为的1串和长度为
的0串:...011...10...和...100...01...
1.5.2 自相关函数
上周期为
的序列
的自相关函数定义为:
当时,
;当
时,称
为异相自相关函数。
1.5.3 Golomb随机性公设
Golomb对伪随机周期序列提出了应满足的如下三个随机性公设:
- 在序列的一个周期内,0与1的个数相差至多为1;
- 在序列的一个周期内,长为1的游程占游程总数的
,长为2的游程占游程总数的
,... ,长为
的游程占游程总数的
, ,且在等长的游程中0的游程个数和1的游程个数相等;
- 异自相关函数是一个常数;
1.5.4 密码系统随机性条件
一个伪随机序列应满足另外的三个条件:
的周期相当大。
的确定是计算上容易的。
由密文及相应的明文的部分信息,不能确定整个
。(不可预测性)
二、线性反馈移位寄存器序列
2.1 相关概念
- 级数(Stages):存储单元数;
- 状态(State):
个存储单元的存数
;
- 反馈函数:
是状态
的函数;
- 线性反馈移位寄存器(LFSR):
为线性函数
- 非线性反馈移位寄存器:
为非线性函数
如图所示:n级反馈移位寄存器
2.2 线性反馈移位寄存器
如果移位寄存器的反馈函数是
的线性函数,则称之为线性反馈移位寄存器LFSR,此时可写为
;
那么输出序列满足
,其中
为非负正整数。
2.2.1 最长周期
在线性反馈移位寄存器中总是假定中至少由一个不为 0,
否则 ,这样的话,在
个脉冲后状态必然是
,且这个状态必将一直持续下去。
因此线性移位器序列的最长周期为
;
2.2.2 m序列
- 为
的LFSR序列称为
序列
级
序列
循环地遍历所有
个非零状态,且任一非零输出皆为
的移位,或为其循环等价序列;
- 初始状态不同
个的
序列共有
个,他们的全体记为
,他们只是状态前后次序之别。
m序列满足Golomb的三个随机性公设
2.2.3 特征多项式
LFSR的特征多项式为: