密码学复习——第二章(流密码)

624 阅读3分钟

第二章:流密码

2.1 流密码的基本概念

流密码是将明文划分成字符(如单个字母),或其编码的基本单元(如0,1数字),每一字符分别与密钥流对应字符作用,从而进行加密,解密时以同步产生的同样的密钥流实现。

  • 流密码的强度完全依赖于密钥流产生器所生成序列的随机性和不可预测性。
  • 因此核心问题是密钥流生成器的设计。
  • 保持收发两端密钥流的精确同步是实现可靠解密的关键。

二元加法流密码


  • 加法流密码体制模型

流密码的分类

  • 同步流密码:如果密钥流产生的算法和产生的密钥序列都与明文或密文无关,我们称这类流密码为同步流密码。
  • 自同步流密码:密钥流产生的算法与明文相关,则所产生的密钥序列也与明文相关,称这类流密码为自同步流密码。

2.2 线性反馈移位寄存器

移位寄存器是流密码产生密钥流的一个主要组成部分,GF(2)上一个n级反馈移位寄存器由n个二元存储器与一个反馈函数组成。

  • 4位反馈移位寄存器图示

    上面的异或韩硕相当于是反馈函数。

    在任一时刻,这些级的内容构成该反馈移位寄存器的状态,每一状态对应于GF(2)上的一个n维向量,共有2^n种可能的状态。

经典例题


这里的输出序列指的是a1切记!
线性反馈移位寄存器:实现简单、速度快、有较为成熟的理论,是构造密钥流生成器的最重要的部件之一。

LFSR的性质

  • 输出序列的性质:完全由其反馈函数决定。
  • n级LFSR状态数:最多有2^n个
  • 输出序列的周期 = 状态周期 <= 2^n - 1
  • 选择合适的反馈函数可使序列的周期达到最大值2^n - 1,周期达到最大值的序列成为m序列

2.3 线性移位寄存器的一元多项式表示

2.4 m序列的伪随机性

提到这里,我们要再次强调以下什么是m序列,m序列指的是能够使的输出序列的周期达到最大值2^n - 1的序列

  • 伪随机序列的定义

如果密钥流是随机的,要完全做到随机性是困难的,严格的说这样的序列不可能做到随机,只能要求截获比周期短的一段时不会泄露更多信息,这样的序列称为伪随机序列

  • 什么是游程?
  • 自相关函数的定义
  • Golomb对伪随机序列提出的三个随机性公设:

2.5 m序列密码的破译

需要的条件

  • 密文串对应的明文串和相应的密钥流

破译的是什么?

  • 破译的时密钥流的递推关系式


2.6 非线性序列

为了使密钥流生成器输出的二元序列尽可能复杂,应保证其周期尽可能大、线性复杂度和不可预测性尽可能高,因此尝使用多个LFSR来构造二元序列,称每个LFSR的输出序列为驱动序列,显然密钥流生成器的周期不大于各驱动序列周期的乘积,因此,提高输出序列的线性复杂度应从极大化其周期开始。

  • 二元序列的线性复杂度

生成该序列的最短LFSR的级数

  • 二元序列的极小特征多项式

最短LFSR的特征多项式