请输入您要查询的百科知识:

 

词条 对称密码术
释义

对称密码术(也称作秘钥密码术)早已被人们使用了数千年,它有各种形式:从简单的替换密码到较复杂的构造方式。不过,数学的发展和计算能力的不断进步使得创建牢不可破的密码成为可能。对称系统通常非常快速,却易受攻击,因为用于加密的密钥必须与 需要对消息进行解密的所有人一起共享。IBM 开发的密码 DES 已被广泛使用,但如今已到了其使用寿命的尽头,应该要更换了。无论开发人员在他们的应用程序中使用哪种密码,都应该考虑使用的方法、认识到发生的折衷方案以及规划功能更强大的计算机系统的前景。

简介

对称或秘钥密码术早已被人们使用了数千年,它包括任何加密形式,其中同一个密钥既用于加密也用于解密所涉及的文本。最简单的形式之一往往被称为“恺撒(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 方式中,每个明文块在加密前先与前一密文块进行“异或”运算,从而增加了复杂程度,可以使某些攻击更难以实施。 “输出反馈”方式(OFB)类似 CBC 方式,但是进行“异或”的量是独立生成的。 CBC 受到广泛使用,例如在 DES(qv)实现中,而且在有关密码术的技术性方面的相应书籍中深入讨论了各种方式。请注意:您自己建立的 密码系统的普遍弱点就是以简单的形式来使用某些公开的算法,而不是以提供了额外保护的特定方式使用。

迭代的分组密码是那些其加密过程有多次循环的密码,因此提高了安全性。在每个循环中,可以通过使用特殊的函数从初始秘钥派生出的子密钥来应用适当的变换。该附加的计算需求必然会影响可以管理加密的速度,因此在安全性需要和执行速度之间存在着一种平衡。天下没有免费的午餐,密码术也是如此;与其它地方一样,应用适当方法的技巧中有一部分是源于对需要进行的权衡以及它们与需求平衡的关系如何的理解。

分组密码包括 DES、IDEA、SAFER、Blowfish 和 Skipjack — 最后一个是“美国国家安全局(US National Security Agency,NSA)”限制器芯片中使用的算法。

序列密码

与分组密码相比,序列密码可以是非常快速的,尽管某些方式下工作的一些分组密码(如 CFB 或 OFB 中的 DES)可以与序列密码一样有效地运作。序列密码作用于由若干位组成的一些小型组,通常使用称为密钥流的一个位序列作为密钥对它们逐位应用“异或”运算。有些序列密码基于一种称作“线形 反馈移位寄存器(Linear Feedback Shift Register,LFSR)”的机制,该机制生成一个二进制位序列。

序列密码是由一种专业的密码,Vernam 密码(也称为一次性密码本(one-time pad)),发展而来的。序列密码的示例包括 RC4 和“软件优化加密算法(Software Optimized Encryption Algorithm,SEAL)”,以及 Vernam 密码或一次性密码本的特殊情形。

消息认证代码

消息认证代码(MAC)并不是密码,而是校验和(通常是 32 位)的一种特殊形式,它是通过使用一个秘钥并结合一个特定认证方案而生成的,并且附加在一条消息后。消息摘要是使用单向散列函数生成的,紧密联系的数字签名是使用非对称密钥对生成并进行验证的。与这两者相比,预期的接收 方需要对秘钥有访问权,以便验证代码。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/24 17:58:51