2.5 对称密码体制

对称密码体制并不是现代密码学的新生产物,它是古典密码学的进一步延续。古典密码常用的两种技巧—替代和移位,仍然是对称密码体制中最重要的加密技巧。

对称密码体制的保密通信模型如图2-2所示。对称密码体制要求加密与解密使用同一个共享密钥,解密是加密的逆运算,由于通信双方共享同一个密钥,这就要求通信双方必须在通信前商定该密钥,并妥善保存该密钥。该密钥称为秘密密钥。秘密密钥的存在使得对称密码体制开放性变差。

图2-2 对称密码体制的保密通信模型

对称密码体制分为两种:一种是对明文的单个位(或字节)进行加密和解密,称为流密码,又称为序列密码;另一种是把明文信息划分成不同的组(或块)结构,分别对每个组(或块)进行加密和解密,称为分组密码。

2.5.1 流密码

流密码是军事、外交等机要部门中应用最为广泛的对称密码体制。同时,它也是手机应用平台最常用的加密手段。流密码实现较为简单,加密时将明文按字符(或字节)逐位进行加密,解密时将密文按字符(字节)逐位解密。加密、解密可以是简单的位运算,如模n运算。明文加密后,生成的密文几乎和明文保持同样的长度。流密码加密与解密的流程如图2-3所示。

图2-3 流密码加密与解密流程

流密码分为同步流(序列)密码和自同步流(序列)密码。

1.同步流密码

应用同步流密码,信息发送方和接收方在传递信息时,同步进行加密解密操作,明文与密文一一对应。密文的内容如果在传输过程中被篡改、删除或插入,可导致同步失效,以致密文解密失败,必须通过重新同步来实现解密、恢复密文。在密文传输过程中,如果一个密文位发生变化,那么该位的变化只影响该位的恢复,对后续密文位不影响,这是同步流密码的一个重要特点。但是,根据该特点主动攻击者可以有选择地对密文字符进行改动,并准确知道这些改动对明文的影响。因此,同步流密码具有同步性、无错误传递性及主动攻击性三种特性。同步流密码适用于为音频和视频数据提供版权保护。

2.自同步流密码

与同步流密码相比,自同步流密码是一种有记忆变换的密码。每一个密钥与已产生的固定数量的密文位有关,密钥由已生成的密文决定。在密文传输过程中,如果一个密文位发生变化,那么该位的变化会影响到后续有限(如n位)的密文位的正确解密。所以,自同步流密码有错误传递现象。但是,在接收n位正确密文字符后,密码自身会实现重新同步。基于这一特点,如果主动攻击者对密文做了修改,接收方仍然不能检测出密文的完整性。与同步流密码相比,自同步流密码的密码分析更加困难,安全性更高。因此,自同步流密码具有自同步性、错误传递有限性、主动攻击性及明文统计扩散性四种特性。

流密码具有实现简单、便于硬件计算、加密与解密处理速度快、错误传播率低等优点。但是,流密码对错误的产生不够敏感,这是流密码的缺点。为了弥补这一缺点,流密码通常配合其他技术验证信息的完整性。流密码涉及大量的理论知识,受限于应用场合(目前主要用于军事和外交等机要部门),许多研究成果并未完全公开。目前使用较多的流密码是自同步流密码。流密码的常用算法有RC4和SEAL等。

流密码的安全强度依赖于密钥流生成器所产生的密钥流序列的特征,关键在于密钥生成器的设计以及信息收发两端密钥流产生的同步技术。

2.5.2 分组密码

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

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

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

1.分组密码设计原则

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

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

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

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

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

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

主要在以下几个方面:

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

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

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

(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)。这些工作模式可适用于各种分组密码算法。

(1)电子密码本模式—ECB

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

图2-4 电子密码本模式

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

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

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

(2)密文链接模式—CBC(已丧失安全性,不推荐使用)

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

图2-5 密文链接模式

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

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

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

(3)密文反馈模式—CFB

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

图2-6 密文反馈模式

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

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

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

(4)输出反馈模式—OFB

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

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

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

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

(5)计数器模式—CTR

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

图2-7 输出反馈模式

图2-8 计数器模式

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

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

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