首页/安全/加密与证书速查/3DES 三重 DES(逐步停用)
加密算法基础95 条

3DES 三重 DES(逐步停用)

用两把或三把 DES 密钥做 EDE 三次运算的过渡算法;64 位分组带来 Sweet32 类碰撞风险,NIST 已在 2023 年后停止认可其加密用途。

加密与证书速查安全更新于 2026-10-13

3DES 是什么

3DES(TDEA)是把 DES 的加密-解密-加密三步串起来以扩大密钥空间的过渡算法:三把独立密钥时有效强度约 168 位,两把相同密钥(2TDEA)时约 112 位。它的分组仍是 64 位,大量数据加密下存在 Sweet32 类碰撞风险,NIST 已在 2023 年后停止认可其加密用途,TLS 中也应移除相关套件。

基本信息

变体2TDEA(K1=K3,有效约 112 位)、3TDEA(168 位)
分组长度64 位(与 DES 相同)
结构与开销三次 DES 运算,性能约为 DES 的三分之一
标准NIST SP 800-67 / SP 800-131A Rev.2
现状逐步停用,TLS 中应关闭 3DES 套件
替代方案AES-GCM 或 ChaCha20-Poly1305,国密场景用 SM4

典型使用场景

  • 遗留系统兼容:老设备与老协议可能只支持 3DES,需要评估后过渡
  • TLS 配置整改:把 3DES 套件从服务端列表中移除
  • 支付与金融行业排查:部分老接口历史上使用 3DES,需盘点是否仍在通信
  • 数据迁移评估:确定哪些历史密文由 3DES 保护并规划重加密
  • 扫描结果解读:判断工具报出的 3DES 是提示级还是必须整改

测试遗留服务是否仍协商 3DES

测试遗留服务是否仍协商 3DES
# OpenSSL 3.x 中 3DES 位于 legacy provider,需要显式加载
openssl s_client -connect legacy.example.com:443 -cipher 'DES-CBC3-SHA' </dev/null 2>&1 | grep -E 'Cipher|alert|error'
# 指定套件名的另一种写法
openssl s_client -connect legacy.example.com:443 -cipher '3DES' </dev/null 2>&1 | grep -E 'Cipher|alert|error'
# 查看当前配置里是否还留有 3DES
nginx -T 2>/dev/null | grep -i '3DES'

风险与处置

风险说明处置
Sweet3264 位分组在长时间连接中可能碰撞移除 3DES 套件,长时间连接尤其危险
强度误估2TDEA 有效强度约 112 位而非 192 位按 112 位评估,优先迁移
兜底套件残留以为已禁用,实际仍可协商到用 s_client 与扫描工具核对实际协商结果
性能开销三次 DES 运算,吞吐低高吞吐场景改 AES-GCM
老设备依赖设备只支持 3DES规划隔离与替代方案,设定退场时间
很多老系统只在兜底套件里保留 3DES,配置看上去干净,实际全量流量仍走它。排查要看真实协商结果:用 s_client 指定套件测试,或用抓包与客户端日志确认实际使用的加密算法。
从 3DES 迁移通常是「加密算法替换 + 存量数据重加密」两件事:新数据直接切到 AES-GCM,历史密文需要解密后用新算法重写。迁移期间可以短暂双读,但要有明确的时间窗,避免长期并存两套密钥管理。

易错点

  • 把 2TDEA 当成 192 位强度:K1 与 K3 相同时有效强度约 112 位,评估过高会低估风险
  • 只在配置中删除 3DES 而不验证:客户端与负载均衡仍可能协商到它,需用 s_client 实测
  • 在长时间连接中保留 3DES:64 位分组带来 Sweet32 类碰撞风险,数据量越大越危险
  • 用 3DES 加密新数据:NIST 已停止认可其加密用途,新系统应直接使用 AEAD 类算法
  • 迁移只做新数据而不处理存量:历史密文仍由 3DES 保护,风险敞口长期存在

数据来源与参考

  • NIST SP 800-67 Rev.2(TDEA)
  • NIST SP 800-131A Rev.2
  • RFC 8429(TLS 中弃用 3DES)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