图像隐写术和跟踪

信息安全 隐写术 drm
2021-09-05 09:31:21

我们正在运行一个在线新闻媒体库。在这个网站上,许多品牌都在上传图片,而跟踪媒体用户则下载并查看每张图片。但是一些品牌现在想在图像中添加唯一代码,以便他们可以跟踪自己的图像。

我们尝试了一些隐写工具:

  1. http://www.outguess.org/info.php支持JPG
  2. http://www.imagemagick.org/Usage/transform/#stegano支持PNG

两者都可以正常工作,但问题是图像调整大小或裁剪后安全代码消失了。

简单的方法是水印,但我们不想干扰图像,因为图像被用于印刷。

有没有办法将安全代码放入JPG格式的图像中,并在调整或裁剪该图像后跟踪该代码?

更新

我们的品牌希望将它们发布为网络图像(精简版),因此新闻用户可以在博客和论坛上使用图像。

我们将从爬虫引擎(约 4500 个博客)定位新闻博客/论坛网站,并检查我们的图片是否存在于这些博客中。

3个回答

您可以通过两种方式向 JPEG 图像添加信息:

  • 您从任何图像数据中添加信息,即 JPEG 标头
  • 你在图片数据中添加信息,也就是说你修改图片

只需从标头中删除相关数据即可轻松绕过第一种技术。

第二种技术可以分解为:

  • 水印
  • 隐写术

当您想在图像中分发信息并希望尽可能保持隐秘时,使用隐写术。您并没有说您将信息放入图像中,并且您尽一切努力尽量减少对图像统计数据的影响。

水印主要用于DRM目的,您希望将信息放入图像中并确保在对该图像进行修改时保留它(它被称为鲁棒水印)。鲁棒性通常以图像更改为代价(我们可以在这里说退化),没有实际的方法可以在不“干扰”图像的情况下实现鲁棒水印。水印技术有很多很多(对于这个问题来说是题外话),它们具有不同类型的鲁棒性(包括裁剪和调整大小),对质量的影响也不同。你应该问谷歌学者。

您最好准备两份图像,一份用于在线展示(带水印),一份用于打印(不带水印)。

编辑:因为你还不相信,这里有一些相关文章的链接:

它们应该让您对水印状态及其属性和可能的​​攻击有一个很好的概述。

如需进一步查询,请访问:https ://scholar.google.com/

仅仅将这些信息添加为 JPEG EXIF 数据,您可能会获得很好的效果,这些数据可以在大多数现代图像处理中幸存下来……但很容易被想要删除它的人删除。(缺点:PNG、GIF 和 JPEG 2000 不支持 EXIF。请参阅下面的 XMP 更新,它没有这个问题。)

重申一下,EXIF 数据组织得很好,易于查看,易于删除(或修改),因此它不是安全解决方案,但我认为您不会找到一个可行的安全解决方案而不给图像加水印。

如果您不希望人们看到内容,请将其加密或使用需要在您的数据库中查找的代码。然后有人可以做的就是删除它或修改它(这将破坏它)。

当然,如果数据库在桌面上,您也许可以保存图像的 32x32 像素灰度版本并将其用作哈希(您会惊讶于碰撞次数很少)。这将在调整大小和较小的颜色校正后仍然存在,但它不会在激进的裁剪或其他操作中存在。

EXIF 和 db 不是互斥的;你可以两者都做。


更新:我写了这篇关于 EXIF 的文章,它得到了很好的理解和支持,但只支持 JPEG。您可以考虑XMP,它支持几乎所有的图像类型(以及其他类型,例如 PDF 和 MP3)。我不确定它是否能够在可能不支持它的编辑器所做的编辑中幸存下来,但它看起来很受支持。

XMP 维基百科文章没有提到ImageMagick支持,快速的网络搜索显示ImageMagick 可能支持 XMP 数据您需要在部署之前验证这一点。如果 ImageMagick 的编辑最终将其删除,我建议不要使用 XMP。(ImageMagick 在 Web 应用程序和 shell 脚本中非常常见。)

您可能正在处理丢失隐藏数据的两种不同原因:

  • 调整大小:此操作将使用图像缩放算法来创建图像的新缩放版本,所有像素数据(包括您的隐藏数据)都将丢失。
  • 裁剪:一些隐藏数据可能存储在裁剪删除的区域中,然后通常在保存裁剪后的图像时,将应用新的 jpeg 压缩通道,这也会破坏隐藏数据。

我很确定像 Getty 这样的图像所有者使用复杂的算法来确定给定图像是否与其库中的图像匹配。如果不使用水印(图像上可见的东西),恐怕我想不出另一种选择(好吧,无论如何都不容易删除)。

希望这可以帮助!