Cyber Security Academy · 课时

什么是隐写术

将数据隐藏在显眼之处。

第 1 / 4 课13 个步骤

什么是隐写术 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。

藏于众目睽睽之下

隐写术是将消息隐藏在看起来普通的数据中,从而掩盖消息本身存在这一事实的做法。这个词源自希腊语 steganos(覆盖)和 graphein(书写),意为覆盖式书写。

秘密可能隐藏在图像、音频文件、文档或网络流量中。对于观察者而言,载体看起来完全正常:一张无辜的度假照片、一首歌曲或一份 PDF。

对于安全从业者来说,隐写术有两方面的重要意义:防御者必须了解攻击者如何利用它偷偷传输数据,分析人员也必须知道如何检测它。

隐写术与密码学

这两者经常被混淆,但解决的是不同的问题:

  • 密码学隐藏消息的含义。观察者知道存在秘密,但无法读取其内容。
  • 隐写术隐藏消息的存在。观察者甚至不知道其中存在秘密。

密码学保护内容;隐写术保护通信这一事实。加密文件会引起注意,因为它明显包含某些内容。而隐写消息则隐藏在无人怀疑的文件中。

优势互补

最强大的方法是将两者结合起来。请先加密,再隐藏:

  • 加密确保即使隐藏的数据被发现,也无法被读取。
  • 隐写术确保加密数据块不太可能被发现。

先加密再隐藏还有助于隐写过程本身:密文具有高熵且在统计上近似随机,比结构化明文更容易自然地融入媒体数据的噪声中。这种分层防御称为纵深防御。

# Conceptual pipeline (defensive understanding)
# 1. Encrypt the secret      -> random-looking ciphertext
# 2. Embed ciphertext in cover media (e.g. an image)
# 3. Transmit the ordinary-looking carrier
# Discovery alone is not enough; the finder still faces encryption

核心术语

隐写术有一套值得学习的精确术语:

  • 载荷:要隐藏的秘密数据。
  • 载体(或承载文件):用于隐藏秘密数据的无害文件。
  • 隐写对象:最终结果,即载体加上嵌入的载荷。
  • 隐写密钥:可选的秘密信息,用于控制载荷嵌入的位置或方式。
  • 嵌入:插入载荷的过程。
  • 提取:从隐写对象中恢复载荷。

也就是说,在可选的隐写密钥控制下,将载荷嵌入载体,就会生成隐写对象。

隐藏数据可以存在的地方

几乎任何具有冗余或噪声的文件都可以充当载体。常见的承载对象包括:

  • 图像:最常用的载体,细微的颜色变化无法被人眼察觉。
  • 音频:微小的振幅调整无法被人耳听见。
  • 视频:可以利用许多帧提供巨大的容量。
  • 文本和文档:利用空白、格式设置或零宽字符。
  • 网络流量:利用未使用的标头字段或数据包时序(隐蔽信道)。
  • 文件系统:利用空闲空间或隐藏卷。

最好的载体通常容量较大且天然包含噪声,因此嵌入的数据可以隐藏在已有的变化之中。

容量、稳健性与不可感知性

每种隐写方法都要在三个相互竞争的目标之间权衡,这就是隐写三角:

  • 容量:可以隐藏多少数据。
  • 不可感知性:变化有多难被察觉。
  • 稳健性:载荷在经过修改(压缩、调整大小)后能够保留多少。

提高其中一个目标通常会削弱另一个目标。隐藏更多数据(提高容量)会使统计变化更容易被检测(降低不可感知性)。能够承受压缩的稳健方法通常会留下更明显的痕迹。合适的平衡取决于目标:隐蔽数据外泄偏重不可感知性,而数字水印偏重稳健性。

一个简单思路:尾随数据

最粗糙的技术是在有效文件的末尾追加载荷。许多格式(例如 JPEG)都有文件结束标记,因此查看器会忽略标记之后的内容,图像仍会正常显示。

这种方法很容易被发现,因为文件会比应有的大小更大,并且在逻辑末尾之后还包含数据:

这种方法易于实现,也易于检测,并不是真正的不可感知隐藏,但它说明了查看器会忽略的数据隐藏概念。

