Trabajo de Fin de Grado · Ingeniería Informática

Autenticación FIDO2 y Zero Trust con Criptografía Post-Cuántica

Diseño de una arquitectura de microservicios con un servidor Relying Party FIDO2 en Go que valida firmas post-cuánticas ML-DSA (FIPS 204).

Resumen

Los algoritmos de firma y establecimiento de claves vigentes —RSA, ECDSA y ECDH— resultan vulnerables frente a un ordenador cuántico de gran escala, como consecuencia del algoritmo de Shor [20]. Ante esta amenaza, el NIST publicó en agosto de 2024 los primeros estándares de criptografía post-cuántica: ML-KEM (FIPS 203) [1], ML-DSA (FIPS 204) [2] y SLH-DSA (FIPS 205) [3]. Este documento recoge la Fase 1 del TFG: el estudio de dichos estándares, el análisis del protocolo FIDO2/WebAuthn y su codificación criptográfica COSE, el diseño de una arquitectura de microservicios según los principios Zero Trust del NIST SP 800-207 [4], el plan de trabajo y la estructura de la memoria. El objetivo del proyecto es implementar y evaluar empíricamente un servidor Relying Party capaz de verificar firmas ML-DSA durante las ceremonias de registro y autenticación de WebAuthn, comparando su rendimiento con la criptografía tradicional.

Autor
Carlos Delgado
Documento
Investigación de Fase 1 (revisión v1.1)
Alcance
Estándares · Protocolo · Arquitectura · Plan
Estado
En curso — semanas 1–3
203FIPS — ML-KEM[1]
204FIPS — ML-DSA[2]
2035retirada RSA/ECC (IR 8547)[6]
−49COSE de ML-DSA-65[12]

1Estándares del NIST: el nuevo corpus post-cuántico

El 13 de agosto de 2024 el NIST publicó los tres primeros estándares finales de criptografía post-cuántica, culminando el proceso de estandarización abierto iniciado en 2016 [6]. Constituyen la base normativa de este proyecto.

FIPS 203Mecanismo de encapsulación de claves (KEM)

ML-KEMModule-Lattice-Based Key-Encapsulation Mechanism, derivado de CRYSTALS-Kyber [22]. Su seguridad se apoya en la dificultad del problema Module Learning With Errors. Sustituye a ECDH/DH en el establecimiento de claves simétricas y es el esquema recomendado por defecto [1].

FIPS 204Firmas digitales

ML-DSAModule-Lattice-Based Digital Signature Algorithm, derivado de CRYSTALS-Dilithium [21], con construcción Fiat-Shamir with Aborts. Sustituye a RSA/ECDSA. Es el algoritmo central de este TFG: valida la firma de las aserciones WebAuthn [2].

FIPS 205Firmas digitales

SLH-DSAStateless Hash-Based Digital Signature Standard, derivado de SPHINCS+. Seguridad basada exclusivamente en funciones hash; firmas de gran tamaño (~7–8 KB). Se contempla como alternativa conservadora y para el firmado de firmware en la fase extendida [3]. El estándar FN-DSA (Falcon) permanece en desarrollo.

Tabla 1. Cronología normativa y calendario de migración[6]
FechaHito
2016Lanzamiento del proyecto de estandarización PQC del NIST (69 candidaturas).
2022Selección de los algoritmos: Kyber, Dilithium, Falcon y SPHINCS+.
13-08-2024Publicación final de FIPS 203, 204 y 205 (efectivos desde la misma fecha).
2024–2030Periodo de transición; NIST IR 8547 declara RSA/ECC/DSA deprecated hacia 2030 [7].
2035Retirada completa de los algoritmos vulnerables a lo cuántico. CNSA 2.0 exige firmas PQC hacia 2030–2033.

1.1FIPS 203 · ML-KEM (CRYSTALS-Kyber)

