3DES / TDEA
3DES/TDEA 通过对 DES 进行 EDE 三重运算延长密钥材料,但仍受 64-bit block size 与 meet-in-the-middle 等限制;NIST 已于 2024-01-01 撤回 SP 800-67 Rev.2,不再允许 TDEA 用于新的加密保护。
[!info] related notes
3DES / TDEA
一句话定义
3DES(Triple DES / TDEA)把 DES 这个 64-bit block cipher 连续应用三次,典型形式是 EDE:
C = E_K3(D_K2(E_K1(P)))
它是 DES 向更现代分组密码过渡时期的兼容方案,而不是今天应继续用于新系统的密码算法。
为什么是 EDE
历史上采用 Encrypt → Decrypt → Encrypt,一个重要原因是兼容性。
当 K1 = K2 = K3 时,EDE 会退化为单 DES:
E_K(D_K(E_K(P))) = E_K(P)
这让旧 DES 生态更容易迁移。
密钥长度不要只看 168 bit
3TDEA 使用三个 DES key。每个 DES key 通常表示为 64 bit,但其中包含 parity bits,实际有效 key material 是 56 bit。
所以三把独立 key 的名义有效 key material 是 56 × 3 = 168 bit。
但 168 bit key material 不等于 168 bit security strength。
由于 meet-in-the-middle 等攻击,3TDEA 的安全强度大约在 112 bit 级,而不是 168 bit。
2TDEA 与 3TDEA
历史上的 2TDEA 使用 K1 = K3,只有两把独立 DES key;3TDEA 则使用三把独立 key。
NIST 在 2017 版 SP 800-67 Rev.2 中已经不再允许 2TDEA。
今天学习 2TDEA 的主要意义是理解历史系统,而不是实现新系统。
64-bit Block Size 是关键历史包袱
3DES 虽然增加了 key material,但没有改变 DES 的 block size:64 bit。
这意味着大量数据处理时会更早受到 birthday-bound 类 block-collision 风险约束。
因此 3DES 的问题不只是速度慢,还包括:
- block size 太小;
- 历史设计包袱重;
- 允许处理的数据量有限;
- 现代硬件与协议已有更好的替代方案。
2024 之后的标准状态
NIST 已于 2024-01-01 撤回 SP 800-67 Rev.2。
TDEA 不再允许用于新的:
- encryption protection;
- key wrapping;
- MAC protection。
仍允许的主要是 legacy processing,例如:
- decrypt 历史密文;
- unwrap 历史 key;
- 验证历史 MAC。
这属于为了读取旧数据而保留兼容能力,而不是继续生成新的 TDEA 保护数据。
新系统应该怎么做
现代通用对称加密应优先采用当前协议和平台支持的现代算法,例如 AES,并使用经过标准化的 authenticated-encryption 方案。
不要继续为新系统设计 3DES 流程,更不要组合 3DES + ECB 之类的 legacy scheme。
常见误区
三次 DES = 168-bit security
不成立。Key material 和 effective security strength 不能直接等同。
3DES 只是慢一点,所以还能继续用
对新系统不成立。当前问题是标准状态与安全边界,不只是性能。
算法被撤回后历史数据就不能解密
不是。Legacy decrypt / unwrap / verify 正是仍保留的兼容用途。
学习检查
- 3DES 为什么通常采用 EDE?
- 为什么 168-bit key material 不等于 168-bit security strength?
- 2TDEA 与 3TDEA 的 key relation 有什么差异?
- 为什么 64-bit block size 是 3DES 的重要局限?
- NIST 2024 撤回以后,哪些用途已经不允许,哪些 legacy processing 仍可以存在?
- 为什么现代系统不应继续生成新的 3DES 保护数据?