选择 TripleDES 密钥,使其有效地表现为常规 DES

信息安全 密码学 加密 密钥生成
2021-08-31 02:45:05

我正在使用支持 TripleDES 和 DES 的智能卡 (DESFire)。在规范中声明两种操作模式都使用 16 字节密钥。当密钥中的前 8 个字节与后面的 8 个字节相同时,使用 DES 模式。否则,选择 TDEA 算法。

这让我很震惊,因为我理解 Triple DES 使用 56 位 * 3 = 168 位(21 字节)的密钥包。它可以支持哪种三重 DES 加密?除了选择 k1=k2=k3 的密钥包 k1k2k3 之外,还有其他方法可以为 TDEA 选择密钥,使其表现为单个 DES?

编辑:似乎有一个“键控选项2”,其中k1 = k3!= k2。

我猜这是 DESFire 支持的唯一 TDEA 选项。较新的 DESFire ev1 支持全键控选项 3 TDEA 以及 AES。

1个回答

DES被定义为使用 64 位密钥。这些位中只有 56 位真正被使用,因此“有效密钥长度”(用于抵抗穷举搜索)是 56 位密钥的长度。然而,任何实现都需要一个 64 位的序列(因此是 8 个字节,而不是 7 个)。

Triple-DES(又名“3DES”)是按适当顺序排列的三个 DES 实例。“中间” DES 实例用于解密模式,正是为了使实现 3DES 的引擎也可以执行普通 DES。如果您将三个连续的密钥命名为K 1K 2K 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