SV.WEAK.CRYPT
使用被破坏的或有风险的加密算法
检查器的作用的检测加密功能是否存在风险/被破坏/已弃用。
检查器会检测包含众所周知的弱加密 API 或库实施或使用的代码。检查器会报告与算法“MD2”、“MD4”、“MD5”、“SHA”、“SHA1”、“SHA-1”的用法相关的缺陷。
漏洞与风险
如果未对敏感数据进行足够的保护,则可能导致保密性或数据完整性的损失。DES 加密可能被暴力攻击所破解。基于 MD5 的算法更安全一些,因此它比 DES 算法更优先,但即便是更新的 SHA-1 算法也已经被破解。哈希算法(例如 SHA-256 和 SHA-512)经过美国联邦信息处理标准 (FIPS) 的审核,被认为在安全性方面更为出色。请务必使用相关领域专家所推荐的最新加密算法。
漏洞代码示例 1
复制
public static UUID nameUUIDFromBytes (byte[] name) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
return make Uuid(md.digest(name), 3);
} catch (NoSuchAlgorithmException e) {
throw new AssertionError(e);
}
}
SV.WEAK.CRYPT 在第 3 行报告缺陷。
修正代码示例 1
复制
public static UUID name UUIDFromBytes (byte[] name) {
try {
MessageDigest md = MessageDigest.getinstance("SHA-256");
return makeUuid(md.digest(name), 3);
} catch (NoSuchAlgorithmException e) {
throw new AssertionError(e);
}
}
在将消息摘要算法更改为更安全的 SHA-256 后,问题将随之消失。