Un KEM permite que dos partes establezcan un secreto compartido de 256 bits sobre un canal público; dicho secreto alimenta primitivas simétricas (AES-GCM, ChaCha20) o un HKDF [1]. Interfaz: KeyGen → (ek, dk), Encaps(ek) → (K, c), Decaps(dk, c) → K.

1.1.1 Funcionamiento interno

  • Base matemática: problema Module Learning With Errors (M-LWE) sobre Zq[X]/(X²⁵⁶+1), con q = 3329 y n = 256.
  • NTT: multiplicación polinómica en el dominio de la transformada de números teóricos, O(n·log n).
  • Transformada de Fujisaki–Okamoto: convierte un PKE determinista en un KEM resistente a CCA. La versión final emplea explicit rejection con el hash J(z‖c).
  • Fallos de descapsulación: probabilidad < 2⁻¹³⁹; sin fallo explícito para entradas bien formadas.
  • Almacenamiento por semilla: las claves pueden conservarse como semillas de 32/64 bytes (d, z).
  • Las propiedades de uso de KEM se recogen en SP 800-227 [1].

1.1.2 Parámetros y tamaños

Tabla 2. Tamaños (bytes) de claves y ciphertexts de ML-KEM [1]
ConjuntoCat. NISTekdkciphertextsecreto
ML-KEM-5121 (≈AES-128)8001 63276832
ML-KEM-7683 (≈AES-192)1 1842 4001 08832
ML-KEM-10245 (≈AES-256)1 5683 1681 56832

Parámetros: k = 2/3/4, η₁ = 2–3, η₂ = 2, du = 10–11, dv = 4–5. Referencia comparativa: una clave pública ECDH P-256 ocupa 65 bytes, de modo que ML-KEM-768 resulta ~18× mayor; su coste computacional, en cambio, es comparable o inferior al de X25519.

1.1.3 Empleo en el proyecto: hibridación TLS 1.3

La amenaza «harvest now, decrypt later» aconseja hibridar desde el primer momento: se combina un intercambio clásico (X25519) con ML-KEM-768, de forma que la sesión permanece segura si al menos uno de los dos esquemas resiste [23]. Grupos TLS: X25519Kyber768Draft00 (0x6399, Go 1.23+) y el estándar X25519MLKEM768 (0x11EC, por defecto desde Go 1.24). Coste: el ClientHello crece ~1 216 bytes (clave pública de 1 184 B) y el ServerHello ~1 120 B (ciphertext de 1 088 B). OpenSSL ≥ 3.5 lo incorpora por omisión.

Listado 1
// Go: servidor con negociación híbrida post-cuántica
srv := &http.Server{
    Addr: ":8443",
    TLSConfig: &tls.Config{
        MinVersion:       tls.VersionTLS13,
        CurvePreferences: nil, // vacío ⇒ habilita X25519MLKEM768 por defecto
    },
}

1.2FIPS 204 · ML-DSA (CRYSTALS-Dilithium)

Esquema de firma de retículos con seguridad SUF-CMA (strong existential unforgeability under chosen-message attack), basado en los problemas M-LWE y SelfTargetMSIS. Constituye el reemplazo de ECDSA/RSA y el núcleo criptográfico de este proyecto [2].

1.2.1 Los tres algoritmos

  1. ML-DSA.KeyGen() — genera (pk, sk) a partir de la semilla ξ (32 B); la matriz  se expande con SHAKE-128.
  2. ML-DSA.Sign(sk, M, ctx, rnd) — firma σ. Rejillas y compresión (hint) para reducir tamaño; aleatoriedad externa opcional rnd (32 B) o modo determinista; contexto ctx ≤ 255 bytes para separación de dominios.
  3. ML-DSA.Verify(pk, M, σ, ctx) — verificación booleana de la ecuación Az − c·t̂ ≈ w₁·2ᵈ comprimida.

HashML-DSA: variante pre-hash con dominio separado, prevista para módulos que ya calculan el hash del mensaje (HSM/TPM) con mensajes de gran tamaño.

Las claves admiten representación por semilla ξ; el precálculo de  acelera firma y verificación.

