lasder-ca/lvau
GitHub: latteworkspace/lvau
Lvau 是一个基于 Rust 的安全默认本地文件加密工具包,通过现代加密原语和带版本控制的封装格式保护静态文件内容。
Stars: 0 | Forks: 0
# Lvau
Lvau 是一个基于 Rust 的本地文件加密工具包。它使用标准的加密原语、安全的默认设置,以及无需解密 payload 即可检查的带版本控制的 `.lvau` 封装格式。
English | [日语](README_ja.md)
[](https://github.com/lasder-ca/lvau/actions/workflows/ci.yml)
[](LICENSE)
## 快速演示
```
lvau-cli encrypt --in-file secret.txt --out-file secret.txt.lvau --password
lvau-cli inspect --in-file secret.txt.lvau
lvau-cli decrypt --in-file secret.txt.lvau --out-file secret.restored.txt --password
```
对于自动化脚本和测试,请使用本地密码文件,而不是将密码直接放在 shell 历史记录中:
```
lvau-cli encrypt --in-file secret.txt --out-file secret.txt.lvau --password-file password.txt
```
## 功能特性
- 默认密码加密路径使用 XChaCha20-Poly1305 AEAD。
- Argon2id 密码 KDF,支持 `fast`、`balanced`、`archive`、`paranoid` 和 `extreme` 配置。
- HKDF-SHA256 密钥分离。
- 带版本控制的 `.lvau` 封装,包含 magic bytes、版本号、公共 KDF 元数据、nonces、已验证的 header 哈希和明文长度。
- 通过 Rayon 进行并行的 1 MiB chunk 加密。
- CLI 中提供隐藏的密码提示,此外还提供用于非交互式自动化的 `--password-file`。
- 除非提供 `--force` 参数,否则拒绝覆盖输出文件。
- 通过 `egui` 提供原生 GUI。
## 实验性功能
这些功能可用,但在 v0.2.1 版本中应被视为实验性功能:
- 使用 X25519 + ML-KEM-768 的混合密钥对加密。
- 级联配置(`paranoid`、`extreme`)。
- `extreme` 使用的 LCO 层。LCO 是一个混淆层,而不是加密安全边界。
- Windows 自解压档案(`--sfx`)。
## 安装
### 发布二进制文件
从 [GitHub Releases](https://github.com/lasder-ca/lvau/releases) 下载压缩包。
| 平台 | 文件 |
| --- | --- |
| Linux x86_64 | `lvau-x86_64-unknown-linux-gnu.tar.gz` |
| Windows x86_64 | `lvau-x86_64-pc-windows-msvc.zip` |
| macOS x86_64 | `lvau-x86_64-apple-darwin.tar.gz` |
| macOS aarch64 | `lvau-aarch64-apple-darwin.tar.gz` |
每个压缩包都包含 `lvau-cli`、`lvau-gui`、`lvau-stub`、`README.md` 和 `LICENSE`(在 Windows 上带有 `.exe` 后缀)。请使用发布版本的 `checksums.txt` 来验证下载的文件。
### 从源码构建
```
git clone https://github.com/lasder-ca/lvau.git
cd lvau
cargo build --workspace --release
```
二进制文件将被写入 `target/release/`。
## CLI 使用说明
```
lvau-cli [OPTIONS]
Commands:
encrypt Encrypt a file
decrypt Decrypt a file
inspect Inspect public envelope metadata
keygen Generate an experimental hybrid keypair
verify Verify file integrity without writing plaintext to disk
self-test Run built-in integration tests
doctor Print environment diagnostics
```
使用密码加密:
```
lvau-cli encrypt --in-file document.pdf --out-file document.pdf.lvau --password
```
使用密码解密:
```
lvau-cli decrypt --in-file document.pdf.lvau --out-file document.pdf --password
```
不解密进行检查:
```
lvau-cli inspect --in-file document.pdf.lvau
```
在不解密到磁盘的情况下验证完整性:
```
lvau-cli verify --in-file document.pdf.lvau --password
```
选择一个配置:
```
lvau-cli encrypt --in-file data.bin --out-file data.bin.lvau --password --profile archive
```
| 配置 | Argon2id 内存 | 预期用途 |
| --- | ---: | --- |
| `fast` | 16 MiB | 测试和快速的本地操作 |
| `balanced` | 64 MiB | 默认的常规使用 |
| `archive` | 256 MiB | 较慢的存档加密 |
| `paranoid` | 1 GiB | 实验性级联配置 |
| `extreme` | 1 GiB | 实验性级联加上 LCO 混淆 |
生成并使用实验性的混合密钥对:
```
lvau-cli keygen --out-base my-identity
lvau-cli encrypt --in-file input.txt --out-file output.lvau --pub-key my-identity.lvau-pub
lvau-cli decrypt --in-file output.lvau --out-file input.restored.txt --priv-key my-identity.lvau-key
```
使用 `--force` 替换现有的输出文件。如果不加 `--force`,Lvau 将拒绝覆盖。
## GUI
`lvau-gui` 提供了文件选择、密码或密钥对模式、配置选择、状态输出和日志记录。它适用于本地的手动工作流程,但 CLI 的可靠性是我们的主要关注点。
```
cargo run --release --package lvau-gui
```
## 安全模型
Lvau 专为静态状态下的本地文件加密而设计。当攻击者获取了加密的 `.lvau` 文件,但不知道密码或不持有私钥时,它可以保护文件内容。
Lvau 不会隐藏文件名、确切的文件系统元数据或大致的明文大小。它不能防范恶意软件、键盘记录器、被破坏的操作系统、弱密码或被盗的私钥。
Lvau 尚未经过正式审计。对于敏感的生产环境使用,也请评估 age、VeraCrypt、Cryptomator 或 rclone crypt 等成熟工具。
在依赖 Lvau 之前,请阅读 [docs/THREAT_MODEL.md](docs/THREAT_MODEL.md)。
## 文件格式
Lvau 采用流式架构以支持大文件。`.lvau` 文件由以下部分组成:
- 4 字节的封装长度前缀(小端序)
- postcard 序列化的封装(magic bytes、版本号、元数据、nonces、已验证的 AAD 哈希、明文总长度)
- 加密的密文 chunk(默认大小为 1 MiB)
`.lvau` 格式在 v1.0 之前并不稳定。请参见 [docs/FORMAT.md](docs/FORMAT.md)。
## 架构
| Crate | 用途 |
| --- | --- |
| `lvau-protocol` | 封装类型和序列化 |
| `lvau-core` | 加密引擎、KDF、密钥管理、文件操作 |
| `lvau-cli` | 命令行界面 |
| `lvau-gui` | 原生 GUI |
| `lvau-stub` | 实验性的 SFX 解压根程序 |
## 对比
Lvau 不声称比 age、VeraCrypt、Cryptomator 或 rclone crypt 更好或更安全。Lvau 专注于 Rust 实现、本地文件工作流、可检查的封装元数据以及 CLI 优先的体验。
## 开发
```
cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-features
cargo build --workspace --release
```
请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 安全报告
请勿将敏感的安全漏洞作为公开的 GitHub issue 进行报告。请参见 [SECURITY.md](SECURITY.md)。
## 许可证
MIT。请参见 [LICENSE](LICENSE)。
标签:Argon2id, GUI, Rust, XChaCha20-Poly1305, 可视化界面, 密码学工具, 文件加密, 网络流量审计, 通知系统