流密码与分组密码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

流密码和分组密码

按照密钥的特征不同,密码体制分为对称密码体制和非对称密码体制。按照对明文消息加密方式的不同,密码体制分为流密码(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.

相关文档
最新文档