Pq mls ciphersuites#2330
Draft
emil-wire wants to merge 15 commits into
Draft
Conversation
Enables the PQ provider work in the following commits.
0.14 is the first release carrying the draft-ietf-hpke-pq KEMs we need: X-Wing, ML-KEM-768 with P-256, ML-KEM-1024 with P-384, and the two standalone ML-KEM parameter sets. Its AEAD stack pulls getrandom 0.4, whose wasm backend needs the wasm_js feature.
FIPS-204 ML-DSA signatures for post-quantum support; requires 0.1.1 or later for the fix to GHSA-5x2r-hc65-25f9.
hpke 0.14 pulls x-wing with only the hazmat feature, so zeroize-on-drop for the x-wing KEM and the x25519-dalek secrets underneath it was compiled out entirely. Taking a direct dependency with both features set unifies it back on. Same reasoning for ml-dsa's signing key material. x-wing is a direct dependency for no other reason: nothing in core-crypto calls it, hpke does.
Pure FIPS-204 with an empty context, which is what MLS signs. Public keys are 1312, 1952 and 2592 bytes; signatures are 2420, 3309 and 4627 bytes. ML-DSA has no X.509 credential path, so those sites reject it.
Codepoint 0x647a from draft-ietf-hpke-pq. Hybrid uses X25519 as fallback if ML-KEM-768 fails, with SHA-3 and SHAKE internals in the hpke crate.
Codepoint 0x0050 from draft-ietf-hpke-pq, a hybrid of ML-KEM-768 and NIST P-256.
Codepoint 0x0051 from draft-ietf-hpke-pq, a hybrid of ML-KEM-1024 and NIST P-384.
Codepoints 0x0041 and 0x0042 from draft-ietf-hpke-pq, the pure ML-KEM parameter sets with no traditional hybrid.
draft-ietf-mls-pq-ciphersuites-06 suites TBD1 to TBD5, TBD7, TBD8, TBD10 and TBD11 on placeholder codepoints 0xF001 to 0xF009, since IANA has assigned nothing yet. Each uses HKDF-SHA256 or HKDF-SHA384 for the HPKE KDF and the MLS key schedule, matching the suite hash.
Pure ML-KEM-768 with Ed25519, TBD6 in draft-ietf-mls-pq-ciphersuites-06, on placeholder codepoint 0xF00A. Appending rather than renumbering keeps 0xF001 to 0xF009 meaning what they already mean. It reuses an existing HPKE config.
Needed for the ML-DSA-44 suite, the first post-quantum suite without AES-GCM. The draft chose ChaCha20Poly1305 for acceptable performance in pure software.
ML-KEM-768 + X25519 + ChaCha20Poly1305 + SHA-384 + ML-DSA-44, TBD9 in draft-ietf-mls-pq-ciphersuites-06, on placeholder codepoint 0xF00B. The only suite here pairing post-quantum signatures with the 128-bit level.
emil-wire
force-pushed
the
pq-mls-ciphersuites
branch
2 times, most recently
from
July 20, 2026 15:02
aca29f4 to
01d9f1d
Compare
Signature and HPKE round trips through our provider dispatch across all KEM, KDF, AEAD, and ML-DSA parameter sets. Tests our wiring and algorithm mappings, not the underlying libraries.
Conversation round trips across all eleven suites, including the ML-DSA-signed ones. These are round trips rather than known-answer tests: no other implementation ships these suites yet, so they only test self-interoperability.
emil-wire
force-pushed
the
pq-mls-ciphersuites
branch
from
July 22, 2026 10:43
01d9f1d to
c4d3d52
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.