# A ZIP archive appended after a JPEG's EOF marker still opens as an image.
# Detection is simple - look for content past the format's end marker:
binwalk suspicious.jpg          # carves out embedded/appended files
strings -n 8 suspicious.jpg     # reveals readable trailing data

经典技术:最低有效位

最著名的真正隐写技术是LSB(最低有效位)替换。在图像中,每个像素的色彩通道都是一个数值(0 到 255)。改变最低位最多只会使数值偏移 1,这种变化无法被人眼察觉。

通过覆盖许多像素的 LSB,您可以一次隐藏一位地编码秘密消息。一张 1 百万像素的 RGB 图像可以用这种方式隐藏大约 375 KB 的数据。

下一课将深入讲解 LSB;现在请先掌握这一原则:将数据隐藏在文件中细微到人类无法察觉的部分。

# Conceptual: replace the lowest bit of each color byte
# pixel R = 11001010  -> hide bit 1 -> 11001011 (value 202 -> 203)
# The 1-step change is imperceptible to the eye but carries data

正当用途

隐写术本身并非恶意,它有许多正当用途:

  • 数字水印 将所有权信息嵌入媒体,以证明版权或追踪泄露。
  • 篡改检测 使用脆弱水印,文件一旦被修改,水印就会损坏。
  • 元数据嵌入 携带真实性或来源数据。
  • 隐私保护 在仅仅进行加密这一行为本身可能带来危险的情况下保护通信。

水印尤其重视鲁棒性:标记必须经受住压缩和编辑,这与隐蔽隐藏的优先目标相反。

恶意用途与防御者视角

攻击者也会使用隐写术,防御者必须对此有所预判:

  • 数据外泄 将窃取的数据藏在能够通过过滤器的图像中带出。
  • 恶意软件命令与控制 将指令隐藏在发布到公共网站的图像中(隐写恶意软件)。
  • 载荷投递 将恶意代码隐藏在看似无害的文件中。
  • 规避 DLP 绕过扫描明显机密信息的数据丢失防护系统。

由于隐写术隐藏的是数据存在这一事实,基于特征的工具经常会漏检。检测这类数据需要进行隐写分析,本课程后面会介绍这一内容。

柯克霍夫原则的适用性

一个常见错误是依赖方法的保密性,也就是通过隐蔽实现安全。按照柯克霍夫原则,即使攻击者知道所使用的技术,系统也应保持安全。

对于隐写术,这意味着:

  • 不要假设嵌入算法是秘密的,因为分析人员了解常见方法。
  • 真正的安全性来自用于控制放置位置的隐写密钥,以及对载荷进行的加密。
  • 方法可以公开,只有密钥应当保密。

隐写术隐藏的是数据存在这一事实,但它不能替代加密;应将两者结合使用。

快速检查

测试您对核心区别的理解。

回顾:隐写术是什么

您已经学习了将数据隐藏在明处的基础知识。

  • 隐写术隐藏消息的存在,而密码学隐藏消息的含义;将两者结合起来,可以实现纵深防御。
  • 关键术语包括:载荷、载体、隐写对象、隐写密钥、嵌入和提取。
  • 载体可以是图像、音频、视频、文本、网络流量或文件系统;大型且噪声多的文件最适合隐藏数据。
  • 每种方法都需要在容量 / 不可感知性 / 鲁棒性这一三角关系之间进行权衡。
  • 经典的实用技术是LSB 替换;更粗糙的方法会将数据追加到文件末尾之后。
  • 用途涵盖正当的水印以及恶意的数据外泄和隐写恶意软件;应依靠隐写密钥和加密,而不是依赖隐蔽性。

接下来,我们将动手实践在图像和音频中嵌入数据。

免费开始

用 AI 导师学习 Cyber Security Academy — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
76
课程
303

常见问题解答

「什么是隐写术」课时是免费的吗?

是的 — 「什么是隐写术」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。

「什么是隐写术」这节课中我会学到什么?

将数据隐藏在显眼之处。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cyber Security Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「什么是隐写术」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cyber Security Academy 课中编写并运行代码吗?

能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 什么是隐写术
  2. 图像与音频隐写术
  3. 检测隐藏数据(隐写分析)
  4. 隐蔽信道与数据外泄
← 返回 Cyber Security Academy