阿里巴巴公司根据截图查到泄露信息的具体员工的技术是什么?

https://www.zhihu.com/question/50735753/answer/122717091

 

作者:fuqiang liu
链接:https://www.zhihu.com/question/50735753/answer/122593277
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文通过一个的实验,简要介绍频域手段添加数字盲水印的方法,并进一步验证其抗攻击性。在上述实验的基础上,总结躲避数字盲水印的方法。(多图预警

本文分为五个部分,第一部分综述;第二部分频域数字盲水印制作原理介绍;第三部分盲水印攻击性实验;第四部分总结;第五部分附录(源代码)。

一、综述
本文提供的一种实现“阿里通过肉眼无法识别的标识码追踪员工”的技术手段。通过看其他答主的分析,阿里可能还没用到频域加水印的技术。

相对于空域方法,频域加盲水印的方法隐匿性更强,抵抗攻击能力更强。这类算法解水印困难,你不知道水印加在那个频段,而且受到攻击往往会破坏图像原本内容。本文简要科普通过频域手段添加数字盲水印。对于web,可以添加一个背景图片,来追踪截图者。

所谓盲水印,是指人感知不到的水印,包括看不到听不见(没错,数字盲水印也能够用于音频)。其主要应用于音像作品、数字图书等,目的是,在不破坏原始作品的情况下,实现版权的防护与追踪。

添加数字盲水印的方法简单可分为空域方法和频域方法,这两种方法添加了冗余信息,但在编码和压缩情况不变的情况下,不会使原始图像大小产生变化(原来是10MB添加盲水印之后还是10MB)。

空域是指空间域,我们日常所见的图像就是空域。空域添加数字水印的方法是在空间域直接对图像操作(之所以说的这么绕,是因为不仅仅原图是空域,原图的差分等等也是空域),比如将水印直接叠加在图像上。

我们常说一个音有多高,这个音高是指频率;同样,图像灰度变化强烈的情况,也可以视为图像的频率。频域添加数字水印的方法,是指通过某种变换手段(傅里叶变换,离散余弦变换,小波变换等)将图像变换到频域(小波域),在频域对图像添加水印,再通过逆变换,将图像转换为空间域。相对于空域手段,频域手段隐匿性更强,抗攻击性更高

所谓对水印的攻击,是指破坏水印,包括涂抹,剪切,放缩,旋转,压缩,加噪,滤波等。数字盲水印不仅仅要敏捷性高(不被人抓到),也要防御性强(抗打)。就像Dota的敏捷英雄往往是脆皮,数字盲水印的隐匿性和鲁棒性是互斥的。(鲁棒性是抗攻击性的学术名字)

二、频域制作数字盲水印的方法
信号是有频率的,一个信号可以看做是无数个不同阶的正弦信号的的叠加。
F(\omega)=\int_{-\infty }^{+\infty }  f(t)e^{-i\omega t}dt
上式为傅里叶变换公式,f(t)是指时域信号(对于信号我们说时域,因为是与时间有关的,而图像我们往往说空域,与空间有关),\omega是指频率。想要对傅里叶变换有深入了解的同学,建议看一下《信号与系统》或者《数字信号处理》的教材,里面系统介绍了傅里叶变换、快速傅里叶变换、拉普拉斯变换、z变换等。

简而言之,我们有方法将时域信号转换成为频域,同样,我们也能将二维信号(图像)转换为频域。在上文中提到,图像的频率是指图像灰度变换的强烈情况。关于此方面更系统的知识,参见冈萨雷斯的《图像处理》。

下面以傅里叶变换为例,介绍通过频域给图像添加数字盲水印的方法。 注意,因为图像是 离散信号,我们实际用的是 离散傅里叶变换,在本文采用的都是 二维快速傅里叶变换,快速傅里叶变换与离散时间傅里叶变换等价,通过蝶型归并的手段,速度更快。下文中傅里叶变换均为二维快速傅里叶变换。
<img src="https://i-blog.csdnimg.cn/blog_migrate/ca8e5734c503f494b8f0a78bd5f31cc7.jpeg" data-rawwidth="1164" data-rawheight="342" class="origin_image zh-lightbox-thumb" width="1164" data-original="https://pic3.zhimg.com/0be43f107d18f57dd72bc214498f9a76_r.jpg">上图为叠加数字盲水印的基本流程。编码的目的有二,一是对水印加密,二控制水印能量的分布。以下是叠加数字盲水印的实验。

上图为叠加数字盲水印的基本流程。编码的目的有二,一是对水印加密,二控制水印能量的分布。以下是叠加数字盲水印的实验。

这是原图像,尺寸300*240 (不要问我为什么不用Lena,那是我前女友),
<img src="https://i-blog.csdnimg.cn/blog_migrate/709aae186b33a6880954bc9948f4089e.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
之后进行傅里叶变换,下图变换后的频域图像,
<img src="https://i-blog.csdnimg.cn/blog_migrate/af8bb1e1f0db7bf68f30bba921eb221d.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
这是我想加的水印,尺寸200*100,
<img src="https://i-blog.csdnimg.cn/blog_migrate/4da2e1eda5801feebfc3e354bc8d84a2.jpeg" data-rawwidth="200" data-rawheight="100" class="content_image" width="200">
这是我编码后的水印,编码方式采用随机序列编码,通过编码,水印分布到随机分布到各个频率,并且对水印进行了加密,
<img src="https://i-blog.csdnimg.cn/blog_migrate/5fa09ed124cb83f1171fa7ff0b7d59e4.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
将上图与原图的频谱叠加,可见图像的频谱已经发生了巨大的变化,
<img src="https://i-blog.csdnimg.cn/blog_migrate/cadfbb6928f6e6ed4a385e0d759f176a.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
之后,将叠加水印的频谱进行傅里叶逆变换,得到叠加数字水印后的图像,
<img src="https://i-blog.csdnimg.cn/blog_migrate/201616ef01f79eab03280d0d24b15d48.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
肉眼几乎看不出叠加水印后的图像与原图的差异,这样,数字盲水印已经叠加到图像中去。
实际上,我们是把水印以噪声的形式添加到原图像中。
下图是在空域上的加水印图与原图的残差(调整了对比度,不然残差调小看不见),
<img src="https://i-blog.csdnimg.cn/blog_migrate/c6cde565c95b26be549236517f968c68.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">

可以看出,实际上上述方法是通过频域添加冗余信息(像噪声一样)。这些噪声遍布全图,在空域上并不容易破坏。
最终,均方误差(MSE)为0.0244
信噪比(PSNR)为64.2dB

那么,为什么频谱发生了巨大的变化,而在空域却变化如此小呢?这是因为我们避开了图像的主要频率。下图是原图频谱竖过来的样子,其能量主要集中在低频。
<img src="https://i-blog.csdnimg.cn/blog_migrate/caea4a518a2cdf817ce4fa5f3d0382c9.jpeg" data-rawwidth="561" data-rawheight="420" class="origin_image zh-lightbox-thumb" width="561" data-original="https://pic3.zhimg.com/497b039be857a52ebdd060fe59da58ca_r.jpg">水印提取是水印叠加的逆过程, 水印提取是水印叠加的逆过程,
<img src="https://i-blog.csdnimg.cn/blog_migrate/3a0a52d9c59f939c0c6679042ad8d76a.jpeg" data-rawwidth="1158" data-rawheight="318" class="origin_image zh-lightbox-thumb" width="1158" data-original="https://pic2.zhimg.com/4f09483bfa5e0601aa77ed516bdf46fd_r.jpg">
经提取后,我们得到如下水印, 问:为什么水印要对称呢?嘿嘿,大家想想看。
<img src="https://i-blog.csdnimg.cn/blog_migrate/64d44002b3ce6c7b18f0497c92f63eb0.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
三、攻击性实验
本部分进行攻击性实验,来验证通过频域手段叠加数字盲水印的鲁棒性。
1.进行涂抹攻击,这是攻击后的图片:
<img src="https://i-blog.csdnimg.cn/blog_migrate/0305e00d03e618d96f1ea0507d7a832e.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
再进行水印提取:
<img src="https://i-blog.csdnimg.cn/blog_migrate/80695975e522afd01ee44e03bdb78626.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
2.进行剪切攻击,就是网上经常用的截图截取一部分的情况:
<img src="https://i-blog.csdnimg.cn/blog_migrate/5af5a8e1cf8d702e52b26703f55e8666.jpeg" data-rawwidth="240" data-rawheight="240" class="content_image" width="240">
进行循环补全:
<img src="https://i-blog.csdnimg.cn/blog_migrate/7c77514c1bacd60d6e74886f9a3438c4.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
提取水印:
<img src="https://i-blog.csdnimg.cn/blog_migrate/f1ccfeb31be1aa79a29311dea1afeec5.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
3.伸缩攻击(这个实验明码做的,水印能量较高,隐匿性不强):
<img src="https://i-blog.csdnimg.cn/blog_migrate/42ce30f6bbe46fd689e9720025b12337.jpeg" data-rawwidth="150" data-rawheight="120" class="content_image" width="150">
提取水印(水印加的不好,混频挺严重的):
<img src="https://i-blog.csdnimg.cn/blog_migrate/8e5d924ccf5f33b07606eb297d598617.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
4.旋转攻击(明码):
<img src="https://i-blog.csdnimg.cn/blog_migrate/5803918084bf4309cf607be2dcd73c04.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
提取水印:
<img src="https://i-blog.csdnimg.cn/blog_migrate/056ca5415de3cb626dc5e91e76a8235e.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
5.JPEG压缩后(这个实验我好像是拿明码做的,能量主要加在了高频):
<img src="https://i-blog.csdnimg.cn/blog_migrate/adc3d6da9c2f4fb371aa5e51e28db58f.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
提取结果:
<img src="https://i-blog.csdnimg.cn/blog_migrate/269182e977a0ff928f5a75ebb8b10dc2.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
6.PS 4像素马赛克/均值滤波等,攻击后图像(这是我女朋友吗?丑死了):
<img src="https://i-blog.csdnimg.cn/blog_migrate/f49c9f92b4de44962ee65249bb3bbfe0.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
提取水印后图像:
<img src="https://i-blog.csdnimg.cn/blog_migrate/770eb77506359484ad2ea43fef734870.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
7.截屏,
截屏后我手动抠出要测试的图像区域,并且抽样或者插值到原图尺寸:
<img src="https://i-blog.csdnimg.cn/blog_migrate/6fcd01345443b98bc5c4c1b8214b38f5.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
测试结果:
<img src="https://i-blog.csdnimg.cn/blog_migrate/47764f48755c614fdb55256e85d54a1d.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
8. 亮度调节(明码):
<img src="https://i-blog.csdnimg.cn/blog_migrate/3194fdf06bd57e04b0440a3f11b242eb.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
水印提取:
<img src="https://i-blog.csdnimg.cn/blog_migrate/f8c84e55769d5e2a8cc551017fa57446.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
9.色相调节(明码):
<img src="https://i-blog.csdnimg.cn/blog_migrate/1b54054364ff32f7f8eb4f49aad0c4b3.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
水印提取:
<img src="https://i-blog.csdnimg.cn/blog_migrate/b51168ae0690c9086cd62591d2e46333.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
10.饱和度调节(明码):
<img src="https://i-blog.csdnimg.cn/blog_migrate/6e1377a6ea76085f6aba800d6b990b2b.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
水印:
<img src="https://i-blog.csdnimg.cn/blog_migrate/17ace1e73935c1c09dfde40c66a68db1.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
11.对比度(明码):
<img src="https://i-blog.csdnimg.cn/blog_migrate/403cf765c487f58b9f78d84f9acdcc2b.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
水印:
<img src="https://i-blog.csdnimg.cn/blog_migrate/b55b59887aa9e115ac57631c146a1da7.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">

12.评论区用waifu2x去噪后图片:
<img src="https://i-blog.csdnimg.cn/blog_migrate/de7c9be130cc2a32ff23b5a13acfd99a.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
解水印:
<img src="https://i-blog.csdnimg.cn/blog_migrate/43470796e9f1094ea325be83f20eafc9.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
13.美图秀秀,我对我女票一键美颜,美白,磨皮,加腮红,加唇彩(有一种很羞耻的感觉,捂脸):
<img src="https://i-blog.csdnimg.cn/blog_migrate/ba98b89a128b86aaa89dd9d28f57ca62.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
提取水印:
<img src="https://i-blog.csdnimg.cn/blog_migrate/43470796e9f1094ea325be83f20eafc9.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
14.对于背景纯色的图其实也是无所谓的
<img src="https://i-blog.csdnimg.cn/blog_migrate/ae63b16d6f37a859592d32797b81d361.jpeg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320">能量系数为10时加水印图片:觉得太显噪就把能量系数调低,不过水印的隐秘性和鲁棒性是互斥的 能量系数为10时加水印图片:觉得太显噪就把能量系数调低,不过水印的隐秘性和鲁棒性是互斥的
<img src="https://i-blog.csdnimg.cn/blog_migrate/90fed647353d22ea42fadb8356bd4ccf.jpeg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320">
最终提取出的水印:
<img src="https://i-blog.csdnimg.cn/blog_migrate/5b7204edd966fc007b9f0890ffddde68.jpeg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320">
15.我用将RGB>600的像素设置成为(0,255,0)来模拟PS魔术手,
<img src="https://i-blog.csdnimg.cn/blog_migrate/f5fe49d8fb96410542c5d5661b728e6c.jpeg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320">
提取水印为:
<img src="https://i-blog.csdnimg.cn/blog_migrate/8392f28bef0699d61039d33c79d3b5fe.jpeg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320">
16.屏摄,好吧,这个实验我做哭了
屏摄图:
<img src="https://i-blog.csdnimg.cn/blog_migrate/5d7e710a318f9eb1c7597c4ba8657144.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">
实验结果:
<img src="https://i-blog.csdnimg.cn/blog_migrate/5ae03b40c9d31fdef3cebfd4971743cb.jpeg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300">

我把水印能量系数调整到2000都没有用。
屏摄之后与原图信噪比为4dB左右,我用多抽样滤波的方式试过,滤不掉屏摄引入的噪声。屏摄不仅引入了椒盐噪声,乘性噪声,还有有规律的雪花纹理(摩尔纹)。

四、总结
基于频域的盲水印方法隐藏性强,鲁棒性高,能够抵御大部分攻击。但是,对于盲水印算法,鲁棒性和隐匿性是互斥的。

本文方法针对屏摄不行,我多次实验没有成功,哪位大神可以做一下或者讨论讨论。还有二值化不行,这是我想当然的,觉得肯定不行所以没做实验。其他的我试了试,用给出的方法调整一下能量系数都可以。

我想大家最关心的是什么最安全,不会被追踪。
不涉及图像的都安全,比如拿笔记下来。
涉及图像的屏摄最安全
截屏十分不安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值