破解隐写术的算法
隐写术背后的基本思想是什么?即如何获取隐藏信息? 假设它是一张图像,并且该图像中包含一些文本...您如何获取该文本?...
what is the basic idea behind steganography?ie ,how do you get the hidden information?
suppose if it is an image and some text is within that image...how do you get that text?..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
最基本的想法是图像包含大量肉眼看不到的冗余信息。例如,如果您更改了每个像素上的最后一位,则不会有可见变化,因为几乎所有有关颜色的信息都是其他位。因此,您可以使用最后一位(最基本的算法)对消息进行编码。然而,直方图将会改变,并且很容易检测到大消息。就消息本身的解码而言,消息本身可能使用公钥加密,因此您永远不会知道实际的有效负载是什么。
与密码学不同,如果夏娃(正在窃听并练习隐写分析)知道有消息存在,则隐写术被认为已被破坏。这些假设是基于爱丽丝和鲍勃正在被监视,并且任何通信都表明他们在做某事(又名囚犯,限制性政府,未来的所有政府呵呵;-))
当然,算法变得更加复杂只是翻转最后一位,但编码数据不会影响图像的结构(并且容易受到统计攻击。):
我去年夏天读过这本书,我认为这是一个很好的介绍(它有很多伪代码)使用的算法)
http://www.amazon.com/Steganography-Digital-Media-Principles-Applications/ dp/0521190193
The very basic idea is that images contain tons of redundant information that your eye cannot see. For instance if you changed the last bit on each pixel there would be no visible change as almost all of the information about the color is the other bits. So you can encode messages using the last bit (the most basic algorithm). The histogram however will be changed and a large message will easily be detectable. As far a decoding the message itself, well, the message itself is probably using public key encryption so you will never know what the actual payload was.
Steganography unlike cryptography is considered broken if Eve (who is eavesdropping and practising steganalysis) knows that there is a message at all. The assumptions are based on that Alice and Bob are being watched and any communication is sign that they are up to something (aka prisoners, restrictive governments, all governments in the future hehe ;-))
And of course the algorithms become much more complex that just flipping the last bits, but encoding data that will not affect the structure of image (and become vulnerable to statistical attacks.) :
I read this book last summer and I thought is was an excellent introduction (it has a lot a psuedocode of the algorithms used)
http://www.amazon.com/Steganography-Digital-Media-Principles-Applications/dp/0521190193
隐写术,来自希腊语 Steganos(我是希腊语:P),是隐藏消息的艺术。密码学是关于对消息进行加扰,而隐写术是关于人们无法找到消息的。
有许多工具可以为您执行此过程。我认为编写这样的工具可能是一个复杂的过程,尽管我还没有尝试这样做。您需要创建一种复杂的方法来正确使用未使用的或看似不重要的图像像素或数据,以便添加您自己的消息、文件等。有关更多信息,请查看:http://www.symantec.com/connect/articles/steganography-revealed
Steganography, coming from greek Steganos(i'm greek :P) is the art of hiding messages. While cryptography is about scrambling a message, steganography is about a person not being able to locate the message.
There are many tools that do this procedure for you. Writing a tool like that can be a complicated procedure i think, though i haven't tried to do that. You would need to create a sophisticated approach of correctly using unused or seemingly not important image pixels or data, in order to add your own message, file etc. For some more information, please take a look at : http://www.symantec.com/connect/articles/steganography-revealed
每种速记算法在这方面都是不同的。每种算法隐藏信息的方式不同,因此获取的信息也不同。
一个简单的例子是这样的 - 图像的每个像素由 3 个字节组成,一个字节代表红色、绿色和蓝色。大多数人无法检测图像中颜色的一位差异,因此一种选择是使用数据的每个颜色通道的最低有效位。这样您就可以在每个像素中存储 3 位信息,而对图像的总体质量影响很小。
要获取信息,您需要读取每个像素的每个颜色通道的第一位并将所有位收集在一起。
这只是一种非常简单、几乎微不足道的速记方法。真正的速记算法稍微复杂一些。就像密码学一样,没有办法一般地“取消隐藏”所有速记。你需要知道你正在尝试解码哪种算法。
Every stenography algorithm is different in that respect. Every algorithm hides the information differently and thus getting the information back is different.
A simple example goes like this - Each pixel of the image is composed of 3 bytes, one for red, green and blue. Most people can't detect a difference of one bit in the color in an image so one option is to use the least significant bit of each color channel for your data. This way you can store 3 bits of information in every pixel with very little effect on the general quality of the image.
To get the information back you'll need to read the first bit of every color channel of every pixel and gather all the bits together.
This is just a very simple and almost trivial way to do stenography. Real stenography algorithms are somewhat more involved. Like in cryptography, there is no way to generically "unhide" all stenography. you need to know which algorithm you're trying to decode.