数据加密标准( DES)是一种对称密钥加密块密码算法,基于使用56位密钥的对称算法。DES已经不是一种安全的加密方法,主要因为它使用的56位密钥过短。
数据加密标准(Data Encryption Standard,缩写为 DES)是一种对称密钥加密块密码算法,1976 年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用 56 位密钥的对称算法。这个算法因为包含一些机密设计元素,相对短的密钥长度以及怀疑内含美国国家安全局(NSA)的后门而在开始时有争议,DES 因此受到了强烈的学院派式的审查,并以此推动了现代的块密码及其密码分析的发展。
DES 现在已经不是一种安全的加密方法,主要因为它使用的 56 位密钥过短。1999 年 1 月,distributed.net 与电子前哨基金会合作,在 22 小时 15 分钟内即公开破解了一个 DES 密钥。也有一些分析报告提出了该算法的理论上的弱点,虽然在实际中难以应用。为了提供实用所需的安全性,可以使用 DES 的派生算法 3DES 来进行加密,虽然 3DES 也存在理论上的攻击方法。DES 标准和 3DES 标准已逐渐被高级加密标准(AES)所取代。另外,DES 已经不再作为国家标准科技协会(前国家标准局)的一个标准。在某些文献中,作为算法的 DES 被称为 DEA(Data Encryption Algorithm,数据加密算法),以与作为标准的 DES 区分开来。
DES 是一种典型的块密码—一种将固定长度的明文通过一系列复杂的操作变成同样长度的密文的算法。对 DES 而言,块长度为 64 位。同时,DES 使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥表面上是 64 位的,然而只有其中的 56 位被实际用于算法,其余 8 位可以被用于奇偶校验,并在算法中被丢弃。因此,DES 的有效密钥长度仅为 56 位。
与其它块密码相似,DES 自身并不是加密的实用手段,而必须以某种工作模式进行实际操作。FIPS-81 确定了 DES 使用的几种模式。FIPS-74 包括了更多关于 DES 使用的讨论。
DES 的历史
DES 最初出现在 1970 年代早期。1972 年,在一个对美国政府的计算机安全需求的研究得出结果后,NBS(国家标准局,现在的 NIST)开始征集用于加密政府内非机密敏感信息的加密标准[3]。因此 1973 年 5 月 15 日,在咨询了美国国家安全局(NSA)之后,NBS 向公众征集可以满足严格设计标准的加密算法。然而,没有一个提案可以满足这些要求。因此在,1974 年 8 月 27 日,NBS 开始了第二次征集。这一次,IBM 提交了一种在 1973-1974 年间发展的算法,这份提案被有限度的接受了。
这种算法是基于早先霍斯特·费斯妥(Horst Fiestel)提出的 Lucifer 算法的。费斯妥,沃尔特·塔克曼(Walter Tuchman),道·科柏密斯(Don Coppersmith),艾伦·康海姆(Alan Konheim),卡尔·梅尔(Carl Meyer),迈克·马加什(Mike Matyas),罗伊·阿德勒(Roy Adler),埃德娜·格罗斯曼(Edna Grossman),比尔·诺兹(Bill Notz),林恩·史密斯(Lynn Smith)以及布莱恩特·塔克曼等人参与了 IBM 在算法设计和分析方面的工作。
安全与密码分析
虽然已发表的针对 DES 的密码分析的研究文章多于所有其它的块密码,到目前为止,最实用的攻击方法仍然是暴力攻击。已知 DES 有一些次要的可能导致加密强度降低的密码学特性,同时有 3 种理论攻击的理论复杂性小于暴力破解,但需要不现实的已知明文或选择明文数量,并无实用价值。