m524security/GUI-STEGNOGRAPHY
GitHub: m524security/GUI-STEGNOGRAPHY
一款基于 Flask 的 Web 应用,使用混合 AEAD 密码学加密文件并通过 LSB 隐写术将其隐藏在多媒体载体中。
Stars: 1 | Forks: 0
# 🔐 安全版 Secure StegoSuite v2 — 混合密码学 + 隐写术
一款 Web 应用,使用经过身份验证的混合密码学对文件进行**加密**,然后将加密后的 payload **隐藏**在一个看似普通的载体文件(图像、音频、视频或文本)中。v2 是对原版的安全强化重写。
## v2 中的新特性
此版本修复了 v1 中存在的实际安全问题,并使其密码学声明名副其实。完整的详细说明见 **[SECURITY_REVIEW.md](./SECURITY_REVIEW.md)**。
| 领域 | v1 | v2 |
|---|---|---|
| 密钥派生 | 单一 `sha512(pw+salt)` | **Argon2id**(内存密集型)+ 每个文件独立 salt |
| 加密 | 未经身份验证的 AES-CBC | **AEAD**(AES-256-GCM / ChaCha20-Poly1305) |
| `/download` | 路径遍历 | 验证 + `safe_join` + 边界检查 |
| Flask | `debug=True`, `0.0.0.0` | 关闭 debug,默认 localhost,由环境变量驱动 |
| "Kyber" 方法 | 并非真正的 Kyber | 如果安装了 `liboqs` 则使用**真正的 ML-KEM**,否则使用明确标注的 X25519 回退方案 |
| 错误处理 | 静默的虚假解密 | 明确的错误提示;decoy 为可选 |
| Container | 脆弱的 `::` 分割 | 带版本号、长度前缀的 AEAD 身份验证标头 |
| Stego 流 | 无完整性校验 | magic marker + CRC32 + 可选的密码种子散布 |
| CSRF / 标头 | 无 | 同源防护 + CSP 及安全标头 |
| 测试 | 无 | 26 个 pytest 测试用例(密码学、隐写术、端点) |
## 加密方法(诚实命名)
| UI 标识 | 实际对应的加密方式 |
|---|---|
| `aes_ecc` | 通过 **X25519 ECDH** 混合包装的 AES-256-GCM 数据密钥 |
| `aes_rsa` | 通过 **RSA-2048-OAEP** 包装的 AES-256-GCM 数据密钥 |
| `chacha20_ecc` | ChaCha20-Poly1305 数据 + X25519 ECDH 包装 |
| `aes_chacha20_cascade` | 两层 AEAD:先 AES-256-GCM **然后** ChaCha20-Poly1305 |
| `kyber_aes` | 如果安装了 `liboqs`,则使用 AES-256-GCM + **ML-KEM-768 (Kyber)**;否则使用标记为*模拟*的 X25519 |
| `aes_shamir` | AES-256-GCM;数据密钥通过 **Shamir 3-of-5** 拆分 |
| `aes_elgamal` | AES-256-GCM + **RSA-2048-OAEP**(v1 将其误标为 "ElGamal";实际未实现 ElGamal) |
载体媒介:图像(`png`/`bmp`/`jpg`→输出 PNG)、音频(`wav`)、视频(`mp4`/`avi`/`mkv`→输出 FFV1 AVI)、文本(零宽字符)。
## 安装与运行
```
git clone https://github.com/m524security/GUI-STEGNOGRAPHY.git
cd GUI-STEGNOGRAPHY
pip install -r requirements.txt
cp .env.example .env # set a strong STEGO_SECRET_KEY
python3 app.py # dev → http://127.0.0.1:5000
```
生产环境:
```
gunicorn -w4 -b 0.0.0.0:5000 --timeout 300 app:app # behind a TLS reverse proxy
# 或
docker build -t stegosuite . && docker run -p 5000:5000 stegosuite
```
运行测试:
```
pip install pytest && pytest -q # 26 passing
```
## 架构
```
app.py hardened Flask front end (routes, CSRF, headers, downloads)
stegosuite/
crypto.py Argon2id KDF · AEAD · hybrid wrappers · SSS · container format
stego.py LSB image/audio/video/text · magic+CRC · seeded scatter
templates/index.html glassmorphism UI (unchanged)
tests/ pytest round-trip + security regression suite
```
## 诚实的局限性
- **LSB 在应对现代统计学/ML 隐写分析时并非无法检测**——它只是在强加密之上的隐蔽层,并不能作为绝对保证。
- Shamir 共享会被存储在一起(除非你将它们分发出去,否则门限设置仅作演示说明)。
- 自动删除 TTL 只是服务器尽力而为的日常清理,并非安全的磁盘擦除。
完整分析请参阅 **[SECURITY_REVIEW.md](./SECURITY_REVIEW.md)**。
## 免责声明
仅供教育、研究和合法的隐私保护用途。作者对任何滥用行为不承担责任。
标签:DNS 反向解析, Flask, Python, 后量子密码, 安全规则引擎, 密码学, 手动系统调用, 数据加密, 无后门, 请求拦截, 逆向工具, 隐写术