流密码1.1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章流密码
基本概念
设(,,,,)是一个密码体制,其中:明文消息空间,:密文消息空间,:密钥空间,:加密规则集合,解密规则集合。
将明文消息m按一定的规则进行编码后可表示为明文串:m=m
0m
1
m
2
…,m
i
∈
流密码加解密明文消息x方式是首先利用密钥产生一个密钥流序列:k=k
0k
1
k
2
…
然后对明文串m=m
0m
1
m
2
…施以加密变换进行加密,得到密文序列:
c=E k0(m0)E k1(m1)E k2(m2)…=c0c1c2…,E
z i ∈,c
i
∈,m i∈,k i∈
解密时,对密文序列c
0c
1
c
2
…施以解密变换获得明文序列
m=D k0(c0)D k1(c1)D k2(c2)…=m0m1m2…,D
z i ∈,c
i
∈,m i∈,k i∈
密钥流序列由密钥流发生器f产生:k
i =f(k,σ
i
),这里σ
i
是记忆元件(存储器)在时刻
i的状态(见教材有限状态自动机说明)。同步密码
流密码分为同步与自同步两种,在同步密码中k
i =f(k,σ
i
)与明文无关,因此,密文
c i=E Zi(m i)不依赖明文,同步流密码模型如教材p13图2-2所示。
例考察密码体制(,,,,),其中明文消息空间,密文消息空间和密钥空间都是由26个英文字母组成,加解密算法使用模26整数环26上的加法,假设对明文:
I am glad to see you
有一密钥流序列(视为由密钥生成)是sgdwkqbmdzhfpqx。现对上述明文将加密变换
进行加密(不考虑空格)。
加密变换/算法:c i=E
ki (m
i
)=(m
i
+k i)mod26
y=E s(I)E g(a)E d(m)…E m(t)E d(o)E Z(s)…E q(o)E x(s)E
s
(I)(=8+18)=26mod26=0→A
E
g
(a)(=0+6)=6mod26=6→G
E
d
(m)(=12+3)=15mod26=15→P
…
E
m
(t)(=19+12)=31mod26=5→F
E
d
(o)(=14+3)=17mod26=17→R
E
Z
(s)(=18+25)=43mod26=17→R
…
E
q
(o)(=14+16)=30mod26=4→E
E
x
(s)(=20+23)=43mod26=17→R
因此,加密的密文序列为:AGPB…FRR…ER。
例取===GF(2)={0,1},加解密算法都取作GF(2)中的加法,即模2加。现对明文消息序列:0100101010011110,假设有一密钥序列:1001011101011001,求密文序列。
解:在GF(2)上,∀k
i ∈和c
i
∈。
加密映射为c i=E
Zi (m
i
)=(m
i
+k i)mod2或c i=m i⊕k i
解密映射为m i=D
Zi (c
i
)=(c
i
+k i)mod2或m i=c i⊕k i
于是有
加密
0100101010011110 明文
⊕1001011101011001 密钥
1101110111000111 密文
解密
1101110111000111 密文
⊕1001011101011001 密钥
0100101010011110 明文
流密码的特点
(1)流密码中密钥流序列的长度至少要和明文序列一样长。
(2)对明文序列中的每一项,都需要使用密钥流序列中相应项进行加密,即有一个明文元素就要有另一个密钥元素来加密。所以,序列密码也叫一次一密密码。
(3)流密码的安全性完全依赖密钥流序列。
二元密码是信息加密和解密的主要体制,0-1序列或GF(2)上的序列也是明文的基本形式,今假定明文都具有这种形式,考虑基于GF(2)上的序列密码。
采用流密码进行信息的加密和解密,就必须解决如何产生密钥流序列的问题。最理想的密钥流序列是一个随机的0-1序列。GF(2)上的随机序列定义如下:
定义:设序列a=a
0a
1
a
2
…(a
i
∈{0,1},i=0,1,2…)是一个GF(2)上的序列,即0-1序
列。如果各个a
i
(i=0,1,2…)独立地来自集合{0,1},并且取0或1的机会相等,则称a 是GF(2)上的一个随机序列或真随机序列。
伪随机序列
流密码实践中很少使用真随机序列,而是使用表面上具有随机序列统计特性但本质上不是随机序列的“伪随机序列”作为密钥流序列。因此,对密钥流序列的研究就变成了对伪随机序列的研究。伪随机序列都是周期序列。周期序列定义如下
定义:设无限长序列a=a 0a 1a 2… a i ∈{0,1}(i=0,1,2…)是有限域GF(2)上的序列,如果存在正整数n ,使序列a 各项满足:
a n+j =a j (j=0,1,2…)
则称序列s 是一个定义在GF(2)上的周期序列,满足上式的最小正整数n 称为序列a 的周期,a 0a 1a 2…a n-1称为该序列的第一个周期。
有些序列虽然不是周期序列,但去掉前面若干项后就成为一个周期序列,这种序列称为终归周期序列。
例如 序列“110001000100010...”不是周期序列,去掉第一项后变成序列“10001000100010...”,这是一个周期序列,周期为4。
有些周期序列的周期不止一个,通常所说的周期是指最小周期。
定义:设序列a 是一个定义在GF(2)上的周期为n 的周期序列,如果a 满足: (1)存在正整数m ,使得当j ≥m 时,a j 的取值由其前面项的取值完全决定; (2)在a 的一个周期内,a 中各项的取值具有随机序列的统计特征。 则称序列a 是一个伪随机序列。
定义中的“随机序列的统计特征”是指0和1出现的概率以及连续t 个0(序列0的t 游程)和连续q 个1(序列1的q 游程)出现的概率不仅一样,而且这一概率的大小随着连续0的长度和连续1的长度(游程长度)的增长以几何级数的规律下降。
序列密码中产生密钥流序列的办法是先随机产生一个很短的序列,称其为种子密钥,然后在种子密钥的控制下通过一个密钥流发生器再产生一个周期很大的伪随机序列,这个伪随机序列就是密钥流序列。构造密钥流发生器的基本部件是线性反馈移位寄存器。
线性反馈移位寄存器
线性反馈移位寄存器是反馈移位寄存器中最简单的一种,由线性反馈移位寄存器(LFSR )产生的序列称为线性反馈移位寄存器序列。反馈移位寄存器是一种硬件设备,由移位寄存器和反馈函数组成。一个移位寄存器由若干寄存器串联,每个寄存器是一个具有记忆功能的单元,要么存放数字0,要么存放数字1,只有这两种状态。移位寄存器所含寄存器的个数称为它的级数。如图