假设产品保质期为 30 年,现在发布的产品是 2021 年,那么在产品中使用散列或加密算法的建议/建议是什么?这意味着,我应该直接使用高级算法(SHA-512 用于散列,AES-256 用于加密)还是应该由 SAL(安全保证级别)或任何其他不同因素驱动?
此外,NIST 是否有任何建议根据产品的保质期选择这些产品?
假设产品保质期为 30 年,现在发布的产品是 2021 年,那么在产品中使用散列或加密算法的建议/建议是什么?这意味着,我应该直接使用高级算法(SHA-512 用于散列,AES-256 用于加密)还是应该由 SAL(安全保证级别)或任何其他不同因素驱动?
此外,NIST 是否有任何建议根据产品的保质期选择这些产品?
按照您的建议使用 SHA-512 和 AES-256 通常没有错。但这在未来可能会改变。
详细:这取决于用例。
您需要分组密码还是流密码?你想散列密码或其他东西吗?有多种可能的算法可用。
需要使用适当的功能,而不是过时/损坏的功能。但也许更重要的是:未来每个算法都可能被破解。因此,您的产品具有可更新的能力并引入新的哈希/加密算法来取代旧的算法是非常重要的。
30 年对于密码学来说是一段很长的时间。量子计算机可能已经在那里建立,但很难预测。大多数出版物的未来都不会那么远。不过,2018 年的ECRYPT-RSA 建议看起来很远。基于此 AES-256 进行对称加密和 SHA-512 作为哈希应该就足够了。但该论文还在第 59 页明确指出:
我们再次重申,这些纯粹是密钥大小指南,它们不保证安全性,也不保证不会对底层数学原语进行攻击。
除此之外,要处理的不仅仅是算法。这些算法中使用的秘密也需要保护这么长时间,既不被窃取,又不被丢失。并且保护还应该与数据的敏感性相匹配,即青少年日记需要的保护可能比绝密政府信息要少得多。
此外,现在加密敏感数据与保护这些数据 30 年或在 30 年内仅对临时敏感通信进行短期加密之间存在差异。在第一种情况下,攻击者有 30 年的时间来破解加密,在后一种情况下,数据可能在数周之后就已经无用了——这从本质上限制了攻击者愿意花费的时间来破解数据。
假设产品保质期为30年...
正如评论者所指出的,这是对保质期的不合理期望。
在产品中使用散列或加密算法的建议/建议是什么?这意味着,我应该直接使用高级算法(SHA-512 用于散列,AES-256 用于加密)还是应该由 SAL(安全保证级别)或任何其他不同因素驱动?
由于很难预测未来,我建议您使用当前的最佳实践来构建您的系统。但是,如果可能的话,还包括将来更新系统/产品的能力。更新是“安全敏捷性”的重要组成部分,它可以让我们适应未知的未来。特别是,您可以在构建系统时着眼于将来能够更新加密算法。
此外,NIST 是否有任何建议根据产品的保质期选择这些产品?
NIST SP 800-57为密钥管理提供了建议。
对于对称加密:使用具有 256 位强度的算法,例如 SHA-512、SHA3-512、SHAKE256、KMAC256、HMAC-SHA-512、Chacha20-Poly1305、AES-256(在各种模式下,最好是 AEAD 模式)、Camellia -256(同上)。很少有人会承诺在 30 年内对安全性做出任何预测,尽管Ecrypt 确实如此。NIST 也有一些建议,但它们没有达到 2051 年的程度。无论如何,使用强大的算法发挥最大的作用是你最好的选择。所有这些都是广泛实施的算法。
对于非对称密码学:没有人知道。如果量子计算机按照我们认为它们可能工作的方式工作,它们将完全打破今天使用的所有非对称密码学。(相比之下,对于对称密码学,其效果只是将给定密钥大小的阻力减半。)如果物理学确实有效,那么认为该技术将在不到 30 年的时间内到达那里是合理的。正在努力标准化后量子密码学(PQC),但仍处于探索阶段,一些密码学家提出方法,他们的同事试图破解它们,有时成功,有时不成功。在短期内,PQC 比基于因子分解 (RSA) 或离散对数 (ECC) 的成熟非对称密码学风险更大。
保持设备安全多年(更不用说几十年)的唯一方法是不断更新它。确保您的系统具有加密敏捷性,即能够更改它使用的加密原语。对于非对称密码学,您现在可以通过支持有限域方法(RSA、DH)和 ECC 来测试敏捷性。您也可以开始实施 PQC 方法,但请记住,它们可能会在未来几年内迅速发展。现在实施 PQC 方法是一个好主意,至少作为仅测试功能,因为它们对系统设计有影响:它们不是经典原语的直接替代品。例如,许多 PQC 签名方案是有状态的:您不能只生成一次密钥并继续签署任意大量消息。PQC 签名和密钥也往往比经典签名和密钥大得多。
升级能力不仅对更改加密算法的能力很重要。还必须能够修复软件错误并实现对新攻击的抵抗。攻击只会变得更好,而今天被认为是奇特的攻击技术明天可能会变得司空见惯。例如,故障注入攻击在很长一段时间内只关注高度安全的设备,例如智能卡和某些军事应用。然后是rowhammer,它表明故障注入可以在 PC 上执行,纯粹是在软件中。30 年后,攻击技术很可能会改进很多,而今天制造的任何软件都不会是安全的。被更新或被控制。
软件保证级别与加密机制的选择几乎无关。它与实现的选择有关:更高的保证级别意味着实现具有更好的设计、更广泛的测试、对侧通道和故障注入攻击的更多对策等。它也与使用密码学的地方有关:更高的级别往往需要更多冗余控制(例如,您可能需要更好地抵抗硬件篡改,这需要在设备内部进行额外加密)。但即使在最基本的保证级别上,密码学也几乎是从“假设完美实现牢不可破”开始的。