-
流密码
-
基本思想
-
利用密钥k产生一个密钥流(无限长)
-
每次对一个比特/单个字符加密
-
相比于分组密码,流密码有记忆性
-
密钥流由密钥流发生器f产生:zi=f(k,σi)
-
zi是密钥
-
f是一个函数
-
σi为记忆元件在时刻i的状态
-
z0由f,k,σ0决定
-
由于明文可能影响记忆元件的状态,故σi可能依赖于k,σ0,x0,xi等参数
-
-
-
-
同步流密码
-
记忆元件的存储状态独立于明文字符,即zi和明文字符无关
-
密文字符yi不依赖于此前的明文字符
-
加密过程一般是简单的,加密变换是可逆的,在GF(2)上的二元加法流密码最常用。
-
同步流密码的加密器组成
-
密钥流产生器
-
加密变换器
-
-
好的密钥流序列
-
极大的周期性
-
良好的统计特性
-
抗线性分析
-
抗统计分析
-
-
-
有限状态自动机
-
一个具有离散有限的输入输出的数学模型
-
组成
-
有限状态集Si
-
有限(类型有限)输入输出字符集
-
转移函数(状态转移,明文到密文的转移)
-
-
例2-1
-
-
密钥流产生器
-
参数为k的有限状态自动机。
-
组成
-
输出符号集
-
状态集
-
由于状态有限,故无限长密码流必定有周期。
-
-
线性的状态转移函数φ
-
驱动部分
-
σi→σi+1
-
-
非线性的输出函数ψ
-
非线性组合部分部分
-
σi→zi
-
-
初始状态σ0
-
-
要求
-
输出序列z满足密钥流序列的条件
-
在设备上是节省和容易实现的
-
-
最流行的密钥流产生器的驱动部分是一个或多个线性反馈移位寄存器(LFSR):实现简单,速度快,理论成熟。
-
-
线性反馈移位寄存器
-
组成
-
一个n级线性反馈移位寄存器由n个二元存储器,一个反馈函数(线性)组成。
-
每一存储器称为移位寄存器的一级。
-
这些级的内容构成一个状态,共有2的n次方个可能状态(去掉全0的状态)。
-
-
要求
-
系数ci不能全为0,否则密钥流全为0。
-
若只有一个系数不为0,那实际上只是一种延迟装置
-
一般总是假定cn=1
-
-
输出序列的性质由反馈函数决定,输出序列的周期与状态周期相等
-
-
线性移位寄存器的一元多项式表示
-
组成
-
递推关系:an+t=cn*at⊕cn-1*at⊕1⊕...⊕c1*an+t-1(去掉全0项,记作G(p(x)))
-
对应的特征多项式p(x)= 1+c1x+...+cn(LFSR的特征多项式)
-
序列的生成函数A(x)=
=Φ(x)/p(x),其中Φ(x)也为有限函数
-
-
关系
-
{ai}的周期整除p(x)的周期,当p(x)为GF(2)上的不可约多项式时,周期相同
-
不可约多项式:仅能被非0常数或自身常数倍除尽,注意这里的整除概念是在实数域而非整数域上的
-
-
{ai}周期性只与特征多项式有关,与初始状态无关。即
同一生成函数,不同初始状态对应的不同序列,能够通过移位的方式重合。
-
阶为-1的不可约多项式为n次本原多项式,等价于{ai}是m序列
-
n次本原多项式的个数为ψ(-1)/n,对于任意正整数n,至少存在一个n次本原多项式
-
-
-
定理2-1
-
定理2-2
-
n级LFSR产生的序列可由级数更多的LFSR产生
-
-
定理2-3
-
-
m序列的伪随机性
-
伪随机序列
-
流密码的安全性取决于密钥流的安全性,如果一个序列被截获比周期短的一段时,不会泄露更多的信息,则称为伪随机序列
-
-
游程
-
连续出现b个0/1,称为0/1的b游程
-
-
异相自相关函数
-
一个序列平移(至少平移一位)后,在一个周期内,对应位置的值相同的个数减去值不同的个数。
-
-
Golomb随机性公设(针对01序列)
-
一个周期内,0和1的个数最多相差1
-
一个周期内,长度为i的游程占游程总数的1/
-
说明0和1在序列中每一位置上出现的概率相同
-
-
异自相关函数是一个常数
-
通过对序列与其平移后的序列作比较,不能给出其他任何信息
-
-
-
伪随机序列附加条件(密码学角度)
-
{ai}的周期相当大
-
{ai}的确定在计算上是容易的
-
由密文及相应的明文部分消息,不能确定整个{ai}
-
-
定理2-7(序列周期为-1)
-
为何不会有1的n-1游程:若存在1的n-1游程,则01111..1的下一个an为0,导致无法出现1的n游程。同时,1的n-1游程和1的n游程都会经过同一个状态01111...1,而一个周期内一个状态只会出现一次。
-
为何不会有1的n+1游程:若存在1的n-1游程,则11111...1的下一个an为1,这会导致后续的ai全为1。
-
-
-
m序列的破译
-
若敌手知道一段长为2n的明密文对,则可以求出n+1个连续的状态,作为矩阵X(X必定可逆)
-
(CnCn-1Cn-2.....C1)=(An+1An+2....A2n),即求出了系数ci,完成了破译
-
例题2.6
-
破解n级的密码,至少需要长度为2n的密钥序列
-
-
-
非线性序列
-
为使二元系列尽可能复杂,应使其周期尽可能大,线性复杂度高,不可预测性高,故常用多个LFSR来构造二元序列
-
密钥流生成器
-
驱动子系统:一个或多个线性反馈移位寄存器实现,输出“驱动序列”。
-
非线性组合子系统:非线性组合函数F实现。
-
总输出序列的周期不超过各驱动序列周期的乘积。
-
-
二元序列的线性复杂度指生成该序列的最短LFSR级数,其对应的特征多项式称为二元序列的极小特征多项式。
-
Geffe序列生成器
-
3个LFSR组成,LFSR2为控制生成器。
-
为1时取LFSR1输出,为0时取LFSR3输出
-
若3个LFSR对应的本原多项式的n两两互素,可得Geffe序列周期的最大值。
-
0和1之间的分布大体上是均衡的
-
-
-
JK触发器
-
2个LFSR组成。
-
ck=(ak+bk+1)ck-1+ak,c-1=0
-
若周期互素且a0+b0=1时,可得JK序列周期的最大值。
-
隐患:已知ck和ck-1就能推断出ak和bk中的一个,故提出了Pless生成器
-
-
Pless生成器
-
8个LFSR,4个JK触发器,1个mod4的循环计数器构成。
-
输出序列为a0b1c2d3a4b5...
-
-
现代密码学:流密码-期末复习大纲
最新推荐文章于 2024-09-07 22:17:17 发布