QuipuRustPythonCriptografíaPost-cuántica

Quipu: cifrado post-cuántico en Rust puro, con una rueda para Python

Publicado el 2026-06-05 · Xiliux

Proteger datos que deben seguir siendo secretos dentro de diez años es un problema de hoy: un adversario puede capturar tu tráfico cifrado ahora y descifrarlo cuando exista la capacidad cuántica (harvest now, decrypt later). Quipu es una librería libre de cifrado híbrido post-cuántico para datos en reposo: combina criptografía clásica probada con la nueva, de modo que solo se rompe si ambas caen a la vez.

Rust puro, y por qué

Quipu nació apuntando a varios lenguajes: un núcleo en Rust con una C ABI encima y bindings para Python, Node y Go. Funcionaba, pero la lección fue clara: mantener una interfaz de C estable más cuatro bindings, cada uno con su empaquetado y sus pruebas de interoperabilidad, era complejidad que no pagaba para el objetivo real —proteger datos en reposo— y ampliaba la superficie de ataque con unsafe que no queríamos.

Hoy Quipu es Rust puro: memoria segura, sin garbage collector, sin unsafe de primera parte. Y para quien no programa en Rust, se distribuye como rueda nativa de Python (vía PyO3) — que es la superficie que el cliente que no es de Rust de verdad necesita. Una sola base de código, una sola cosa que auditar. Es la misma filosofía que guía el resto: donde hay buena criptografía, se reutiliza; la simplicidad es una decisión de seguridad, no una comodidad.

Instalación

Es software libre (AGPL-3.0), en Rust puro con rueda nativa para Python (PyO3). Desde agosto de 2026 el código no se publica en registros ni en GitHub, por seguridad: se entrega a pedido, con firma y SHA-256, en contacto@xiliux.com.

Cifrar y descifrar en Python

import quipu

# Simétrico con contraseña
blob = quipu.encrypt_stream(b"datos sensibles", "mi-passphrase")
assert quipu.decrypt_stream(blob, "mi-passphrase") == b"datos sensibles"

# Post-cuántico para un destinatario
pub, sec = quipu.generate_keypair()          # X25519 + ML-KEM-1024
c = quipu.encode_to_recipient(b"secreto", pub)
assert quipu.decode_as_recipient(c, sec) == b"secreto"

Qué hay debajo

Todo son primitivas verificadas y estándar —los KAT de ML-KEM-1024 y ML-DSA-87 se comprueban contra los vectores oficiales del NIST (ACVP)—: Quipu las compone, no inventa criptografía propia.

Libre y transparente

Quipu es código abierto (AGPL-3.0). Puedes leer cada línea y auditar el formato, especificado byte a byte. El código se entrega a pedido (ver arriba), con la especificación del formato byte a byte incluida.

Estado honesto: la composición aún no ha pasado una auditoría criptográfica independiente; hasta ese sello externo, trátalo como software para revisión y experimentación, no para proteger secretos reales de alto valor.

Si necesitas proteger datos en reposo con visión post-cuántica y un formato auditable, hablemos.

Preguntas frecuentes

¿Qué algoritmos usa Quipu?

Cifrado híbrido: X25519 + ML-KEM-1024 (FIPS 203) para el intercambio de claves y Ed25519 + ML-DSA-87 (FIPS 204) para firmas; derivación con Argon2id + HKDF. El componente post-cuántico resiste al algoritmo de Shor; el clásico es el seguro por si el post-cuántico fallara.

¿Por qué Rust puro y no una C ABI con bindings?

Quipu empezó con un núcleo en Rust, una C ABI encima y bindings para Python, Node y Go. Cada binding era superficie de fallo (memoria, tipos, build) para poco valor. Se dejó atrás a favor de una rueda nativa de Python vía PyO3, que cubre a la mayoría del público que no es de Rust.

¿Cómo lo uso desde Python?

Se instala como rueda nativa (pip): generas un par de claves (X25519 + ML-KEM-1024), y ciframos/desciframos con la API directa. No hay que compilar Rust ni gestionar una C ABI: la rueda trae el binario.

¿Para qué sirve y para qué no?

Es para datos EN REPOSO: cifrar archivos o campos con una clave pública o una passphrase. No reemplaza a TLS para datos en tránsito. Protege lo almacenado frente al «harvest now, decrypt later».

← Ver más artículosCotizar un proyecto