密码学~第二章笔记
2.1 流密码
2.1.1 流密码的基本概念
流密码的基本思想:将明文逐位转换成密文;
2.2.2 同步流密码
流密码{同步流密码,自同步流密码};
其中同步流密码加密器分为密钥流产生器和加密交换器两个部分;
- 流密码是将明文划分成字符(如单个字母),或其编码的基本单元(如0,1),每一字符分别与密钥流对应字符“作用”,从而进行加密。解密时以同步产生的密钥流实现;
- 流密码强度完全依赖于密钥流产生器所生成序列的随机性和不可预测性;
- 核心问题是密钥流生成器的设计;
2.2.3 同步流密码的特点
- 同步要求
- 主动攻击
- 无错误传播
2.3 有限状态自动机
有限状态自动机理论来指导设计密钥流生成器
2.3.1 密钥流生成器
这类生成器可分为:驱动部分,非线性组合部分;
- 驱动部分:控制生成器的状态转移,为非线性组合部分提供统计性能好的序列;
- 非线性组合部分:利用这些序列组合出满足要求的密钥流序列;
2.3.2 线性反馈移位寄存器
由n位的寄存器和反馈函数组成,n位寄存器的初始状态为移位寄存器的初态;
2.3.3 流密码特征
- 流密码的安全性取决于密钥流的安全性,要求密钥流序列有好的随机性,以使密码分析者对它无法预测。也就是说,即使截获其中一段,也无法推测后面是什么。
- 如果密钥流是周期的,要完全做到随机性是困难的。
- 严格地说,这样的序列不可能做到随机,只能要求截获比周期短的一段时不会泄露更多信息,这样的序列称为伪随机序列。
- 虽然n级线性移位寄存器产生的m序列具有良好的伪随机性,但是直接用其构造密钥流序列是极不安全的。因为利用2n个输出位可以找到它的起始状态和特征多项式;
2.4 m序列密码的破译
有限域上的二元加法流算法是目前最为常用的流密码体制;
2.4.1 非线性序列
- 密钥流生成器可分解为驱动子系统和非线性组合子系统;
- 驱动子系统常用一个或多个线性反馈移位寄存器来实现;
- 非线性组合子系统用非线性组合函数F来实现;
为了使密钥流生成器输出的二元序列尽可能复杂,应保证其周期尽可能大、线性复杂度和不可预测性尽可能高,因此常使用多个LFSR来构造二元序列,称每个LFSR的输出序列为驱动序列,显然密钥流生成器输出序列的周期不大于各驱动序列周期的乘积,因此,提高输出序列的线性复杂度应从极大化其周期开始
二元序列的线性复杂度指生成该序列的最短LFSR的级数,
最短LFSR的特征多项式称为二元序列的极小特征多项式;
设计一个性能良好的序列密码是一项十分困难的任务。最基本的设计原则是“密钥流生成器的不可预测性”,它可分解为下述基本原则:
① 长周期。
② 高线性复杂度。
③ 统计性能良好。
④ 足够的“混乱”。
⑤ 足够的“扩散”。
⑥ 抵抗不同形式的攻击
2.5流密码算法
基本思想:对n位长的字,它总共有关2n个可能的内部置换状态S。,这些状态是保密的,密钥流K由S中N个元素按照一定的方式选出一个元素组成,每生成一个K值,S中的元素就被重新置换一次
- 如果密钥流是周期的,要完全做到随机性是困难的。严格地说,这样的序列不可能做到随机,只能要求截获比周期短的一段时不会泄露更多信息,这样的序列称为伪随机序列。
- 游程:
- 在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TLS可采用的算法之一;
- RC4算法的核心也是密钥流的生成。与LFSR不同的是,RC4采用一个256字节的状态向量S,256字节的暂时向量T,和用户自定义的密钥输入构成;
2.5.1 伪随机序列
密钥流序列不可能做到随机,只能要求截获比周期短的一段时不会泄露更多信息,这样的序列称为伪随机序列;