心宇

FDF24DCED8C6738F8313A6D3B073C3F4

首页 管理

一、什么是隐写术

隐写术(Steganography)是一种将秘密信息隐藏在普通载体中的技术。

常见载体包括:

  • 图片
  • 音频
  • 视频
  • 文本
  • 文档
  • 网络协议

隐写术的核心目的不是让秘密内容“看不懂”,而是:

隐藏“秘密信息存在”这一事实。


二、隐写术和加密的区别

技术 核心目标 外部观察者看到的内容
加密 Cryptography 让别人无法理解信息 明显存在一段密文
隐写 Steganography 隐藏秘密信息的存在 看起来是普通图片、音频等
加密 + 隐写 同时隐藏存在性和内容 普通载体 + 内部加密数据

典型流程:

秘密文件
↓
压缩 / 加密
↓
嵌入普通载体
↓
Stego File(隐写文件)

例如:

password.txt
↓
加密
↓
嵌入 cat.jpg
↓
cat_stego.jpg

最终 cat_stego.jpg 表面上仍然是一张正常图片。


三、隐写术的基本技术原理

数字图片、音频和视频中存在大量:

  • 冗余信息
  • 人眼不敏感的数据
  • 人耳不敏感的数据
  • 文件格式中的可选字段
  • Metadata
  • Padding
  • 编码空间

隐写术利用这些空间存储秘密数据,同时尽可能避免影响载体的正常使用。


四、LSB 隐写

4.1 什么是 LSB

LSB:

Least Significant Bit

中文:

最低有效位

假设一个 RGB 像素:

R = 11010110
G = 10110010
B = 01101101

修改 R 最后一位:

原:

11010110

修改:

11010111

对应十进制:

214 → 215

颜色只发生非常微小的变化,肉眼通常难以发现。


4.2 使用 LSB 保存秘密数据

假设秘密数据:

101

原始像素:

R 11010110
G 10110010
B 01101100

修改最低位:

R 11010111
↑
1

G 10110010
↑
0

B 01101101
↑
1

这样就隐藏了:

101

如果图片拥有数百万像素,就存在大量可以存储秘密信息的位置。


4.3 LSB 常见载体

比较常见的是:

BMP
PNG

因为这些通常属于无损图像格式。

简单 LSB 隐写并不适合直接套用到 JPEG 的最终像素数据上,因为 JPEG 会进行有损压缩。


4.4 LSB 的优缺点

优点

  • 原理简单
  • 实现容易
  • 隐藏容量较大
  • 肉眼通常难以发现差异

缺点

  • 容易留下统计特征
  • 可能被 Steganalysis 检测
  • 图片缩放可能破坏数据
  • 图片重新压缩可能破坏数据
  • 格式转换可能破坏数据

五、JPEG DCT 隐写

JPEG 和 PNG/BMP 的处理方式不同。

JPEG 大致经历:

RGB
↓
颜色空间转换
↓
8×8 分块
↓
DCT
↓
量化
↓
编码
↓
JPEG

DCT:

Discrete Cosine Transform

中文:

离散余弦变换

JPEG 隐写可以通过修改部分:

DCT Coefficients

也就是:

DCT 系数

隐藏秘密数据。

例如:

12 -3 2 0
-4 1 0 0
2 0 0 0
0 0 0 0

对部分合适的 DCT 系数进行微小调整,用来编码:

0
1

这种技术通常比直接修改 JPEG 解码后的 RGB 像素更加符合 JPEG 文件本身的结构。


六、音频隐写

音频同样存在人耳不敏感的数据。

常见技术:

  • Audio LSB
  • Phase Coding
  • Echo Hiding
  • Spread Spectrum

6.1 Audio LSB

例如 PCM 音频数据:

10110110
11001001
10010100

需要隐藏:

101

修改最低位:

10110111
↑ 1

11001000
↑ 0

10010101
↑ 1

从而隐藏:

101

常见载体:

WAV


七、视频隐写

视频实际上可以理解为:

Video
│
├── 大量视频帧
│
├── 音频
│
└── 编码数据

因此视频隐写可以利用:

  • 视频帧
  • 音频
  • DCT 系数
  • 编码参数
  • 其他视频结构

例如:

Video
↓
Frame
↓
DCT
↓
修改部分系数
↓
Hidden Data

视频的优势是:

载体容量非常大。

但是重新编码视频可能破坏隐藏信息。


八、文件结构隐写

很多文件格式中存在:

  • Metadata
  • Comment
  • Padding
  • Reserved Field
  • Custom Chunk
  • Optional Field

这些位置都可能被用来保存信息。


8.1 PNG Chunk

PNG 文件由多个 Chunk 构成,例如:

PNG

IHDR
IDAT
IDAT
tEXt
IEND

某些数据隐藏技术可能利用:

tEXt

或者:

自定义 Chunk

存储额外数据。

需要注意:

利用 Metadata、Chunk 等保存信息,与修改像素统计特征的隐写术在技术原理上存在区别,有些场景更适合称为文件格式数据隐藏。


九、文件尾追加数据

一种非常简单的方法是:

image.jpg
+
secret.zip

形成:

image_with_data.jpg

某些图片解析器读取到正常 JPEG 结束位置后就停止,因此:

image_with_data.jpg

仍然可能正常显示。


缺点

这种方法隐蔽性很弱。

通过:

file
strings
xxd
hexdump
binwalk

等工具可能很快发现异常数据。

因此:

文件尾追加更多属于简单的数据隐藏技巧,而不是高隐蔽性的现代隐写算法。


