使用密钥大小不足的加密算法¶
ID: cpp/insufficient-key-size
Kind: path-problem
Security severity: 7.5
Severity: error
Precision: high
Tags:
- security
- external/cwe/cwe-326
Query suites:
- cpp-code-scanning.qls
- cpp-security-extended.qls
- cpp-security-and-quality.qls
使用密钥大小较小的加密算法可能会使数据容易被解密。
加密库提供的许多加密算法可以使用易受暴力攻击的密钥大小进行配置。使用这种密钥大小意味着攻击者可能能够轻松解密加密数据。
建议¶
确保使用强大、现代的加密算法。至少使用 AES-128 或 RSA-2048。
示例¶
以下代码显示了使用 openssl
库生成 RSA 密钥的示例。创建密钥时,必须指定要使用的密钥大小。第一个示例使用 1024 位,这被认为不够安全。第二个示例使用 2048 位,这在目前被认为是安全的。
void encrypt_with_openssl(EVP_PKEY_CTX *ctx) {
// BAD: only 1024 bits for an RSA key
EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, 1024);
// GOOD: 2048 bits for an RSA key
EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, 2048);
}
参考¶
NIST,FIPS 140 附录 a: 批准的安全功能。
NIST,SP 800-131A: 过渡:有关转换加密算法和密钥长度使用的建议。
常见弱点枚举:CWE-326。