systemslibrarian/crypto-lab-j-uniward
GitHub: systemslibrarian/crypto-lab-j-uniward
一个浏览器原生实现的 J-UNIWARD JPEG 隐写术演示,完整展示从代价计算、STC 嵌入到隐写分析对比的教学流程。
Stars: 0 | Forks: 0
# J-UNIWARD 隐写术实验室
## 什么是 J-UNIWARD
浏览器原生实现的 **J-UNIWARD**(JPEG 全局小波相对失真)——自适应 JPEG 隐写术的学术参考实现。完整实现了 2013 年 Holub & Fridrich 论文中的处理流程:
- **代价函数**:使用 Daubechies-8 三层小波分解为每个 DCT 系数分配失真代价——在纹理区域的变化“代价更低”。
- **嵌入**:采用全综合征格形码(STC,h=12,4096 状态),通过 Viterbi 搜索(Filler, Judas & Fridrich 2011)寻找最小失真修改。
- **密钥调度**:PBKDF2-SHA-256(60 万次迭代)→ HKDF 域分离 → AES-CTR 帽矩阵 + Fisher-Yates 置换。HMAC-SHA-256 完整性标签。
- **隐写分析**:三向对比(LSB 与 F5 与 J-UNIWARD),使用卡方失真攻击和 DCT 直方图可视化。
所有操作均在浏览器本地运行。无后端,无数学模拟。
## 快速开始
点击站点上的 **▶ 快速演示**——它会加载示例图像,预填充消息,并直接滚动到嵌入步骤。或者按照引导流程操作:
1. **加载** 示例图像或上传自己的 JPEG
2. **输入** 秘密消息与共享密钥
3. **嵌入** J-UNIWARD 并观看分析面板比较三种方法
## 主要功能
| 功能 | 描述 |
|------|------|
| 适应性放置 | 修改落在高纹理 DCT 块中,更难被检测 |
| 载荷预设 | 保守(0.10)、平衡(0.20)、激进(0.40)bpnzac |
| 嵌入摘要 | 载荷大小、实际速率、使用的载体数、失真、元数据状态 |
| 视觉对比 | 封面/隐写图像并排显示 + 10 倍放大差异图 |
| 实时隐写分析 | 卡方 p 值条、DCT 直方图、可检测性标签 |
| 方法说明 | 教学文本解释每种方法为何更易或更难被检测 |
| 图像适用性 | 指示器显示你的图像是良好还是不佳的载体 |
| 往返验证 | 嵌入 → 下载 → 上传 → 提取并执行完整性检查 |
## 架构
```
src/
├── main.ts # Thin orchestrator
├── state/
│ └── app-state.ts # Central state
├── ui/
│ ├── theme.ts # Dark/light toggle
│ ├── dropzone.ts # Image upload + samples
│ ├── embed-panel.ts # Embed tab + controls
│ ├── extract-panel.ts # Extract tab
│ ├── analysis-panel.ts# Steganalysis comparison
│ └── renderers.ts # Canvas drawing + alerts
├── codec/
│ └── JpegCodec.ts # Custom JPEG DCT codec
├── steg/
│ ├── Embedder.ts # J-UNIWARD embed
│ ├── Extractor.ts # STC extract
│ └── WaveletCost.ts # Daubechies-8 cost function
├── analysis/
│ └── StegAnalysis.ts # Chi-square, histograms, comparison
├── stc.ts # STC Viterbi embed/extract
├── stc-keys.ts # AES-CTR hat matrix + permutation
└── kdf.ts # PBKDF2 + HKDF key derivation
```
## 限制
- **简化的分析**。包含的卡方检验是一阶统计攻击。实际隐写分析(SRNet、XuNet 等)使用深度神经网络处理丰富特征集。
- **COM 标记侧信道**。盐和嵌入速率存储在 JPEG COM 标记中以便提取。这些元数据可能被图像管线或社交媒体压缩剥离。
- **并非“不可检测”**。J-UNIWARD 比 LSB/F5 更具抗性——但并非对所有攻击都隐形。
- **教育用途**。这是一个教学与作品集演示,不适用于对抗环境。
## 本地运行
```
git clone https://github.com/systemslibrarian/crypto-lab-j-uniward
cd crypto-lab-j-uniward
npm install
npm run dev
```
## 在线演示
https://systemslibrarian.github.io/crypto-lab-j-uniward/
## 属于 Crypto-Lab 系列
60 多个浏览器实时演示之一:[systemslibrarian.github.io/crypto-lab](https://systemslibrarian.github.io/crypto-lab/) —— 涵盖从 Atbash(公元前 600 年)到 NIST FIPS 203/204/205(2024)的多种工具。
> “无论你吃喝或做任何事,都要为荣耀神而行。” — 哥林多前书 10:31
标签:AES-CTR, chi-square, CMS安全, Daubechies-8, DCT, DCT直方图, F5, Filler Judas Fridrich 2011, Fisher-Yates, HKDF, HMAC-SHA256, Holub Fridrich 2013, JavaScript, JPEG隐写, J-UNIWARD, LSB, PBKDF2, PoV攻击, SEO关键词, STC, steganalysis, TypeScript, Viterbi译码, WebAssembly, 信息隐藏, 前端安全, 卡方检验, 可视化比较, 图像处理, 安全插件, 完整性校验, 密钥派生, 小波变换, 教学工具, 数字取证, 数据可视化, 无后端, 本地计算, 浏览器原生应用, 浏览器演示, 综合症格码, 自动化攻击, 自动化脚本, 自适应嵌入, 载具适配性, 隐写分析, 隐写术