许多现代密码都是以 DES 为模式的,但很少密码能够象 DES 那样经受得住密码破译。DES 的主要问题是其密钥长度很短,完全不适合于当今的形势。
有可能使密钥长度很短的 DES 更安全,但这不是随意就能做到的。一种(不好)的想法是许多人尝试应用 DES 两次 -- 称为双重加密。在这种方案情况下,使用一个密钥为消息加密一次,然后使用另一个密钥再次加密(密文到修改过的密文)。一种非常精明的攻击最后证明这种双重加密并不比单重加密更好。实际上,使用某种类型的密码情况下,多重加密可能并不比单重加密好(一种称为封闭式密码的类别)。应避免使用封闭式密码,因为它们更容易遭到攻击。
尽管双重加密不是非常有效,但证明三重加密则有效得多,与许多天真的人曾对双重加密寄予的希望一样。例如,56 位 DES 在三重加密后,产生 112 位长度,相信这种长度对于任何应用程序来说都已经足够了。三重加密的 DES,或者简称三重 DES(通常写成 3DES)是一种流行的现代对称块算法。
但三重 DES 不是包治百病的万灵药。三重 DES 的一个问题是它的速度或有关速度的不足。部分是由于速度的原因,美国商务部的国家标准和技术协会发起了高级加密标准 (AES) 的角逐。到目前为止,NIST 选择了五种算法作为该标准的最终入围者。将在 2000 年年底之前宣布它们当中的获胜者。
AES 角逐的一个风险是所有算法都是相对比较新的。这些候选算法在短时间内没有得到详细检验,无法与对多年来一直使用的 DES 进行的深入检验相比。不过,仍然有些人相信 NSA 在 DES 中放置的隐蔽的“后门”会带来一些风险,使它们易于受到攻击。这些人似乎更欢迎 NSA 没有插手的标准(然而,NSA 与 NIST 仍然有相当密切的关系)。事实上,除了相对较短的生命期,AES 获胜者的算法(在下 50 年中使用)至少大概与 DES 有史以来的算法一样好。
尽管三重 DES 有一些性能问题,但目前它还是倍受推崇的解决方案。这种算法一个最大的好处是它是免费使用的。可以从因特网上下载几种 DES 好的实现。AES 获胜者也将免费使用,并至少提供一种免费的参考实现。五个候选算法中有许多已经是免费的。对于多数应用程序来说,AES 候选算法比 DES 要快很多。
三重 DES
尽管 DES 是技术上的标准,但大部分专家都认为在 AES 竞赛结束之前,三重 DES 是实际上的过渡期标准。
有大量商业对称算法也可以使用。因为这些算法是专有的,所以往往无法仔细分析它们,至少无法在公开情况下。但也有一些专有算法提供了良好的安全性,并且能相当有效地运行。不过我们暂时没有找到任何压倒多数的理由向大多数应用程序推荐除三重 DES 以外的其它任何标准,以及在宣布了 AES 获胜者之后不推荐 AES 获胜者的理由。
对称密钥解决方案的一个问题是每一对通信代理都需要唯一密钥。这样就出现了在有许多用户的情况下管理密钥的难题。每一对唯一通信实体都需要唯一密钥!为了绕过这个问题,有一些设计者转而使用密钥派生算法。这种想法是使用主密钥来为每个通信对派生出一个唯一密钥。大多数情况下,密钥派生使用唯一的用户标识信息(例如用户序列号)来转换主密钥。这种方案的固有风险是显而易见的。如果泄露了主密钥,所有希望就破灭了。实际上,即使可能只破译了一个派生密钥,也会为攻击者提供足够多的主密钥信息。如果不考虑这种风险,许多系统都依靠带有密钥派生的对称算法来控制密码成本。
在相关实践中,设计者对于两个代理之间所有加密的通信通常利用会话密钥而不是使用同一个对称密钥。在上述派生的密钥中,它的想法是使用主密钥为每个通信对使用会话密钥,可能它本身就是从全局主密钥中派生出的。在泄露会话密钥的情况下,系统可以继续派用场。再次重申,从主通信对密钥中派生会话密钥的想法仍然会对整个系统带来风险。
公钥密码术
我们在前面一节提到过,对称密码术最大的一个问题就是密钥分发问题。困难在于解决如何在非安全媒体上与远程方安全地交换秘钥。公钥密码术完全不存在密钥交换问题。在公钥系统中,用于密码操作的是一对密钥,而不是单一密钥的副本。两个密钥中有一个是公开可用的,称为 公钥。这个密钥可以自由地散发、放在网页上、广播等等。公钥用于加密消息。另一个密钥与第一个不同,必须保持私密。它称为 私钥,用于解密消息。私钥的安全性与对称算法中的密钥安全性一样重要。这两种算法方式的根本差异在于:在公钥密码术中,永远不需要与任何人共享私钥,因此就完全避免了密钥分发问题。
在公钥系统中,发送方使用接收方的公钥来为消息加密。受到算法缺点的限制,在假设算法正确实现的情况下,唯一能解密使用这种方法加密的消息的人应该是拥有相关私钥的那个人。这个系统与任何人都可以向其中投信的邮箱类似。在这种相似情况下,没有人可以轻易地从信箱中取邮件,除非他们拥有能够开启邮箱的那个小心保管的秘钥。
下面的图 2 中显示了公钥密码术的图形概述,说明 Alice 向 Bob 发送消息时发生了什么事
http://www-900.ibm.com/developerWorks/cn/security/tried/crypto2.gif