对称加密与公钥加密(中)

来源:互联网 发布:恋爱纪念日软件 编辑:程序博客网 时间:2024/03/28 22:38

分组密码

一、分组密码的模式

分组密码:是每次只能处理特定长度的一块数据的一类算法,这里的"一块"就称为分组。此外,一个分组的比特数就称为比特长度;DES和3DES分组长度都是64比特,AES的分组长度是128比特。

流密码:对数据流进行连续处理的一类密码算法。流密码中一般以1比特,8比特或32比特等为单位进行加密与解密。

模式:分组密码算法只能加密固定长度的分组,但是我们需要加密的明文长度可能会超过分组密码的分组长度,这时就需要对分组密码算法进行迭代,以便将一段很长的明文全部加密。而迭代的方法就称为模式。

模式有很多种,分组密码的主要模式有以下5种

ECB模式:Electronic CodeBook mode(电子密码本模式)

CBC模式:Cipher Block Chaining Mode(密码分组链接模式)

CFB模式:Cipher FeeBack Mode(密文反馈模式)

OFB模式:Output FeeBack Mode(输出反馈模式)

CTR模式:CounTeR mode(计数器模式)

在详细介绍模式之前,我们先学习几个术语

明文分组:是指分组密码算法中做为加密对象的明文。明文分组的长度与分组密码的分组长度是相等的。

密文分组:是指使用分组密码算法将明文分组加密之后所生成的密文。

文章将会提到一个词Mallory,攻击者,也就是阿狗(如果你不知道阿狗是谁,请看看初入密码世界那篇博文,这是链接地址http://blog.csdn.net/jiang_xinxing/article/details/53975864)。

二.ECB模式

在ECB模式中,将明文分组加密之后的结果直接成为密文分组

对ECB模式的攻击其实很简单Mallory只要将其中分组进行对调就会出现很大的问题。只要观察一下密文,就知道明文是什么样的组合,可以以此为线索来破解密码,故而ECB模式存在较大的风险。

三.CBC模式




初始化向量:当加密第一个个明文分组时,由于不存在"前一个密文分组",因此需要事先准备一个长度为一个分组的比特序列来代替"前一个密文分组",这个比特序列就是初始化向量IV。

如果有一个密文分组坏了,那么解密之后将会影响两个明文的内容;CBC模式中密文分组存在缺失比特时,之后所有的明文分组都会受到影响;初始化向量如果发生比特反转,会使第一个明文分组也会受到比特反转。

三.CFB模式

密文反馈(CFB,Cipher feedback)模式类似于CBC,可以将块密码变为自同步的流密码;工作过程亦非常相似,CFB的解密过程几乎就是颠倒的CBC的加密过程:
需要使用一个与块的大小相同的移位寄存器,并用IV将寄存器初始化。然后,将寄存器内容使用块密码加密,然后将结果的最高x位与平文的x进行异或,以产生密文的x位。下一步将生成的x位密文移入寄存器中,并对下面的x位平文重复这一过程。解密过程与加密过程相似,以IV开始,对寄存器加密,将结果的高x与密文异或,产生x位平文,再将密文的下面x位移入寄存器。
与CBC相似,平文的改变会影响接下来所有的密文,因此加密过程不能并行化;而同样的,与CBC类似,解密过程是可以并行化的。

四.OFB模式

输出反馈模式(Output feedback, OFB)可以将块密码变成同步的流密码。它产生密钥流的块,然后将其与平文块进行异或,得到密文。与其它流密码一样,密文中一个位的翻转会使平文中同样位置的位也产生翻转。这种特性使得许多错误校正码,例如奇偶校验位,即使在加密前计算而在加密后进行校验也可以得出正确结果。
每个使用OFB的输出块与其前面所有的输出块相关,因此不能并行化处理。然而,由于平文和密文只在最终的异或过程中使用,因此可以事先对IV进行加密,最后并行的将平文或密文进行并行的异或处理。
可以利用输入全0的CBC模式产生OFB模式的密钥流。这种方法十分实用,因为可以利用快速的CBC硬件实现来加速OFB模式的加密过程。



五.CTR模式

计数模式(CTR模式)加密是对一系列输入数据块(称为计数)进行加密,产生一系列的输出块,输出块与明文异或得到密文。

CTR 模式被广泛用于 ATM 网络安全和 IPSec应用中,相对于其它模式而言,CTR模式具有如下特点:
 硬件效率:允许同时处理多块明文 / 密文。
 软件效率:允许并行计算,可以很好地利用 CPU 流水等并行技术。
 预处理:算法和加密盒的输出不依靠明文和密文的输入,因此如果有足够的保证安全的存储器,加密算法将仅仅是一系列异或运算,这将极大地提高吞吐量。
 随机访问:第 i 块密文的解密不依赖于第 i-1 块密文,提供很高的随机访问能力
 可证明的安全性:能够证明 CTR 至少和其他模式一样安全(CBC, CFB, OFB, ...)
 简单性:与其它模式不同,CTR模式仅要求实现加密算法,但不要求实现解密算法。对于 AES 等加/解密本质上不同的算法来说,这种简化是巨大的。
 无填充,可以高效地作为流式加密使用。

六.比较

0 0