DES被定义为使用 64 位密钥。这些位中只有 56 位真正被使用,因此“有效密钥长度”(用于抵抗穷举搜索)是 56 位密钥的长度。然而,任何实现都需要一个 64 位的序列(因此是 8 个字节,而不是 7 个)。
Triple-DES(又名“3DES”)是按适当顺序排列的三个 DES 实例。“中间” DES 实例用于解密模式,正是为了使实现 3DES 的引擎也可以执行普通 DES。如果您将三个连续的密钥命名为K 1、K 2和K 3,那么当K 1 = K 2时,两个第一个 DES 实例相互抵消(第二个 DES 处于解密模式,它与第一个 DES 所做的相反) ,所以这等效于带有密钥K 3的简单 DES 。类似地,如果K 2 = K 3,这等价于带有密钥K 1的简单 DES.
3DES 名义上使用 192 位密钥(三个 64 位 DES 密钥),其中实际使用了 168 位。然而,针对 3DES 的“学术”攻击成本为2 112,因此人们常说 3DES 的整体安全性类似于理论上完美的 112 位密钥分组密码所提供的安全性。因此,3DES 有一个广泛的使用模式,我们使用 128 位密钥:K 1为64 位,K 2为 64 位,然后设置K 3 = K 1。简单来说,用K 1加密块,然后用K 2解密,然后用K 1再次加密. 这似乎足以达到 112 位的安全级别(在 128 位密钥中,只有 112 位真正被使用),而学术攻击表明无论如何您都无法超越该级别(112 位已经远远超出了技术上的水平)现在可以破解,所以不用担心)(编辑: DW 指出有更好的攻击,前提是你可以收获相当多的明文/密文对;但是,攻击成本仍然太高而无法在实践中使用)。这就是您的智能卡实现的。
请注意,有些协议使用 3DES 并且确实需要完整的 192 位密钥,并且不能与仅支持 128 位密钥的实现一起使用;一个典型的例子是SSL。