-
CSR
-
Resolution: Approved
-
P3
-
None
-
source
-
minimal
-
Java API, Other
-
SE
Summary
Implementing the Module-Lattice-Based Digital Key-Encapsulation Mechanism (ML-KEM) as defined in FIPS 203 in the Java Platform.
Problem
ML-KEM is a quantum-resistant digital signature algorithm selected by the National Institute of Standards and Technology (NIST) to ensure the security of cryptographic systems in the post-quantum era. Supporting ML-KEM is critical to future-proof applications running on the Java Platform against the emerging threat of quantum computing, which can potentially break current cryptographic algorithms.
Solution
- Define
ML-KEM
and its three standardized parameter sets (ML-KEM-512
,ML-KEM-768
, andML-KEM-1024
) as Java Security Standard Algorithm Names. - Implement
KeyPairGenerator
,KeyFactory
, andKEM
implementations of ML-KEM with these standardized parameter sets in theSunJCE
security provider. - Create new
NamedParameterSpec
constants forML-KEM-512
,ML-KEM-768
, andML-KEM-1024
. - Add the algorithms to the
KeyPairGenerator
,KeyFactory
andKEM
rows of the SunJCE provider table of the JDK Security Providers Guide.
Specification
First, in src/java.base/share/classes/java/security/spec/NamedParameterSpec.java
, add the following lines:
/**
* The ML-KEM-512 parameters
*
* @since 24
*/
public static final NamedParameterSpec ML_KEM_512
= new NamedParameterSpec("ML-KEM-512");
/**
* The ML-KEM-768 parameters
*
* @since 24
*/
public static final NamedParameterSpec ML_KEM_768
= new NamedParameterSpec("ML-KEM-768");
/**
* The ML-KEM-1024 parameters
*
* @since 24
*/
public static final NamedParameterSpec ML_KEM_1024
= new NamedParameterSpec("ML-KEM-1024");
Second, in the Java Security Standard Algorithm Names document, add the following lines to the KeyPairGenerator
section:
--------------- --------------------------------------------------------------
Algorithm Name Description
--------------- --------------------------------------------------------------
ML-KEM Generates keypairs for the Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
This algorithm supports keys with ML-KEM-512, ML-KEM-768,
and ML-KEM-1024 parameter sets.
ML-KEM-512 Generates keypairs for the Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-512 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
ML-KEM-768 Generates keypairs for the Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-768 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
ML-KEM-1024 Generates keypairs for the Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-1024 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
Add the following lines to the KeyFactory
section:
--------------- --------------------------------------------------------------
Algorithm Name Description
--------------- --------------------------------------------------------------
ML-KEM Keys for the Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
This algorithm supports keys with ML-KEM-512, ML-KEM-768,
and ML-KEM-1024 parameter sets.
ML-KEM-512 Keys for the Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-512 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
ML-KEM-768 Keys for the Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-768 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
ML-KEM-1024 Keys for the Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-1024 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
Add the following lines to the KEM
section:
------------------ --------------------------------------------------------------------------------------
Algorithm Name Description
------------------ --------------------------------------------------------------------------------------
ML-KEM The Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
This algorithm supports keys with ML-KEM-512, ML-KEM-768,
and ML-KEM-1024 parameter sets.
ML-KEM-512 The Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-512 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
ML-KEM-768 The Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-768 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
ML-KEM-1024 The Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-1024 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
Add the following lines to the NamedParameterSpec
section:
------ -----------------------------------
Name Description
------ -----------------------------------
ML-KEM-512 The Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-512 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
ML-KEM-768 The Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-768 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
ML-KEM-1024 The Module-Lattice-Based Key-Encapsulation Mechanism
(ML-KEM) using the ML-KEM-1024 parameter set as defined in
[FIPS 203](https://csrc.nist.gov/pubs/fips/203/final).
- blocks
-
JDK-8339009 JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
-
- Closed
-
- csr of
-
JDK-8298390 Implement JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism
-
- Resolved
-