良好的数字水印库

bri*_*kly 12 watermark steganography

有人可以帮助我,找到一个库,或者算法的详细描述,它可以将数字水印(不可见的水印,只是一种隐写术)嵌入到jpeg/png文件中.但算法的质量应该很棒.在旋转和扩展(如果可能)图像之后应该可以提取该标记.

马克只是一个关键的32字节.

我找到了一个很好的网站,但算法是针对NetPBM格式制作的,已经死了......

我知道有一种LSB方法,但它对扩展不稳定.还有更好的东西吗?

更改元数据是不合适的,因为它是可见的更改.

pis*_*che 9

这可能不是一个真正的答案,因为我认为在这个问题上给出一个神奇而准确的答案并不容易.水印很复杂,最好的方法就是自己做:这会让事情变成现实攻击者试图对代码进行反向工程更加困难.你甚至可以在这里阅读你的问题,猜猜你使用的库,并更容易攻击你的系统.

使隐写术无法在JPEG图像中进行扩展也非常困难,因为在扩展后重新应用JPEG压缩.实际上有一堆JPEG隐写算法.您应该使用哪一个,取决于您需要什么:

  • 数据机密性?
  • 消息存在机密性?
  • JPEG更改后的消息一致性?
  • 抵抗"已知封面"攻击(当攻击者试图根据隐写系统查找消息时)?
  • 抵抗"已知消息"攻击(当攻击者试图根据消息找到使用的隐写系统时)?

据我所知,通常,抵抗JPEG变化(图片再压缩)的算法通常更容易攻击,而 JPEG压缩期间(在DCT(有损)变换之后和霍夫曼之前运行"编码"阶段的算法) (无损)变换)更容易抵抗.

此外,关于隐写术的一个关键因素是缩放:如果您只有32字节的数据要编码,例如256*256px图像,请不要使用能够编码相同大小的512字节数据的算法.要么使用可扩展的算法,要么以有效的规模使用算法.

此外,做好隐写术的最佳方法是了解其局限性,并了解隐写分析器的工作原理.试试这些工具,这样你就可以了解攻击者会对你的图片做些什么.^

现在,我不能告诉你隐形系统对你来说最好,但我可以给你一些指示:

  • jSteg - 相当陈旧,我认为它不会抵制JPEG的变化
  • OutGuess - 相当老,但是最好的算法之一
  • F5(和F3/F4) - 最近,良好的算法,背后的科学研究.
  • stegHide

我认为所有这些都是基于LSB的:编码是 JPEG压缩期间,在DCT和量化之后完成的.唯一的非基于LSB隐写系统,我听到的是在mentionned 研究论文,但是,我没有把它读到结尾,所以我不能告诉这是否会满足您的需求.

但是,我不确定是否存在真正的隐写算法,可以抵抗JPEG压缩,JPEG调整大小和旋转,抵制视觉和统计攻击.或者我不知道.

对不起,由于缺乏准确的答案,我试着向你提供我对这个问题的了解,因为随时了解情况总是更好.对不起,因为缺乏正确的英语,我是法国人,没有人是完美的:)


小智 5

Pistache 在他告诉你的关于水印实现算法的方面是正确的。我将尝试通过针对给定要求展示一种算法来帮助您。

在首先向您解释算法之前,我想应该区分 JPG 和 PNG 格式。

  1. JPEG 是一种有损格式,图像易于压缩,可以去除水印。当您出于操作目的打开图像并保存它时,在写入过程中,会使用 DCT 过滤进行压缩,从而删除图像的一些重要组成部分。
  2. 另一方面,PNG 格式是无损的,这意味着图像在处理后存储时不易受到这种压缩。

事实上,JPEG 被用作水印方案攻击,因为它的压缩特性可以在攻击者执行压缩时去除水印。

既然您知道这两种格式之间的区别,我可以告诉您一个合适的算法来抵抗您提到的攻击。

关于为 PNG 文件嵌入水印消息的方法,您可以使用直方图嵌入方法。直方图嵌入方法通过更改相邻 bin 的值来更改直方图上的值。例如,假设您有一个灰度的 PNG 图像。因此,您将只有一个用于嵌入的通道,这意味着您有一个包含 256 个 bin 的直方图。通过选择相邻频点XX + 1中,将更改的值XX + 1由像素与亮移动XX + 1或反过来,使(X /(X + 1)) >T 用于嵌入“1”或 ((x+1)/x)>T 用于嵌入“0”。

您可以对整个直方图长度重复相同的过程,因此您可以嵌入最多 128 位的最佳情况。但是,此有效负载少于您所要求的。因此,我建议您将图像分割成多个部分,例如块,如果您将一个图像分割成 4 个组件,您将能够嵌入最多 512 位的最佳情况,这意味着 64 个字节。如果直接在空间域中应用,这种方法虽然非常容易受到过滤和压缩的影响。因此,我建议您在图像的 DWT 之前计算并使用其低频子带。这将为您提供更好的透明度和健壮性,以增加变形、调整大小等攻击以及压缩或过滤。

还有其他方法,例如 LPM(Log Polar Maps),但它们实施起来非常复杂,我认为对于您的情况,这种方法会很好。

我可以给你推荐两篇论文,第一篇是:

数字图像和视频数据的水印。最先进的概述

本文将为您提供水印的一些基本概念,并更详细地解释 LSB 算法。第二篇论文是:

实时压缩域视频水印抗几何失真

本文将解释我现在刚刚解释的算法。

干杯,