2.5.2 分组密码

分组密码多应用于网络加密,是对称密码体制中发展最为完善的密码体制。分组密码对固定长度的一组明文进行加密,这一固定长度称为分组长度。分组长度是分组密码的一个参数,它与分组算法的安全性成正比,其取值范围取决于实际应用的环境。为保证分组算法的安全性,分组长度越长越好,分组长度越长,则密码分析越困难;为保证分组密码的实用性,分组长度越短越好,分组长度越短,则越便于操作和运算。分组长度的设定需要权衡分组算法的安全性与实用性,一般设置为56位。但随着密码学的发展,分组长度只有56位的分组密码已经不能确保算法的安全性。目前,分组密码多选择128位作为算法的分组长度。

分组密码的加密过程是对一个分组长度为n位的明文分组进行加密操作,相应地产生一个n位的密文分组,由此可见,不同的n位明文分组共有2n个。考虑到加密算法的可逆性(即保证解密过程的可行性),每一个不同的n位明文分组都应该产生一个唯一的密文分组,加密过程对应的变换称为可逆变换或非奇异变换。所以,分组密码算法从本质上来说是定义了一种从分组的明文到相应的密文的可逆变换。

分组密码是现代密码学的重要组成部分,具有代表的分组加密算法有DES、AES等,我们将在后续章节具体探讨如何实现分组密码。

1.分组密码设计原则

分组密码的设计原则包括安全性和实现性两个方面。前者主要研究如何设计安全算法,分组长度和密钥长度,后者主要讨论如何提高算法的执行速度。

(1)针对安全的一般设计原则

安全性原则也称为不可破译原则,它包含理论上不可破译和实际上不可破译两重含义。香农认为:在理想密码系统中,密文的所有统计特性都与所使用的密钥独立。关于实用密码的两个一般的设计原则是香农提出的混乱原则和扩散原则。

❑扩散(Diffusion)原则:人们所设计的密码应使得密钥的每一位数字影响到密文的多位数字,以防止对密钥进行逐段破译,而且明文的每一位数字也影响密文的多位数字以便隐藏明文数字的统计性。

❑混乱(Confusion)原则:人们所设计的密码应使得密钥和明文以及密文之间的信赖关系相当复杂以至于这种信赖性对密码分析者来说是无法利用的。

如何衡量一个密码体制的安全性?

主要有以下几个方面:

1)密码体制的破译所需要的时间和费用超出了现有的资源和能力。

2)密码体制的破译所需要的时间超过了该体制所保护的信息的有效时间。

3)密码体制的破译所需要的费用超过了该体制所保护的信息的价值。

(2)针对实现的设计原则

分组密码可以用软件和硬件来实现。硬件实现的优点是可获得高效率,而软件实现的优点是灵活性强、代价低。

❑软件实现的设计原则:使用子块和简单的运算。密码运算在子块上进行,要求子块的长度能自然地适应软件编程,如8、16、32位等。应尽量避免按位置换,在子块上所进行的密码运算尽量采用易于软件实现的运算。最好是用处理器的基本运算,如加法、乘法、移位等。

❑硬件实现的设计原则:加密和解密的相似性,即加密和解密过程的不同应局限于密钥使用方式上,以便采用同样的器件来实现加密和解密,以节省费用和体积。尽量采用标准的组件结构,以便能适应于在超大规模集成电路中实现。

2.分组密码工作模式

我们以DES算法工作模式为例,DES算法根据其加密算法所定义的明文分组的大小(56位),将数据分割成若干56位的加密区块,再以加密区块为单位,分别进行加密处理。如果最后剩下不足一个区块的大小,我们称之为短块,短块的处理方法有填充法、流密码加密法、密文挪用技术。

1980年12月,DES算法工作模式被美国联邦信息处理标准组织(Federal Information Processing Standard, FIPS)标准化。加密算法应用的复杂性,有的强调效率,有的强调安全,有的强调容错性。根据数据加密时每个加密区块间的关联方式来区分,可以分为4种工作模式:电子密码本模式(Electronic Code Book, ECB)、密文链接模式(Cipher Book Chaining, CBC)、密文反馈模式(Cipher Feed Back, CFB)、输出反馈模式(Output Feed Back, OFB)。AES标准除了推荐上述4种工作模式外,还推荐了一种新的工作模式:计数器模式(Counter, CTR)。这些工作模式可适用于各种分组密码算法。

