Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.

Quipu

License: AGPL v3 crates.io docs.rs CI post-quantum

Librería de codificación con protección criptográfica y simbología propia.

🇬🇧 Quipu is a free/libre (AGPL-3.0) library that encrypts and encodes data using only vetted cryptographic primitives (XChaCha20-Poly1305, Argon2id, HKDF), with a hybrid post-quantum mode (X25519 + ML-KEM-1024) and a verifiable online hardening mode (VOPRF + DLEQ). It never invents primitives — security lives in the keys, not in hiding the format.

Filosofía "rueda y oruga": donde existe buena criptografía, la reutilizamos (XChaCha20-Poly1305, Argon2id, HKDF, ML-KEM, X25519); donde hay terreno nuevo (representación, simbología, formato), innovamos. Nunca inventamos primitivas criptográficas: la seguridad vive en la clave + el AEAD, no en la representación.

Qué hace

Protege datos y los representa como símbolos (texto denso, glifos, o una imagen), de forma reversible y autenticada.

datos → KDF(passphrase+pepper) → AEAD → contenedor → codec base-N → diccionario → símbolos

Modos

Modo API (Rust) Descripción
Simétrico (passphrase) api::encode / api::decode Argon2id + XChaCha20-Poly1305
Post-cuántico (clave pública) api::encode_to_recipient / decode_as_recipient Híbrido X25519 + ML-KEM-1024 (transcript ligado estilo X-Wing)
Canal visual api::encode_to_image / decode_from_image Salida PNG lossless
Canal robusto (impreso) api::encode_to_robust_image / decode_from_robust_image + Reed-Solomon (corrige errores de canal)
Glifos nativos api::encode_to_glyph_image / decode_from_glyph_image Alfabeto de glifos propio, reconocible
Online (endurecimiento) api::encode_online / decode_online VOPRF verificable (prueba DLEQ): el cliente detecta un servidor deshonesto
Firmado (autenticidad) api::encode_signed / decode_verified Firma híbrida Ed25519 + ML-DSA-87 (combinador AND). Autenticidad y no-repudio verificables; no confidencialidad
Firmado triple (alta garantía, feature slh) api::encode_signed_triple / decode_verified_triple Firma triple-híbrida Ed25519 + ML-DSA-87 + SLH-DSA-256s (AND 3-de-3): infalsificable mientras sobreviva ≥1 de {curva, retículo, hash}. Opt-in; firma ~34 KB
Streaming (archivos grandes) api::encrypt_stream / decrypt_stream Cifrado por chunks (memoria acotada) para datos en reposo grandes; resistente a truncación/reordenamiento/splice. Contenedor QST1

Diccionarios (simbología enchufable)

  • dictionaries::ascii94() — 94 símbolos ASCII (copy-paste universal).
  • dictionaries::flagship() — 4096 glifos (12 bits/símbolo, ~2× más denso).
  • dictionaries::from_range(start, count) — alfabeto a medida.
  • glyphopt — selección de glifos por máxima separabilidad (base para glifos por IA).

Galería de glifos

La misma carga cifrada puede representarse como texto denso, como una imagen PNG, o con un alfabeto de glifos propio (geométrico o generado orgánicamente). La simbología es pública (Kerckhoffs): no aporta ni resta seguridad, solo representación.

Alfabeto de glifos Secreto en glifos Glifos nativos Glifos generativos
alfabeto secreto nativos generativos

Seguridad y endurecimiento

  • Precapas: normalización NFKC, pepper, padding Padmé (oculta longitud), binding de contexto (AAD), HKDF (separación de subclaves).
  • Antihacker: borrado de claves en memoria (zeroize), comparación en tiempo constante, validación de parámetros KDF, errores uniformes.
  • Hackerbot: red-team interno (tamper/truncation/uniqueness). Encontró y se corrigió un DoS por parámetros Argon2 maliciosos.
  • Security Lab (features lab / lab-offline, no viajan en el build publicado): red-team adaptativo que se ataca a sí mismo. Núcleo en CI (fuga de formato + falsificación de firmas) con corpus encadenado y meta-tests que fallan si se debilita una defensa antihacker; y un banco offline aislado (contenedor sin red) para timing y coste de guessing acelerado por IA. cargo run --example securitylab --features lab · bash lab/run.sh. Ver lab/README.md y THREAT_MODEL.md §9.

Uso (Rust)

use quipu::api::{encode, decode, Options};
use quipu::dictionaries;

let dict = dictionaries::ascii94();
let sym = encode(b"secreto", "passphrase", &dict, &Options::default());
let data = decode(&sym, "passphrase", &dict, b"").unwrap();

Firma híbrida (autenticidad verificable por terceros, post-cuántica):

use quipu::api::{encode_signed, decode_verified};
use quipu::{dictionaries, pqsign};

let dict = dictionaries::ascii94();
let (vk, sk) = pqsign::generate_keypair();
let signed = encode_signed(b"acta oficial", &sk, &dict);
let msg = decode_verified(&signed, &vk, &dict).unwrap(); // falla si se altera

Uso (Python)

pip install quipu-crypto   # se instala como "quipu-crypto", se importa como "quipu"
import quipu
s = quipu.encode(b"secreto", "passphrase")
assert quipu.decode(s, "passphrase") == b"secreto"

# Post-cuántico
pub, sec = quipu.generate_keypair()
s = quipu.encode_to_recipient(b"secreto", pub)
assert quipu.decode_as_recipient(s, sec) == b"secreto"

# Firma híbrida (autenticidad, post-cuántica)
vk, sk = quipu.generate_signing_keypair()
signed = quipu.encode_signed(b"acta oficial", sk)
assert quipu.decode_verified(signed, vk) == b"acta oficial"  # falla si se altera