1.2.2 Parámetros y tamaños

Tabla 3. Tamaños (bytes) de claves y firmas de ML-DSA [2]
ConjuntoCat.skpkfirma σCOSE
ML-DSA-4422 5601 3122 420−48
ML-DSA-6534 0321 9523 309−49
ML-DSA-8754 8962 5924 627−50

Comparativa: una firma ECDSA P-256 (ES256) ocupa ≈64 B y su clave pública 65 B; la firma ML-DSA-65 es, por tanto, ~52× mayor. Este sobrecoste es el principal obstáculo de integración en FIDO2 (tamaños CBOR, almacenamiento de credenciales, latencia).

1.2.3 Verificación en el Relying Party del proyecto

El servidor RP recibirá authenticatorData ‖ SHA-256(clientDataJSON) como mensaje M y la firma σ del autenticador; la verificación se realizará con la biblioteca CIRCL [15]:

Listado 2
import "github.com/cloudflare/circl/sign/mldsa/mldsa65"

pk, _ := mldsa65.Scheme().UnmarshalBinaryPublicKey(pubKeyBytes)
ok := mldsa65.Scheme().Verify(pk, msg, sig, nil) // ctx opcional
if !ok { /* rechazar la aserción */ }

Estado del ecosistema (septiembre de 2026): CIRCL implementa el estándar final FIPS 204 desde v1.5.0 [15]; crypto/mlkem figura en la biblioteca estándar de Go (1.24) y crypto/mldsa público está propuesto para Go 1.27; OpenSSL 3.5+, Node.js 24.5+ y Java 24 (JEP 497) ya operan con ML-DSA [23].

2FIDO2 / WebAuthn: análisis del protocolo

FIDO2 se compone de WebAuthn (W3C) y CTAP2 (FIDO Alliance) [8]. Proporciona autenticación sin contraseñas, resistente a phishing, con credenciales de clave pública generadas dentro del autenticador y que nunca abandonan el dispositivo.

2.1 Arquitectura del protocolo

Figura A
+-----------+  WebAuthn JS (HTTPS)  +---------+  CTAP2 (CBOR)  +---------------+
|  Relying  | --------------------->| Cliente | -------------->| Autenticador  |
|  Party RP | <---------------------| (naveg.)| <--------------| (plataf./roam)|
+-----------+  attestation/assertion +---------+  USB·NFC·BLE   +---------------+
  • WebAuthn define la API: navigator.credentials.create() (registro) y .get() (acceso). El nivel 3 es ya Recomendación W3C (2026) y el nivel 4 está en elaboración [8].
  • CTAP2 es el protocolo binario navegador↔llave, serializado en CBOR (RFC 8949): comandos authenticatorMakeCredential y authenticatorGetAssertion.
  • El RP ID (dominio efectivo) vincula la credencial al origen: el autenticador firma siempre el hash del RP ID, lo que confiere inmunidad frente a phishing.

2.2 Las dos ceremonias

  1. Registro (attestation). El RP emite un challenge; el autenticador genera el par de claves del credencial y devuelve {fmt, authData, attStmt}. El RP verifica firma, origin, challenge y, opcionalmente, la cadena de atestación (FIDO MDS, AAGUID) [9].
  2. Autenticación (assertion). El autenticador firma authData ‖ SHA-256(clientDataJSON) con la clave privada del credencial. El RP comprueba el contador (anti-clonación), los indicadores UP/UV, el origen y el challenge de un solo uso.

clientDataJSON: {type, challenge, origin, crossOrigin}. authData: rpIdHash (32 B) ‖ flags (UP 0x01, UV 0x04, AT 0x40, ED 0x80) ‖ contador (4 B) ‖ [AAGUID 16 B ‖ L 2 B ‖ credId ‖ COSE_Key].

2.3 COSE: codificación de los algoritmos criptográficos

