使用强大且成熟的密码学元素

密码学是一个复杂的主题,经常被误解,并且是存在重大争论的领域。本指南中提到的具体内容可能会随着技术的不断进步而变化。

一般来说,在使用密码学时应遵循一些简单的规则

  • 不要发明你自己的密码学,使用现有的算法和实现。

  • 在使用密码学哈希、签名或加密时,必须使用强大的密码学原语。

  • 优先使用维护活跃的成熟、信誉良好的库,而不是自己实现算法。

  • 仔细注意密钥管理和分发,这通常比算法选择和实现更难。

密码学应该用于解决特定问题或缓解特定威胁,例如确保在不受信任的网络连接上传输数据的机密性。密码算法和密钥强度应与您尝试通过加密缓解的威胁相适应,并且应该了解密码学的局限性。

例如,如果加密应用于网络链路,则它无法保护数据在链路两端处理或存储时的安全。在部署密码学时,还必须考虑对系统性能和可用性的影响。

OpenStack 全局需求中当前包含的 Python 密码学库包括

鼓励使用以下密码学元素

  • SHA-256 是首选的哈希算法。

  • AES 是首选的通用加密算法,密钥长度为 128、192 或 256 位。

  • HMAC 是首选的签名构造,与首选的哈希算法结合使用。

  • TLSv1.2 或 TLSv1.1 是保护客户端和 Web 服务之间传输数据的首选方案,但必须安全配置,必须检查证书的有效性、过期时间和吊销状态。

虽然在某些用例中,使用较弱的密码学元素似乎是合适的,但通常建议使用上述选项。

强烈不建议使用以下内容

  • MD5

  • DES

  • RC4

  • SSLv2、SSLv3、TLSv1.0

后果

较弱的密码学元素可能容易受到各种类型的攻击,最终影响相关系统或数据集的机密性和完整性。

参考