Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8342282

Implement JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm

XMLWordPrintable

    • Icon: CSR CSR
    • Resolution: Approved
    • Icon: P3 P3
    • 24
    • security-libs
    • None
    • source
    • minimal
    • Java API, Other
    • SE

      Summary

      Implementing the Module-Lattice-Based Digital Signature Algorithm (ML-DSA) as defined in FIPS 204 in the Java Platform.

      Problem

      ML-DSA 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-DSA 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

      1. Define ML-DSA and its three standardized parameter sets (ML-DSA-44, ML-DSA-65, and ML-DSA-87) as Java Security Standard Algorithm Names.
      2. Implement KeyPairGenerator, KeyFactory, and Signature implementations of ML-DSA with these standardized parameter sets in the SUN security provider.
      3. Create new NamedParameterSpec constants for ML-DSA-44, ML-DSA-65, and ML-DSA-87.
      4. Add the algorithms to the KeyPairGenerator, KeyFactory, and Signature rows of the SUN 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-DSA-44 parameters
      +     *
      +     * @since 24
      +     */
      +    public static final NamedParameterSpec ML_DSA_44
      +        = new NamedParameterSpec("ML-DSA-44");
      +
      +    /**
      +     * The ML-DSA-65 parameters
      +     *
      +     * @since 24
      +     */
      +    public static final NamedParameterSpec ML_DSA_65
      +        = new NamedParameterSpec("ML-DSA-65");
      +
      +    /**
      +     * The ML-DSA-87 parameters
      +     *
      +     * @since 24
      +     */
      +    public static final NamedParameterSpec ML_DSA_87
      +        = new NamedParameterSpec("ML-DSA-87");

      Second, in the Java Security Standard Algorithm Names document, add the following lines to the KeyPairGenerator section:

      ---------------  --------------------------------------------------------------
      Algorithm Name   Description
      ---------------  --------------------------------------------------------------
      ML-DSA           Generates keypairs for the Module-Lattice-Based Digital Signature Algorithm
                       (ML-DSA) as defined in
                       [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
                       This algorithm supports keys with ML-DSA-44, ML-DSA-65,
                       and ML-DSA-87 parameter sets.
      
      ML-DSA-44        Generates keypairs for the Module-Lattice-Based Digital Signature Algorithm
                       (ML-DSA) using the ML-DSA-44 parameter set as defined in
                       [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
      
      ML-DSA-65        Generates keypairs for the Module-Lattice-Based Digital Signature Algorithm
                       (ML-DSA) using the ML-DSA-65 parameter set as defined in
                       [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
      
      ML-DSA-87        Generates keypairs for the Module-Lattice-Based Digital Signature Algorithm
                       (ML-DSA) using the ML-DSA-87 parameter set as defined in
                       [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).

      Add the following lines to the KeyFactory section:

      ---------------  --------------------------------------------------------------
      Algorithm Name   Description
      ---------------  --------------------------------------------------------------
      ML-DSA           Keys for the Module-Lattice-Based Digital Signature Algorithm
                       (ML-DSA) as defined in
                       [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
                       This algorithm supports keys with ML-DSA-44, ML-DSA-65,
                       and ML-DSA-87 parameter sets.
      
      ML-DSA-44        Keys for the Module-Lattice-Based Digital Signature Algorithm
                       (ML-DSA) using the ML-DSA-44 parameter set as defined in
                       [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
      
      ML-DSA-65        Keys for the Module-Lattice-Based Digital Signature Algorithm
                       (ML-DSA) using the ML-DSA-65 parameter set as defined in
                       [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
      
      ML-DSA-87        Keys for the Module-Lattice-Based Digital Signature Algorithm
                       (ML-DSA) using the ML-DSA-87 parameter set as defined in
                       [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).

      Add the following lines to the Signature section:

      ------------------------------  --------------------------------------------------------------------------------------
      Algorithm Name                  Description
      ------------------------------  --------------------------------------------------------------------------------------
      ML-DSA                          The Module-Lattice-Based Digital Signature Algorithm
                                      (ML-DSA) as defined in
                                      [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
                                      This algorithm supports keys with ML-DSA-44, ML-DSA-65,
                                      and ML-DSA-87 parameter sets.
      
      ML-DSA-44                       The Module-Lattice-Based Digital Signature Algorithm
                                      (ML-DSA) using the ML-DSA-44 parameter set as defined in
                                      [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
      
      ML-DSA-65                       The Module-Lattice-Based Digital Signature Algorithm
                                      (ML-DSA) using the ML-DSA-65 parameter set as defined in
                                      [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
      
      ML-DSA-87                       The Module-Lattice-Based Digital Signature Algorithm
                                      (ML-DSA) using the ML-DSA-87 parameter set as defined in
                                      [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).

      Add the following lines to the NamedParameterSpec section:

      ------          -----------------------------------
      Name            Description
      ------          -----------------------------------
      ML-DSA-44       The Module-Lattice-Based Digital Signature Algorithm
                      (ML-DSA) using the ML-DSA-44 parameter set as defined in
                      [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
      
      ML-DSA-65       The Module-Lattice-Based Digital Signature Algorithm
                      (ML-DSA) using the ML-DSA-65 parameter set as defined in
                      [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).
      
      ML-DSA-87       The Module-Lattice-Based Digital Signature Algorithm
                      (ML-DSA) using the ML-DSA-87 parameter set as defined in
                      [FIPS 204](https://csrc.nist.gov/pubs/fips/204/final).

            mullan Sean Mullan
            mullan Sean Mullan
            Alan Bateman, Sean Mullan
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: