Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ML-KEM and ML-KEM hybrid #103

Open
wants to merge 20 commits into
base: main
Choose a base branch
from
Open

ML-KEM and ML-KEM hybrid #103

wants to merge 20 commits into from

Conversation

mamckee
Copy link
Collaborator

@mamckee mamckee commented Dec 30, 2024

This PR adds support for ML-KEM and hybrid ECDHE-MLKEM to the SymCrypt provider. This PR also refactors a significant portion of ECC key management and exposes the ECDH provider interface for ML-KEM hybrid operations. This implementation has been tested against BoringSSL and the OQS provider for compatibility.

These algorithms are not currently present in the default OpenSSL implementation. This PR adds the encoder and decoder interface, key management, and KEM interfaces for ML-KEM and ML-KEM hybrid. Their behavior is subject to change to align with the default OpenSSL behavior when OpenSSL adds their own implementation.

Code points are taken from IETF drafts and are subject to change. These are the same code points used by BoringSSL and the OQS provider. ML-KEM hybrid is implemented according to the latest IETF draft but is subject to changes.

The following algorithms are added:

Algorithm Code point OID
mlkem512 0x0200 2.16.840.1.101.3.4.4.1
mlkem768 0x0201 2.16.840.1.101.3.4.4.2
mlkem1024 0x0202 2.16.840.1.101.3.4.4.3
secp256r1mlkem768 0x11eb 2.16.840.1.101.3.4.4.4 (placeholder)
x25519mlkem768 0x11ec 2.16.840.1.101.3.4.4.5 (placeholder)
secp384r1mlkem1024 0x11ed 2.16.840.1.101.3.4.4.6 (placeholder)

draft-connolly-tls-mlkem-key-agreement (ML-KEM standalone usage and code points)
draft-kwiatkowski-tls-ecdhe-mlkem (ML-KEM hybrid implementation and code points)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant