Criptografía Post-Cuántica

Archivo: src/crypto_pq.rs (385 líneas)

¿Por qué existe?

Implementa un KEM (Key Encapsulation Mechanism) de estilo Kyber (ML-KEM, FIPS 205) usando criptografía basada en retículos (Ring-LWE). Es una implementación educativa de los estándares post-cuánticos que eventualmente reemplazarán a RSA y ECC cuando las computadoras cuánticas sean prácticas.

Parámetros

ParámetroValorSignificado
n256Grado del polinomio (anillo Z_q[x]/(x^256+1))
q3329Módulo primo
k1Module-LWE rank (un solo polinomio)

¿Cómo funciona?

El esquema Kyber se basa en la dificultad del problema Module-LWE (Learning With Errors sobre módulos):

  1. KeyGen: Genera clave pública t = A*s + e y clave secreta s
  2. Encaps: Genera u = A*r + e1 y v = t*r + e2 + msg → ciphertext (u, v')
  3. Decaps: Recupera msg = v - s*u

Donde s, r, e, e1, e2 son polinomios pequeños (errores), A es una matriz pública aleatoria, y msg es el mensaje codificado.

Estructuras

EstructuraDescripción
PolyPolinomio de 256 coeficientes en Z_q
PolyVecVector de polinomios (para Module-LWE rank k)
KyberKeyPairPar (clave_publica, clave_secreta)
KyberCiphertextTexto cifrado del KEM

API Pública

FunciónDescripción
kyber_keygen() -> KyberKeyPairGenera un nuevo par de claves post-cuánticas
kyber_encaps(pk) -> (KyberCiphertext, Vec<u8>)Encapsula una clave compartida
kyber_decaps(sk, ct)Recupera la clave compartida

Uso desde Forja

Expuesto a través del módulo crypto.fa de la stdlib, que provee funciones como generar_claves_pq, encapsular_pq, y desencapsular_pq.

🔬 Nota educativa: Esta implementación está simplificada para fines de aprendizaje y demostración. Los parámetros siguen el estándar ML-KEM (FIPS 205) de NIST, pero no está auditada para producción.