COSE (CBOR Object Signing and Encryption, RFC 9052/9053 [11]) es el formato binario compacto con el que WebAuthn transporta claves públicas y designa algoritmos; los identificadores empleados por WebAuthn se registran en RFC 8812 [10]. Un COSE_Key es un mapa CBOR: 1: kty, 3: alg, -1: crv, -2/-3: coordenadas.

NombreValor COSEDescripciónSituación en WebAuthn
ES256−7ECDSA con SHA-256, curva P-256Requerido — estándar de facto actual
EdDSA−8Ed25519 / Ed448 (OKP)Recomendado
RS256−257RSASSA-PKCS1-v1_5 con SHA-256Requerido (legado)
PS256−37RSASSA-PSS con SHA-256Recomendado
ML-DSA-44−48FIPS 204, categoría 2Pendiente en IANA — borrador IETF [12]
ML-DSA-65−49FIPS 204, categoría 3Pendiente en IANA (valor solicitado −49) [12]
ML-DSA-87−50FIPS 204, categoría 5Pendiente en IANA (valor solicitado −50) [12]

El Internet-Draft ML-DSA for Web Authentication [13] define la incorporación de ML-DSA (FIPS 204) a WebAuthn: únicamente la clave pública se codifica en COSE dentro de authData, y la firma ML-DSA sustituye a ECDSA tanto en el attStmt como en la aserción. El documento Server Requirements de FIDO2 v2.3 (review draft, 2026) ya referencia estos algoritmos [9].

2.4 Impacto PQC en FIDO2

  • Tamaño: claves públicas de 1 312–2 592 B y firmas de 2 420–4 627 B frente a los ~64–256 B clásicos; los mensajes CBOR crecen, así como la memoria flash requerida en el token.
  • Ausencia de hardware nativo: no existen aún SE/TPM/TEE con soporte ML-DSA (2026); los borradores exigen cifrar las credenciales con AES-256-GCM y almacenar claves en almacenamiento seguro [13].
  • Transporte CTAP: los mensajes CTAP2 de >1 KB requieren fragmentación; la hibridación clásico+PQC se propone como vía de transición.
  • Hoja de ruta de la FIDO Alliance [14]: transición «seamless», seguimiento activo de NIST/ISO y alineación de los grupos de trabajo (WebAuthn L4 y CTAP 2.3+ incorporarán PQC).

2.5 Precedentes experimentales (estado del arte)

  • sandbox-quantum/pqc-fido2-impl, con Nitrokey y SoloKeys (framework Trussed): FIDO2 extremo a extremo con Dilithium3 y Kyber768 mediante PQClean y liboqs [16].
  • The Qey [17]: llave ARM con ML-DSA-44/65 vía OQS sobre CTAP-HID, con medición de rendimiento frente a ES256; emplea los identificadores −48/−49.
  • Hoja de ruta PQC de Chromium [18]: cuatro etapas hacia una PKI post-cuántica (certificados Merkle Tree, claves TLS ML-DSA); contexto de transición del ecosistema.
  • Nitrokey 3 [19]: firmware Rust (Trussed) actualizable; plataforma candidata para la fase extendida del TFG.

3Diseño de arquitectura: microservicios Zero Trust

Marco normativo de referencia: NIST SP 800-207 (Zero Trust Architecture, 2020) [4] y SP 800-207A (modelo ZTA para aplicaciones cloud-native y microservicios, 2023) [5], con la serie SP 800-204 para la seguridad en service meshes.

3.1 Los siete principios aplicados al proyecto

  1. Verificación continua: ninguna petición confía por su ubicación; todo el tráfico interno exige mTLS con identidad criptográfica del servicio.
  2. Privilegio mínimo: cada microservicio solo puede invocar los endpoints que necesita (política declarativa, estilo OPA).
  3. Microsegmentación: la red Docker se divide por planos (edge, dominio, datos) con rutas explícitas únicamente.
  4. Consciencia de recursos: el motor de políticas decide con identidad y estado (contador de firmas, revocación).
  5. Autenticación y autorización explícitas por sesión: sesiones cortas en Redis con TTL.
  6. Recolección continua de información: métricas, registros estructurados y trazas (OpenTelemetry).
  7. Dinamismo: política evaluable en caliente; punto de aplicación (PEP) en la pasarela.

3.2 Componentes ZTA (SP 800-207)

  • PE — Policy Engine: decide el acceso; en el proyecto, módulo de autorización de la pasarela con reglas declarativas.
  • PA — Policy Administrator: establece y revoca sesiones; emite tokens de servicio.
  • PEP — Policy Enforcement Point: aplica las decisiones (proxy de entrada + middleware mTLS).
  • Fuentes de datos: registro de credenciales FIDO2 (PostgreSQL) y estado de sesión (Redis).

MVP: mTLS clásico interno con certificados de servicio de vida corta y CA propia. Fase extendida: hibridación X25519MLKEM768 en los mismos túneles.

Figura 1. Topología de red de la arquitectura propuesta y asignación de puertos
ZONA PÚBLICA Cliente Navegador + emulador PQC WebAuthn / CTAP2 HTTPS 443 ZONA EDGE API Gateway TLS 1.3 · PEP :8080 → interno ZONA DOMINIO (mTLS) rp-fido2 :8081 · ceremonias registro / aserción crypto-svc :8082 · verify ML-DSA CIRCL (Go) users-svc :8083 · cuentas credenciales FIDO2 benchmark-svc :8085 · métricas PQC ES256 vs ML-DSA mTLS ZONA DATOS PostgreSQL :5432 · credenciales Redis :6379 · sesiones / challenge Observabilidad :4317 OTLP · :3000 Grafana
ServicioPuerto (interno)ResponsabilidadDependencias
api-gateway443 → 8080Ingress TLS 1.3, PEP Zero Trust, limitación de tasatodos
rp-fido28081Ceremonias WebAuthn: challenge, attestation, assertioncrypto-svc, users-svc, Redis
crypto-svc8082Verificación ML-DSA (CIRCL) y ES256 de control
users-svc8083Cuentas y almacén de credenciales (pk COSE, AAGUID, contador)PostgreSQL
session-svc8084Challenges de un solo uso y sesiones con TTLRedis
benchmark-svc8085Suite de pruebas de rendimiento PQC (p95, ops/s, bytes)Grafana / OTLP
postgres5432Estado persistente
redis6379Estado efímero

Principio de exposición: únicamente la pasarela publica puerto al host (443). Los demás servicios solo son alcanzables dentro de las redes Docker internas (net-edge, net-domain, net-data), cada una con su política de segmentación.

3.3 Flujo de una aserción ML-DSA (MVP)

Listado 3
1. GET /login/begin → session-svc crea challenge (Redis, TTL 60 s)
2. Emulador: navigator.credentials.get({challenge, rpId})
   → CTAP2 getAssertion: firma ML-DSA-65 de
     authData ‖ SHA256(clientDataJSON)
3. POST /login/finish → api-gateway (PEP, mTLS)
4. rp-fido2: valida origin, rpIdHash, flags (UP/UV), contador
5. crypto-svc: ML-DSA.Verify(pk_COSE(−49), M, σ) vía CIRCL
6. Si es correcto → sesión emitida (PA) · métricas → OTLP

3.4 Diseño experimental de la evaluación

Tabla 4. Variables de rendimiento y grupos de contraste
VariableML-DSA-44ML-DSA-65ML-DSA-87ES256
Firmas/s (sign)experimentalexperimentalexperimentalcontrol
Verificaciones/sexperimentalexperimentalexperimentalcontrol
Latencia p50/p95 (ms)medidamedidamedidamedida
Tamaño de aserción (B)≈2 700≈3 600≈4 900≈180
CPU/mem (Go pprof)medidamedidamedidamedida

Metodología: go test -bench junto a carga HTTP con k6/vegeta; tres ejecuciones por configuración, proceso repetible en CI. Los resultados conformarán el capítulo de evaluación de la memoria.

4Plan de trabajo

Planificación por fases con gestión de riesgos: el MVP es independiente de las extensiones, de modo que el fallo de una extensión no compromete ni el núcleo ni la memoria.

1

Investigación y diseño teórico · semanas 1–3

en curso
  • Estudio de estándares: FIPS 203 y 204; funcionamiento de ML-KEM y ML-DSA [1][2]
  • Análisis de FIDO2/WebAuthn y codificación COSE (RFC 9052, RFC 8812, borradores ML-DSA) [11][10]
  • Diseño de arquitectura: topología, puertos y principios Zero Trust (SP 800-207/207A) [4][5]
  • Estructura documental de la memoria y bibliografía volcada
  • Entregable: este documento de investigación y el esqueleto de memoria
2

MVP: servidor FIDO2 PQC en Go · semanas 4–8

  • Implementación de rp-fido2 y crypto-svc con CIRCL (ML-DSA-44/65/87) y ES256 de control [15]
  • Emulador de autenticador PQC (software) generando attestation/assertion en COSE
  • Almacén de credenciales (pk COSE, AAGUID, contadores) y mTLS interno clásico
  • Despliegue con Docker Compose sobre Ubuntu Server 24.04
3

Evaluación experimental · semanas 9–11

  • Benchmarking: latencia p50/p95, ops/s de firma y verificación, tamaño de aserción, CPU y memoria
  • Análisis comparativo PQC frente a criptografía tradicional; tablas y figuras para la memoria
4

Extensiones (fase avanzada) · semanas 12–14

  • Firmware PQC experimental en hardware físico (Nitrokey 3 / Trussed, Rust) [19]
  • mTLS híbrido X25519MLKEM768 entre microservicios (Go 1.24+)
5

Redacción final y defensa · semanas 15–16

  • Memoria completa, revisión con el tutor y preparación de la defensa con demostración en vivo

5Estructura documental de la memoria

Esqueleto preparado para incorporar el marco teórico y la bibliografía desde el primer día. La versión detallada, con listas de comprobación por sección, se mantiene en el repositorio (memoria/esqueleto-memoria.md).

Cap. 1 — IntroducciónMotivación (amenaza cuántica, Shor, harvest-now-decrypt-later), objetivos, alcance modular (MVP/extensiones), metodología y estructura del documento.
Cap. 2 — Estado del arteCriptografía post-cuántica (retículos, hash), proceso de estandarización NIST 2016–2024, FIDO2/WebAuthn, Zero Trust (SP 800-207).
Cap. 3 — Fundamentos: los estándaresML-KEM (FIPS 203): M-LWE, Fujisaki–Okamoto, parámetros y tamaños. ML-DSA (FIPS 204): Fiat-Shamir with Aborts, SUF-CMA, HashML-DSA. Panorama: SLH-DSA y FN-DSA.
Cap. 4 — Análisis del protocolo FIDO2WebAuthn (ceremonias, authData, atestación, MDS), CTAP2/CBOR, COSE (RFC 9052/9053, RFC 8812) e integración PQC (borradores IETF −48/−49/−50, FIDO white paper).
Cap. 5 — Diseño de la soluciónTopología de microservicios, puertos, segmentación de red, correspondencia de los principios Zero Trust con los componentes (PE/PA/PEP), modelo de datos y protocolos internos.
Cap. 6 — ImplementaciónGo y CIRCL, esquema del Relying Party, emulador de autenticador, Docker/Compose, decisiones de diseño y problemas encontrados.
Cap. 7 — Evaluación experimentalMetodología de benchmarking, entornos, resultados (latencia, ops/s, tamaños), discusión y limitaciones.
Cap. 8 — Conclusiones y trabajo futuroCumplimiento de objetivos, lecciones aprendidas, líneas abiertas (hardware PQC, mTLS híbrido, migración PKI).
AnexosA: glosario PQC/FIDO2 · B: vectores de prueba y reproducibilidad · C: guía de despliegue · D: fragmentos de código relevantes.

