DANIEL45690/Blackstone
GitHub: DANIEL45690/Blackstone
一个用纯 C 编写的企业级加密库,专为银行和支付系统设计,提供 AEAD 加密、会话管理、交易签名和安全密钥轮换等一站式密码学能力。
Stars: 1 | Forks: 0
# BLACKSTONE
## 企业级加密模块 v3.0
[](https://en.wikipedia.org/wiki/C_(programming_language))
[](https://en.wikipedia.org/wiki/Galois/Counter_Mode)
[](https://microsoft.com)
[](https://kernel.org)
[](LICENSE)
[]()
[](https://csrc.nist.gov/projects/cryptographic-module-validation-program)
[](https://pcisecuritystandards.org)
## ✨ 功能
### 核心密码学
- ✅ **AES-256-GCM** - 带有关联数据的认证加密
- ✅ **ChaCha20-Poly1305** - 高性能流密码
- ✅ **SHA-256/512** - 安全哈希算法
- ✅ **HMAC-SHA256** - 密钥哈希消息认证
- ✅ **PBKDF2** - 基于密码的密钥派生 (100,000 次迭代)
- ✅ **HKDF** - 基于 HMAC 的密钥派生函数
### 安全功能
- 🔐 **自动密钥轮换** - 基于 SHA-256 的派生
- ⏱️ **会话过期** - 带有时间戳验证的生存时间
- 🛡️ **时序攻击防护** - 恒定时间比较 + 随机延迟
- 🧹 **安全内存擦除** - 防止易失性指针覆盖
- 🔄 **线程安全** - 用于并发操作的关键部分
- 📊 **熵池** - 带有系统熵源的混合 RNG
### 企业功能
- 📦 **安全信封** - 带有元数据的加密数据容器
- 💰 **事务签名** - 用于金融操作的加密签名
- 📈 **分析** - 使用统计和性能监控
- 📝 **审计日志** - 具有文件输出的可配置日志级别
- 🔑 **密钥版本控制** - 支持多达 8 次密钥轮换
- 👥 **会话管理** - 多达 32 个并发会话
## 🏗️ 架构
应用层
API 层 (bank_* 函数)
会话管理器 │ 密钥管理器 │ 信封处理器
加密核心
随机数生成器 (熵池 + 系统 RNG)
平台抽象层 (Windows/Linux/Unix)
### 数据流
1. **初始化** → 主密钥派生 (PBKDF2) → RNG 播种
2. **会话创建** → 唯一 ID 生成 → 密钥派生 → TTL 分配
3. **加密** → IV 生成 → AEAD 加密 → Tag 计算
4. **解密** → Tag 验证 → 认证解密
5. **会话清理** → 安全密钥擦除 → 内存清零
## 📚 API 参考
### 初始化
| 函数 | 描述 | 返回值 |
|----------|-------------|--------|
| `bank_init_master_random()` | 使用密码学随机主密钥进行初始化 | 成功返回 1 |
| `bank_init_master(key, salt)` | 使用用户提供的 32 字节主密钥和 16 字节盐值进行初始化 | 成功返回 1 |
| `bank_rotate_master_key()` | 使用 SHA-256 派生轮换主密钥,保留现有会话 | 成功返回 1 |
| `bank_wipe_master()` | 安全擦除所有密码材料,包括主密钥和会话 | 成功返回 1 |
| `bank_self_test()` | 运行全面的自检验证 (AES, SHA, RNG) | 全部测试通过返回 1 |
| `bank_is_initialized()` | 检查库是否已正确初始化 | 已初始化返回 1 |
| `bank_get_library_uptime()` | 获取自初始化以来的运行时间(秒) | 运行时间(秒) |
### 会话管理
| 函数 | 描述 | 参数 |
|----------|-------------|------------|
| `bank_create_session(key_id, len, ttl)` | 创建具有唯一 ID 和 TTL(秒)的新会话 | `key_id`: 会话标识符, `len`: 密钥长度 (32 或 64), `ttl`: 生存时间 |
| `bank_destroy_session(session_id)` | 销毁会话并安全擦除所有关联的密钥 | `session_id`: 要销毁的会话 |
| `bank_get_session_key(sid, sess_key, hmac_key)` | 检索会话密钥以进行手动操作 | `sid`: 会话 ID,输出缓冲区 |
| `bank_get_stats(enc, dec, created, destroyed, active)` | 获取加密/解密统计数据 | 所有输出参数均为可选 |
### 加密
| 函数 | 描述 | 算法 |
|----------|-------------|-----------|
| `bank_encrypt_data(plain, len, aad, aad_len, sid, cipher, out_len, iv, tag)` | 带有 AAD 的认证加密 | AES-256-GCM |
| `bank_decrypt_data(cipher, len, aad, aad_len, sid, iv, tag, plain, out_len)` | 带有验证的认证解密 | AES-256-GCM |
| `bank_encrypt_chacha20_poly1305(key, nonce, aad, aad_len, plain, len, cipher, tag)` | 高性能流密码加密 | ChaCha20-Poly1305 |
**AAD (Additional Authenticated Data)** : 经过认证但未加密的元数据(例如,头部、时间戳)
### 签名
| 函数 | 描述 | 输出大小 |
|----------|-------------|-------------|
| `bank_sign_data(session_id, data, len, signature)` | 创建 HMAC-SHA256 签名 | 32 字节 |
| `bank_verify_signature(session_id, data, len, signature)` | 验证 HMAC 签名 | 布尔值 (1/0) |
| `bank_hmac_sha256(key, key_len, data, data_len, mac)` | 直接 HMAC 计算 | 32 字节 |
### 事务
```
typedef struct {
uint64_t timestamp;
char transaction_id[64];
char from_account[32];
char to_account[32];
uint64_t amount;
char currency[4]; // "USD", "EUR", "GBP", "BTC"
uint8_t signature[32];
} bank_transaction_t;
```
## ⚡ 快速安装
### Windows (MSVC/MinGW)
```
git clone https://github.com/yourusername/blackstone.git
cd blackstone
# MSVC
cl main.cpp /O2 /Fe:blackstone.exe
# MinGW
gcc main.cpp -O2 -o blackstone.exe
```
## 💻 基础代码示例
### 完整可用示例
```
#include 标签:AES-256-GCM, ChaCha20-Poly1305, CVE, FIPS 140-3, HTTP工具, meg, PCI-DSS, ProjectDiscovery, TLS抓取, 企业级安全, 信息安全, 加密库, 加密引擎, 加密算法, 哈希函数, 安全模块, 密码学, 密钥派生, 手动系统调用, 数字签名, 数据保护, 数据加密, 网络安全, 软件安全, 金融科技, 银行交易安全, 防御性安全, 防御绕过, 隐私保护