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
Señuelos / Honey (feature honey) honey::encrypt_pin / decrypt_pin (y genérico encrypt/decrypt) Honey Encryption para secretos de baja entropía (PIN, frase mnemónica): cualquier passphrase equivocada descifra a otro secreto plausible, no a un error → sin oráculo de fuerza bruta. Opt-in. Sin autenticación por diseño (un tag sería un oráculo); no sustituye al núcleo AEAD, solo para secuencias uniformes

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

# Streaming AEAD para datos grandes (salida binaria, no símbolos)
blob = quipu.encrypt_stream(b"...datos grandes...", "passphrase")
assert quipu.decrypt_stream(blob, "passphrase") == b"...datos grandes..."

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.6.0.tar.gz (233.6 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.6.0-cp39-abi3-win_amd64.whl (426.6 kB view details)

Uploaded CPython 3.9+Windows x86-64

quipu_crypto-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (583.8 kB view details)

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

quipu_crypto-0.6.0-cp39-abi3-macosx_11_0_arm64.whl (521.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: quipu_crypto-0.6.0.tar.gz
  • Upload date:
  • Size: 233.6 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.6.0.tar.gz
Algorithm Hash digest
SHA256 fbdd58380eaaf6136ee37a262241cde44728fcdc88953284341fba17815f3bea
MD5 3039b3a61d166167076f682d2063b40a
BLAKE2b-256 8d8f79f69ebb763b268406bac071c6aa52b147ae5e35969932c9b1551c3d522f

See more details on using hashes here.

Provenance

The following attestation bundles were made for quipu_crypto-0.6.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.6.0-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: quipu_crypto-0.6.0-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 426.6 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.6.0-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 01bceee4f387ce28bca3a671848dfdfc25d69fe102a31e9f4631a47e0e037eb2
MD5 42c85d9ea158005b10e6111c6f818058
BLAKE2b-256 892ec7de7e4f9cf05f55d58d0d2f7bf8d9eadcabb3f4649d6c7da935f9a95cda

See more details on using hashes here.

Provenance

The following attestation bundles were made for quipu_crypto-0.6.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.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quipu_crypto-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87a7e8c03933eb8d0dbd1ed24aba2f09d5b2852dbf5b14d01b4f90a0f47452fd
MD5 8ecdc3950887d3decf792204b5381893
BLAKE2b-256 d949ecbce5fed38802514fc5a4d93cd82b4b0af17791c781de304e2d6ccf0776

See more details on using hashes here.

Provenance

The following attestation bundles were made for quipu_crypto-0.6.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.6.0-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quipu_crypto-0.6.0-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24ce0d76deb003464ced1554e5406b7e7688fbdafe4fa5b93dea3a0f542b9979
MD5 fc73052854cb68b045120bd20b7f854b
BLAKE2b-256 2bc2b8d8e5398e75ffd746f4a31d24559fcf14276c321439b39ce677dde87319

See more details on using hashes here.

Provenance

The following attestation bundles were made for quipu_crypto-0.6.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

This release

0.6.0 This release

4 files

0.5.0

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