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 后,问题将随之消失。

相关检查器

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。