Post-quantum cryptographic algorithms

DigiCert® TrustCore SDK Crypto Interface provides two lattice‑based, NIST‑selected post‑quantum schemes:

  • ML‑KEM (formerly Kyber): An IND‑CCA2 Key Encapsulation Mechanism
  • ML‑DSA (formerly Dilithium): A Digital Signature Algorithm

API usage

Both schemes use the same QS_* API model as classical algorithms:

  • Context management
    • CRYPTO_INTERFACE_QS_newCtx
  • Key pair generation
    • CRYPTO_INTERFACE_QS_generateKeyPair
  • ML‑KEM operations
    • Encapsulate (responder): CRYPTO_INTERFACE_QS_KEM_encapsulateAlloc
    • Decapsulate (initiator): CRYPTO_INTERFACE_QS_KEM_decapsulateAlloc
  • ML‑DSA operations
    • Get signature length: CRYPTO_INTERFACE_QS_SIG_getSignatureLen
    • Sign: CRYPTO_INTERFACE_QS_SIG_signMessage
    • Verify: CRYPTO_INTERFACE_QS_SIG_verifyMessage

Module lattice cryptography

Module lattice cryptography is based on the Module Learning With Errors (MLWE) problem, which remains hard even for quantum computers. It relies on high‑dimensional lattice arithmetic with small error terms:

  • Error‑tolerant arithmetic ensures correct decryption and verification despite introduced “noise.”
  • No efficient quantum algorithm exists for solving MLWE, unlike factoring or discrete logarithms.

ML‑KEM

ML‑KEM lets one party (initiator) generate a public/private key pair. The responder uses the public key to derive a shared secret and a ciphertext, which the initiator de-capsulates to recover the same secret.

  • Former name: Kyber
  • Security levels:
    • ML‑KEM‑512 (NIST Category 1)
    • ML‑KEM‑768 (NIST Category 3)
    • ML‑KEM‑1024 (NIST Category 5)
  • Key sizes: Public and private keys are larger than classical DH/ECDH (up to 3168 bytes).
  • Shared secret: 32 bytes (256 bits).
  • Reference: FIPS 203 (https://doi.org/10.6028/NIST.FIPS.203)

ML‑DSA

ML‑DSA provides digital signatures using lattice‑based assumptions, offering authenticity and non‑repudiation.

  • Former name: Dilithium
  • Security levels:
    • ML‑DSA‑44 (NIST Category 2)
    • ML‑DSA‑65 (NIST Category 3)
    • ML‑DSA‑87 (NIST Category 5)
  • Key & signature sizes: Private keys up to 4896 bytes; signatures up to 4627 bytes.
  • Reference: FIPS 204 (https://doi.org/10.6028/NIST.FIPS.204)

Supported parameter sets

SchemeNIST categoryPublic keyPrivate keyOutput size
ML‑KEM‑5121800 B1632 B32 B (shared secret)
ML‑KEM‑76831184 B2400 B32 B
ML‑KEM‑102451568 B3168 B32 B
ML‑DSA‑4421312 B2528 Bup to 2420 B (signature)
ML‑DSA‑6531952 B3872 Bup to 3293 B
ML‑DSA‑8752592 B4896 Bup to 4595 B