6Bibliografía

Fuentes primarias consultadas durante la Fase 1. Las referencias están numeradas y enlazadas desde el texto; la versión BibTeX se mantiene en el repositorio (memoria/bibliografia.bib).

  1. [1]NIST (2024). Module-Lattice-Based Key-Encapsulation Mechanism Standard. FIPS 203. doi:10.6028/NIST.FIPS.203
  2. [2]NIST (2024). Module-Lattice-Based Digital Signature Standard. FIPS 204. doi:10.6028/NIST.FIPS.204
  3. [3]NIST (2024). Stateless Hash-Based Digital Signature Standard. FIPS 205. doi:10.6028/NIST.FIPS.205
  4. [4]Rose, S. et al. (2020). Zero Trust Architecture. NIST SP 800-207. doi:10.6028/NIST.SP.800-207
  5. [5]NIST (2023). A Zero Trust Architecture Model for Access Control in Cloud-Native Applications. SP 800-207A. doi:10.6028/NIST.SP.800-207A
  6. [6]NIST. Post-Quantum Cryptography (proyecto y migración; IR 8547: transición 2030–2035). CSRC. csrc.nist.gov
  7. [7]Moody, D. et al. (2024). Transition to Post-Quantum Cryptography Standards. NIST IR 8547 (ipd). csrc.nist.gov
  8. [8]W3C (2026). Web Authentication: An API for accessing Public Key Credentials — Level 3. w3.org/TR/webauthn-3
  9. [9]FIDO Alliance (2026). Server Requirements (WebAuthn Level 3 and CTAP2.3), Review Draft. fidoalliance.org
  10. [10]Jones, M. et al. (2020). COSE and JOSE Registrations for Web Authentication (WebAuthn) Algorithms. RFC 8812. rfc-editor.org
  11. [11]Schaad, J. (2022). CBOR Object Signing and Encryption (COSE): Structures and Process (RFC 9052) y Algorithms (RFC 9053). rfc-editor.org
  12. [12]Prorock, M.; Steele, O. (2026). ML-DSA for JOSE and COSE. IETF draft-ietf-cose-dilithium. datatracker.ietf.org
  13. [13]Mitra, A. et al. (2026). ML-DSA for Web Authentication. IETF draft-vitap-ml-dsa-webauthn. datatracker.ietf.org
  14. [14]FIDO Alliance, BTC (2024). Addressing FIDO Alliance's Technologies in Post Quantum World. fidoalliance.org
  15. [15]Cloudflare. CIRCL — Cloudflare Interoperable, Reusable Cryptographic Library (Go; ML-KEM y ML-DSA). github.com/cloudflare/circl
  16. [16]SandboxAQ; Nitrokey; SoloKeys (2023). pqc-fido2-impl: End-to-End Post-Quantum Secure FIDO2. github.com/sandbox-quantum
  17. [17](2025). The Qey: Implementation and performance study of post quantum cryptography in FIDO2. arXiv:2510.21353. arxiv.org
  18. [18]Chromium Security (2026). Post-Quantum HTTPS Authentication Roadmap. chromium.org
  19. [19]Nitrokey (2023). FIDO's, WebAuthn's Post-Quantum Future. nitrokey.com
  20. [20]Shor, P. W. (1997). Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer. SIAM J. Comput., 26(5), 1484–1509.
  21. [21]Ducas, L. et al. (2018). CRYSTALS-Dilithium: A Lattice-Based Digital Signature Scheme. IACR TCHES, 2018(1), 238–268.
  22. [22]Bos, J. et al. (2018). CRYSTALS-Kyber: A CCA-Secure Module-Lattice-Based KEM. IEEE EuroS&P, 353–367.
  23. [23]Cloudflare (2026). PQC support: ecosistema de bibliotecas TLS post-cuánticas (X25519MLKEM768, ML-DSA). developers.cloudflare.com