Files
7z-encrypt/README.md
T

79 lines
3.9 KiB
Markdown
Raw Normal View History

2026-08-10 16:06:38 +08:00
# 7z-encrypt
> 端到端加密文件传输 | 零知识 + 零合并 | 服务端无密钥不解密
**发行版下载 (deb 安装包, 依赖自动安装):** Gitee [Releases v1.3.0](https://gitee.com/edgevoid/7z-encrypt/releases) · Gitea [Releases v1.3.0](http://8.136.202.225:3000/edgevoid/7z-encrypt/releases)
自托管、零知识、零合并的私有文件网盘。服务器只存密文卷——看不到内容,也看不到文件名。
```
本地 服务器 (任何自有机器) 本地
文件 ──32MB 切卷──> ┌───────────────────────────┐ ──aria2 并发拉卷──> 密文卷
│ │ 只存密文卷, 零合并不拼接 │ │
├─ 逐卷 7z ─────>│ 不持密钥, 不解密 │ ├─ 逐卷解密 (context=vol:N)
├─ 逐卷加密 ────>│ 不存明文文件名 │ ├─ 7z 解压
└─ aria2 反向拉─>│ SQLite 元数据 + 目录管理 │ └─ 按序拼接还原
└───────────────────────────┘
```
## 核心设计
- **零知识**: 密钥永不出客户端。AES-256-GCMC2SP chunked 流式认证加密, 16KiB 分块)
- **零合并**: 服务端不存在解密/拼接代码路径, 密文卷原样落盘(怎么传的怎么放), 物理上无明文还原能力
- **卷级加密**: 32MB 统一切卷, 每卷 nonce 由 `context=7z-encrypt:v1:vol:N` 派生——加密参数零存储, 下载端按卷号重建
- **逐卷压缩**: 可压缩格式逐卷 7z mx=9; 已压缩格式(apk/zip/图片/视频黑名单)跳过二次压缩直传
- **aria2 全链路**: 上传走服务端反向拉取(客户端临时 HTTP 19000-19100+ pull-status 实时进度; 下载 8 并发 × 4 连接/卷
- **完整性**: 逐卷 SHA-256 校验 + complete 总哈希双校验
- **账户隔离**: 一个账户一个空间, 跨账户 403 硬拒绝
- **文件名加密**: 元数据文件名也加密(enc: URL-safe base64
## 安装
```bash
# deb 安装 (postinst 自动安装 aria2/p7zip/venv 依赖)
sudo dpkg -i 7z-encrypt-client_1.0.0_all.deb # 源码版 (手机/Termux)
sudo dpkg -i 7z-encrypt-client-bin_1.0.0_amd64.deb # Nuitka 编译版 (PC, 免 Python)
# 源码运行
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
```
命令: `sz-transfer` (CLI) / `sz-tui` (终端界面) / `sz-config` (配置) / `sz-backup` (一键备份)
**完整 CLI 使用文档: [docs/CLI.md](docs/CLI.md)** (上传/下载/备份/目录/账号/示例)
## 目录管理
```
sz-transfer --dir-create 相册备份 # 创建目录 (按用户隔离)
sz-transfer --dir-list # 列表 (含每目录文件数)
sz-transfer --dir-delete 1 # 删除目录
sz-transfer --init a.init.json --manifest a_manifest.json --dir 1 # 上传到指定目录
sz-transfer --move 1 2 # 移动文件到目录 (0=根)
sz-transfer --clone 1 2 # 克隆文件 (物理复制卷 + 新记录)
sz-transfer --list # 文件列表 (目录 + [目录名] 归属标记)
```
## 一键备份
```
sz-backup photos # 整个文件夹 = 一个文件: tar → 32MB 卷压缩 → 逐卷加密 → aria2 上传
sz-backup documents # 同上 (不分批, 全量单文件)
sz-backup restore photos # 下载 → 自动还原 → 解包
2026-08-10 19:11:33 +08:00
```
## 测试
```bash
.venv/bin/pytest -q # 71 tests
```
## 部署
- 服务端: [7z-encrypt-server](https://gitee.com/edgevoid/7z-encrypt-server)(独立仓库, 含 deb 双包 + 依赖自动安装)
- 终端界面: [7z-encrypt-tui](https://gitee.com/edgevoid/7z-encrypt-tui)
## 代价与适用场景
自持硬件可用性(无 SLA/异地容灾)、无 Web/移动 App(CLI + TUI)、密钥丢失不可恢复。适合对数据主权有硬性要求的场景: 备份、涉密归档、跨设备私有传输。