十、文本隐写

文本也可以隐藏数据。

常见方法:

  • 空格
  • Tab
  • Unicode
  • 零宽字符
  • 特殊字符
  • 大小写
  • 字符间距

10.1 Zero Width 隐写

例如使用:

Zero Width Space

表示:

0

使用:

Zero Width Non-Joiner

表示:

1

于是:

0 1 1 0 1 0 1 1

可以被编码成一系列肉眼几乎看不到的 Unicode 字符。

表面上可能只看到:

Hello World

实际上 Unicode 数据中可能存在:

Hello World

从而携带额外信息。


十一、网络隐写

更高级的隐写技术可以利用网络协议建立:

Covert Channel(隐蔽信道)

可能涉及:

  • IP Header
  • TCP Header
  • DNS
  • HTTP
  • Packet Timing
  • Packet Ordering
  • Packet Size

基本思想:

正常网络通信
↓
利用某些可控特征
↓
编码 0 / 1
↓
形成隐藏通信信道

例如理论上的:

时间间隔较短 → 0

时间间隔较长 → 1

这类技术通常称为:

Network Steganography

或者:

Covert Channel


十二、常见隐写软件

目前不存在可靠统一的:

“全球隐写软件用户数量排行榜”

因为很多隐写工具:

  • 是开源项目
  • 没有用户统计
  • 分布在 GitHub
  • 分布在 Linux 软件仓库
  • 分布在 SourceForge

因此更准确的说法是:

常见/知名隐写工具。


12.1 Steghide

Steghide 是经典命令行隐写工具。

常见支持格式:

JPEG
BMP
WAV
AU

主要能力:

  • 文件隐藏
  • 数据压缩
  • 数据加密
  • 密码保护
  • 完整性校验

典型概念:

secret.txt
↓
compression
↓
encryption
↓
embedding
↓
image.jpg

适合学习:

  • 传统隐写术
  • CTF
  • 隐写分析
  • 文件提取

十三、OpenStego

OpenStego 是一款开源隐写工具。

主要功能:

Data Hiding

和:

Watermarking

也就是:

  • 数据隐藏
  • 数字水印

支持 GUI 和命令行方式。

比较适合初学者理解:

如何把一个文件隐藏到图片中。


十四、SilentEye

SilentEye 是 GUI 类型的隐写工具。

常见功能包括:

  • 图片隐写
  • 音频隐写
  • LSB
  • 数据压缩
  • AES 加密

支持的载体包括:

JPEG
BMP
WAVE

它比较适合通过 GUI 观察:

Cover File
+
Secret File
↓
Encode
↓
Stego File

这一完整过程。


十五、隐写术不等于绝对安全

这是学习隐写术时非常重要的一点。

错误理解:

肉眼看不出来
=
无法检测

实际上:

肉眼看不出来
≠
计算机检测不出来

简单隐写可能留下:

  • 文件结构异常
  • 文件大小异常
  • Metadata 异常
  • 文件尾异常
  • 像素统计异常
  • LSB 分布异常
  • DCT 系数异常

因此出现了专门研究隐写检测的领域:

Steganalysis

中文:

隐写分析


十六、隐写分析基本流程

拿到一个可疑文件,可以从:

可疑文件
↓
文件类型识别
↓
Metadata 分析
↓
Strings 分析
↓
Hex 分析
↓
文件结构分析
↓
Embedded File 检测
↓
LSB / DCT 分析
↓
已知隐写算法检测
↓
尝试提取隐藏数据

常见分析工具:

file
strings
exiftool
xxd
hexdump
binwalk

以及针对特定隐写算法的分析工具。


十七、隐写术知识体系

Steganography
│
┌───────────────┼───────────────┐
│ │ │
图片 音频 视频
│ │ │
┌────┴────┐ │ │
│ │ │ │
LSB DCT LSB Frame
│ │ Phase DCT
│ │ Echo Audio
│ │
PNG JPEG
BMP
│
├──────── 文件结构隐写
│
│ ├── Metadata
│ ├── Chunk
│ ├── Padding
│ └── EOF
│
├──────── 文本隐写
│
│ ├── Unicode
│ ├── Zero Width
│ ├── Whitespace
│ └── 大小写
│
└──────── 网络隐写
│
├── Header
├── Timing
├── Packet Size
└── Covert Channel


十八、核心知识点速记

1. 隐写术

Steganography

目标:

隐藏秘密信息的存在。


2. 加密术

Cryptography

目标:

让别人无法理解秘密信息。


3. 隐写 + 加密

Secret
↓
Encrypt
↓
Steganography
↓
Cover File

同时保护:

信息内容
+
信息存在性


4. 最经典图片隐写

LSB

即:

Least Significant Bit

最低有效位。


5. JPEG 常见思路

重点关注:

DCT

即:

Discrete Cosine Transform

离散余弦变换。


6. 隐写检测

Steganalysis

即:

隐写分析


十九、一句话总结

加密术隐藏“内容是什么”,隐写术隐藏“这里存在秘密信息”这件事。

完整的数据保护思想可以理解为:

Secret Data
│
▼
Compression
│
▼
Encryption
│
▼
Steganography
│
▼
Cover File
│
▼
Stego File

而安全分析人员则反过来进行:

Stego File
│
▼
File Analysis
│
▼
Steganalysis
│
▼
Data Extraction
│
▼
Decryption
│
▼
Secret Data

posted on 2026-10-03 09:47  心宇16969  阅读(14)  评论(0)    收藏  举报