Volver al inicio

QuarkDash: cifrado post-cuántico en TypeScript

QuarkDash — protocolo post-cuántico híbrido basado en Ring-LWE para intercambio de claves, ChaCha20/Gimli para cifrado y SHAKE-256 para autenticación. Proporciona seguridad de 128 bits con rendimiento hasta 2710 MB/s. Incluye protección contra ataques de repetición y ataques de canal lateral.

QuarkDash post-cuántico: Ring-LWE y código TypeScript
Advertisement 728x90

# QuarkDash: Protocolo Híbrido Postcuántico en TypeScript para Sistemas de Alta Carga

QuarkDash combina Ring-LWE para intercambio de claves postcuántico, cifrados de flujo ChaCha20 o Gimli, SHAKE-256 para derivación de claves y MAC, más protección contra ataques de repetición y temporales. Tamaño de clave pública ~2 KB, privada ~1 KB. Configuración de sesión en ~8-9 ms en CPUs promedio. Ideal para sistemas cliente-servidor sin bloqueo arquitectónico.

Selección de Primitivas en QuarkDash

Ring-LWE para Intercambio de Claves

Ring-LWE usa anillos polinómicos con parámetros N=256, Q=7681, ω=7. Ofrece seguridad postcuántica de 128 bits. Multiplicación polinómica vía NTT en O(N log N). Generación de claves: ~12 ms, encapsulación/desencapsulación ~8-9 ms.

Cifrado Simétrico

  • ChaCha20: 20 rondas, clave de 256 bits, nonce de 12 bytes. Velocidad endiablada en software, resistente a ataques temporales.
  • Gimli: 24 rondas, estado de 384 bits, seguridad de 256 bits. Supera a ChaCha20 en arquitecturas de 32 bits, código más ligero para IoT.

KDF y MAC con SHAKE-256

SHAKE-256 (basado en Keccak) para derivación de claves resistente a cuántica y autenticación. KDF: SHAKE256(salt || sharedSecret || "session-key", 64) → sessionKey (32 bytes) + macKey (32 bytes). MAC: SHAKE256(macKey || header || ciphertext, 32) con verificación de tiempo constante.

Google AdInline article slot

Flujo del Protocolo Paso a Paso

Generación de Claves

  • Elegir a ∈ Z_Q^N.
  • Pequeños s, e con coeficientes {-1,0,1}.
  • b = a ⊗ s + e (NTT).
  • Pública: (a, b), privada: s.

KEM para Sesión

Iniciador:

  • u = a ⊗ s' + e'.
  • sharedSecret de b ⊗ s'.

Receptor: sharedSecret de u ⊗ s.

Cifrado de Mensajes

  • header = timestamp (8 bytes) || secuencia (4 bytes).
  • ciphertext = streamCipher.encrypt(plaintext, sessionKey, nonce).
  • mac = SHAKE256(macKey || header || ciphertext, 32).
  • Paquete: header || ciphertext || mac.

Descifrado de Mensajes

  • Analizar paquete.
  • Verificar MAC (tiempo constante).
  • Comprobar timestamp dentro de 5 minutos.
  • Asegurar que la secuencia sea única (ventana de 1000).
  • plaintext = streamCipher.decrypt(ciphertext).

Medidas de Seguridad

  • Resistencia Postcuántica: Ring-LWE sin rupturas cuánticas conocidas, SHAKE-256 resiste el algoritmo de Grover.
  • Protección contra Canales Laterales: Comparaciones de tiempo constante, borrado seguro de claves, sin ramificaciones dependientes de secretos.
  • Secreto Perfecto Hacia Adelante: Claves de sesión efímeras.
  • Protección contra Repetición: Timestamp + secuencia.

Seguridad general: 128-256 bits contra amenazas clásicas/cuánticas.

Google AdInline article slot

Benchmarks de Rendimiento

Configuración de Sesión (ms, promedio de 1000 ejecuciones)

| Operación | QuarkDash (ChaCha20) | QuarkDash (Gimli) | ECDH P-256 | RSA-2048 |

|----------|----------------------|-------------------|------------|----------|

| Generación de Claves | 12.3 | 12.1 | 1.2 | 48 |

Google AdInline article slot

| Encapsulación KEM | 8.7 | 8.5 | 3.4 | 42 |

| Desencapsulación KEM | 9.2 | 9.0 | 3.4 | 0.1 |

Rendimiento (MB/s)

| Tamaño | ChaCha20 | Gimli | AES-256-GCM | ECIES |

|--------|----------|-------|-------------|-------|

| 1 KB | 125 | 132 | 117 | 10 |

| 1 MB | 2380 | 2630 | 1176 | 48 |

| 10 MB | 2450 | 2710 | 1200 | 50 |

Sobrecarga: clave pública 2 KB, privada 1 KB, sobrecarga de paquete 44 bytes.

Comparación con Alternativas

  • Vs AES: QuarkDash añade KEM integrado, secreto perfecto hacia adelante, protección contra repetición. ChaCha20 supera a AES en software sin aceleración por hardware.
  • Vs ECC: Resistente a Shor, menor sobrecarga de paquete (44 vs 61 bytes), más rápido para cargas grandes.

El protocolo está optimizado para TypeScript en apps web, con SHAKE-256 emulado sobre Keccak.

Lecciones Clave

  • Ring-LWE (N=256, Q=7681) para PQC de 128 bits con multiplicación NTT.
  • Cifrados duales: ChaCha20 para software, Gimli para IoT.
  • KDF/MAC SHAKE-256 con operaciones de tiempo constante.
  • Protección contra repetición vía timestamp + secuencia (ventana 1000).
  • Benchmarks: hasta 2710 MB/s en cifrado, sesiones ~9 ms.

— Editorial Team

Advertisement 728x90

Leer después