# 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.
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.
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 |
| 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
Aún no hay comentarios.