isazajuancarlos/quipu

GitHub: isazajuancarlos/quipu

Quipu 是一个后量子混合密码学编码库,为静态数据提供对称加密、公钥加密、流式加密、混合签名与符号化表示,支持多语言绑定。

Stars: 0 | Forks: 0

# Quipu [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE) [![crates.io](https://img.shields.io/crates/v/quipu.svg)](https://crates.io/crates/quipu) [![docs.rs](https://img.shields.io/docsrs/quipu)](https://docs.rs/quipu) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/isazajuancarlos/quipu/actions/workflows/ci.yml) [![post-quantum](https://img.shields.io/badge/post--quantum-ML--KEM--1024-purple.svg)](#modos) 带有**加密保护**和**专属符号体系**的编码库。 ## 功能 保护数据并将其表示为**符号**(紧凑文本、字形或图像), 过程可逆且经过身份验证。 ``` datos → KDF(passphrase+pepper) → AEAD → contenedor → codec base-N → diccionario → símbolos ``` ## 模式 | 模式 | API (Rust) | 描述 | |---|---|---| | 对称(passphrase) | `api::encode` / `api::decode` | Argon2id + XChaCha20-Poly1305 | | 后量子(公钥) | `api::encode_to_recipient` / `decode_as_recipient` | 混合 **X25519 + ML-KEM-1024**(X-Wing 风格的绑定记录) | | 视觉通道 | `api::encode_to_image` / `decode_from_image` | **PNG** 无损输出 | | 稳健通道(打印) | `api::encode_to_robust_image` / `decode_from_robust_image` | + **Reed-Solomon**(纠正通道错误) | | 原生字形 | `api::encode_to_glyph_image` / `decode_from_glyph_image` | 专属字形表,易于识别 | | 在线(强化) | `api::encode_online` / `decode_online` | **可验证 VOPRF**(DLEQ 证明):客户端可检测恶意服务器 | | 签名(真实性) | `api::encode_signed` / `decode_verified` | 混合签名 **Ed25519 + ML-DSA-87**(AND 组合器)。可验证真实性与不可否认性;**无**机密性 | | 三重签名(高保障,功能 `slh`) | `api::encode_signed_triple` / `decode_verified_triple` | 三重混合签名 **Ed25519 + ML-DSA-87 + SLH-DSA-256s**(3选3 AND):只要 {曲线, 格, hash} 中有 ≥1 个存活,即不可伪造。Opt-in;签名大小约 34 KB | | 流式(大文件) | `api::encrypt_stream` / `decrypt_stream` | 分块加密(内存有限)适用于大型静态数据;抗截断/重排/拼接。容器 `QST1` | | 蜜罐 / Honey(功能 `honey`) | `honey::encrypt_pin` / `decrypt_pin`(及通用 `encrypt`/`decrypt`) | 针对低熵 secret(PIN、助记词)的 **Honey Encryption**:任何错误的 passphrase 都会解密为**另一个看似合理的 secret**,而不是报错 → 无暴力破解预言机。Opt-in。**设计上无身份验证**(tag 将成为预言机);不能替代核心 AEAD,仅适用于均匀序列 | ## 字典(可插拔符号体系) - `dictionaries::ascii94()` — 94 个 ASCII 符号(通用复制粘贴)。 - `dictionaries::flagship()` — 4096 个字形(12 比特/符号,密度约 2 倍)。 - `dictionaries::from_range(start, count)` — 自定义符号表。 - `glyphopt` — 通过最大可分性进行字形选择(AI 字形的基础)。 ## 字形库 相同的加密 payload 可以表示为紧凑文本、PNG 图像, 或使用**专属字形表**(几何形状或有机生成)。 符号体系是**公开的**(Kerckhoffs 原则):不增减安全性,仅作表示。 | 字形表 | 符号中的 secret | 原生字形 | 生成字形 | |---|---|---|---| | ![alfabeto](https://raw.githubusercontent.com/isazajuancarlos/quipu/main/glyph_alphabet.png) | ![secreto](https://raw.githubusercontent.com/isazajuancarlos/quipu/main/secreto_en_glifos.png) | ![nativos](https://raw.githubusercontent.com/isazajuancarlos/quipu/main/glifos_nativos.png) | ![generativos](https://static.pigsec.cn/wp-content/uploads/repos/cas/fb/fb12ceb3266957ea6d3d65856b045db82f01ec1e970b5ef9704d47fdf8494d50.png) | ## 安全与强化 - **预处理层**:NFKC 标准化、pepper、Padmé 填充(隐藏长度)、上下文绑定 (AAD)、HKDF(子密钥分离)。 - **反黑客**:内存中的密钥清除(`zeroize`)、常数时间比较、验证 KDF 参数、统一错误处理。 - **黑客机器人**:内部红队(篡改/截断/唯一性)。发现并修复了由恶意 Argon2 参数引发的 DoS 漏洞。 - **Security Lab**(功能 `lab` / `lab-offline`,不包含在已发布的构建中):**自适应**红队,会自我攻击。在 CI 中的核心(格式泄漏 + 伪造签名)包含链式语料库和元测试,如果反黑客防御减弱则会失败;以及一个**隔离的离线沙箱**(无网容器)用于 AI 加速的时间和猜测成本测试。 `cargo run --example securitylab --features lab` · `bash lab/run.sh`。参见 [`lab/README.md`](lab/README.md) 和 `THREAT_MODEL.md` §9。 ## 使用 (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(); ``` 混合签名(可由第三方验证真实性,后量子): ``` 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 ``` ## 使用 (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" # 后量子 pub, sec = quipu.generate_keypair() s = quipu.encode_to_recipient(b"secreto", pub) assert quipu.decode_as_recipient(s, sec) == b"secreto" # 混合签名(真实性,后量子) 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(二进制输出,非符号) blob = quipu.encrypt_stream(b"...datos grandes...", "passphrase") assert quipu.decrypt_stream(blob, "passphrase") == b"...datos grandes..." ``` ## 使用 (Node.js) ``` npm install quipu-crypto # binarios precompilados: linux-x64, darwin-x64, darwin-arm64, win32-x64 (sin toolchain de Rust) ``` ``` import * as quipu from 'quipu-crypto'; const blob = quipu.encryptStream(Buffer.from('...datos grandes...'), 'passphrase'); quipu.decryptStream(blob, 'passphrase'); // -> Buffer const { publicKey, secretKey } = quipu.generateKeypair(); // post-cuántico const c = quipu.encryptToRecipient(Buffer.from('secreto'), publicKey); quipu.decryptAsRecipient(c, secretKey); ``` API 是**同步的**(运行 Argon2id;对于服务器,请从 `worker_thread` 调用)。参见 [`bindings/node/README.md`](bindings/node/README.md)。 ## 使用 (Go) ``` go get github.com/isazajuancarlos/quipu/bindings/go@v0.7.0 # cgo: requiere CGO_ENABLED=1 y un compilador de C ``` ``` import quipu "github.com/isazajuancarlos/quipu/bindings/go" blob, err := quipu.EncryptStream([]byte("...datos grandes..."), "passphrase", quipu.StreamOptions{}) plain, err := quipu.DecryptStream(blob, "passphrase", nil) ``` 符合语言习惯的 `(result, error)` API;使用 `errors.Is` 处理哨兵错误。注意:目前 链接需要检出代码库(cgo 链接 `target/release/libquipu_capi.a`); 首先使用 `cargo build -p quipu-capi --release` 编译 staticlib。参见 [`bindings/go/README.md`](bindings/go/README.md)。 ## 使用 (C / 其他语言) 稳定的 C ABI 位于 [`bindings/c`](bindings/c)(crate `quipu-capi`)。 编译动态/静态库和通过 cbindgen 生成的 `quipu.h` 头文件,使得任何具有 C FFI 的语言(Node.js, Go, Ruby, ...) 都能使用 Quipu。其接口与 Python 绑定保持对等。 参见 [`bindings/c/README.md`](bindings/c/README.md)。 ``` #include "quipu.h" uint8_t *blob = NULL; size_t n = 0; if (quipu_encrypt_stream(data, len, "passphrase", NULL, 0, 0, &blob, &n) == QUIPU_OK) { /* ... usar blob ... */ quipu_bytes_free(blob, n); /* se limpia al liberar: sin residuo de secretos */ } ``` ## 功能示例 所有模式的往返测试,可直接运行: ``` cargo run --example quickstart # Rust (examples/quickstart.rs) python examples/quickstart.py # Python (examples/quickstart.py) ``` ## 构建与测试 ``` 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) cargo run --example redteam --features "lab slh honey" --release # red-team consolidado (todas las superficies) bash lab/run.sh # banco offline aislado (timing + guessing) — Etapa B # Coverage-guided Fuzzing(libFuzzer, nightly)。Targets: parse_container, # honey_decrypt, unpad, codec_roundtrip. cargo +nightly fuzz run honey_decrypt # Python Bindings source venv/bin/activate maturin develop --features python python tests/python/test_quipu.py ``` ## 状态 v1 + v1.1 + v2 + AEAD 流式传输 (`QST1`) + honey (`QHNY`) + 签名(混合 Ed25519+ML-DSA-87 和带 SLH-DSA 的三重签名)已通过严格的 TDD 实现。 **207 个 Rust 测试 + Wycheproof + 15 个 Python 测试** 通过,clippy 无警告,模糊测试无 崩溃,Miri 无 UB。基于 C ABI 的多语言绑定,每个都有 跨语言互操作:**10 个 ABI + C 集成测试,12 个 Node,12 个 Go**。 后量子参数处于 **NIST 安全类别 5 (CNSA 2.0)**: **ML-KEM-1024** 和 **ML-DSA-87**。带有**可验证 VOPRF**(DLEQ 证明)的在线模式,X-Wing 风格绑定记录的混合 KEM,**混合签名 Ed25519 + ML-DSA-87**(AND 组合器),以及 自有的**预审计**(参见 `INFORME_PREAUDITORIA.txt` 和 `MODELO_DE_AMENAZA.txt`)。 **Security Lab**(自托管的自适应红队):CI 中的 14 项攻击 (`--features lab`) + 离线时间/猜测沙箱(`--features lab-offline`)。 ## 文档 - [`docs/SPEC.md`](docs/SPEC.md) — **技术规范**(容器格式、 KDF、混合模式、VOPRF/DLEQ、域分离)。 - [`docs/THREAT_MODEL.md`](docs/THREAT_MODEL.md) — 威胁模型 (EN) · 原始版 [`MODELO_DE_AMENAZA.txt`](MODELO_DE_AMENAZA.txt) (ES)。 - [`docs/PRE_AUDIT.md`](docs/PRE_AUDIT.md) — 内部预审计 (EN) · 原始版 [`INFORME_PREAUDITORIA.txt`](INFORME_PREAUDITORIA.txt) (ES)。 - [`SECURITY.md`](SECURITY.md) — 安全策略与漏洞报告。 - [`docs/RELEASES.md`](docs/RELEASES.md) — 如何验证 release 的真实性 (PEP 740 证明 + sigstore/cosign 签名)。 - [`CONTRIBUTING.md`](CONTRIBUTING.md) — 如何贡献 · [`CHANGELOG.md`](CHANGELOG.md)。 - [`LICENSING.md`](LICENSING.md) — 双重许可模式。 - [`docs/announcement.md`](docs/announcement.md) — 设计文章 (EN/ES)。 - [`docs/superpowers/specs/2026-07-01-quipu-security-lab-design.md`](docs/superpowers/specs/2026-07-01-quipu-security-lab-design.md) — **Security Lab**(自适应红队,功能 `lab`)设计。 ## 许可证 **双重许可**模式(open-core): - **AGPL-3.0-or-later** 用于开源用途(参见 `LICENSE`)。 - **商业许可证** 用于闭源专有产品或不公开源码的 SaaS。 - **OPRF 服务器**还作为付费的**托管服务**提供。 详情参见 [`LICENSING.md`](LICENSING.md)。联系方式:isazajuancarlos@gmail.com
标签:MITM代理, Rust, 可视化界面, 后量子密码学, 多语言绑定, 密码学, 手动系统调用, 数据加密, 日志审计, 编码与解码, 网络流量审计, 逆向工具, 通知系统