tharunsridhar/Secure-AES-LSB-Image-Steganography

GitHub: tharunsridhar/Secure-AES-LSB-Image-Steganography

该框架将 AES 加密的消息通过 LSB 隐写术嵌入灰度图像,并提供盲提取与图像质量定量评估,用于安全隐蔽通信的研究与教学。

Stars: 0 | Forks: 0

# 🔐 安全的 AES + LSB 图像隐写术 ![Python](https://img.shields.io/badge/Python-3-3776AB?style=flat-square&logo=python&logoColor=white) ![OpenCV](https://img.shields.io/badge/OpenCV-Image%20Processing-0C7BDC?style=flat-square&logo=opencv&logoColor=white) ![JavaScript](https://img.shields.io/badge/JavaScript-CryptoJS-F7DF1E?style=flat-square&logo=javascript&logoColor=black) ![AES](https://img.shields.io/badge/Encryption-AES--CBC-critical?style=flat-square) 一个将 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, 加密工具, 图像处理, 图像隐写术, 密码学, 手动系统调用, 数据可视化, 无后门, 逆向工具, 隐密通信