Ejemplos funcionales

Round-trip de todos los modos, listo para correr:

cargo run --example quickstart          # Rust  (examples/quickstart.rs)
python examples/quickstart.py           # Python (examples/quickstart.py)

Construir y probar

cargo test                      # tests unit + property
cargo clippy --all-targets      # lint
cargo run --example demo        # demo simétrico + glifos
cargo run --example v2demo      # post-cuántico + OPRF + imagen
cargo run --example hackerbot   # red-team
cargo run --example testplatform --release   # batería completa
cargo run --example securitylab --features lab   # laboratorio de seguridad (red-team adaptativo)
bash lab/run.sh   # banco offline aislado (timing + guessing) — Etapa B

# Fuzzing (nightly)
cargo +nightly fuzz run parse_container

# Bindings Python
source venv/bin/activate
maturin develop --features python
python tests/python/test_quipu.py

Estado

v1 + v1.1 + v2 + firmas implementados con TDD estricto. 106 tests Rust + Wycheproof + 8 Python verdes, clippy limpio, fuzzing sin crashes, Miri sin UB. Parámetros post-cuánticos en categoría de seguridad NIST 5 (CNSA 2.0): ML-KEM-1024 y ML-DSA-87. Modo online con VOPRF verificable (prueba DLEQ), KEM híbrido con transcript ligado estilo X-Wing, firma híbrida Ed25519 + ML-DSA-87 (combinador AND), y pre-auditoría propia (ver INFORME_PREAUDITORIA.txt y MODELO_DE_AMENAZA.txt). Security Lab (red-team adaptativo auto-hospedado): 14 ataques en CI (--features lab) + banco offline de timing/guessing (--features lab-offline).

⚠️ Proyecto en desarrollo. La pre-auditoría interna NO sustituye una auditoría criptográfica independiente: no usar para proteger datos críticos reales hasta ese sello externo.

Documentación

⚠️ La pre-auditoría interna es preparación, no sustituye una auditoría independiente. Ese sello externo es el siguiente paso del proyecto (solicitud enviada al OTF Security Lab).

Licencia

Modelo de licencia dual (open-core):

  • AGPL-3.0-or-later para uso abierto (ver LICENSE).
  • Licencia comercial para producto propietario cerrado o SaaS sin abrir código.
  • El servidor OPRF se ofrece además como servicio gestionado de pago.

Detalles en LICENSING.md. Contacto: isazajuancarlos@gmail.com

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quipu_crypto-0.5.0.tar.gz (221.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

quipu_crypto-0.5.0-cp39-abi3-win_amd64.whl (420.8 kB view details)

Uploaded CPython 3.9+Windows x86-64

quipu_crypto-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (576.5 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

quipu_crypto-0.5.0-cp39-abi3-macosx_11_0_arm64.whl (514.8 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file quipu_crypto-0.5.0.tar.gz.

File metadata

  • Download URL: quipu_crypto-0.5.0.tar.gz
  • Upload date:
  • Size: 221.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quipu_crypto-0.5.0.tar.gz
Algorithm Hash digest
SHA256 68b03ed69039cdb73dd448a5fb8f790545238392a6e9691bc6cadbcd7fb82ec3
MD5 522bd11f066c98fb0f39f16b9e2b31bc
BLAKE2b-256 4e7dd5a498b27c50236ef5c4a45ea9901d5df0c3f0fa6b942a36408e796d5624

See more details on using hashes here.

Provenance

The following attestation bundles were made for quipu_crypto-0.5.0.tar.gz:

Publisher: release.yml on isazajuancarlos/quipu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quipu_crypto-0.5.0-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: quipu_crypto-0.5.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 420.8 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quipu_crypto-0.5.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ee635a8abf8b4fa35799d7e276dc7b8c3880858b2f5a921d80b83e54a1b04a52
MD5 caa20cafc71db574b352a3af140fc043
BLAKE2b-256 4e362c3bde15fac5fdf7e444d32f8614193b43449e9efdf423dc8aad50ff880e

See more details on using hashes here.

Provenance

The following attestation bundles were made for quipu_crypto-0.5.0-cp39-abi3-win_amd64.whl:

Publisher: release.yml on isazajuancarlos/quipu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quipu_crypto-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quipu_crypto-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 84ca2d83b810419d18f608bb4b16ada8e094443a7e1ee9efbf7c63ab6938be73
MD5 3252146263582521f017652ac7398a5e
BLAKE2b-256 8e240dabdcac7a1f8f02b974448693818cdee5c7570cd5915d8f000f3be13862

See more details on using hashes here.

Provenance

The following attestation bundles were made for quipu_crypto-0.5.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on isazajuancarlos/quipu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quipu_crypto-0.5.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quipu_crypto-0.5.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d65fc0143f0aa377e1787c641efe2442f70e5284b4fc8a3e44cb8d757c48353
MD5 2d49509f6d3ae2779c5fdd3f7ce5579e
BLAKE2b-256 5040a8180328ad0318f5eb9e2578f3c1104b667a322c4a9da5c9d1cb6f84e859

See more details on using hashes here.

Provenance

The following attestation bundles were made for quipu_crypto-0.5.0-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on isazajuancarlos/quipu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.11.1

4 files

0.11.0

4 files

0.10.0

4 files

0.9.1

4 files

0.9.0

4 files

0.7.0

4 files

0.6.0

4 files

This release

0.5.0 This release

4 files

0.4.1

4 files

0.4.0

4 files

0.3.0

4 files

0.2.0

4 files

0.1.0

4 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page