明明没有水印,为什么还是知道截图的人?多益是怎么做到的?


明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
最近 , 广州多益公司的一则主动降薪通知上了头条 , 作为吃瓜群众中的一员 , 在震惊多益负责人迷之操作之余 , 也对他们是如何通过截图找到举报人产生了好奇 。
“不是没人见过截图过程吗?” , “截图上不是没有水印吗?” 。
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
前段时间 , 在一篇关于暗水印的文章上 , 我找到了答案 。 根据文章介绍 , 定位截图人 , 目前除了显式水印 , 还有两种比较隐蔽的方法 。 一种是通过监听用户的截图事件 , 在截图的时候通过服务器上报截图人信息 。 另外一种是事先在需要防止截图的数据中植入用户信息 , 形成数字水印 。
1、基于监听截图事件 , 上报截图人信息【明明没有水印,为什么还是知道截图的人?多益是怎么做到的?】这种方式实现起来较为简单 , 目前主流的操作系统基本上都有与监听截图事件相关的接口 。 比如:
在安卓中:

  • 利用FileObserver监听某个目录中资源变化情况
  • 利用ContentObserver监听全部资源的变化
  • 监听截屏快捷按键 ( 由于厂商自定义Android系统的多样性 , 再加上快捷键的不同以及第三方应用 , 监听截屏快捷键这事基本不靠谱 , 可以直接忽略 )

明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
在IOS中:
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
不过 , 由于这种方法依赖于上报 , 所以如果网络出现问题 , 那用户信息上报也可能会出现问题 。
2、基于植入关于用户信息的数字水印这种方式不依赖于客户端的上报 , 而且安全性也比较高 , 在很多场景下都有应用 。
数字水印技术是一种基于内容的、非密码机制的计算机信息隐藏技术 。 是保护信息安全、实现防伪溯源、版权保护的有效办法 。 是信息隐藏技术研究领域的重要分支和研究方向 。 数字水印一般分为明水印与暗水印 。 多数职场人都了解明水印 , 但对于暗水印基本属于无知状态 。 因为明水印打在背景上 , 肉眼可见 , 还很容易被移除 , 但暗水印肉眼是不可见的 , 且较难移除 。 (注:暗水印 , 是指人感知不到的水印 , 不但你看不到 , 即使嵌入音频里 , 你也听不见)
下面我们拿网上一名网友的图做个案例 。
1、添加水印
添加水印的过程是一个编码的过程 。
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
如上原图 , 尺寸300*240 。 进行傅里叶变换后 , 生成如下频域图像:
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
下图是要加的水印 , 尺寸200*100 。
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
进行编码后 , 生成如下图像:
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
说明:编码方式采用随机序列编码 , 通过编码 , 水印分布到随机分布到各个频率 , 并且对水印进行了加密 。
将上图与原图的频谱叠加 , 生成如下新的图像 。
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
从上图可见 , 新的叠加图像的频谱已经发生了巨大的变化 。 此时 , 如果再将叠加水印的频谱进行傅里叶逆变换 , 就可以得到叠加数字水印后的图像了 。 如下:
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
从上图看 , 肉眼几乎看不出叠加水印后的图像与原图的差异 。
原图添加暗水印的过程 , 实际上是把水印以噪声的形式添加到原图像中 。 下图是在空域上的加水印图与原图的残差(调整了对比度 , 不然残差调小看不见)
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
可以看出 , 实际上上述方法是通过频域添加冗余信息(像噪声一样) 。 这些噪声遍布全图 , 在空域上并不容易破坏 。
2、提取水印
水印提取是一个解码的过程 , 与水印叠加的过程相反 。
明明没有水印,为什么还是知道截图的人?多益是怎么做到的?文章插图
如下是截屏后我手动抠出要测试的图像区域 , 并且抽样或者插值到原图尺寸 ,