数据连接作为隐写技术

时间:2016-10-27 10:36:21

标签: c# steganography

例如,我使用相机录制了一段视频,并将其保存为my_vacation.mp4,大小为50MB。我使用Visual Studio打开了视频文件和一个名为secret_message.dat的加密文件,在C#中使用File.ReadAllBytes(),连接两个字节数组,然后将其保存为my_vacation_2.mp4

我为测试目的而创建的程序能够保存隐藏文件开始的字节索引,并且我想将其用作密钥以便稍后提取该隐藏文件。

现在我可以正常播放该视频文件,没有任何错误。文件总大小为65MB。假设没有人可以访问原始文件,当然没有人会知道该视频文件的最后15MB部分实际上是另一个文件,对吗?

这种技术的缺陷可能是什么?这也是一种有效的隐写技术吗?

2 个答案:

答案 0 :(得分:1)

  

假设没有人可以访问原始文件,当然没有人会知道该视频文件的最后15MB部分实际上是另一个文件,对吗?

没有。您的秘密文件是加密的,因此可能会排除在十六进制编辑器中显示的任何标题,但是存在一个问题 - MP4容器格式及其结构是众所周知的。 你可以提取所有视频/音频曲目,你剩下的是一些元数据和你的秘密信息,所以很明显它不应该在那里。

这是一种有效的技术,不是一种非常有效的技术。

答案 1 :(得分:1)

  

这是一种有效的隐写技术吗?

是的,确实如此。隐写术的定义是将信息隐藏在另一种媒介中而没有人怀疑它的存在或存在。仅仅因为它可能是一个糟糕的方法并没有改变它的意图。如果有的话,关于隐写术的大量论文在他们的介绍部分中提到了这种技术,作为如何应用隐写术的一个例子。

  

这种技术的缺陷可能是什么?

主要有两个缺陷:检测起来很简单,对修改攻击来说绝对是脆弱的。

许多格式通过标头对数据进行编码,该标头预先说明在文件结束之前要读取多少字节,或者通过放置文件结束标记,这意味着在遇到标记之前继续读取数据。通过在此之后附加数据,您可以确保它们不会被适当的格式解码器读取。这可以欺骗你11岁的堂兄,他对这类东西一无所知,但任何有经验的人都可以加载文件并计算读取的字节数。如果物理文件中有未计入的字节,则会立即引发红旗。

更糟糕的是,完全提取你的秘密是微不足道的。你可能会认为它是加密的,但请记住,隐写术的目的是不引起任何怀疑。大多数隐写分析方法都给它一个统计数字,例如,60%的信息隐藏在X媒体中。其他一些人可以更进一步猜测嵌入秘密的大致长度。相比之下,你已经被逮捕了。

谈到长度,X比特率/压缩和Y持续时间的文件大约会产生大小为Z的文件。即使是不合理的文件也会知道当尺寸比预期大30%时会发生什么。

现在,想象一下你的文件是通过一个不安全的频道进行传播的,监狱长检查其内容,如果他怀疑犯规,他可以修改文件,以便收件人不收到信息。在这种情况下,它就像加载文件并重新保存文件一样简单。事实上,你的方法非常脆弱,即使是最无意的攻击也可能被破坏。只需将您的曲目上传到网站进行播放,它就会无意中重新编码以获得更高的压缩率,这只是因为它有意义。