2020 年我可以在我的应用程序中使用 3DES 吗?

use*_*461 2 security 3des des aes

我们正在编写一个处理相对敏感信息的新应用程序。该团队正在讨论是否应该支持数据的 3DES 和/或 AES 加密。不幸的是,谷歌搜索给出的结果好坏参半。

我们有库可以同时执行这两项操作并在其他产品中使用它们。我们应该用什么?更喜欢其中一个的理由是什么?

use*_*461 5

简而言之,答案是否定的,您不能使用 3DES,因为法规禁止使用 3DES。

长答案:

共有三种主要的 DES 算法。我将涵盖3DES所有禁止的内容2-3DESDES

处理时必须格外小心,XXXDES因为它们很容易混淆和配置错误。

AES128 位是普遍接受的替代方案。

DES

DES是基本算法,于 1975 年发布,使用 56 位密钥。

它很久以前就奠定了对称密码/分组密码的基础。

DES自 2000 年代初以来,它一直不安全并被禁止使用。随着时间的推移,计算能力不断增强,现在可以轻松破解 56 位密钥。

2 键 3DES(或 2TDES 或 2DES)

2DES是一种类似的算法,使用两个 56 位密钥,提供 112 位强度加密。

实际上3DES(需要 3 个键),但未设置第 3 个键。我将调用它2DES来区分。

2DES非常棘手,因为它实际上与 无法区分3DES。它们都在标准中定义并一起实施。声称可以做的软件可能3DES实际上正在做2DES,或者取决于配置设置,这是一个问题。

自 2019 年 3 月起,禁止在应用程序中使用 2-keys 3DES。

引用官方NIST.SP.800-131Ar2文档,第 13 页:

不允许使用双密钥 TDEA 进行加密。

3DES(或 TDES 或 TDEA)

3DES是 DES 的演变,使用三个 56 位密钥,提供 112 位强度加密。

由于构造原因,其强度仅为 2^112 + 2^56,而不是 2^168。见中间进攻相逢

3DES自 2023 年起禁止在应用程序中使用。

3DES自 2017 年 11 月起禁止在新应用程序中使用。

3DES禁止在遗留应用程序(2017 年之前创建并在 2023 年之前运行)中使用,除非使用符合 NIST 指定的限制,在这种情况下,仅使用 3DES deprecated(可以使用到 2023 年)。NIST 文档中传播了很多内容,包括但不限于不执行 2key 3DES、将规范中列出的一组密钥列入黑名单、不加密超过 8 MB 的数据等...

满足遗留状态的所有限制并能够证明它的可能性相当低。帮自己一个忙,想想自 2017 年以来 3DES 就被普遍禁止了。如果您在 2020 年处理使用 3DES 的系统,它们迫切需要升级!

附加限制

3DES被认为是 112 位强度(它很弱)。任何限制使用小于 128 位加密的行为实际上都会影响3DES.

软件法规没有指定公认的技术措施(他们没有说使用 3DES 或任何名称的算法),他们通常遵循推荐或普遍接受的安全实践。有时明确指出发布标准的 NIST 或类似机构。

监管如何结合存在一个有趣的难题。例如,围绕处理支付或敏感信息或PII 的系统有额外的规定。根据解释和具体使用情况,3DES 一旦被任何正式标准弃用(早在 NIST 于 2023 年正式终止它之前)就可能被禁止。

ENISA,欧盟网络安全机构(相当于欧洲的 NIST)于 2013 年发布了官方指南,建议至少使用 128 位进行加密,并将 和 正式3DES分类2DESlegacy.

旧版:(两密钥 3DES 和三密钥 3DES)

  • 目前没有已知的弱点。
  • 存在更好的替代方案。
  • 缺乏安全证明或密钥大小有限。

一般来说,我们认为分组密码的最小密钥大小应该是 128 位;块大小的最小值取决于精确的应用,但在许多应用中(例如 MAC 功能的构造),128 位块大小现在应被视为许多应用中的最小值。我们还认为,应在同一密钥下加密的最大数据量应受 限制2n/2,其中 n 是块大小(以位为单位)。然而,如前所述,一些短暂的密码可能需要在其构造中使用较小的块和密钥大小;但对于一般应用,我们建议至少 128 位。

无需惊慌

虽然 3DES 的所有变体都需要消失,但无需对此感到恐慌(与 RC4 或 MD5 不同,它们确实存在问题)。

只要您遵循诸如不使用它加密超过 8 MB 的数据之类的准则(好吧,必须承认它在某种程度上被破坏),该算法就不会遭受灾难性的破坏或容易受到攻击。根本问题是,如果将整个 AWS 数据中心用于这项任务,3DES 密钥可能会在合理的人力时间内被破解。

AES-128 是 DES 的直接继承者。这是直接替换,而且速度要快得多。

如果 3DES 可以在一个核心上加密 100 MB/s,则 AES-128 可以在同一核心上加密 300MB/s,或者如果 CPU 具有 AES-NI 指令(2016 年后大多数 x64 CPU),则可以加密 1000MB/s。