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, 信息隐藏, 前端安全, 卡方检验, 可视化比较, 图像处理, 安全插件, 完整性校验, 密钥派生, 小波变换, 教学工具, 数字取证, 数据可视化, 无后端, 本地计算, 浏览器原生应用, 浏览器演示, 综合症格码, 自动化攻击, 自动化脚本, 自适应嵌入, 载具适配性, 隐写分析, 隐写术