Zayan-Mohamed/vaultix

GitHub: Zayan-Mohamed/vaultix

一个使用 AES-256-GCM 与 Argon2id 的跨平台本地加密工具,专为保护离线敏感文件而设计。

Stars: 0 | Forks: 0

# vaultix

Release Go Version License Platform Encryption Build Status

用于管理密码保护加密文件夹的跨平台命令行工具

功能安装快速开始文档安全性贡献

## 📖 概述 vaultix 是一个安全、轻量的命令行工具,使用军用级加密技术就地加密文件。不依赖云端、服务或复杂架构——只为你的敏感文件提供强大的加密保护。 ### 主要亮点 - 🔒 **强加密**:使用 Argon2id 密钥派生的 AES-256-GCM - 🚀 **零依赖**:单一静态二进制文件,无需运行时依赖 - 💻 **跨平台**:支持 Linux、macOS 和 Windows - 🎯 **简洁体验**:智能默认值的直观命令 - 🔐 **不存储密码**:密码仅在内存中存在 - 📦 **可移植**:加密保险库可在所有平台使用 ## ✨ 功能 ✅ **自动加密** - 初始化保险库后,所有文件会立即加密 ✅ **主密钥加密** - 随机 256 位主密钥保护所有保险库数据 ✅ **恢复密钥支持** - 忘记密码时可用恢复密钥解锁 ✅ **双重解锁方式** - 使用密码或恢复密钥解锁 ✅ **模糊文件匹配** - 无需输入精确文件名 ✅ **默认当前目录** - 减少输入,专注于操作 ✅ **提取或移除** - 可提取文件并保留在保险库,或移出保险库 ✅ **安全删除** - 原始文件在删除前会被覆写 ✅ **隐藏元数据** - 即使是文件名也会被加密 ✅ **无后台进程** - 仅在调用时运行 ## 安全模型 ### 密码学 vaultix 使用 **主密钥加密模型**,采用行业标准的加密原语: - **主密钥**:每个保险库生成的随机 256 位密钥(加密后永不以明文存储) - **密码保护**:主密钥使用 Argon2id 派生的密钥加密(64MB 内存,1 次迭代,4 个线程) - **恢复密钥**:可解密主密钥的随机 256 位密钥(备用解锁方式) - **数据加密**:所有保险库数据使用 AES-256-GCM 认证加密 - **随机性**:使用 Go 的 `crypto/rand` 包生成所有加密随机数 ### 威胁模型 vaultix 防护: - 存储介质上的未授权访问(假设密码足够强) - 文件内容的意外暴露 - 对加密数据的随意检查 vaultix **不防护**: - 弱密码(请使用强且唯一的密码) - 系统上的恶意软件或键盘记录器 - 电脑物理访问时处于解锁状态 - 底层操作系统攻击 - 侧信道攻击或内存分析 - 胁迫或法律强制 ### 重要限制 - **双重认证必需**:请同时妥善保管密码和恢复密钥 - **无密码重置**:若同时丢失密码和恢复密钥,数据将永久丢失 - **恢复密钥关键**:请安全存储(如打印、保存到密码管理器) - **无自动备份**:请自行负责备份保险库 - **单用户设计**:不支持多用户或共享 - **仅文件**:无法加密目录(需单独添加文件) ## 📦 安装 ### 下载预编译二进制文件(推荐) 下载适用于你平台的最新发行版: **Linux:** ``` curl -LO https://github.com/Zayan-Mohamed/vaultix/releases/latest/download/vaultix-linux-amd64 chmod +x vaultix-linux-amd64 sudo mv vaultix-linux-amd64 /usr/local/bin/vaultix ``` **macOS:** ``` curl -LO https://github.com/Zayan-Mohamed/vaultix/releases/latest/download/vaultix-darwin-amd64 chmod +x vaultix-darwin-amd64 sudo mv vaultix-darwin-amd64 /usr/local/bin/vaultix ``` **Windows(PowerShell 以管理员身份运行):** ``` Invoke-WebRequest -Uri "https://github.com/Zayan-Mohamed/vaultix/releases/latest/download/vaultix-windows-amd64.exe" -OutFile "vaultix.exe" Move-Item vaultix.exe C:\Windows\System32\ ``` ### 从源码构建 需要 Go 1.21 或更高版本: ``` git clone https://github.com/Zayan-Mohamed/vaultix.git cd vaultix go build -o vaultix ``` 然后将二进制文件移动到你的 PATH: **Linux/macOS:** ``` sudo mv vaultix /usr/local/bin/ ``` **Windows:** ``` Move-Item vaultix.exe C:\Windows\System32\ ``` ## 🚀 快速开始 ``` cd ~/my_secrets # 初始化 vault(自动加密所有文件) vaultix init # 输入密码:**** # 确认密码:**** # ✓ Vault 已初始化 # ✓ 所有文件已加密 # ✓ 原始文件已安全删除 # # ⚠️ 重要:恢复密钥 # 您的恢复密钥:5025f74e-c5d7a54a-7b99c87b-78cca1a0-... # 请将恢复密钥保存在安全位置! # 如果忘记密码,它可用于解锁您的 vault。 # 列出加密文件 vaultix list # vault 中的文件(3 个): # passwords.txt # api_keys.json # private_key.pem # 提取文件(保留在 vault 中) vaultix extract passwords # ✓ 文件已提取:passwords.txt # 丢弃文件(提取并从 vault 中移除) vaultix drop api_keys # ✓ 已丢弃:api_keys.json(已提取并从 vault 中移除) # 提取所有文件 vaultix extract # ✓ 已提取 3 个文件 ``` ## 📚 用法 ### 命令 | 命令 | 描述 | 示例 | | --- | --- | --- | | `init [path]` | 初始化保险库并加密所有文件 | `vaultix init` | | `add ` | 添加文件到保险库 | `vaultix add secret.txt` | | `list [path]` | 列出加密文件 | `vaultix list` | | `extract [file]` | 提取文件(保留在保险库) | `vaultix extract` | | `drop ` | 提取并从保险库移除 | `vaultix drop secret` | | `remove ` | 从保险库移除文件(不提取) | `vaultix remove old.txt` | | `clear [path]` | 从保险库移除所有文件 | `vaultix clear` | | `recover [file]` | 使用恢复密钥解锁保险库 | `vaultix recover` | ### 高级用法 ``` # 模糊文件匹配(不区分大小写) vaultix extract SECRET # Matches "secret_document.pdf" vaultix extract api # Matches "api_keys.json" # 提取到指定目录 vaultix extract . /tmp/decrypted/ # 使用特定 vault 路径 vaultix list ~/other_vault vaultix extract document ~/other_vault ``` ## 🏗️ 工作原理 当你在路径(例如 `./my_secrets`)初始化保险库时,vaultix 会在其内部创建一个隐藏的 `.vaultix/` 目录: ``` my_secrets/ └── .vaultix/ ├── meta # Encrypted metadata (filenames, sizes, timestamps) ├── salt # Random salt for password-based key derivation ├── master.key # Master key encrypted with password-derived key ├── recovery.key # Master key encrypted with recovery key └── objects/ ├── 3f9a2c1d.enc # Encrypted file data └── 91bd77aa.enc # Encrypted file data ``` ### 安全细节 1. **主密钥加密**:随机 256 位主密钥加密所有保险库数据 2. **双重解锁方式**:主密钥可通过密码或恢复密钥解密 3. **不存储明文密钥**:主密钥永不以明文形式存储在磁盘 4. **不存储密码**:密码仅在操作期间存在于内存中 5. **加密元数据**:即使文件名也会被主密钥加密 6. **混淆对象名**:加密文件拥有随机 ID 7. **每个保险库独立 Salt**:每个保险库使用独立的随机 Salt 8. **认证机制**:AES-GCM 提供加密与完整性验证 ### 认证与解锁 密码/恢复密钥的正确性通过成功解密主密钥来验证。不存储密码哈希。这意味着: - 错误密码/恢复密钥 = 解密失败 - 无法在不尝试解密的情况下测试凭证 - 恢复密钥在密码遗忘时提供备用访问 - 若同时丢失密码和恢复密钥,数据将永久丢失 ## 💡 最佳实践 ### 密码与恢复密钥管理 **密码选择** - 使用强且唯一的密码: - ✅ 至少 16 个字符 - ✅ 包含字母、数字和符号 - ✅ 不在其他地方使用 - ✅ 不可轻易猜测 建议使用密码管理器生成并存储保险库密码。 **恢复密钥存储** - 恢复密钥在保险库初始化时仅显示一次: - ✅ 打印并保存在安全位置 - ✅ 保存为密码管理器中的安全笔记 - ✅ 存储在保险库之外的独立安全位置 - ⚠️ 切勿将恢复密钥存储在保险库内 - ⚠️ 若同时丢失密码和恢复密钥,数据将永久丢失 ### 备份策略 - 必须备份整个保险库目录(包括 `.vaultix/`) - 通过备份副本提取文件以测试备份 - 加密保险库可安全备份到云存储 - ⚠️ 丢失 `.vaultix/` = 永久数据丢失 ### 文件管理 - 使用 `add` 添加文件时,原始文件**不会**自动删除 - 如需删除原始文件,请使用安全删除工具 - 保持临时提取内容不在保险库目录内 - 不要将敏感文件提取到公共或共享目录 ### 操作安全 - 不要在可能被记录的地方输入密码 - 不要在未加密的远程连接中使用 vaultix - 完成保险库操作后关闭终端 - 考虑结合使用全磁盘加密 - 注意交换文件和休眠转储文件 ## 🌐 平台支持 vaultix 在 **Linux**、**macOS** 和 **Windows** 上表现一致。 ## 📖 文档 完整文档地址:**[https://zayan-mohamed.github.io/vault](https://zayan-mohamed.github.io/vaultix)** - 📘 [安装指南](https://zayan-mohamed.github.io/vaultix/installation/) - 🚀 [快速开始](https://zayan-mohamed.github.io/vaultix/quickstart/) - 📚 [命令参考](https://zayan-mohamed.github.io/vaultix/commands/) - 💡 [示例](https://zayan-mohamed.github.io/vaultix/examples/) - 🔐 [安全模型](https://zayan-mohamed.github.io/vaultix/security/) - 🏗️ [架构](https://zayan-mohamed.github.io/vaultix/architecture/) ## 🔧 开发 ### 从源码构建 ``` # 克隆仓库 git clone https://github.com/Zayan-Mohamed/vaultix.git cd vaultix # 构建 go build -o vaultix # 运行测试 go test ./... # 运行代码检查 go vet ./... ``` ### 项目架构 ``` vaultix/ ├── internal/ │ ├── crypto/ # Cryptographic operations (Argon2id, AES-GCM) │ ├── storage/ # File system operations │ ├── vault/ # Business logic layer │ └── cli/ # Command-line interface ├── docs/ # MkDocs documentation └── main.go # Entry point ``` ## 📄 许可证 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。 ## ⚠️ 免责声明 本软件按原样提供,不附带任何担保。尽管 vaultix 使用了经过验证的加密库并遵循安全最佳实践,但尚未经过正式安全审计。请自行承担使用风险。 **注意**:保险库的安全性完全取决于密码强度和操作安全实践。
![GitHub code size](https://img.shields.io/github/languages/code-size/Zayan-Mohamed/vaultix?style=flat-square&label=Code%20Size) ![GitHub go.mod version](https://img.shields.io/github/go-mod/go-version/Zayan-Mohamed/vaultix?style=flat-square&label=Go%20Version) ![Lines of code](https://img.shields.io/endpoint?url=https://ghloc.vercel.app/api/Zayan-Mohamed/vaultix/badge?filter=.go$&style=flat-square&label=Lines%20of%20Code) ![Total Files](https://img.shields.io/github/directory-file-count/Zayan-Mohamed/vaultix?style=flat-square&label=Total%20Files) ![GitHub repo size](https://img.shields.io/github/repo-size/Zayan-Mohamed/vaultix?style=flat-square&label=Repo%20Size) ![Last Commit](https://img.shields.io/github/last-commit/Zayan-Mohamed/vaultix?style=flat-square&label=Last%20Commit)

用心为注重安全的开发者打造

⭐ 如果你觉得它有用,请为这个项目点星!

标签:AES-256-GCM, Argon2id, CLI, EVTX分析, Go语言, HTTP 参数枚举, ProjectDiscovery, WiFi技术, 二进制发布, 便携加密, 内存密码, 加密工具, 单二进制文件, 大语言模型安全, 安全存储, 安全通信, 密钥安全, 密钥派生, 开源工具, 操作系统检测, 数据保护, 文件加密, 文件夹加密, 文件系统加密, 无密码存储, 日志审计, 机密管理, 磁盘加密, 离线加密, 程序破解, 端点保护, 零依赖, 静态编译