SV.WEAK.KEYS.EC
Insufficient key length in Cryptographic Algorithm
Klocwork reports a SV.WEAK.KEYS.EC defect when the EC cryptographic algorithm is used with a key that is of insufficient size.
Vulnerability and risk
Small key size can lead to algorithm breaks that can then lead to the leakage of sensitive data. Algorithms need to be robust against the powerful computing techniques that are used to perform brute force attacks.
Mitigation and prevention
Avoid implementing EC algorithms with keys that are less than 256 bits.
Vulnerable code example
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 reports an SV.WEAK.KEYS.EC defect on line 6, indicating, "Cryptographic Algorithm uses key less than 256 bits". An EC algorithm needs a key that is at least 256 bits.
Fixed code example
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 no longer reports a defect because the EC algorithm uses a key that is 256 bits.
Related checkers
External guidance
- CWE-326: Inadequate Encryption Strength
- OWASP A3:2017 Sensitive Data Exposure
- OWASP A2:2021 Cryptographic Failures
- V-222555 (APSC-DV-001860): The application must use mechanisms meeting the requirements of applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance for authentication to a cryptographic module.
Security training
Application security training materials provided by Secure Code Warrior.