密码学学习笔记第二章:流密码
参考网课:吉林大学密码学
注:第一章引言部分略过
目录
2. 流密码
2.1 流密码的基本概念
流密码的基本思想是利用密钥产生一个密钥流
,并使用如下规则对明文串
加密:
。密钥流由密钥流发生器产生:
,这里的
是加密器中的记忆元件(存储器)在时刻
的状态,
是由密钥
和
产生的函数。
分组密码与流密码的区别就在于有无记忆性,如下图:

2.1.1 同步流密码
在同步流密码中,由于与明文字符无关,因而此时密文字符也不依赖于此前的明文字符。因此,可将同步流密码的加密器分成密钥流产生器和加密变换器两部分。如下图所示

同步流密码的加密变换可以有多种选择,只要保证变换时可逆的即可。实际使用的数字保密通信系统一般都是二元系统,因而在有限域
上讨论的二元加法流密码,是目前最为常用的流密码体制,加密变换可表示为
。
2.1.2 有限状态自动机
有限状态自动机是具有离散输入和输出(输入集和输出集均有限)的一种数学模型,由以下3部分组成:
- 有限状态集
- 有限输入字符集
和有限输出字符集
- 转移、输出函数
输出函数(可以使用非线性函数增加输出复杂度):根据当前状态和当前输入,产生一个输出。
状态转移函数(一般是线性的函数):根据当前状态和当前输入,更新到下一个状态。
同步密码流的关键是密钥流产生器。一般可将其看成一个参数为的有限状态自动机,由一个输出符号集
,一个状态集
,两个函数
和
以及一个初始状态
组成(如下图所示)。
为状态转移函数,
为输出函数。这种密钥流生成器设计的关键在于找出适当的状态转移函数
和输出函数
,使得输出序列
满足密钥流序列应满足的几个条件,并且要求在设备上是节省的和容易实现的。

目前最流行和实用的密钥流产生器如下图所示,其驱动部分是一个或多个线性反馈移位寄存器(LFSR)

2.2 线性反馈移位寄存器
移位寄存器是流密码产生密钥流的一个主要组成部分。如下图所示为一个n级反馈移位寄存器,由n个二元存储器与一个反馈函数组成

如果移位寄存器的反馈函数是
的线性函数,则称之为线性反馈移位寄存器LFSR。例如下述反馈函数:
其中常数或
,
至少有一个不为
,
是异或运算,
或
可以用开关的断开和闭合来实现,如下图所示:

2.3 线性反馈移位寄存器的一元多项式表示
GF(2)全称是Galois Field (2),即阶为 2 的伽罗瓦域(也叫有限域)。简单来说,它是一个只包含两个元素{0, 1}的数学系统,其运算规则完美契合了计算机的二进制逻辑。
设n级线性移位寄存器的输出序列满足递推关系
(*)
对于任何成立。这种递推关系可以用一个高次多项式
表示,称这个多项式为LFSR的特征多项式或特征多项式
设n级线性移位寄存器对应于递推关系(*),由于,所以共有
组初始状态,即有
个递推序列,其中非恒零的有
个,记
个非零序列的全体为
。
定义2-1 给定序列,幂级数
称为该序列的生成函数。
定理2-1 设是
上的多项式,
中任一序列
的生成函数
满足:
其中
定理2-2 的充要条件是
定义2-2 设是
上的多项式,使
(即
能够整除
)的最小
称为
的周期或阶。
定理2-3 若序列的特征多项式
定义在
上,
是
的周期,则
的周期
。
定义2-3 仅能被非0的常数或自身的常数倍除尽,但不能被其它多项式除尽的多项式称为即约多项式或不可约多项式。
定理2-4 设是
次不可约多项式,周期为
,序列
,则
的周期为
定理2-5 级LFSR产生的序列有最大周期
的必要条件是其特征多项式为不可约的。
定义2-4 若次不可约多项式
的阶为
,则称
是
次本原多项式。
定理2-6 设,
为
序列的充要条件是
为本原多项式
2.4 m序列的伪随机性
流密码的安全性取决于密钥流的安全性,要求密钥流序列有好的随机性,使得密码分析者无法预测。如果密钥流是周期的,要完全做到随机性是困难的。严格地说,这样的序列不可能做到随机,只能要求截获比周期短的一段时不会泄露更多信息,这样的序列称为伪随机序列。
首先介绍一下游程,设为01组成的序列,例如00110111,其前两个数字是00,称为0的2游程;接着是11,是1的2游程;再接下来是0的1游程和1的3游程。
定义2-5 上周期为
的序列
的自相关函数定义为
当时,
;当
时,称
为异相自相关函数。
Golomb提出伪随机周期序列应满足如下三个随机性公设:
- 在序列的一个周期内,0与1的个数相差至多为1。
- 在序列的一个周期内,长为1的游程占游程总数的
,长为2的游程占游程总数的
,......,长为
的游程占游程总数的
,......,且在等长的游程中0的游程个数和1的游程个数相等。
- 异自相关函数是一个常数。
下面这条定理说明,序列满足上述三个随机性公设
定理2-7 上的
长
序列
具有如下性质:
- 在一个周期内,0、1出现的次数分别是
和
。
- 在一个周期内,总游程数为
;对
,长为
的游程有
个,且0、1游程各半;长为
的0游程一个,长为
的1游程一个;
的自相关函数为
2.5 m序列密码的破译
这一节主要证明了只要敌手知道一段长为的明密文对,便可求出一段长为
的密钥序列,并且可以由此破译整段m序列密码。
2.6 非线性序列
这一节介绍4种由多个LFSR驱动的非线性序列生成器。
2.6.1 Geffe序列生成器
Geffe序列生成器由3个LFSR组成,其中LFSR2作为控制生成器使用,如下左图所示

当LFSR2输出1时,LFSR2与LFSR1连接;当LFSR2输出0时,LFSR2与LFSR3相连接。设LFSRi的输出序列为,则输出序列
可以表示为
![]()
Geffe序列生成器也可以表示为上右图的形式,其中LFSR1和LFSR3作为多路复合器的输入,LFSR2控制多路复合器的输出。设LFSRi的特征多项式分别为次本原多项式,且
两两互素,则Geffe序列的周期为
线性复杂度为
2.6.2 J-K触发器
j-k触发器如下图所示,两个输入端分别用J和K表示,其输出不仅依赖输入,还依赖于前一个输出位
,即
![]()
其中和
分别是J和K端的输入。

由此可得J-K触发器的真值表如下表所示
| J | K | |
| 0 | 0 | |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 |
利用J-K触发器的非线性序列生成器见下图:

令驱动序列和
分别为m级和n级m序列,则有
![]()
当m与n互素且时,序列
的周期为
2.6.3 Pless生成器
Pless生成器由8个LFSR、4个J-K触发器和1个循环计数器构成,由循环计数器进行选通控制,如下图所示。时刻输出第
个单元。

2.6.4 钟控序列生成器
钟控序列最基本的模型是用一个LFSR控制另外一个LFSR的移位时钟脉冲,如下图所示:

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)