MASWE-0009: 不当的密码密钥生成
概述¶
在密码学中,安全强度受到密码密钥生成方法的严重影响。一个关键方面是密钥大小,也称为密钥长度,它以位为单位衡量,并且必须符合最新的安全最佳实践。使用不足密钥大小的加密算法容易受到攻击,而更长的密钥通常会导致更复杂的加密。
然而,即使密钥大小足够大,如果密钥生成过程存在缺陷,加密的安全性也可能受到损害。未能使用具有足够熵的强大、密码学安全的伪随机数生成器(CSPRNG)可能会生成可预测的密钥,这些密钥更容易被攻击者猜测或重现,并且容易出现重复模式。
影响¶
- 蛮力攻击风险:不当的密钥生成,无论是由于密钥长度过短还是可预测的伪随机数生成器(PRNG)输入,都增加了蛮力攻击的风险。攻击者可以更容易地猜测或系统性地尝试可能的密钥,直到找到正确的密钥。
- 机密性丧失:加密依赖于强大的密钥来维护敏感数据的机密性。熵不足的种子值可能允许攻击者解密并访问机密信息,导致未经授权的披露和潜在的数据泄露。
- 完整性丧失:不当的密钥生成可能会损害数据完整性,允许攻击者利用漏洞,并在不被检测的情况下修改或篡改信息。
引入方式¶
- 熵不足:使用熵不足的随机性源可能导致可预测的密码密钥。
- 密钥长度不足:过短的密码密钥提供不足的安全性。例如,短于现代算法推荐长度的密钥可能容易受到蛮力攻击,使其更容易被攻击者破解。
- 使用有风险或已损坏的算法:依赖于已弃用、有风险或本质上已损坏的密码算法可能导致生成弱密钥。由于这些算法通常存在漏洞或支持较短的密钥长度,它们更容易受到现代攻击,从而损害应用程序的整体安全性。
缓解措施¶
- 始终使用遵循熵生成和密钥管理最佳实践的现代、成熟的密码库和API。
- 确保密钥长度达到或超过当前密码安全标准,例如 AES 加密使用 256 位,RSA 使用 2048 位(考虑到量子计算攻击)。有关密码密钥大小的更多信息,请参阅“NIST 特别出版物 800-57:密钥管理建议:第 1 部分 – 概述”、“NIST 特别出版物 800-131A:密码算法和密钥长度的使用过渡”以及“BlueKrypt 的密码密钥长度推荐”。