❑电子密码本模式—ECB

电子密码本模式如图2-4所示,它是最基本、最易理解的工作模式。每次加密均产生独立的密文分组,每组的加密结果不会对其他分组产生影响,相同的明文加密后对应产生相同的密文,无初始化向量(也称为加密向量)。可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文,这也是该模式名称的由来。

·优点:易于理解且简单易行;便于实现并行操作;没有误差传递的问题。

·缺点:不能隐藏明文的模式,如果明文重复,对应的密文也会重复,密文内容很容易被替换、重排、删除、重放;对明文进行主动攻击的可能性较高。

·用途:适合加密密钥,随机数等短数据。例如,安全地传递DES密钥,ECB是最合适的模式。

figure_0036_0009

图 2-4 电子密码本模式

❑密文链接模式—CBC

密文链接模式如图2-5所示,它是目前应用最广泛的工作模式。明文加密前需先与前面的密文进行异或运算(XOR)后再加密,因此只要选择不同的初始向量,相同的明文加密后产生不同的密文。

·优点:密文链接模式加密后的密文上下文关联,即使在明文中出现重复的信息也不会产生相同的密文;密文内容如果被替换、重排、删除、重放或网络传输过程中发生错误,后续密文即被破坏,无法完成解密还原;对明文的主动攻击的可能性较低。

·缺点:不利于并行计算,目前没有已知的并行运算算法;误差传递,如果在加密过程中发生错误,则错误将被无限放大,导致加密失败;需要初始化向量。

·用途:可加密任意长度的数据;适用于计算产生检测数据完整性的消息认证码MAC。

❑密文反馈模式—CFB

密文反馈模式如图2-6所示,它类似于自同步流密码,分组加密后,按8位分组将密文和明文进行移位异或后得到输出同时反馈回移位寄存器。它的优点是可以按字节逐个进行加密解密,也可以按n位字节处理。CFB是上下文相关的,明文的一个错误会影响后面的密文(错误扩散)。CFB需要一个初始化向量,加密后与第一个分组进行异或运算产生第一组密文;然后,对第一组密文加密后再与第二个分组进行异或运算取得第二组密文,以此类推,直到加密完毕。

figure_0037_0010

图 2-5 密文链接模式

figure_0037_0011

图 2-6 密文反馈模式

·优点:隐藏了明文的模式,每一个分组的加密结果必受其前面所有分组内容的影响,即使出现多次相同的明文,均产生不同的密文;分组密码转化为流模式,可产生密钥流;可以及时加密传送小于分组的数据。

·缺点:与CBC相类似。不利于并行计算,目前没有已知的并行运算算法;存在误差传送,一个单元损坏影响多个单元;需要初始化向量。

·用途:因错误传播无界,可用于检查发现明文密文的篡改。

❑输出反馈模式—OFB

输出反馈模式如图2-7所示,它将分组密码作为同步流密码运行,和CFB相似,不过OFB用的是前一个n位密文输出分组反馈回移位寄存器,OFB没有错误扩散问题。该模式产生与明文异或运算的密钥流,从而产生密文,这一点与CFB大致相同,唯一的差异是与明文分组进行异或的输入部分是反复加密后得到的。

figure_0038_0012

图 2-7 输出反馈模式

·优点:隐藏了明文的模式;分组密码转化为流模式;无误差传送问题;可以及时加密传送小于分组的数据。

·缺点:不利于并行计算;对明文的主动攻击是可能的,安全性较CFB差。

·用途:适用于加密冗余性较大的数据,比如语音和图像数据。

❑计数器模式—CTR

计数器模式如图2-8所示,它的特点是将计数器从初始值开始计数所得到的值发送给分组密码算法。随着计数器的增加,分组密码算法输出连续的分组来构成一个位串,该位串被用来与明文分组进行异或运算。计数器模式是用来提取分组密码的最大效能以实现保密性的。在AES的实际应用中,经常会选择CBC模式和CTR模式,但更多的是选择CTR模式。

figure_0039_0013

图 2-8 计数器模式

·优点:可并行计算;安全性至少与CBC模式一样好;加密与解密仅涉及密码算法的加密。

·缺点:没有错误传播,因此不易确保数据完整性。

·用途:适用于各种加密应用。