三重数据加密算法
标准中的定义
TDEA算法在以下标准中被定义:
ANS X9.52-1998 三重数据加密算法的工作模式 (已失效)
FIPS PUB 46-3 数据加密标准 (DES)(PDF) (已失效 )
NIST Special Publication 800-67 使用三重数据加密算法(TDEA)块密码的建议 PDF (483 KB)
ISO/IEC 18033-3:2005 信息技术—安全技术—加密算法—第三部分:块密码
算法的名称
最早的定义了该算法的标准(ANS X9.52,1998年发布)将其描述为“三重数据加密算法(TDEA)”— 即为ANSI X3.92中定义的数据加密算法(DEA)的三次重复操作— 而完全没有使用术语“3DES”或“DES”。FIPS PUB 46-3(1999)定义了“三重数据加密算法”(TDEA),也使用了术语“Triple DES”和“DES”。该标准中互换的使用“数据加密算法”(DEA)和“DES”的概念,其中以此开始DES的定义:
NIST SP 800-67(2004,2008 )主要使用术语TDEA,但也提到了“Triple DES(TDEA)”。ISO/IEC 18033-3(2005)使用“TDEA”,但其中提到:
没有一个定义了本算法的标准使用术语“3DES”。
算法
3DES使用“密钥包”,其包含3个DES密钥,K 1 ,K 2 和K 3 ,均为56位(除去奇偶校验位)。加密算法为:
也就是说,使用K 1 为密钥进行DES加密,再用K 2 为密钥进行DES“解密”,最后以K 3 进行DES加密。
而解密则为其反过程:
即以K 3 解密,以K 2 “加密”,最后以K 1 解密。
每次加密操作都只处理64位数据,称为一块。
无论是加密还是解密,中间一步都是前后两步的逆。这种做法提高了使用密钥选项2时的算法强度,并在使用密钥选项3时与DES兼容。
密钥选项
标准定义了三种密钥选项:
密钥选项1:三个密钥是独立的。
密钥选项2:K 1 和K 2 是独立的,而K 3 =K 1
密钥选项3:三个密钥均相等,即K 1 =K 2 =K 3
密钥选项1的强度最高,拥有3 x 56 = 168个独立的密钥位。
密钥选项2的安全性稍低,拥有2 x 56 = 112个独立的密钥位。该选项比简单的应用DES两次的强度较高,即使用K 1 和K 2 ,因为它可以防御中途相遇攻击。
密钥选项3等同与DES,只有56个密钥位。这个选项提供了与DES的兼容性,因为第1和第2次DES操作相互抵消了。该选项不再为国家标准科技协会(NIST)所建议 ,亦不为ISO/IEC 18033-3所支持。
其它用于指代密钥选项的术语
“密钥选项 n ”是标准中(X9.52, FIPS PUB 46-3, SP 800-67, ISO/IEC 18033-3)定义的TDEA的术语。然而,其它标准中,推荐和通用描述中也使用了其它术语。
密钥选项1:
密钥选项2:
对多于一个块的加密
与其它的块密码一样,对多个数据块的加密和解密可以使用多种工作模式进行,而模式的定义可以与块密码算法相独立。然而,ANS X9.52和NIST SP 800-67(通过SP 800-38A )确定了某些模式只能在特定限制下应用,而无需普遍的应用。例如,ANS X9.52提出对于CBC模式,初始化向量每次应当不同,而ISO/IEC 10116没有类似规定 。FIPS PUB 46-3和ISO/IEC 18033-3只定义了单块密码,而并没有对多块的工作模式做出限制。
安全性
普遍而言,有3个独立密钥的3DES(密钥选项1)的密钥长度为168位(三个56位的DES密钥),但由于中途相遇攻击,它的有效安全性仅为112位。密钥选项2将密钥长度缩短到了112位,但该选项对特定的选择明文攻击和已知明文攻击的强度较弱 ,因此NIST认定它只有80位的安全性 。
对密钥选项1的已知最佳攻击需要约2 组已知明文,2 部,2 次DES加密以及2 位内存 (该论文提到了时间和内存的其它分配方案)。这在现在是不现实的,因此NIST认为密钥选项1可以使用到2030年 。若攻击者试图在一些可能的(而不是全部的)密钥中找到正确的,有一种在内存效率上较高的攻击方法可以用每个密钥对应的少数选择平文和约2 次加密操作找到2 个目标密钥中的一个 。
使用
电子货币业界普遍使用3DES,并持续开发和宣传基于其的标准(例如EMV) 。
Microsoft OneNote和Microsoft Outlook2007使用3DES以密码保护用户数据 。
参见
DES
DES-X
AES
Horst Feistel
Walter Tuchman
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值