当前位置:文档之家› 流密码与分组密码

流密码与分组密码

流密码和分组密码
按照密钥的特征不同,密码体制分为对称密码体制和非对称密码体制。

按照对明文消息加密方式的不同,密码体制分为流密码(Stream Cipher )和分组密码(Block Cipher )[1]。

非对称密码体制均为分组密码[2]。

1 流密码
流密码也称为序列密码。

在流密码中,明文以序列的方式表示,称为明文流。

在对明文流进行加密时,先由种子密钥生成一个密钥流。

然后,利用加密算法把明文流和密钥流加密,产生密文流。

流密码每次只对明文中的单个bit 位进行加密变换,加密过程所需的密钥流由种子密钥通过密钥流生成器产生。

流密码的主要原理是通过随机数发生器产生性能优良的伪随机序列(密钥流),使用该序列加密明文流(逐bit 位加密),得到密文流。

由于每一个明文都对应一个随机的加密密钥,因此流密码在理论上属于无条件安全的密码体制(一次一密密码)
[3]。

流密码的基本加密过程,如图1所示。

图1 流密码的加密过程
设明文流为:12i m m m m = ,密钥流由密钥流发生器f 产生:(,)i i z f k σ=,这里i σ是加密器中的存储器在时刻i 的状态,f 是由种子密钥k 和i σ产生的函数。

设最终得到的密钥流为:
12i k k k k = ,加密结果为:121212()()()i i k k k i c c c c E m E m E m == ,解密结果为:
121212()()()i k k k i i m D c D c D c m m m == 。

用流密码进行保密通信的模型,如图2所示:
图2 流密码保密通信图
2 分组密码
分组密码也称为块密码。

当加密一条长消息(明文)时,首先,将明文编码表示为二进制序列;然后,将其分成若干个固定长度的组(最后一组长度不够时还得进行填充,如补0);
最后,再对逐个分组依次进行加密操作。

分组长短决定着密码的强度。

从算法的安全性考虑,分组长度不能太短,应该保证加密算法能够应付密码分析;从实用性考虑,分组长度又不能太长,要便于操作和运算。

近年来,随着计算机计算能力的不断提高,分组长度为64位的分组密码的安全性越来越不能满足实际需要,为提高加密的安全性,很多的分组密码开始选择128位作为算法的分组长度[4]。

在相同密钥下,分组密码对长为t 的输人明文组所实施的变换是等同的,所以只须研究对任一组明文数字的变换规则。

这种密码实质上是字长为t 的数字序列的代换密码[3]。

分组密码是将明文经编码表示后的二进制序列12i m m m 划分成若干固定长度t 为的组12t m m m m = ,各组分别在密钥12r k k k k = 的控制下转换成长度为l 的二进制密文分组
12l c c c c = 。

若t l >,则称为带数据压缩的分组密码,易增加密文解密的难度;若t l <,则称
为带数据扩展的分组密码,必然要增加密文存储和传输的代价。

通常的分组密码算法大多取
t l =[2]。

其本质是一个从明文空间(t 的比特串的集合)M 到密文空间(l 长的比特串的集合)C 的映射,该映射由密钥和加密算法确定。

采用分组密码,对一个明文分组进行加解密的过程,如图3所示。

其中,明文分组长度为t ,密文分组长度为l ,密钥长度为r 。

这些参数是分组密码的重要参数,对算法的安全性能有重要的影响(密钥空间有2r 个元素)。

在不同的分组密码算法中,它们的取值往往不同。

图3 分组密码保密通信图
3 二者联系
(1)流密码:令M 代表明文。

流密码是把M 拆分成相连的比特12,,,,i M M M ,并用密钥流12i K K K K = 中的第i 个成分i K 对明文流中的第i 个成分i M 进行加密,即11()()K K E M E M = 22()()i K K i E M E M 。

如果在T (固定值)个比特后密钥序列重复,则流密码是周期序列密码。

否则,就是非周期序列密码。

(2)分组密码:分组密码是把M 拆分成相连的分组12,,,,i M M M ,并用同一个密钥K 对每个分组i M 进行加密,即12()()()()K K K K i E M E M E M E M =。

分组的长度视具体方案而定。

(3)二者的联系:对于周期为T 的流密码,令12T K K K K = ,也可把这类密码看作是分组密码,这
里每个i M 都是具有T 个比特的一个分组。

当T 较小时,这类密码更像是分组密码。

随着T 的增加,这类密码变得更像流密码。

4 二者区别
(1)分组密码的特征是每次处理一个固定长度的数据组(如DES 的分组长度64bit )。

一个长度小于密码分组尺寸的明文,只有当它被填补足够的位数能构成标准尺寸时,才能进行加密。

在分组密码中,明文被分为多个比特的分组,逐组进行加密。

对于某一消息M ',分组密码体制一般首先将M '进行填充得到消息M ,使其长度为固定分组长度L 的整数倍,密码算法把M 划分为一系列长度为L 的分组,再对分组进行加密。

在流密码中,明文M 被分成连续的比特12i M M M M = ,用密钥流12i K K K K = 的i K 进行加密。

其中,密钥流K 是密钥流生成器得到的。

(2)对于流密码,在一个固定密钥作用下,对相同的明文进行加密,并不一定得到相同的密文。

因为明文的重复部分是用密钥流的不同部分加密的。

对于分组密码,在一个固定密钥作用下,对相同的明文进行加密,一定得到相同的密文。

参考文献
[1] 卢铁城. 信息加密技术. 四川科学技术出版社,1989.10.
[2] 张福泰 等. 密码学教程 . 武汉大学出版社,2006.9.
[3] 杨波. 现代密码学(第2版). 清华大学出版社,2007.4.
[4] 范九伦 等. 密码学基础. 西安电子科技大学出版社,2008.8.。

相关主题