导航

原文自 http://www.cnbeta.com/articles/185511.htm

所有权利归原作者所有

如有侵犯权利,请联系博主删除。

 

 译自Ars Technica

当一名基地组织嫌犯在去年五月在柏林被捕的时候, 警方发现他随身携带着一张存储卡, 而其中的文件是隐藏的. 不过据德国 Zeit 杂志报道, 德国联邦刑警的计算机刑侦专家后来成功的解开了存储卡上的隐藏内容: 表面上来看, 卡上似乎只存有一个文件名为 "牛逼" (KickAss) 的色情视频. 但警方随后在该视频中发现了 141 个文本文档, 据官方发言人表示这些文档中包括大量基地组织的行动报告和未来行动规划.

那么恐怖分子到底是怎么把自家的书房搬进一个盗版色情视频里的? 在这个案例中, 基地组织未加密的文档通过一种众所周知的, 将机密隐藏在看起来平常的文件中的方法把自己的秘密藏进了色情片——这被称作隐写术.

隐形墨水?

长期以来各国警方一直在怀疑基地组织在使用隐写术隐藏它的从地图, 目标列表到炸弹制作指南等各种各样的秘密文件. 隐写术指隐藏信息以防止普通的观察者发现的技术——而一般来说使用隐写术隐藏的文档是不经加密的, 并且对于专业人士来说非常明显; 这个名字包括了从隐形墨水到使用现代网络技术隐秘传送文件等等所有的隐藏信息的技术.

不过如果说到信息时代最常见的数字隐写术的话, 应该说是将文本文件或其他类型的文件整个隐藏进某个图片, 音频或视频文件的技术. 这种技术在需要使用公共讨论站或电子公告板传送密件时非常常用, 甚至连安娜·查普曼 (在美俄罗斯间谍, 2010 年 1 月起她开始被 FBI 盯上, 同年 6 月 27 日, 安娜被 FBI 特工抓获) 组织的间谍网都使用了这种方法在网上交换情报.

最简单的数字隐写术也是一种广为人知的隐藏文件小技巧: 直接用文本编辑器打开 JPEG 图片然后把想要隐藏的文本直接写在文件末尾. 这种情况下在图片查看器或浏览器中该图片仍然可以正常显示, 不过文件大小会明显变大, 只要简单的分析就可以轻松破解隐藏的内容. 更高级的隐写术则使用更为精密也难以发现的方式, 使用各种软件工具修改隐藏着文件的外壳中的每一位以达到对文件做出最难察觉的改动又可以保存秘密的目的.

最低位: 外表不变的秘诀

一种常见的数字隐写方式是“最低位变换”. 在将数据隐藏进“外壳”文件的过程中隐写软件会将需要隐藏的数据打碎成一位又一位的二进制数码. 而后这些数码会替换掉外壳文件中各字节的最低位 (least significant bit, 也即对数据影响最小的那个 0 或 1). 

举例说明, 如果我们要把字母 "S" - 二进制表示为 01010011 隐藏起来, 我们需要改动图像中的八个字节.

假设在隐藏前图像某八个字节的内容如下:
01110011 01110101 01110000 01100101 01110010 01101000 01100001 01110000
那么在这八个字节隐藏起一个 'S' 之后, 内容如下:
01110010 01110101 01110000 01100101 01110010 01101000 01101001 01110001

如你所见, 其实在隐藏的过程中我们只修改了八个字节中的两个, 但是就算这样如果修改靠的很近的话它们仍然会给结果图像, 音频或视频带来很大的噪声.

为了让改动分散开以避免产生可见的噪音或避免轻易被专家发现, 隐写工具也可以设置如何具体修改文件——比如隔五个字节修改一次, 八个字节修改一次, 以此类推. 或者用户也可以使用伪随机数发生器或者其他的复杂算法决定每个数据点间间隔多远之类. 总的来说, 限制这些设置的唯一条件就是要隐藏的信息相对于目标文件的大小——可以隐藏的空间越大, 信息也就越难被发现.

余弦上的幽灵

另一种在图片中隐藏信息的方式是修改每个像素的颜色数据而非直接修改文件中的最低位. 图片中各像素的颜色是由三个“矢量”值决定的——对于使用 RGB 颜色空间的图片来说每个数字决定了三个颜色通道的强度 (每个像素由多少红, 绿, 蓝混合而成), 而对于 YCbCr 颜色空间的图片来说有两个值决定颜色矢量 (分别为蓝到黄, 红到黄), 一个明度值决定颜色强度. 跨平台, 开源隐写工具 SilentEye 就是通过修改图片各像素的明度值最低位来隐藏文件的. 它还内置了隐藏内容的 AES 加密和密码保护——这样就算你的色情图片集发生了泄露, 外人也无法读取你的秘密.

如果说你并不关心文件传输过程中的损耗的话, 这些方式是非常有用的. 但如果你没法控制文件的传输过程的话——比如你上传的论坛对你的图片进行了二次压缩降低了图片质量——那么你精心隐藏的数据就会直接消失了. 在这种情况下就需要更专业的工具出马了——这些工具使用数据中的变化规律而非数据本身来保存密文. 举例来说, 通过控制 JPEG 压缩过程中使用的离散余弦变换系数, 专业人士可以将自己的数据压制进图片的某个部分, 而这些数据在图片经过压缩, 变换图片大小, 甚至裁剪后都可以读出.

同样的技术也被用于在音频文件中隐藏文件——对于音频文件来说对各字节最低位的随机更改产生的噪音是非常明显的, 而对音频文件波形的微小更改则一样可以保存秘密并且难以发现.

大海捞数

从图片中截获隐写数据的任务如同一场没完没了的军备竞赛——面对数据隐藏工具越来越先进这个事实, 在文件中寻找隐藏数据如同大海捞针, 而在捞针前专家必须知道针看起来什么样子. 因此对于刑侦专家来说, 一种正在成为主流的侦察方式是利用各种隐写工具产生的“指纹”, 也即隐写工具在修改文件后留下的明显人工痕迹和变换模式来确定该文件是否以及使用了什么方式隐藏数据. Backbone Security 就已经有了一个包括 1050 种隐写工具指纹的数据库, 这些数据可以用来快速确定文件中是否隐藏着其他数据.

虽然在大量文件中寻找隐藏的数据仍然困难, 不过对于警察来说, 幸运的是时不时总会有明显的藏在色情视频中的目标从天而降.