lasder-ca/lvau

GitHub: latteworkspace/lvau

Lvau 是一个基于 Rust 的安全默认本地文件加密工具包,通过现代加密原语和带版本控制的封装格式保护静态文件内容。

Stars: 0 | Forks: 0

# Lvau Lvau 是一个基于 Rust 的本地文件加密工具包。它使用标准的加密原语、安全的默认设置,以及无需解密 payload 即可检查的带版本控制的 `.lvau` 封装格式。 English | [日语](README_ja.md) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/lasder-ca/lvau/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](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, 可视化界面, 密码学工具, 文件加密, 网络流量审计, 通知系统