toxicbishop/Crypt-Vault

GitHub: toxicbishop/Crypt-Vault

一款零依赖的 AES-256 文件加密工具,结合自建区块链审计链与 P2P 网络,提供防篡改的操作追踪与多用户合规审计能力。

Stars: 3 | Forks: 0

# CryptVault — 安全加密文件共享系统 [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4953c73e87155647.svg)](https://github.com/toxicbishop/Crypt-Vault/actions/workflows/build.yml) ![C++](https://img.shields.io/badge/C%2B%2B-00599C?logo=c%2B%2B&logoColor=white) ![C](https://img.shields.io/badge/C-00599C?logo=c&logoColor=white) ![ASM x86](https://img.shields.io/badge/ASM_x86-1E1E1E) ![License: GPL 3.0](https://img.shields.io/badge/License-GPL%203.0-blue.svg) ![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux-lightgrey.svg) 一款混合了 **C++ + x64 汇编** 的加密工具,具备**由区块链支撑的防篡改审计追踪**和 **P2P 多用户网络**。完全从零构建,零外部依赖。 ![CryptVault CLI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/264bb6e100155655.png) ## 为什么选择 CryptVault? | | VeraCrypt | GPG | 7-Zip | **CryptVault** | | ---------------------- | --------- | --- | ----- | -------------- | | AES-256 加密 | ✅ | ✅ | ✅ | ✅ | | 硬件 ASM (AES-NI) | ❌ | ❌ | ❌ | ✅ | | CPUID 自动检测 | ❌ | ❌ | ❌ | ✅ | | 区块链审计追踪 | ❌ | ❌ | ❌ | ✅ | | HMAC 篡改检测 | ❌ | ❌ | ❌ | ✅ | | P2P 多用户网络 | ❌ | ❌ | ❌ | ✅ | | 零依赖 | ❌ | ❌ | ✅ | ✅ | | 完整的 CLI 脚本支持 | ❌ | ✅ | ✅ | ✅ | ## 团队 | Name | USN | Role | | ------------ | ---------- | --------------------------------------------------------------------------------------- | | **Pranav** | 1KG23CB038 | 密码学工程师 — AES-256-CBC 引擎,PKCS7 填充,x64 ASM AES 块操作 | | **Rohith R** | 1KG23CB044 | 项目负责人及架构师 — 系统结构,类层次结构,应用流程 | | **Syed** | 1KG23CB052 | 安全与密钥管理 — SHA-256,PBKDF2,HMAC,x64 ASM secure_memzero | | **Supreeth** | 1KG23CB051 | 工具与测试 — 批处理,文件操作,SHA-256 哈希 | ## 功能 ### 加密引擎 - **AES-256-CBC** — 工业标准的 256 位对称加密 - **x64 汇编路径** — 在可用时使用 Intel AES-NI 硬件指令 - **CPUID 自动检测** — 在不支持的硬件上自动回退到 C++ - **PBKDF2-SHA256** — 包含随机盐的 100,000 次迭代(抗暴力破解) - **HMAC-SHA256** — 先加密后认证模式可在解密前检测篡改 - **随机 IV + Salt** — 每次加密都会产生唯一的密文 ### 安全性 - **安全密码输入** — 掩码输入防止偷窥 - **密码确认** — 二次输入防止因拼写错误导致的灾难 - **常数时间 HMAC 比较** — 防止时序攻击 - **安全内存擦除** — 使用后密钥将从内存中清零 (ASM) ### 文件操作 - **文件加密/解密** — 支持任何文件类型:文本、图像、二进制文件 - **文本加密** — 快速内联加密/解密并输出十六进制 - **批处理** — 一次加密或解密多个文件 - **SHA-256 文件哈希** — 验证文件完整性 ### 区块链审计追踪 - **防篡改操作日志** — 每次加密/解密/删除都会记录在链上 - **SHA-256 哈希链接** — 修改任何块都会使后续所有块失效 - **工作量证明挖矿** — 使事后篡改在计算上代价极高 - **数字签名** — 每个块都使用节点的私钥进行签名 - **HTML 报告导出** — 生成合规性审计报告(HIPAA、法律、金融) ### P2P 多用户网络 - **跨平台** — 同一代码库支持 Windows (winsock2) 和 Linux (POSIX sockets) - **最长链共识** — 与 Bitcoin 相同的规则:最长有效链获胜 - **区块广播** — 新区块自动广播到所有已连接的节点 - **自动链同步** — 新节点在连接时同步最新链 - **节点发现** — 简单的 `peers.txt` 配置 ## 构建 ### Windows ``` g++ -std=c++17 -O2 -o crypt-vault.exe \ src/Crypt-Vault.cpp src/blockchain_audit.cpp src/p2p_node.cpp src/eth_logger.cpp -lws2_32 -lssl -lcrypto ``` ### Linux ``` g++ -std=c++17 -O2 -o crypt-vault \ src/Crypt-Vault.cpp src/blockchain_audit.cpp src/p2p_node.cpp src/eth_logger.cpp -lpthread -lssl -lcrypto ``` ### 平台支持 | Platform | Status | Notes | | -------- | ----------- | ------------------------- | | Windows | ✅ 完整支持 | 原生 winsock2 | | Linux | ✅ 完整支持 | POSIX sockets + pthreads | | macOS | ⚠️ 未测试 | 理论上可行,但未经验证 | ### 依赖项 - **Windows**: `ws2_32.lib` (Windows 自带) 和 **OpenSSL** (通过 MSYS2 或 vcpkg 安装) - **Linux**: `pthread` (Linux 自带) 和 **OpenSSL** (`sudo apt install libssl-dev`) - 注意:安全的 P2P TLS 以及与 Ethereum RPC 通信需要 OpenSSL。 ## 使用方法 ``` ./crypt-vault # Linux .\crypt-vault.exe # Windows ``` ### 菜单 | # | 功能 | | --- | ---------------------------- | | 1 | 🔒 加密文件 | | 2 | 🔓 解密文件 | | 3 | 🔤 加密文本 (快速) | | 4 | 🔤 解密文本 (快速) | | 5 | 📂 批量加密文件 | | 6 | 📂 批量解密文件 | | 7 | 👁️ 查看文件内容 | | 8 | 📈 文件统计信息 | | 9 | #️⃣ SHA-256 文件哈希 | | 10 | ⛓️ 查看区块链审计日志 | | 11 | 🔍 验证链完整性 | | 12 | 📡 P2P 网络状态 | | 13 | 📚 关于 | | 14 | 🚪 退出 | ## 加密工作原理 1. 输入**密码**(用 `*` 掩码显示)并确认 2. 生成**随机 16 字节 salt** 3. **PBKDF2-SHA256** 派生出 64 字节密钥(100,000 次迭代) - 前 32 字节 → AES-256 加密密钥 - 后 32 字节 → HMAC 认证密钥 4. 生成**随机 16 字节 IV** 5. 数据进行 **PKCS7 填充**并使用 **AES-256-CBC** 加密 6. 对 `salt + IV + ciphertext` 计算 **HMAC-SHA256** 7. 输出:`[salt][IV][ciphertext][HMAC]` 并保存为 `.enc` ## 区块链工作原理 每次操作(加密、解密、删除、密钥交换)都会创建一个新区块: ``` Block #N ├── index ├── timestamp ├── operation (ENCRYPT / DECRYPT / DELETE / KEY_EXCHANGE) ├── filename ├── file SHA-256 hash ├── HMAC verified? ├── signer public key ├── digital signature ├── previous block hash ← links to Block #N-1 └── block hash ← SHA-256 of all above ``` 更改任何区块中的任何字段都会破坏其后所有的哈希值 —— **立即检测到篡改**。 ## Ethereum 审计日志记录器 CryptVault 可以通过智能合约将其本地区块链哈希永久锚定到 Ethereum Mainnet(或 Sepolia Testnet)。这为审计日志在特定时间的存在提供了数学上无可辩驳的证明。 要启用 Ethereum 日志记录器,请设置以下环境变量: - `CRYPTVAULT_ETH_RPC`: 你的 Infura 或 Alchemy RPC URL(例如,`https://sepolia.infura.io/v3/YOUR-PROJECT-ID`) - `CRYPTVAULT_ETH_KEY`: 你的 Ethereum 钱包的 64 字符十六进制私钥(不带 `0x` 前缀) - `CRYPTVAULT_ETH_CONTRACT`: 40 字符十六进制合约地址(不带 `0x` 前缀) 如果存在这些变量,CryptVault 将每 10 个区块自动发送一笔交易,将最新的区块哈希锚定到区块链上。要禁用 Ethereum 日志记录,只需移除这些变量。 ## P2P 多用户设置 ### 1. 在你的可执行文件旁边创建 `peers.txt` ``` # peers.txt — 每行一个 IP:PORT,# 用于注释 192.168.1.10:8333 # Team Member 1 (Windows) 192.168.1.11:8333 # Team Member 2 (Windows) 192.168.1.12:8333 # Team Member 3 (Linux) 192.168.1.13:8333 # Team Member 4 (Linux) ``` ### 2. 在每台机器上运行 ``` .\crypt-vault.exe # Each team member runs their own node ``` ### 3. 自动执行的操作 - 每个节点在首次运行时都会获得一个唯一身份 (`identity.key`) - 节点连接到对等方,同步最新的链 - 每次加密操作都会被签名并广播给所有对等方 - 所有节点独立验证每个区块 - 篡改一个节点的链 —— 其他三个节点将拒绝它 ### 本地主机测试(同一台机器,两个终端) ``` # Terminal 1 ./test_p2p node_a 8333 # Terminal 2 ./test_p2p node_b 8334 ``` ## 安全说明 - **AES-256** 有 2²⁵⁶ 种可能的密钥 —— 在计算上是不可能被暴力破解的 - **PBKDF2(10 万次迭代)** 使密码猜测极其缓慢 - **HMAC 验证**在解密之前进行 —— 被篡改的文件会被立即拒绝 - **常数时间比较**可防止针对 HMAC 验证的时序攻击 - **CBC 模式**确保相同的明文块产生不同的密文 - **随机 salt + IV** 意味着同一个文件加密两次会产生完全不同的输出 - **安全性取决于密码强度** —— 请使用长而复杂的密码短语 ## 领域 **网络安全 / 信息安全** — 应用密码学与安全通信 ## 许可证 [GPL-3.0](LICENSE)
标签:AES-256, C++, P2P网络, 加密工具, 区块链审计, 安全测试工具, 数据擦除, 漏洞评估