al-Zamakhshari/maknoon

GitHub: al-Zamakhshari/maknoon

一款后量子密码学 CLI 与 MCP 服务器,为 AI agent 和命令行用户提供混合加密、阈值签名、密钥保险库及多云分片隐私保护。

Stars: 0 | Forks: 0

Maknoon — post-quantum cryptography engine

[![发布](https://img.shields.io/github/v/release/al-Zamakhshari/maknoon)](https://github.com/al-Zamakhshari/maknoon/releases) [![CI](https://github.com/al-Zamakhshari/maknoon/actions/workflows/ci.yml/badge.svg)](https://github.com/al-Zamakhshari/maknoon/actions/workflows/ci.yml) [![许可证: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Go Report Card](https://goreportcard.com/badge/github.com/al-Zamakhshari/maknoon)](https://goreportcard.com/report/github.com/al-Zamakhshari/maknoon) Maknoon 是一个后量子密码学引擎和 MCP 网关 —— 一个约 12 MB 的单一二进制文件,允许 AI agent 和 CLI 用户加密数据、管理密钥、签署文档以及发布可验证的身份,所有这些都受到保护,免受经典和量子对手的威胁。 ## 功能 | | 规范 | |---|---| | **混合 PQC 加密** | ML-KEM-768 + X25519 (NIST 标准)。保守选项:FrodoKEM-640 | | **后量子签名** | ML-DSA-87;M-of-N 阈值聚合 | | **加密保险库** | Argon2id 保护的密钥;法定人数解锁;暴力破解锁定;导出/导入 | | **身份注册表** | WKD (HTTPS 静态文件) 和 DNS TXT — 无需基础设施 | | **RAID 隐私保护** | Reed-Solomon 分片分散;与 rclone 结合实现多云分发 | | **取证审计日志** | 哈希链式、ML-DSA-87 签名的操作日志;篡改检测 | | **MCP Server** | 通过 stdio 或 SSE 为 AI agent 提供 45 种 PQC 工具;支持 `gh skill install` | | **会话密钥加密** | 派生一次,加密数千个文件,无单文件 KDF 开销 | ## 安装 ``` # Homebrew (macOS / Linux) brew install al-Zamakhshari/tap/maknoon # GitHub Releases — 适用于 linux/darwin/windows amd64/arm64 的预编译二进制文件 # https://github.com/al-Zamakhshari/maknoon/releases # 从源码构建 git clone https://github.com/al-Zamakhshari/maknoon cd maknoon && make build ``` **初次使用 Maknoon?** 请从 [5 分钟快速入门](docs/getting-started/QUICKSTART.md)开始。 `mkn` 作为简短别名与二进制文件一起被所有包管理器安装。要手动添加它: ``` alias mkn=maknoon # add to ~/.bashrc or ~/.zshrc ``` ## 快速入门 ### 加密和解密 ``` # 生成 keypair maknoon keygen -o alice # 对称 (passphrase) maknoon encrypt report.pdf -o report.pdf.makn maknoon decrypt report.pdf.makn -o report.pdf # 非对称 — 多接收者 (通过 WKD 或 DNS 解析密钥) maknoon encrypt report.pdf -p @alice@corp.com -p @bob@corp.com -o report.pdf.makn maknoon decrypt report.pdf.makn -k alice.kem.key -o report.pdf # 检查 header 而不解密 maknoon info report.pdf.makn --json ``` ### 保险库 — 加密密钥存储 ``` maknoon vault set DEPLOY_TOKEN --vault prod maknoon vault get DEPLOY_TOKEN --vault prod # 导出 / 导入以在机器之间迁移 maknoon vault export --vault prod -o prod.vault.makn maknoon vault import --vault restored -i prod.vault.makn # Quorum 治理的机构 vault (3-of-5 解锁) maknoon vault init-institutional --vault corp --threshold 3 --shares 5 ``` ### 身份 — 发布和解析 ``` # 通过 HTTPS 发布你的公钥 (WKD — 无需更改 DNS) maknoon keygen -o alice maknoon identity publish @alice@example.com --wkd # → 将生成的 JSON 上传至: # https://example.com/.well-known/maknoon/alice.json # 通过 DNS 自动发布 (deSEC.io) maknoon identity publish @alice@example.com --desec # 其他人现在可以直接向你加密 maknoon encrypt secret.txt -p @alice@example.com -o secret.makn ``` ### 阈值签名 ``` maknoon sign contract.pdf -k alice.sig.key -o alice.sig maknoon sign contract.pdf -k bob.sig.key -o bob.sig maknoon sign aggregate alice.sig bob.sig -o combined.sig maknoon verify contract.pdf --signature combined.sig \ -p alice.sig.pub -p bob.sig.pub --threshold 2 ``` ### 结合 rclone 的 RAID 隐私保护 将加密文件分片并跨云服务提供商分发。任意 N-of-(N+M) 个分片即可重建原始文件 —— 没有任何单一提供商能看到完整文件。 ``` # Fragment 为 5 个数据 + 3 个 parity shards;在本地保留 manifest maknoon encrypt classified.pdf -o classified.makn maknoon fragment classified.makn --data 5 --parity 3 \ --output /tmp/shards/ --output-manifest ~/manifests/classified.json # 分布在三个提供商中 rclone sync /tmp/shards/ s3:my-bucket/shards/ rclone copy /tmp/shards/shard_005.maknf gcs:backup/shards/ rclone copy /tmp/shards/shard_006.maknf azure:container/shards/ maknoon shred /tmp/shards/ # 恢复:获取任意 5 个 shards,根据 manifest 验证 SHA-256 rclone copy s3:my-bucket/shards/ /tmp/recover/ cp ~/manifests/classified.json /tmp/recover/manifest.json maknoon reassemble /tmp/recover/ --output classified.makn --verify maknoon decrypt classified.makn -o classified.pdf ``` 有关完整的 rclone 工作流,请参阅[分片分发指南](docs/user-guides/fragment-distribution.md)。 ### 使用会话密钥进行批量加密 Argon2id 仅运行一次;所有文件共享派生密钥 —— 消除了大规模操作时每文件 26 ms 的 KDF 开销。 ``` KEY=$(maknoon session derive --passphrase "$PASS") for f in documents/*.pdf; do maknoon encrypt "$f" --session-key "$KEY" -o "${f}.makn" done ``` ## AI Agent 集成 ### 安装 agent 技能 ``` gh skill install al-Zamakhshari/maknoon maknoon ``` 这将在您的 agent 主机(Claude Code、Cursor 等)中配置 Maknoon 的 MCP server,并从 [`.github/skills/maknoon/SKILL.md`](.github/skills/maknoon/SKILL.md) 加载操作说明。 ### 手动 MCP 配置 **stdio** (Claude Desktop, Cursor): ``` { "mcpServers": { "maknoon": { "command": "maknoon", "args": ["mcp", "--transport", "stdio"], "env": { "MAKNOON_PASSPHRASE": "your-passphrase" } } } } ``` **SSE** (远程 agent,Kubernetes): ``` maknoon serve --address :8443 --tls-cert cert.pem --tls-key key.pem ``` **从 CLI 调用工具** (脚本 / CI): ``` maknoon call encrypt_file --addr localhost:8443 \ --args '{"input":"report.pdf","output":"report.pdf.makn"}' ``` ### MCP 工具分类(45 个工具) | 类别 | 工具 | |---|---| | **crypto** | `encrypt_file`, `decrypt_file`, `sign_file`, `verify_file`, `inspect_file`, `shred_file`, `reencrypt_file`, `gen_passphrase`, `gen_password` | | **vault** | `vault_get/set/list/delete/rename`, `vault_set_blob/get_blob` (agent memory), `vault_split/recover`, `vault_init_institutional`, `vault_status`, `vault_check_shards` | | **identity** | `identity_keygen/list/info/rename/delete/split/combine/publish`, `contact_add/list/delete`, `resolve_identity`, `aggregate_signatures` | | **dispersal** | `fragment_file`, `reassemble_file` | | **config** | `config_list/update/init`, `diagnostic`, `audit_export`, `audit_verify` | | **profiles** | `profiles_list/gen/rm` | ### Agent 交互示例 Agent 调用 `profiles_list` 以确认可用的配置文件,通过 `resolve_identity` 解析 alice 的密钥,然后调用带有 `recursive=true` 和 `public_keys="@alice@corp.com"` 的 `encrypt_file`。用户可以看到结果;而密钥材料保留在 Maknoon 内部。 对于批量操作,行为良好的 agent 会首先调用 `session_derive`(约 60 ms 的 Argon2id 仅执行一次),然后在所有 `encrypt_file` 调用中重复使用该会话密钥 —— 从而将 1,000 个文件的加密开销从约 60 秒减少至总计约 30 ms 的 KDF 开销。 ### 安全性:提示词注入 使用 Maknoon 的 agent 可能会被恶意文档欺骗,从而在攻击者控制的路径上调用 `decrypt_file` 并泄露结果。缓解措施: - **Agent 模式沙盒**:当通过 MCP 启动时,Maknoon 将文件访问限制在 `$HOME`、保险库目录和 `/tmp` 中 - **审计追踪**:每次工具调用都会通过 SHA-256 链接和 ML-DSA-87 签名进行记录 —— 运行 `maknoon audit verify` 以检测篡改 - **密码短语范围限定**:仅为 agent 需要的特定保险库设置 `MAKNOON_PASSPHRASE`;切勿暴露身份私钥 ## 安全 ### 设计原则 - **恒定内存流式处理** — 以有限的 RSS 加密任意大的文件 - **显式清零** — 所有密钥材料保存在 `memguard` 锁定的缓冲区中;使用后清零 - **身份过期** — 发布的记录在 48 小时后过期;拒绝重放过期记录 - **保险库锁定** — 10 次解锁失败将触发 15 分钟的锁定 - **Agent 模式沙盒** — 作为 MCP server 运行时,文件路径限制在 home/vault/tmp - **取证审计** — 每次操作均通过 SHA-256 哈希链和 ML-DSA-87 签名进行记录 ``` maknoon audit export # view operation history maknoon audit verify # verify log integrity (detect tampering) ``` ### 性能 | 操作 | 吞吐量 | 备注 | |---|---|---| | 加密 10 MB (8 个工作线程) | ~384 MB/s | 接近内存带宽 | | 加密 100 MB | ~3.3 GB/s | 大缓冲区均摊 | | 会话密钥加密 1 KB | ~2,000 MB/s | 无单文件 KDF | | 加密 1 KB (带 KDF) | ~0.04 MB/s | 26 ms 的 Argon2id 占主导 | | ML-DSA-87 签名/验证 | ~1 ms | 每次操作 | 在您的硬件上运行 `make bench` 进行测量。 ### 漏洞披露 安全问题:**akhallaf@gmail.com** — 参见 [SECURITY.md](SECURITY.md)。 ## Maknoon 不适用于什么 - **不是 VPN** — 请使用 [WireGuard](https://www.wireguard.com) 或 [Tailscale](https://tailscale.com) 进行加密隧道传输 - **不是聊天应用** — 请使用 Signal 或 Matrix 客户端进行安全消息传递 - **不是云备份工具** — 分片分散为您提供纠删码;rclone 为您提供云传输 ## 文档 | | | |---|---| | [安装与硬件强化](docs/getting-started/INSTALL.md) | TPM 2.0,SSD 上的安全删除 | | [架构](docs/architecture/overview.md) | 流式管道,MCP 传输,身份注册表 | | [威胁模型](docs/architecture/threat-model.md) | 算法选择,已知局限性 | | [CLI 参考](docs/integration/cli-reference.md) | 所有命令和标志 | | [MCP server](docs/integration/mcp-server.md) | 工具 schema,SSE 设置 | | [会话密钥](docs/user-guides/session-keys.md) | 无需单文件 KDF 开销的批量加密 | | [分片 + rclone](docs/user-guides/fragment-distribution.md) | 结合云分发的 RAID 隐私保护 | | [远程 agent](docs/user-guides/remote-agent.md) | `maknoon call`,SSE server,PQC TLS | | [更新日志](CHANGELOG.md) | 发布历史 | | [贡献](CONTRIBUTING.md) | 开发设置,安全要求,PR 流程 | ## 许可证 MIT — 由 [al-Zamakhshari](https://github.com/al-Zamakhshari) 创建。
标签:CVE, EVTX分析, MCP, 加密工具, 后量子密码学, 密码学, 手动系统调用, 数字签名, 日志审计