bri*_*kly 12 watermark steganography
有人可以帮助我,找到一个库,或者算法的详细描述,它可以将数字水印(不可见的水印,只是一种隐写术)嵌入到jpeg/png文件中.但算法的质量应该很棒.在旋转和扩展(如果可能)图像之后应该可以提取该标记.
马克只是一个关键的32字节.
我找到了一个很好的网站,但算法是针对NetPBM格式制作的,已经死了......
我知道有一种LSB方法,但它对扩展不稳定.还有更好的东西吗?
更改元数据是不合适的,因为它是可见的更改.
这可能不是一个真正的答案,因为我认为在这个问题上给出一个神奇而准确的答案并不容易.水印很复杂,最好的方法就是自己做:这会让事情变成现实攻击者试图对代码进行反向工程更加困难.你甚至可以在这里阅读你的问题,猜猜你使用的库,并更容易攻击你的系统.
使隐写术无法在JPEG图像中进行扩展也非常困难,因为在扩展后重新应用JPEG压缩.实际上有一堆JPEG隐写算法.您应该使用哪一个,取决于您需要什么:
据我所知,通常,抵抗JPEG变化(图片再压缩)的算法通常更容易攻击,而在 JPEG压缩期间(在DCT(有损)变换之后和霍夫曼之前运行"编码"阶段的算法) (无损)变换)更容易抵抗.
此外,关于隐写术的一个关键因素是缩放:如果您只有32字节的数据要编码,例如256*256px图像,请不要使用能够编码相同大小的512字节数据的算法.要么使用可扩展的算法,要么以有效的规模使用算法.
此外,做好隐写术的最佳方法是了解其局限性,并了解隐写分析器的工作原理.试试这些工具,这样你就可以了解攻击者会对你的图片做些什么.^
现在,我不能告诉你隐形系统对你来说最好,但我可以给你一些指示:
我认为所有这些都是基于LSB的:编码是在 JPEG压缩期间,在DCT和量化之后完成的.唯一的非基于LSB隐写系统,我听到的是在mentionned 该研究论文,但是,我没有把它读到结尾,所以我不能告诉这是否会满足您的需求.
但是,我不确定是否存在真正的隐写算法,可以抵抗JPEG压缩,JPEG调整大小和旋转,抵制视觉和统计攻击.或者我不知道.
对不起,由于缺乏准确的答案,我试着向你提供我对这个问题的了解,因为随时了解情况总是更好.对不起,因为缺乏正确的英语,我是法国人,没有人是完美的:)
小智 5
Pistache 在他告诉你的关于水印实现算法的方面是正确的。我将尝试通过针对给定要求展示一种算法来帮助您。
在首先向您解释算法之前,我想应该区分 JPG 和 PNG 格式。
事实上,JPEG 被用作水印方案攻击,因为它的压缩特性可以在攻击者执行压缩时去除水印。
既然您知道这两种格式之间的区别,我可以告诉您一个合适的算法来抵抗您提到的攻击。
关于为 PNG 文件嵌入水印消息的方法,您可以使用直方图嵌入方法。直方图嵌入方法通过更改相邻 bin 的值来更改直方图上的值。例如,假设您有一个灰度的 PNG 图像。因此,您将只有一个用于嵌入的通道,这意味着您有一个包含 256 个 bin 的直方图。通过选择相邻频点X和X + 1中,将更改的值X和X + 1由像素与亮移动X至X + 1或反过来,使(X /(X + 1)) >T 用于嵌入“1”或 ((x+1)/x)>T 用于嵌入“0”。
您可以对整个直方图长度重复相同的过程,因此您可以嵌入最多 128 位的最佳情况。但是,此有效负载少于您所要求的。因此,我建议您将图像分割成多个部分,例如块,如果您将一个图像分割成 4 个组件,您将能够嵌入最多 512 位的最佳情况,这意味着 64 个字节。如果直接在空间域中应用,这种方法虽然非常容易受到过滤和压缩的影响。因此,我建议您在图像的 DWT 之前计算并使用其低频子带。这将为您提供更好的透明度和健壮性,以增加变形、调整大小等攻击以及压缩或过滤。
还有其他方法,例如 LPM(Log Polar Maps),但它们实施起来非常复杂,我认为对于您的情况,这种方法会很好。
我可以给你推荐两篇论文,第一篇是:
本文将为您提供水印的一些基本概念,并更详细地解释 LSB 算法。第二篇论文是:
本文将解释我现在刚刚解释的算法。
干杯,