Skip to content

Post Quantum Cryptography (PQC) for .NET 10 #113498

@bartonjs

Description

@bartonjs

For .NET 10 we will be adding the following algorithms:

  • Signature Algorithms
    • ML-DSA (FIPS 204)
    • Composite ML-DSA (draft-ietf-lamps-pq-composite-sigs)
    • SLH-DSA (FIPS 205)
  • Key Encapsulation Algorithms
    • ML-KEM (FIPS 203)

For each algorithm we anticipate one core class (e.g. System.Security.Cryptography.MLDsa), interop-implementation types as needed (MLDsaCng, MLDsaOpenSsl), and an associated specifier type (e.g. MLDsaAlgorithm). The details of these classes will be addressed in subordinate issues (one per algorithm/family).

These new algorithms do not play nicely with the existing AsymmetricAlgorithm base class (e.g. what is the KeySize value of an ML-DSA-44 key?), and so the core classes will not derive AsymmetricAlgorithm. Until a need is demonstrated, there will be no common base class across these new algorithms.

Signing algorithms will be incorporated throughout the platform:

  • X.509 Public Key Certificates
    • Accessing public and private keys
    • Creating test certificates with CertificateRequest
  • SignedCms
  • COSE (Sign1 and multi-sign)
  • TLS
  • (any other areas where certificates or asymmetric signatures are utilized)

ML-KEM cannot create self-signed certificates, but there will be a story for creating ML-KEM transport certificates and accessing keys thereupon.

What Are We Not Doing?

  • Any algorithm not listed above is not included in .NET 10.
    • For the sake of transparency: We do not believe there is a need for any FIPS 206 algorithms in .NET workloads, they are planned as "never" until evidence suggests otherwise.
  • SignedXml will not be updated, even if a specification combining xmldsig and PQC is created.
  • EncryptedXml will not be updated, even if a specification combining xmlenc and PQC is created.
  • EnvelopedCms is unlikely to gain support for ML-KEM in .NET 10. We will evaluate the timing of ML-KEM in EnvelopedCms based on user feedback and industry trends.

Metadata

Metadata

Assignees

Type

No fields configured for Epic.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions