所以我有这个问题。由于未压缩.BMP,因此我从Google下载了.BMP。只是一张1024x768 .BMP图像,其大小os为2.25Mb。我将图像放在隐写术应用程序中。在其中插入了隐藏的文本,并对其进行了加密。生成的图像(Steganographied Image)为何仍为2.25Mb?不是应该变大吗?

评论

这取决于算法。请在您的问题中添加应用名称,

有趣的实验:使用无损压缩程序(bzip2,zip,gzip,xz ..)以相同的设置压缩原始图像和修改后的图像。您通常会发现原始压缩文件的大小小于生成的图像。对于压缩得很好的原始文档以及嵌入内容中相对较大的消息(尤其是加密的消息)而言,尤其如此。

@fgrieu我认为对于经验丰富的爱丽丝来说,这将是不确定的,尤其是使用最少的顺序或随机编码时。我没有意识到建模原始/压缩大小比率的概率分布,因此您甚至没有p值。我还怀疑不同的存档器对于不同级别的熵含量表现出不同的效率,这进一步增加了获得p值的难度。从1.0001的比率可以得出什么?

当前下载的应用程序:SteganographyX,QuickStego,Steghide,Xiao Steganography和SSuite

未压缩的光栅图像的文件大小不取决于其像素的颜色。 (主要是分辨率和颜色深度。)典型的视觉隐写算法对源图像的像素进行了几乎无法察觉的更改。 (这是一项有损操作。如果要从文件中删除隐写术部分,则将获得较不详细的图像版本,而不是原始版本。)仅更改未压缩栅格的像素(不更改色深(或调色板)大小)不会影响文件大小。

#1 楼

如果考虑以最简单的形式嵌入图像的机制,那么您要做的就是重新利用一些现有位。以下是有关隐写术的文章的Wikipedia摘录:例如,一个24位的位图使用8位来表示三个颜色值(红色,绿色和红色)。每个像素。单独的蓝色具有$ 2 ^ 8 {} {} $个不同级别的蓝色强度。蓝色强度的值在11111111和11111110之间的差异很可能是人眼无法检测到的。因此,最低有效位可以或多或少地不可检测地用于颜色信息以外的其他内容。如果对每个像素的绿色和红色元素也重复上述操作,则可以为每三个像素编码一个ASCII字母字母。


看起来像这样: -



,但您的消息是加密的。因此图像保持完全相同的大小。

您(和您的软件)面临的问题是您可以更改多少位并保持不被注意的状态?当然可以。上面的示例使用了两个,并且更改后的图像看起来很相似。那你能用三个吗?显然,七比特会完全破坏图像并向攻击者倾斜。在利用图像数字化过程带来的不可避免的噪声,艺术场景以及您喜欢生活的危险之间进行权衡。

从CMOS / CCD传感器的角度来看,蓝色通道通常是最嘈杂的。您可能无需人工检测即可将其他位注入该通道。

注意:有更高级的嵌入方法,可以更改JPEG文件中的离散余弦变换系数。这使JPEG隐藏了这种有损格式无法实现的消息。简介:在JPEG图像内部数据隐藏方面具有很好的高级方法摘要,使用新技术DCT-M3对隐写分析具有很高的抵抗力。

评论


$ \ begingroup $
是否所有隐写术都使用LSB方法?就像我如何分辨图像使用LSB而不是其他方法?
$ \ endgroup $
–马修·古德里普(Matthew Goodlip)
18-10-25在15:36

$ \ begingroup $
@MatthewGoodlip很难知道使用了哪种方法(加密),因为加密后的消息在计算上与自然存在的随机噪声无法区分。如果您拥有原始BMP,则两个BMP可能会逐像素不同,以突出显示更改。但这不适用于一对JPEG。
$ \ endgroup $
–Paul Uszak
18-10-25在15:55

$ \ begingroup $
@PaulUszak“由于加密的消息在计算上无法与自然存在的随机噪声区分开,因此很难说出使用哪种方法(加密),这是不正确的,相机传感器不会简单地产生随机噪声覆盖传感器。较暗的区域将比较亮的区域具有更多的噪音;不同的传感器会在不同区域产生噪声;还有一百万我没有考虑的其他因素。愚弄人很容易,愚弄计算机就困难得多。
$ \ endgroup $
–user60561
18-10-26在5:48

$ \ begingroup $
@ user60561然后调整您的Steno以合并这些属性。当原始噪声比用速记技术引入的噪声“响亮”时,也没有问题。
$ \ endgroup $
–棘轮怪胎
18-10-26在8:13

$ \ begingroup $
@ user60561同意。但是,如果它不是恒定值,爱丽丝将如何告诉鲍勃嵌入模式?您是否要为嵌入的标头块牺牲额外的(暗)位,详细说明随后的嵌入模式?
$ \ endgroup $
–Paul Uszak
18-10-27在1:45

#2 楼

我认为您需要了解隐秘术不会将数据添加到图像中,而是会替换图像中的某些原始数据。在您的情况下,替换的数据是特定颜色通道的LSB(最低有效位)。这些通道中LSB的原始值将丢失,您要隐藏的数据将被替换。因此,它不会给处理后的图像带来任何额外的大小(忽略可能会受到影响的压缩,但对于BMP而言,这是一些未经压缩的原始数据)。

评论


$ \ begingroup $
您的意思是隐秘术不会增加数据总量。但是它可以将密文添加到空的地方,这肯定是在添加数据。
$ \ endgroup $
–爱国者
19年7月2日在10:00

$ \ begingroup $
我不同意您的看法,因为隐写术实际上可以添加数据,而且仍然是隐写术。也许它不是很好,但是它仍然可以隐藏起来,尤其是在没有人看的情况下。
$ \ endgroup $
–爱国者
19年7月2日在10:03

#3 楼

隐写术的全部目标是,检查图像的人无法确定其中是否存在编码的消息。

现在,您的原始.BMP图像由1024x768 3字节值组成(红色,绿色和蓝色值)。

因为这是原始图像的格式,所以带有编码消息的图像必须具有相同的格式。如果隐密术更改了格式,则可能暗示该图像包含一条消息。相反,包含该消息的图像还必须包含1024x768 3字节值,因此它也是$ 1024 \ times 768 \ times 3 = 2.25 \ text {Meg} $ long。

评论


$ \ begingroup $
Aaaaa好的。现在,如果我说.. 5个做隐写术的应用程序..一些带有加密功能的应用程序只是将文本隐藏在图像中。如果所有应用程序都具有相同的2.25Mb大小结果,我如何比较它们?
$ \ endgroup $
–马修·古德里普(Matthew Goodlip)
18-10-25在15:35

$ \ begingroup $
@MatthewGoodlip:在什么条件下比较它们?
$ \ endgroup $
–雨披
18-10-25在20:10

$ \ begingroup $
例如,我需要得出一些结论。.尽管应用程序3使用了更好的加密方法,但是应用程序1比应用程序2更好地隐藏了文本。我的意思是,如果尺寸不可行,我应该相互比较
$ \ endgroup $
–马修·古德里普(Matthew Goodlip)
18-10-25在20:17

$ \ begingroup $
您只需要比较使用的加密即可。听起来像将数据编码到图像中对您而言并不那么重要。编码仅是安全性。加密是您所关心的,您可以自己比较它们。
$ \ endgroup $
–Rz Mk
18-10-25在23:33

$ \ begingroup $
@MatthewGoodlip:实际上,您应该将它们与隐写术的性能进行比较。对于加密,使用标准的加密工具对邮件进行加密非常容易,然后使用隐写工具对其进行编码
$ \ endgroup $
–雨披
18-10-26在21:01

#4 楼

您可以从问题中删除隐写术,并且仍然使用相同的答案。具有这些属性的位图将始终具有相同的大小。

1024 * 768像素*每24位像素/每字节8位/每千字节1024字节= 2304.0千字节/ 1024 = 2.25

应用程序和算法决定如何对数据进行编码。某些编码方法会更改或减少视觉外观,因此它可能会略过一些位以用于其他目的。例如,人们可以通过将每个字节更改为偶数/奇数来对图像中的数据进行编码,以便表示二进制数字(0或1)。奇偶流将成为您写入自己的数据的地方。像素会发生变化,但您不会注意到。

编辑:如果使用压缩的位图,则输出文件将按您预期的那样变大。这是因为压缩无法逃避添加新的唯一数据这一事实。

评论


$ \ begingroup $
您可以从问题中删除隐写术,但仍使用相同的答案。怎么样?
$ \ endgroup $
– kelalaka
18-10-25在23:48

$ \ begingroup $
具有这些属性的位图将始终具有相同的大小。 1024 * 768像素*每像素24位/每字节8位/每千字节1024字节= 2304.0千字节/ 1024 = 2.25
$ \ endgroup $
–Rz Mk
18-10-25在23:55

$ \ begingroup $
这是实际回答问题的唯一答案。其余的则由隐写术分散注意力。事实是,未压缩的图像已经达到最大(并且只有可能),这恰恰是因为未压缩!
$ \ endgroup $
– Pod
18-10-26在15:31