| Internet-Draft | Deprecating Expanded ML-DSA and ML-KEM P | October 2026 |
| Rosomakho & Benjamin | Expires 24 April 2027 | [Page] |
This document updates RFC 9881 and RFC 9935 to require the seed representation when encoding Module-Lattice-Based Digital Signature Algorithm (ML-DSA) and Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) private keys for interchange. It deprecates the expanded and combined representations, while permitting their continued support for legacy imports. These changes simplify implementation and improve interoperability by aligning the private-key representation with that used by JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE). Internal private-key representations are unaffected.¶
This note is to be removed before publishing as an RFC.¶
The latest revision of this draft can be found at https://yaroslavros.github.io/lamps-mldsa-deprecate-key/draft-rosomakho-lamps-mldsa-mlkem-seed-only.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-rosomakho-lamps-mldsa-mlkem-seed-only/.¶
Discussion of this document takes place on the Limited Additional Mechanisms for PKIX and SMIME Working Group mailing list (mailto:spasm@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/spasm/. Subscribe at https://www.ietf.org/mailman/listinfo/spasm/.¶
Source for this draft and an issue tracker can be found at https://github.com/yaroslavros/lamps-mldsa-deprecate-key.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 24 April 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
[X509-MLDSA] and [X509-MLKEM] define, respectively, three representations for Module-Lattice-Based Digital Signature Algorithm (ML-DSA) Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM) private keys: a 32-octet seed, an expanded private key, and a combination of the seed and expanded private key. The seed deterministically yields both the expanded private key and the public key. Although Section 8.1 of [X509-MLDSA] and Section 6 of [X509-MLKEM] recommend the seed representation, they permit all three representations for private-key interchange.¶
Multiple representations complicate interoperability between implementations that support different subsets of these formats. An implementation that supports only seeds cannot import an expanded private key without its seed. The combined representation also introduces a consistency check between the seed and expanded private key, which can require additional implementation support solely for importing that representation.¶
[JOSE-COSE-MLDSA] and [JOSE-COSE-MLKEM] specify only the seed representation for ML-DSA and ML-KEM private keys in JSON Object Signing and Encryption (JOSE) and CBOR Object Signing and Encryption (COSE). Using the seed representation consistently across these specifications simplifies private-key interchange and avoids the need to support multiple representations and their associated validation logic.¶
This document updates [X509-MLDSA] and [X509-MLKEM] to deprecate the expanded and combined representations, limiting them to legacy compatibility where applicable.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This section updates the private-key encoding requirements and format recommendations in Section 6 of [X509-MLDSA], Section 6 of [X509-MLKEM], and Section 8.1 of [X509-MLDSA]. These updates apply to ML-DSA-44, ML-DSA-65, ML-DSA-87, ML-KEM-512, ML-KEM-768, and ML-KEM-1024.¶
Implementations that decode ML-DSA or ML-KEM private keys for interchange using
the structures defined in [X509-MLDSA] and [X509-MLKEM] MUST support their
respective seed representations.¶
Implementations MAY support the both and expandedKey representations for
compatibility with legacy systems, but this is optional and not required
for conformance with this specification. If decoding the both representation,
implementations MUST perform the consistency check described in
Section 8.2 of [X509-MLDSA] and Section 8 of [X509-MLKEM].¶
When decoding a private key in either the seed or both representation,
and when generating a new ML-DSA or ML-KEM key, implementations MUST retain the
seed, unless the private key will never be encoded for interchange.¶
Implementations that encode ML-DSA or ML-KEM private keys for interchange MUST
use the seed representation, unless the key is a legacy key whose seed has
been discarded. If (and only if) the seed was discarded, implementations MAY use
the expandedKey representation. However, this encoding will not be
interoperable with all implementations of this specification.¶
Implementations MUST NOT output the both representation.¶
Existing private keys can be re-encoded in the seed representation when
the original seed is available, including from the both representation.
This conversion does not require replacing the key pair or reissuing
certificates.¶
Expanded private keys can be computed from seeds, so the seed representation
can be imported into a legacy implementation that expects expanded private keys.
When doing so, operators SHOULD ensure that seeds are retained for keys that may
need to be exported or restored into another implementation.¶
As noted in Section 8.1 of [X509-MLDSA] and Section 7 of [X509-MLKEM], a discarded seed cannot be recovered from the expanded private key. If no copy of the seed is available, migration to an implementation that accepts only seeds requires generating a new key pair and replacing any associated certificates or other public-key bindings.¶
However, such existing keys MAY continue to be used by implementations that
support this representation. This document still optionally permits the
expandedKey encoding for such cases. It also places no constraints on keys
that are never exported for interchange.¶
The security considerations of [X509-MLDSA] and [X509-MLKEM] continue to apply. The seed is sufficient to reconstruct the private key, so it requires the same protection as the expanded private key, including when retained in backups or transferred between implementations.¶
This document has no IANA actions.¶
TODO acknowledge.¶