跳过内容

MASWE-0019: 风险密码学实现

Beta 版内容

此内容处于 beta 版,仍在积极开发中,因此随时可能发生变化(例如结构、ID、内容、URL 等)。

发送反馈

概述

危险或不合规的密码学实现,例如那些不符合既定安全标准(如 FIPS 140-2/3 (联邦信息处理标准))的实现,可能会使用未经充分测试或缺乏认证的算法,可能不遵循安全的密钥管理最佳实践,或者可能包含未经严格同行评审或正式验证的自定义密码学解决方案。

影响

未遵循既定标准创建的自定义密码学实现更容易受到诸如暴力破解或差分密码分析等攻击。此外,密码学实现起来极其困难,即使自定义解决方案中出现小错误,例如不正确的填充或有缺陷的随机数生成,也可能完全破坏系统的安全性,将敏感数据暴露给攻击者。

与此类缺陷相关的影响可能非常广泛,难以预测或衡量。

  • 数据泄露:危险的密码学实现可能导致未经授权访问敏感数据,从而引发数据泄露。
  • 机密性、完整性和真实性受损:密码学的核心原则(机密性、完整性和真实性)受到损害。攻击者可以解密、操纵或冒充合法用户或系统。

引入方式

  • 偏离标准库:不使用知名的密码学库,例如平台提供的 Conscrypt 或 CryptoKit,或其他成熟的库如 OpenSSL、BouncyCastle 等。
  • 使用密码学常数:硬编码的密码学常数通常用于实现密码学算法。这些常数包括分组密码的 S-盒(替代盒)、置换表等。
  • 使用低级数学运算:密码学算法中通常使用的低级数学运算(例如位运算、移位、自定义填充方案)。
  • 高熵代码:密码学实现或高度混淆的代码的指示,这些代码可能隐藏密码学算法以防止逆向工程。
  • 使用非密码学函数:使用诸如 Base64 编码或 XOR 等非密码学函数代替加密。

缓解措施

  • 使用标准密码学库,避免自定义密码学:避免开发自定义密码学算法或协议。始终优先选择成熟且广泛接受的密码学库,例如 OpenSSL、BoringSSL,或平台特定的库,例如 Android 的 Conscrypt 和 Apple 的 CryptoKit。这些库经过了广泛测试,并定期更新以应对新的安全威胁。

  • 确保符合安全标准:如果无法避免使用自定义密码学,请确保其实现符合行业标准,例如 FIPS 140-2/3 (联邦信息处理标准) 或最新的美国国家标准与技术研究院 (NIST) 建议。

  • 执行定期安全审计:如果自定义密码学不可避免,请定期进行安全审计(包括彻底的代码审查),以识别和修复自定义密码学实现中的任何缺陷。聘请外部安全专家提供公正评估。