图像准备工作流程的哪些方面会导致像鲍里斯约翰逊的第 10 条推文的“隐藏信息”这样的事故?

信息安全 图片
2021-08-25 03:15:33

据英国广播公司报道,鲍里斯·约翰逊在推特上发布的祝贺乔·拜登的图片在背景中包含“特朗普”文字的痕迹。BBC 文章链接到Guido Fawkes 的文章,当我下载推文的 JPEG 文件时,使用 macOS 预览转换为 PNG,然后减去恒定背景,就可以了!

当我在这篇文章中对图像中的空白区域进行类似检查时,我什么也没看到,即它起作用了。

我的目标是显示电池的图像,但要确保不会看到或检测到像电池序列号这样的个人信息。在互联网上分享它可能是一个小但非零的安全问题。

我松了一口气,但又想以备将来参考,以确保空白区域完全空白:

问题:图像准备工作流程的哪些方面会导致像鲍里斯约翰逊的第 10 条推文的“隐藏信息”这样的事故?为了避免这样的意外隐藏残留物,最突出的事情是避免做的事情是什么?

部分推文颜色已更改,以使文本“特朗普”可见。

import numpy as np
import matplotlib.pyplot as plt

# https://twitter.com/BorisJohnson/status/1325133262075940864/photo/1
# https://order-order.com/2020/11/10/number-10s-message-to-biden-originally-congratulated-trump/
# https://pbs.twimg.com/media/EmPRWjyVoAEBIBI?format=jpg
# https://pbs.twimg.com/media/EmPRWjyVoAEBIBI?format=jpg&name=4096x4096
# https://twitter.com/BorisJohnson/status/1325133262075940864


img = plt.imread('biden.png')

average = img[20:100, 20:100].mean(axis=(0, 1))

imgx = (img[..., :3] - average[:3]).clip(-0.005, 0.005) + 0.005
imgx = imgx.sum(axis=2)  # monochrome
imgx /= imgx.max()  # normalize

plt.imshow(imgx, cmap='cool')
plt.show()
4个回答

概括:

最可能的解释是使用模糊或平滑的橡皮擦工具删除了旧文本。

分析:

在下图中,我只增加了亮度和对比度以使“隐藏的信息”更加明显。没有什么花哨。轻微的红色只是因为原件的黑色背景带有非常轻微的红色。

在此处输入图像描述

如您所见,最明显的隐藏文本片段(在“共享优先级”下)有一个非常清晰的渐变。其他片段也显示出一些渐变的迹象,但没有在关于拜登的文本中使用渐变效果。

假设:

这些看似随机的渐变,再加上“隐藏的信息”似乎由大得多的文本的小随机片段组成,这让我觉得制作这张照片的人使用模糊橡皮擦工具删除了旧文本。他们手动在文本上来回滑动橡皮擦工具,直到他们不再看到旧文本。但是,如果您只快速通过一次,则模糊橡皮擦工具不会删除所有内容。这是为了避免图像中的锐利边缘而设计的。

在下面的图片中,我在原始图像上来回滑动了一个大的模糊橡皮擦几次,以显示结果可能是什么样子。显然,在我的照片中,有些部分仍然有点太明显,但我仍然认为它可以很好地了解这可能会导致什么类型的效果。

在此处输入图像描述

解决方案:

不要使用模糊橡皮擦工具来删除要完全删除的内容。在这种情况下,根本不需要使用橡皮擦工具。只需用背景颜色填充整个图像,或者甚至更好,只需从头开始创建一个新图像。他们唯一想要保留的是大小和背景颜色,而这应该只需要几秒钟就可以复制到新图像中。

更新:

根据@Tristan 在评论中的要求,我尝试完全复制该过程。这是一张图片,我用模糊橡皮擦工具删除了拜登/卡马拉文本,然后在上面放置了一个新文本:

在此处输入图像描述

这是同一张图片,但增加了亮度和对比度以突出显示旧文本的残余部分:

在此处输入图像描述

起初我认为这只是一个骗局,因为我知道没有任何数字图像处理可以偶然做到这一点,但我很感兴趣。

拍摄原始图像并对其执行均衡确实确实拉出了备用片段。它还揭示了黑色背景并不是真正的黑色,而是密集减色原色的合成。

这是均衡图像的一部分:

均衡和裁剪

我很确定出现此错误是因为该消息是在彩色激光打印机上打印并拍照(或扫描)的。

注意青色品红色黄色残留物。

隐藏信息”是上一次打印在感光鼓上留下少量碳粉的结果,该碳粉被下一次打印拾取。这在支持双面打印的打印机中最为常见。

那么如何预防呢?不要用相纸来制作数字内容。

我希望解释是相当平凡的。一张图像可能准备了 3 层:

  1. 背景颜色和页脚文本
  2. 特朗普文本
  3. 拜登文本

然后,您可以通过隐藏第 2 层或第 3 层来生成具有相同外观的两条消息。我想这里发生的事情是准备图像的人通过降低不透明度来隐藏第 2 层,并意外将其设置为接近 0 而不是 0。添加大量的 JPEG 压缩伪影,你会得到推文中看到的结果。

遵循此过程并创建 JPEG 会产生如下图像:

导出的图像

我相信您可以调整不透明度级别(我使用 1.6%)和 JPEG 质量,并获得替代文本肉眼不那么可见但仍存在于图像中的结果。

这是一个不透明度值较低的示例,我还添加了较小字体的“小文本”,与“拜登”部分重叠,较小的文本被 JPEG 伪影淹没,而“特朗普”则幸存下来。

导出的带有隐形王牌的图像

王牌完全可见

您可以通过准备两个单独的图像或在一个图像中使用图层时更加小心来避免这种情况。

虽然在这种特定情况下可能不是原因,但理论上它也可能是使用故意泄露编辑信息的工具的结果。

2008 年的 Underhanded C Contest中,参与者被要求编写一个图像编辑工具,该工具会泄露有关使用(传统黑色)矩形编辑的图像部分的信息。并以一种隐秘的、可否认的方式做到这一点。