liesware/Vectis
GitHub: liesware/Vectis
Vectis 是一个实验性密码学数据保护工具包,旨在为敏感数据在传输层之后的全生命周期提供可组合的加密、签名和 token 化保护。
Stars: 1 | Forks: 0
# Vectis
' > .unseal_key
chmod 600 .unseal_key
```
创建 SQLite 数据库文件和 schema:
```
mkdir -p src/db
sqlite3 src/db/data.db < src/db/sqlite_schema.sql
```
启动 HTTP 服务:
```
cargo run -- serve
```
检查就绪状态:
```
cargo run -- health ready
```
创建操作密钥:
```
cargo run -- keys create --tag payments --profile hybrid-performance-v1
```
列出内存中加载的公钥:
```
cargo run -- keys list
```
## CLI 与 API
CLI 主要是本地 Vectis 服务的 HTTP 客户端。
示例:
```
vectis version
vectis health ready
vectis apikey create
vectis keys create --tag payments --profile hybrid-high-assurance-v1
vectis keys list
vectis pub
vectis fpe encrypt --file fpe-encrypt.json
vectis token encode --file token-encode.json
vectis mac create --file mac-create.json
vectis mac verify --file mac-verify.json
vectis message send --file send-message.json
vectis message decrypt --file encrypted-message.json
vectis config sign
vectis config reload
```
完整的 API 文档请参见 [doc/API.md](doc/API.md)。
## 配置
运行时路由、远程对端、API-key 权限、FPE profile、token 化 profile 和 MAC profile 都位于一个**已签名的配置文件**(`config.json`,默认路径为 `VECTIS_CONFIG_PATH`)中,包含 `version`、`routes`、`remote_routes`、`permissions`、可选的 `fpe_profiles`、可选的 `tokenization_profiles` 以及可选的 `mac_profiles` 部分。盲索引复用 `mac_profiles`;没有单独的 `index_profiles` 部分。编辑它,然后使用 `vectis config sign` 进行签名。完整的 schema(每个字段、允许的值以及可选的对端 `public_keys`)记录在 [doc/API.md](doc/API.md) 的 **Configuration File (`config.json`)** 部分。
Vectis 会首先从进程环境变量读取进程/环境设置,其次是 `.env`,最后是内置的默认值。
所有 Vectis 专用的变量都使用 `VECTIS_` 前缀。
运行本地实例所需的基本要素:
- `VECTIS_HTTP_BIND_ADDR`:监听地址,默认 `127.0.0.1:3000`;
- `VECTIS_MODE`:`dev`(HTTP)或 `prod`(HTTPS,需要 TLS 证书和密钥);
- `VECTIS_INIT_KEYS_FILE`:加密的初始密钥材料,默认 `init.json`;
- `VECTIS_UNSEAL_KEY_FILE`:解封密钥文件,默认 `.unseal_key`;
- `VECTIS_STORAGE`:默认为 `sqlite`,或用于共享存储的 `postgres`;
- `VECTIS_SQLITE_PATH`:SQLite 操作密钥存储,在开发构建中默认为 `src/db/data.db`;
- `VECTIS_POSTGRES_DSN`:当 `VECTIS_STORAGE=postgres` 时的 PostgreSQL DSN;
- `VECTIS_CONFIG_PATH`:已签名的配置文件,默认 `config.json`。
完整列表和预期值请参见 [doc/ENV.md](doc/ENV.md)。
## Crypto Profile
`POST /keys` 支持 crypto profile:
- `hybrid-performance-v1`;
- `hybrid-standard-v1`;
- `hybrid-high-assurance-v1`;
- `hybrid-long-term-v1`。
默认情况下,Vectis 使用仅限 profile 的策略:
```
VECTIS_DEFAULT_CRYPTO_PROFILE=hybrid-performance-v1
VECTIS_CRYPTO_POLICY=profile-only
```
在开发和测试中,可以通过以下方式启用单个算法的覆盖:
```
VECTIS_CRYPTO_POLICY=allow-overrides
```
## FPE、Token 化、MAC 和盲索引
FPE、token 化、MAC 和盲索引均由 profile 驱动。Profile 仅从已签名的配置中加载,并且请求通过名称选择 profile。盲索引复用 MAC profile 并持久化生成的确定性摘要。
FPE 目前支持:
```
fpe-ff1-2025
```
Token 化目前支持:
```
token-random-v1
```
MAC 目前支持使用操作密钥哈希算法的 HMAC,或者当操作密钥使用相应的 SHA-3 哈希大小时,支持 `KMAC-224`、`KMAC-256`、`KMAC-384` 和 `KMAC-512`。MAC profile 的 `context` 值使用结构化标签,例如 `tenant=mx;field=pan;purpose=blind-index;version=1`。
CLI 可以在本地编辑这些 profile 部分:
```
vectis config fpe add --name patient-id-decimal-v1 --kid --alphabet 0123456789 --min-len 6 --max-len 32 --tweak-aad 'tenant=acme;field=patient_id;version=1'
vectis config token add --name patient-id-token-v1 --kid --token-prefix tok_patient --token-len 32 --max-plaintext-len 1024
vectis config mac add --name pan-blind-index-v1 --kid --context 'tenant=mx;field=pan;purpose=blind-index;version=1'
vectis config sign
vectis config reload
```
## 测试
完整的测试策略(包括 Rust 检查、使用 `uv` 的 Python HTTP 工作流、Schemathesis OpenAPI 模糊测试以及原生的 `cargo-fuzz` 目标)请参见 [doc/Test.md](doc/Test.md)。
## 文档
- [doc/API.md](doc/API.md):HTTP API 和 CLI 映射。
- [doc/CLI.md](doc/CLI.md):CLI 行为、命令、输出和环境。
- [doc/ENV.md](doc/ENV.md):环境变量和预期值。
- [doc/Test.md](doc/Test.md):测试策略和测试命令。
- [doc/Clustering.md](doc/Clustering.md):多节点行为和共享存储模型。
- [doc/HA_DR.md](doc/HA_DR.md):高可用性、备份、还原和恢复限制。
- [doc/openapi.yaml](doc/openapi.yaml):OpenAPI 规范。
- [doc/ThreatModel.md](doc/ThreatModel.md):威胁模型、显式假设和局限性。
- [doc/Reference.md](doc/Reference.md):架构和设计参考。
- [doc/Internal.md](doc/Internal.md):实现流程和内部不变式。
- [doc/Design.md](doc/Design.md):从该项目中提炼出的可重用设计原则。
- [demo/message/README.md](demo/message/README.md):临床数据交换演示。
- [demo/local/README.md](demo/local/README.md):本地 FPE、token 化、MAC、盲索引、内部消息和签名演示。
- [charts/vectis/README.md](charts/vectis/README.md):Kubernetes Helm chart。
## Vectis 不包含什么
Vectis 不能替代:
- TLS;
- KMS;
- HSM;
- 密钥管理器;
- 数据库加密;
- 访问控制;
- 传统的 DLP 产品。
Vectis 目前不提供脱敏、Merkle 证明、防篡改审计链、SLH-DSA、Vault/KMS/HSM 自动解封或 mTLS。
Vectis 旨在通过探索针对敏感数据工作流的密码学保护来补充现有的安全控制措施。它应该与其他工具协同工作,而不是承担它们的责任。
## 安全状态
Vectis 目前- 是实验性的;
- 不完整;
- 未经审计;
- 尚未达到生产就绪状态;
- 可能会发生重大设计变更。
请勿将 Vectis 用于真实的患者数据、生产密钥、财务记录或任何其他真实的敏感数据。
威胁模型、显式假设和已知局限性记录在 [doc/ThreatModel.md](doc/ThreatModel.md) 中。
## 许可证
基于 Apache License, Version 2.0 授权
标签:加密工具, 可视化界面, 密码学, 手动系统调用, 测试用例, 网络安全, 自定义请求头, 逆向工具, 通知系统, 隐私保护