简介
对称或秘钥密码术早已被人们使用了数千年,它包括任何加密形式,其中同一个密钥既用于加密也用于解密所涉及的文本。最简单的形式之一往往被称为“恺撒(Caesar)”密码 — 据说是 Julius Caesar 用来隐蔽消息的方法 — 其过 程很简单,就是将字母表沿某一方向或反方向移动数位。第 1 部分中提供的 HAL/IBM 示例正是这种形式,它的密钥指示将字母向前移动一位进行解密。在这个普通示例中,解密密钥是一个加密密钥的镜像(mirror image),而不是它的复制品,但这并没有损害作为对称机制的保密级别。
编辑本段排列
这种简单方案的变体涉及使用一个任意排序的字母表,它和用于明文消息的字母表有同样的长度。在这种情况下,密钥可能是由数字组成的一个长序列,例如:5, 19, 1, 2, 11 ... 表明 A 应该映射为 E、B 为 S、C 为 A、D 为 B、E 为 K 等等 — 也可能是许多有点独创性方案中的一种,这些 方案包含的字母(假定)是从特定小说的句子中选取的。
当然,这样的系统是极其脆弱的,而现代的系统则使用基于难解的数学问题的复杂算法,并因此趋于极端强壮。
非对称密码术的过程有一个公共元素,而且几乎从不共享私钥。与非对称密码术的这种情况不同,对称密码术通常需要在一个受限组内共享密钥并同时维护其保密性。对于一个查看用对称密码加密的数据的人来说,如果对用于加密数据的密钥根本没有访问权,那么他完全不可能查看加密数据。如果这样的秘钥落入坏人之手,那么就会马上彻底地危及使用该密钥加密的数据的安全性。因此,使用秘钥方法的这个组中的所有系统所共享的内容是密钥管理的难点,将在关于实际问题的特性中(紧接在本系列后)更详细地讨论。
编辑本段密码长度
通常提到的密钥都有特定的位长度,如 56 位或 128 位。这些长度都是对称密钥密码的长度,而非对称密钥密码中至少私有元素的密钥长度是相当长的。而且,这两组的密钥长度之间没有任何相关性,除非偶尔在使用某一给定系统的情况下,达到某一给定密钥长度提供的安全性级别。但是,Phil Zimmermann,非常有效而且重要的软件包 — 称为“PGP 加密软 件(Pretty Good Privacy,PGP)”的创始人,提出 80 位的对称密钥目前在安全性方面与 1024 位的非对称密钥近似相等;要获得 128 位对称密钥提供的安全性,可能需要使用 3000 位的非对称密钥。有些人肯定会对其中一些比较、(毫无疑问)甚至对比较的尝试持反对意见。
但是,在任何特定组中,所用密钥的长度通常是确定安全性时的一个重要因素。而且,密钥长度并不是线性的,而是每增加一位就加倍。二的二次方是四,三次方是八,四次方是十六,依次类推。Giga Group 提供一个简单的比喻,它提出如果一个茶匙足够容纳所有可能的 40 位的密 钥组合,那么所有 56 位的密钥组合需要一个游泳池来容纳,而容纳所有可能的 128 位的密钥组合的体积将会粗略地与地球的体积相当。一个用十进制表示的 128 位的值大概是 340,后面跟 36 个零。
对称密钥方法比非对称方法快得多,因此加密大量文本时,对称密钥方法是首选机制。诸如 DES(qv)的密码在软件中至少比非对称密码 RSA(在关于非对称系统的特性中有所讨论)快 100 倍,而且在专门的硬件上实现时可能高达 10,000 倍。秘钥密码最适合用于在单用户或 小型组的环境中保护数据,通常都是通过使用密码实现。实际上,正如在别处已提到的,广为散布或大规模实际使用的最令人满意的方法往往都同时组合了对称和非对称系统。
编辑本段对称密码的类型
现在,通常使用分组密码(block cipher)或序列密码(stream cipher)实现对称密码,我们将在此讨论这两种密码。这一特性中还要考虑称为“消息认证代码(Message Authentication Code,MAC)”的一种使 用秘钥的校验和机制。MAC 与消息摘要 是完全不同的,消息摘要是在数字签名中使用的,将在关于非对称密码术(第 3 部分)的特性中讨论。
分组密码
分组密码将定长的明文块转换成等长的密文,这一过程在秘钥的控制之下。使用逆向变换和同一密钥来实现解密。对于当前的许多分组密码,分组大小是 64 位,但这很可能会增加。
明文消息通常要比特定的分组大小长得多,而且使用不同的技术或操作方式。这样的方式示例有:电子编码本(ECB)、密码分组链接(CBC)或密码反馈(CFB)。ECB 使用同一个密钥简单地将每个明文块一个接一个地进行加密;在 CBC 方式中,每个明文块在加密前先与前一密文块进行“异或”运算,从而增加了复杂程度,可以使某些攻击更难以实施。 “输出反馈”方式(OF