加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

警惕!原来截图上有看不见的个人水印代码

(2016-09-22 10:58:17)
标签:

杂谈

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

http://dingyue.nosdn.127.net/pyj9OatAnAX0OuAwccOIympddCU995vZT0eEuOi8Hbf1s1474512347946compressflag.png

在月饼事件中的新闻中提到。阿里对员工访问的界面做了一定的处理。貌似这不是简单的水印。这种处理是什么,是怎么做到的呢?

http://dingyue.nosdn.127.net/e6BBhZ7yiuJlpRwBblU8rLI1NzPWDefNEQWX7CKOR=bp81474512347946.jpg

 fuqiang liu,拖延症深度患者

看了除了 @大湿 其他人提出的都是空域算法,这些空域直接叠加的算法抗攻击性太差了。

就数字图像处理来说是叫做数字水印,不可见则被称为「盲水印技术」。现在加水印都是频域图片加水印。其算法有基于傅里叶变换,小波变换,分数阶傅里叶变换等。这些算法的基本思路是将图像变换成频域 / 小波域 / 分数阶频域,再将想加密的内容做变换,再叠加,之后做逆变换,形成加密图像。dct 和分数阶的方法一般加中频,想要攻击就要破坏图片内容。小波变换一般加在 LL2 LH2 HH2 HL2 中。

这类算法解密困难,你不知道加密者加在那个频段,而且受到攻击往往会破坏图像原本内容。其实解码的基本思想是滤波,可是,你要滤除哪个频段呢?正统是匹配滤波,可是不知道基频如何做呢?

我感觉阿里工程师还是很善良的,几乎就是应付 HR 需求,真要好好做的话,被动性解密(又被称为被动性攻击,即你不知道加密具体过程)图片就直接毁了的可能性比较大。那样图片如果不带水印的化无论如何也不会流出,带水印就能知道谁干的。

看评论和答案,有同学在说剪切涂抹等破坏水印的方法,这对空域的方法是有效的。频域加水印的目的就是防止水印被破坏,破坏方式包括旋转,剪切,缩放,涂抹,加噪等。心血来潮,简单介绍一下频域加水印的方法。这里采用最简单的傅里叶变换的方式。特别说明一下,我就是简单科普一下频域加水印,我给出的方法抗攻击性相对较差的,有兴趣可以了解小波方面的加水印方法,真正做的好的真心不怕大部分空域的操作。代码附在原答案后。(看有同学问小波的,其实思路都差不多,我在文章最后附上了 Haar 小波变换加水印的代码)

这是原图像,尺寸 300*240

http://dingyue.nosdn.127.net/uYdAlgg9U8RPpOghzIUN=75dmlvw4LclHgfCKunk62mOF1474512347948.jpg

这是我想加的水印,尺寸 200*100

http://dingyue.nosdn.127.net/fwPenpi5DmzkEtcatYAhUg2npmm1uxsaqO4nlld2kWSPF1474512347949.jpg

这是我编码后的水印,编码方式采用随机序列编码

http://dingyue.nosdn.127.net/rzS8hZFgK3ClFZbYIq428N3KrizHyYzWeetvGtrN1DomZ1474512347950.jpg

之后将原图像做傅里叶变换,与编码后的水印叠加,再作傅里叶逆变换,得到了加水印的图像

http://dingyue.nosdn.127.net/m1wDflzDCZfWwM1XLFiOJVsLBlGB3QWI2tgndPH6W2bOj1474512347950.jpg

肉眼几乎看不出来与原图像有什么区别,实际上是把水印已噪声的形式添加进去。

下图是在空域上的加水印图与原图的残差

http://dingyue.nosdn.127.net/=UNCLiRVdF696udSz0dI1dd=nMcnzbRgaXWHqP8WDXoW01474512347951.jpg

可以看出实际上就是添加冗余信息也就是噪声,但这些噪声遍布全图,在空域上并不容易破坏

最终,均方误差(MSE)为 0.0244

信噪比(PSNR)为 64.2dB

之后再进行水印提取

http://dingyue.nosdn.127.net/DB0cGZPkCUy2LQqVxo152EAFximICCSr50QUnZx0WPdPM1474512347952.jpg

这是一个很简单的 Demo,总得来说抗攻击性不强,现在利用小波、分数阶傅里叶变换所添加的盲水印抗攻击性好。

在文章最后附上了上述实验的源代码,以及 Harr 小波变换加水印的代码。

攻击实验区

下面进行抗攻击性测试

1.进行涂抹攻击,这是攻击后的图片,(在原加水印算法中,我调低了信噪比)

http://dingyue.nosdn.127.net/dPS4w9xhjwop97H0LmkRFFakwczXzvgkO706FgaGqzsRj1474512347953.jpg

再进行水印提取

