SV.WEAK.KEYS.DH
加密算法中的密钥长度不足
当 DH 加密算法与大小不足的密钥一起使用时,Klocwork 会报告 SV.WEAK.KEYS.DH 缺陷。
漏洞与风险
密钥大小不足可能造成算法中断,进而导致敏感数据泄露。算法需要非常可靠,才能抵御使用强大计算技术发起的暴力攻击。
缓解与预防
避免使用密钥小于 2048 位的 DH 算法。
漏洞代码示例
复制
import java.security.KeyPairGenerator;
class KeyGenDHTest {
public static void main(String[] args) {
KeyPairGenerator generatorDH = KeyPairGenerator.getInstance("DH");
generatorDH.initialize(1024); // SV.WEAK.KEYS.DH (!)
}
}
Klocwork 在第 6 行报告了 SV.WEAK.KEYS.DH 缺陷,指出“加密算法使用的密钥小于 2048 位”。DH 算法需要不小于 2048 位的密钥。
修正代码示例
复制
import java.security.KeyPairGenerator;
class KeyGenDHTest {
public static void main(String[] args) {
KeyPairGenerator generatorDH = KeyPairGenerator.getInstance("DH");
generatorDH.initialize(2048); // no SV.WEAK.KEYS.DH
}
}
Klocwork 不再报告缺陷,因为 DH 算法使用的密钥为 2048 位。