Code Review Request JDK-8148516: Improve the default strength of EC in JDK

Xuelei Fan xuelei.fan at oracle.com
Wed May 25 09:00:11 UTC 2016


Ping ...

On 5/19/2016 8:42 PM, Xuelei Fan wrote:
> Hi,
> 
> Please review this enhancement.  The feature complete date is coming up
> next week.  I appreciate very much if I can get your feedback before
> next Monday:
> 
>     http://cr.openjdk.java.net/~xuelei/8148516/webrev.00/
> 
> In this update, EC keys less than 224 bits are disabled and EC curves
> weaker than 256 bits are removed from the default enabled list in JDK.
> Plan backport the update to JDK 8u/7u/6u, too.
> 
> Thanks,
> Xuelei
> 
> Updates:
> =======
> 1. Restrict EC keys less than 224 bits in certification path processing
> and SSL/TLS/DTLS connections.
> 
> In this update, we are proposing to restrict the use of EC keys less
> than 224 bits in length.  This restriction is applied via the Java
> Security properties, "jdk.certpath.disabledAlgorithms" and
> "jdk.tls.disabledAlgorithms".  This will impact providers that adhere to
> the Security Properties, for example, the Sun provider and the SunJSSE
> provider.
> 
> With this key size restriction, those who use X.509 certificates based
> on EC keys less than 224 bits will encounter compatibility issues with
> certification path building and validation.   This key size restriction
> also impacts JDK components that validate X.509 certificates, for
> example signed JAR verification, LDAP over SSL/TLS connections, HTTPS
> connections, etc.
> 
> In order to avoid the compatibility issue, users who use X.509
> certificates with EC keys less than 224 bits are recommended to renew
> their certificates with stronger keys.  As a workaround, at their own
> risk, users can adjust the key size restriction Security Properties
> ("jdk.certpath.disabledAlgorithms", and "jdk.tls.disabledAlgorithms" if
> using SSL/TLS/DTLS connections) to permit smaller key sizes.
> 
> 2. Remove curves weaker than 256 bits from the default enabled list in JDK.
> 
> In the SSL/TLS/DTLS implementation in JDK, potentially weak curves would
> be removed from the enabled curves list.  The new default enabled curves
> include, in preference order:
>    // recommended
>    secp256r1 (23)
>    secp384r1 (24)
>    secp521r1 (25)
> 
>    // NIST curves
>    sect283k1 (9)
>    sect283r1 (10)
>    sect409k1 (11)
>    sect409r1 (12)
>    sect571k1 (13)
>    sect571r1 (14)
> 
>    // Non-FIPS curves
>    secp256k1 (22)
> 
> 3. Add a new System Property to customize the enabled curves.
> 
> The compatibility impact should be limited.  However, if applications
> want to use curves other than the default ones, or want to use different
> preference, a new System Property, "jdk.tls.namedGroups" is defined to
> make the customization.
> 
> The value of the System Property defines a list of enabled named curves
> in preference order, separated with comma.  For example:
> 
>    jdk.tls.namedGroups="secp521r1, secp256r1, secp384r1"
> 
> 
> If the System Property is not defined or the value is empty, the default
> curves and preferences (see #2) will be used in JDK.
> 
> Note: the default enabled curves (#2) and customized curves (#3) cannot
> be used to re-activate the disabled EC keys defined by the Java Security
> Properties(#1).
> 




More information about the security-dev mailing list