Creando un certificado digital utilizando un algoritmo de encriptación post-cuántica
OpenSSL 3.5 introdujo soporte para los algoritmos tipo PQC: ML-KEM, ML-DSA y SLH-DSA

Es posible crear un certificado digital que implemente algoritmos PQC (Post-Quantum Crypto). Vamos a demostrar como es posible generar un par de llaves ML-DSA y utilizarlas dentro de un certificado X.509, ya sea self-signed o firmado por un CA privado usando las herramientas CLI de OpenSSL.
Pre-requisitos
El soporte para ML-DSA fue introducido a partir de OpenSSL 3.5.
Existen algoritmos PQC para varios propósitos, pero en esta guía nos vamos a enfocar en algoritmos stateless y asimétricos para firmas digitales: ml-dsa-44, ml-dsa-65 y ml-dsa-87 (categorías de seguridad 128/192/256-bit).
Tome en cuenta que el soporte en la actualidad a nivel de industria para este tipo de certificados sigue siendo limitado. No se recomienda utilizar este tipo de certificados TODAVIA en producción a no ser que sepa MUY BIEN lo que está haciendo.
Esta vez vamos a utilizar Windows para nuestro tutorial, pero las instrucciones funcionan para cualquier sistema operativo en el que se pueda utilizar openssl 3.5+.
Utilizando la versión correcta de OpenSSL
Bajar la versión más reciente de OpenSSL en versión ZIP para Windows de aquí:
https://download.firedaemon.com/FireDaemon-OpenSSL/FireDaemon-OpenSSL-x64-3.6.0.exeEjecute el instalador y asegúrese de habilitar la opción de agregar al PATH:

Abra una sesión de DOS/command prompt y asegúrese de tener permisos de lectura/escritura en el directorio de trabajo que decida utilizar

Creando un CA
Vamos a enfocarnos en un ejemplo básico que no incluya un RA, el cual es un componente clave cuando se construye una infrastuctura de PKI. Por lo pronto, comenzamos creando el CA:
Generar una llave privada ML-DSA (escoja ml-dsa-44 / -65 / -87)
openssl genpkey -algorithm ml-dsa-87 -out ca-priv.pemGeneramos un CA temporal para pruebas utilizando un certificado self-signed con una validez de 10 años:
openssl req -x509 -new -key ca-priv.pem -subj "/CN=Test CA" -days 3650 -nodes -keyout ca.key -out ca.crt
Creación del certificado firmado por el CA
Generar una llave privada ML-DSA (escoja ml-dsa-44 / -65 / -87)
openssl genpkey -algorithm ml-dsa-65 -out mldsa65-priv.pemExtraiga la llave pública
openssl pkey -in mldsa65-priv.pem -pubout -out mldsa65-pub.pemCrear un CSR
openssl req -new -key mldsa65-priv.pem -subj "/CN=example.local" -out mldsa65.csrCrear un certificado self-signed con una validez de 1 año:
openssl req -x509 -new -key mldsa65-priv.pem -subj "/CN=example.local" -days 365 -out mldsa65-self.crtFirmar el CSR con un CA cert+key
openssl x509 -req -in mldsa65.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -out mldsa65-by-ca.crt
Verificación
Obtener una versión texto del certificado privado:
openssl x509 -in mldsa65-by-ca.crt -text -noout
Verificar el certificado firmado por el CA:
openssl verify -CAfile ca.crt mldsa65-by-ca.crt
Conclusión
El Post-Quantum Cryptography (PQC) es el futuro, Microsoft ya comenzó a soportar librerías de PQC en .NET 10, Chrome Browser desde hace varios años empezó la adopción de PQC, y existen muchos otros ejemplos más de los gigantes de la industria adoptando estas prácticas.
Este laboratorio permite tener acceso a los mismos algoritmos y tecnología criptográfica que los gigantes de la industria están empezando a adoptar alrededor del planeta.



