Skip to main content

Command Palette

Search for a command to run...

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

Updated
3 min read
Creando un certificado digital utilizando un algoritmo de encriptación post-cuántica

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.exe
    
  • Ejecute 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

    Command Prompt

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.pem
    
  • Generamos 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.pem
    
  • Extraiga la llave pública

      openssl pkey -in mldsa65-priv.pem -pubout -out mldsa65-pub.pem
    
  • Crear un CSR

      openssl req -new -key mldsa65-priv.pem -subj "/CN=example.local" -out mldsa65.csr
    
  • Crear 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.crt
    
  • Firmar 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.