tharunsridhar/Secure-AES-LSB-Image-Steganography
GitHub: tharunsridhar/Secure-AES-LSB-Image-Steganography
该框架将 AES 加密的消息通过 LSB 隐写术嵌入灰度图像,并提供盲提取与图像质量定量评估,用于安全隐蔽通信的研究与教学。
Stars: 0 | Forks: 0
# 🔐 安全的 AES + LSB 图像隐写术




一个将 AES 加密与最低有效位 (LSB) 技术结合应用于灰度图像的隐写术安全框架。
本项目演示了安全的隐蔽通信,同时使用 PSNR 和 SSIM 指标对图像失真进行了定量分析。
## 🚀 项目概述
本系统支持:
- 将 AES 加密后的消息嵌入图像
- 盲提取(无需原始图像)
- 使用 PSNR 和 SSIM 评估图像质量
- 容量与质量的权衡可视化
- 基于 CLI 的 Python 实现
- 交互式的浏览器 Web 界面
该框架强调了**密码学安全性**与**隐写不可见性**。
## 🧠 系统工作流
```
Plaintext Message
->
AES Encryption
->
Base64 Encoding
->
Binary Conversion
->
LSB Embedding into Image
->
Stego Image Output
```
提取过程则是整个流程的逆向操作。
## 🔒 密码学层
### AES 实现 (Python)
- 带有随机 IV 的 AES-CBC 模式
- PKCS 风格的填充
- 对 IV 和密文进行 Base64 编码
- 安全的随机密钥生成
另一个替代版本(`main2.py`)使用 AES-ECB 模式,用于实验和对比。
### 浏览器版本
- 使用 CryptoJS 进行 AES 加密
- 客户端加密与解密
- 无需依赖服务器
## 🖼 隐写术层
- 灰度图像转换
- 像素强度值的 LSB 替换
- 顺序位嵌入
- 基于密文长度的盲提取
核心嵌入逻辑在 Python (`main.py`) 中实现,Web 版本 (`steganography_app.html`) 中则有等效的 JavaScript 实现。
## 📊 图像质量评估
为了衡量不可见性,系统计算了以下指标:
### PSNR (峰值信噪比)
数值越高,表示失真越小。
- **PSNR ≈ 74 dB**
这表明可见失真极低。
### SSIM (结构相似性指数)
衡量图像之间的结构相似性。
- **SSIM ≈ 1.000**
表明感知质量几乎完全一致。
## 📈 容量与质量的权衡
本项目包含对以下内容的自动化评估:
- 消息长度与 PSNR 的关系
- 消息长度与 SSIM 的关系
权衡图由程序自动生成并保存为 `quality_tradeoff.png`,示例展示在 `main-output.pdf` 中。这演示了增加 payload 如何影响图像保真度。
## 🧪 实验结果
报告演示了:
- 成功的加密与嵌入
- 准确的提取和解密
- 原始图像与隐写图像之间极小的视觉差异
- 高 PSNR 和 SSIM 值
- 保存为 `quality_tradeoff.png` 的权衡图
完整的实验截图可在 `main-output.pdf` 中查看。
## 🛠 技术栈
### Python 版本
- Python 3
- PyCryptodome
- NumPy
- OpenCV
- PIL
- scikit-image
- Matplotlib
### Web 版本
- HTML5
- CSS3
- JavaScript
- CryptoJS
## 📂 项目结构
```
main.py -> Full CLI workflow (AES-CBC + Metrics)
main2.py -> Alternative experimental pipeline (AES-ECB)
main-output.pdf -> Experimental results & plots
steganography_app.html -> Interactive browser UI
requirements.txt -> Dependencies
```
## ⚙️ 如何运行(Python 版本)
安装依赖项:
```
pip install -r requirements.txt
```
运行:
```
python main.py
```
按照提示进行以下操作:
- 输入消息
- 选择加密类型
- 提供载体图像路径
- 生成隐写图像
- 计算 PSNR 和 SSIM
- 提取并解密消息
## 🌐 如何运行(Web 版本)
在浏览器中直接打开 `steganography_app.html`。
功能:
- 隐藏消息
- 显示消息
- AES 加密
- 基于密钥的解密
- 下载隐写图像
## 🔐 安全设计考量
- 先加密后嵌入
- 图像内不存储明文
- 随机生成 IV(CBC 模式)
- 盲提取能力
- 密码层和隐写层分离
- 定量的失真验证
## ⚠️ 局限性
- 顺序 LSB 嵌入(未随机化)
- 未进行抗隐写分析测试
- AES 密钥管理交由用户负责
- 未针对高级隐写检测工具进行强化
## 🎯 学习成果
本项目展示了:
- 实用的 AES 加密实现
- 对加密模式(CBC 与 ECB)的理解
- 位级别的图像操作
- 信号质量指标的计算
- 容量与失真的权衡分析
- 浏览器中的客户端密码学
- 安全的 pipeline 设计
## 📘 报告
完整的实验工作流和可视化结果可在 `main-output.pdf` 中查看。
## 👤 作者
Tharun Sridhar
标签:CMS安全, DNS 反向解析, JavaScript, Python, 加密工具, 图像处理, 图像隐写术, 密码学, 手动系统调用, 数据可视化, 无后门, 逆向工具, 隐密通信