SV.WEAK.KEYS.EC

加密算法中的密钥长度不足

当 EC 加密算法与大小不足的密钥一起使用时,Klocwork 会报告 SV.WEAK.KEYS.EC 缺陷。

漏洞与风险

密钥大小不足可能造成算法中断,进而导致敏感数据泄露。算法需要非常可靠,才能抵御使用强大计算技术发起的暴力攻击。

缓解与预防

避免使用密钥小于 256 位的 EC 算法。

漏洞代码示例

复制
import java.security.KeyPairGenerator;
import java.security.spec.ECGenParameterSpec;
 
class KeyGenECTest {
  public static void main(String[] args) {
    KeyPairGenerator generatorEC = KeyPairGenerator.getInstance("EC");
    ECGenParameterSpec specEC = new ECGenParameterSpec("secp112r1");   // SV.WEAK.KEYS.EC (!)
  }
}

Klocwork 在第 6 行报告了 SV.WEAK.KEYS.EC 缺陷,指出“加密算法使用的密钥小于 256 位”。EC 算法需要不小于 256 位的密钥。

修正代码示例

复制
import java.security.KeyPairGenerator;
import java.security.spec.ECGenParameterSpec;
 
class KeyGenECTest {
  public static void main(String[] args) {
    KeyPairGenerator generatorEC = KeyPairGenerator.getInstance("EC");
    ECGenParameterSpec specEC = new ECGenParameterSpec("secp256r1");  // no SV.WEAK.KEYS.EC
  }
}

Klocwork 不再报告缺陷,因为 EC 算法使用的密钥为 256 位。

安全培训

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