密码学中,三重数据加密算法(英语:Triple Data Encryption Algorithm,缩写为TDEA,Triple DEA),或称3DESTriple DES),是一种对称密钥加密块密码,相当于是对每个数据块应用三次资料加密标准(DES)算法。由于计算机运算能力的增强,原版DES由于密钥长度过低容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。

Quick Facts 概述, 首次发布 ...
三重数据加密算法
概述
首次发布1998 (ANS X9.52)
派生自DES
密码细节
密钥长度168,112或56 位 (对应密钥选项 1, 2, 3)
分组长度64位
结构Feistel网络
重复回数相当于DES的48
最佳公开破解
Lucks:232组已知明文,2113次操作,包括290次DES加密,288位内存; Biham:以每个密钥对应的少数选择平文和284次加密操作找到228个目标密钥中的一个
Close

标准中的定义

TDEA算法在以下标准中被定义:

算法的名称

最早的定义了该算法的标准(ANS X9.52,1998年发布)将其描述为“三重数据加密算法(TDEA)” — 即ANSI X3.92中定义的数据加密算法(DEA)的三次重复操作 — 而完全没有使用术语“3DES”或“DES”。FIPS PUB 46-3(1999)定义了“三重数据加密算法”(TDEA),也使用了术语“Triple DES”和“DES”。该标准中互换的使用“数据加密算法”(DEA)和“DES”的概念,其中以此开始DES的定义:

数据加密标准(DES)应当包括下文中的数据加密算法(DES[注 3])与三重数据加密算法(TDEA,如ANSI X9.52中所描述的)

NIST SP 800-67(2004,2008[注 4])主要使用术语TDEA,但也提到了“Triple DES(TDEA)”。ISO/IEC 18033-3(2005)使用“TDEA”,但其中提到:

TDEA通称Triple DES(数据加密标准)。

没有一个定义了本算法的标准使用术语“3DES”。

算法

3DES使用“密钥包”,其包含3个DES密钥,K1,K2和K3,均为56位(除去奇偶校验位)。加密算法为:

密文 = EK3(DK2(EK1(明文)))

也就是说,使用K1为密钥进行DES加密,再用K2为密钥进行DES“解密”,最后以K3进行DES加密。

而解密则为其反过程:

明文 = DK1(EK2(DK3(密文)))

即以K3解密,以K2“加密”,最后以K1解密。

每次加密操作都只处理64位数据,称为一块。

无论是加密还是解密,中间一步都是前后两步的逆。这种做法提高了使用密钥选项2时的算法强度,并在使用密钥选项3时与DES兼容

密钥选项

标准定义了三种密钥选项(Keying option),“密钥选项n”是标准中(X9.52, FIPS PUB 46-3, SP 800-67, ISO/IEC 18033-3)定义的TDEA的术语。然而,其它标准中,推荐和通用描述中也使用了其它术语。

  • 密钥选项1:
    • 三个密钥是独立的。常用名称为3TDEA或“三倍长度密钥”(triple-length keys)[2][3]
    • 密钥选项1的强度最高,拥有3 x 56 = 168个独立的密钥位。在NIST SP 800-57[4]与SP 800-78-2[5]中定义。
  • 密钥选项2(已弃用):
    • K1和K2是独立的,而K3=K1。常用名称为2TDEA,或“双倍长度密钥”(double-length keys)[2][3]
    • 密钥选项2的安全性稍低,拥有2 x 56 = 112个独立的密钥位。该选项比简单的应用DES两次的强度较高,即使用K1和K2,因为它可以防御中途相遇攻击。 这是对“双重DES”(double DES)的改进,双重DES仅需要256步即可进行攻击。 国家标准技术研究所(NIST)已弃用此选项。[6]在NIST SP 800-57[4]和SP 800-78-1[5]中定义。
  • 密钥选项3(已弃用):
    • 三个密钥均相等,即K1=K2=K3
    • 密钥选项3等同与DES,只有56个密钥位。这个选项提供了与DES的兼容性,因为第1和第2次DES操作相互抵消了。该选项不再为NIST所建议[7],亦不为ISO/IEC 18033-3所支持。

对多于一个块的加密

与其它的块密码一样,对多个数据块的加密和解密可以使用多种工作模式进行,而模式的定义可以与块密码算法相独立。然而,ANS X9.52和NIST SP 800-67(通过SP 800-38A[8])确定了某些模式只能在特定限制下应用,而无需普遍的应用。例如,ANS X9.52提出对于CBC模式,初始化向量每次应当不同,而ISO/IEC 10116没有类似规定[9]。FIPS PUB 46-3和ISO/IEC 18033-3只定义了单块密码,而并没有对多块的工作模式做出限制。

安全性

普遍而言,有3个独立密钥的3DES(密钥选项1)的密钥长度为168位(三个56位的DES密钥),但由于中途相遇攻击,它的有效安全性仅为112位。密钥选项2将密钥长度缩短到了112位,但该选项对特定的选择明文攻击已知明文攻击的强度较弱[10][11],因此NIST认定它只有80位的安全性[4]

对密钥选项1的已知最佳攻击需要约232组已知明文(又称Sweet32攻击[12]),2113部,290次DES加密以及288位内存[13](该论文提到了时间和内存的其它分配方案)。这在现在是不现实的,因此NIST认为密钥选项1可以使用到2030年[4]。若攻击者试图在一些可能的(而不是全部的)密钥中找到正确的,有一种在内存效率上较高的攻击方法可以用每个密钥对应的少数选择明文和约284次加密操作找到228个目标密钥中的一个[14]

使用

电子货币业界和电子货币标准(如EMV)过往普遍使用3DES[15][16],但3DES已经逐渐被更安全的AES代替。

Microsoft OneNoteMicrosoft Outlook 2007使用3DES以密码保护用户数据[17][18]

注释

参考文献

参见

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.