2024年4月16日发(作者:)
流密码和分组密码
按照密钥的特征不同,密码体制分为对称密码体制和非对称密码体制。按照对明文消息加密方式
的不同,密码体制分为流密码(Stream Cipher)和分组密码(Block Cipher)
[1]
。非对称密码体制
均为分组密码
[2]
。
1 流密码
流密码也称为序列密码。在流密码中,明文以序列的方式表示,称为明文流。在对明文流进行加
密时,先由种子密钥生成一个密钥流。然后,利用加密算法把明文流和密钥流加密,产生密文流。流
密码每次只对明文中的单个bit位进行加密变换,加密过程所需的密钥流由种子密钥通过密钥流生成
器产生。流密码的主要原理是通过随机数发生器产生性能优良的伪随机序列(密钥流),使用该序列加
密明文流(逐bit位加密),得到密文流。由于每一个明文都对应一个随机的加密密钥,因此流密码在
理论上属于无条件安全的密码体制(一次一密密码)
[3]
。流密码的基本加密过程,如图1所示。
种子密码
随机数发生器
密钥流
明文流加密变换密文流
图1 流密码的加密过程
设明文流为:
mm
1
m
2
m
i
,密钥流由密钥流发生器
f
产生:
z
i
f(k,
i
)
,这里
i
是加密器中的存储
器在时刻
i
的状态,
f
是由种子密钥
k
和
i
产生的函数。设最终得到的密钥流为:
kk
1
k
2
果为:
cc
1
c
2
c
i
E
k
1
(m
1
)E
k
2
(m
2
)E
k
i
(m
i
)
k
i
,加密结
,解密结果为:
mD
k
1
(c
1
)D
k
2
(c
2
)D
k
i
(c
i
)m
1
m
2
m
i
。用流密码进
行保密通信的模型,如图2所示:
种子密码
随机数发生器
密钥流
明文流加密变换密文流
安全信道种子密码
随机数发生器
密钥流
公共信道密文流解密变换明文流
图2 流密码保密通信图
2 分组密码
分组密码也称为块密码。当加密一条长消息(明文)时,首先,将明文编码表示为二进制序列;
然后,将其分成若干个固定长度的组(最后一组长度不够时还得进行填充,如补0);最后,再对逐个
分组依次进行加密操作。分组长短决定着密码的强度。从算法的安全性考虑,分组长度不能太短,应
该保证加密算法能够应付密码分析;从实用性考虑,分组长度又不能太长,要便于操作和运算。近年
来,随着计算机计算能力的不断提高,分组长度为64位的分组密码的安全性越来越不能满足实际需
要,为提高加密的安全性,很多的分组密码开始选择128位作为算法的分组长度
[4]
。在相同密钥下,
分组密码对长为
t
的输人明文组所实施的变换是等同的,所以只须研究对任一组明文数字的变换规则。
这种密码实质上是字长为
t
的数字序列的代换密码
[3]
。
分组密码是将明文经编码表示后的二进制序列
m
1
m
2
各组分别在密钥
kk
1
k
2
m
i
划分成若干固定长度
t
为的组
mm
1
m
2
m
t
,
k
r
的控制下转换成长度为
l
的二进制密文分组
cc
1
c
2
c
l
。若
tl
,则称为带数据
压缩的分组密码,易增加密文解密的难度;若
tl
,则称为带数据扩展的分组密码,必然要增加密文存
储和传输的代价。通常的分组密码算法大多取
tl
[2]
。其本质是一个从明文空间(
t
的比特串的集合)
M
到密文空间(
l
长的比特串的集合)
C
的映射,该映射由密钥和加密算法确定。采用分组密码,对一个
明文分组进行加解密的过程,如图3所示。其中,明文分组长度为
t
,密文分组长度为
l
,密钥长度为
r
。这些参数是分组密码的重要参数,对算法的安全性能有重要的影响(密钥空间有
2
r
个元素)。在不
同的分组密码算法中,它们的取值往往不同。
密钥k
明文分组m加密变换密文分组c
安全信道
公共信道密文分组c
密钥k
解密变换明文流分组m
图3 分组密码保密通信图
3 二者联系
(1)流密码:令
M
代表明文。流密码是把
M
拆分成相连的比特
M
1
,M
2
,
KK
1
K
2
K
i
,M
i
,
,并用密钥流
E
K
(M)E
K
1
(M
1
)
中的第
i
个成分
K
i
对明文流中的第
i
个成分
M
i
进行加密,即
E
K
2
(M
2
)E
K
i
(M
i
)
。如果在
T
(固定值)个比特后密钥序列重复,则流密码是周期序列密码。否则,
就是非周期序列密码。
(2)分组密码:分组密码是把
M
拆分成相连的分组
M
1
,M
2
,
M
i
进行加密,即
E
K
(M)
,M
i
,
,并用同一个密钥
K
对每个分组
E
K
(M
1
)E
K
(M
2
)E
K
(M
i
)
。分组的长度视具体方案而定。
(3)二者的联系:对于周期为
T
的流密码,令
KK
1
K
2
K
T
,也可把这类密码看作是分组密码,这
里每个
M
i
都是具有
T
个比特的一个分组。当
T
较小时,这类密码更像是分组密码。随着
T
的增加,这类
密码变得更像流密码。
4 二者区别
(1)分组密码的特征是每次处理一个固定长度的数据组(如DES的分组长度64bit)。一个长度
小于密码分组尺寸的明文,只有当它被填补足够的位数能构成标准尺寸时,才能进行加密。在分组密
码中,明文被分为多个比特的分组,逐组进行加密。对于某一消息
M
,分组密码体制一般首先将
M
进
行填充得到消息
M
,使其长度为固定分组长度
L
的整数倍,密码算法把
M
划分为一系列长度为
L
的分组,
再对分组进行加密。在流密码中,明文
M
被分成连续的比特
MM
1
M
2
K
i
M
i
,用密钥流
KK
1
K
2
K
i
的
进行加密。其中,密钥流
K
是密钥流生成器得到的。
(2)对于流密码,在一个固定密钥作用下,对相同的明文进行加密,并不一定得到相同的密文。
因为明文的重复部分是用密钥流的不同部分加密的。对于分组密码,在一个固定密钥作用下,对相同
的明文进行加密,一定得到相同的密文。
参考文献
[1] 卢铁城. 信息加密技术. 四川科学技术出版社,1989.10.
[2] 张福泰 等. 密码学教程 . 武汉大学出版社,2006.9.
[3] 杨波. 现代密码学(第2版). 清华大学出版社,2007.4.
[4] 范九伦 等. 密码学基础. 西安电子科技大学出版社,2008.8.
发布评论