http://dingyue.nosdn.127.net/7BaPbc6gwGseAtUldTfdkPVKDPpfP2DPEnqSSXxCOpTpC1474512347953.jpg

2.进行剪切攻击,就是网上经常用的截图截取一部分的情况

部分剪切的图像

http://dingyue.nosdn.127.net/xbhogaUV7nL1XKSHjnjyyx4AORtPZej8sWZVd3G6Qmaap1474512347954.jpg

进行循环补全:

http://dingyue.nosdn.127.net/CSBgtYfEKzxx1ePrlXApmC5FxF6hUVC9U4Uwmt0espO4E1474512347955.jpg

提取水印:

http://dingyue.nosdn.127.net/cg7qdts=PSdduqicr2oaZy4S4wWvk3HQD517pWUCmleQ91474512347955.jpg

5. 从 float32 量化到 uint8 的提取结果

http://dingyue.nosdn.127.net/gRR8qdlR26bEltRtHQR6Ft1H27cVqD8JtSq1tvASmMG261474512347956.jpg

6 JPEG 压缩后,(这个实验我好像是拿明码做的,能量主要加在了高频)

http://dingyue.nosdn.127.net/pST0ggGevcI5q8bW96QmhedQWqHIg8WDFVmxvoTeGwyLf1474512347957.jpg

提取结果

http://dingyue.nosdn.127.net/aKK95LDDOjPFiozbtN59CYjUJqNuTZxEM3Z1YZIoDy5Nn1474512347957.jpg

7.PS 4 像素马赛克 / 均值滤波 等

攻击后图像:(这是我女朋友吗?丑死了)

http://dingyue.nosdn.127.net/LMoufb3X7EZvcuyaasSLGseEb6k0kOH2FRMNaFl2AvF2B1474512347958.jpg

提取水印后图像:

http://dingyue.nosdn.127.net/oU9MZcX2ryMhUhHdJaBDaYS6jBVVgbisdxFeLeFqCq8xu1474512347958.jpg

8.截屏:

截屏后我手动抠出要测试的图像区域,并且抽样或者插值到原图尺寸

http://dingyue.nosdn.127.net/kODnD=U71NxQLlzSF6reuMSy3yKroprxV4DfV2IPv0RxP1474512347959.jpg

测试结果:

http://dingyue.nosdn.127.net/vU3L9DzHnsHAN85QyUzMoWoLzLzItH=BsLNlWrIKPVIQy1474512347959.jpg

9.对于背景纯色的图其实也是无所谓的

http://dingyue.nosdn.127.net/I3f2HVfKvvwhUIfTPARlJ7yLsEWU15utY3yM1V0kXxAq31474512347960.jpg

能量系数为 10 时加水印图片:觉得太显噪就把能量系数调低,不过水印的隐秘性和鲁棒性是互斥的

http://dingyue.nosdn.127.net/r7Ihm3=dE1piBbAULQq=u9JyEgo02AGpg6Rxzg13wUSvw1474512347961.jpg

最终提取出的水印:

http://dingyue.nosdn.127.net/UsfICMowHjfdUNS51hJnStfcoE1ROGWlQq=bC61ryph6R1474512347961.jpg

10.我用将 RGB>600 的像素设置成为(0,255,0)来模拟 PS 魔术手,

http://dingyue.nosdn.127.net/i307eNiWscS0PCpGMbTsW58TCv=EIolvi1tBNpNPK980q1474512347961.jpg

提取水印为:

http://dingyue.nosdn.127.net/eCEJyigX3191Td1gart8RfqYc9HR2M887u1rGFW6CNs7R1474512347962.jpg

11.屏摄,好吧,这个实验我做哭了

屏摄图:

http://dingyue.nosdn.127.net/cJBpzZjcDwlx4D8Yr8rjHcOjztv03pNT8IkhZBEhkhnJE1474512347963.jpg

实验结果:

http://dingyue.nosdn.127.net/f6X8fUYPu6nqafhTXvkir8RoLju102KGDjKjo37ol9HP91474512347963.jpg

我把水印能量系数调整到 2000 都没有用。

屏摄之后与原图信噪比为 4dB 左右,我用多抽样滤波的方式试过,滤不掉屏摄引入的噪声,屏摄不仅引入了椒盐噪声,乘性噪声,还有有规律的雪花纹理,求大神尝试一下。

我所用的这种方法针对屏摄不行,我试各种加放大器滤波器、还有多抽样滤波、谱增强等方法将近三个小时,没成功,哪位大神可以做一下或者讨论讨论。还有二值化不行,这是我想当然的,觉得肯定不行所以没做实验。其他的我试了试,用给出的方法调整一下能量系数都可以。

我想大家最关心的是什么最安全,不会被追踪。

不涉及图像的都安全,比如拿笔记下来。

涉及图像的屏摄最安全,截屏十分不安全。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有