1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

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

本帖由 漂亮的石头2016-09-20 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    487,766
    赞:
    47
    日报标题:泄露内部信息丢了工作,因为截图上「看不见的水印」


    [​IMG]

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

    [​IMG] fuqiang liu,拖延症深度患者

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

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

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

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

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

    这是原图像,尺寸 300*240

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

    [​IMG]

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

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

    [​IMG]

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

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

    信噪比(PSNR)为 64.2dB

    之后再进行水印提取

    [​IMG]

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

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

    攻击实验区

    下面进行抗攻击性测试

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

    [​IMG]

    再进行水印提取

    [​IMG]

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

    部分剪切的图像

    [​IMG]

    进行循环补全:

    [​IMG]

    提取水印:

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    提取结果

    [​IMG]

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

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

    [​IMG]

    提取水印后图像:

    [​IMG]

    8.截屏:

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

    [​IMG]

    测试结果:

    [​IMG]

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

    [​IMG]

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

    [​IMG]

    最终提取出的水印:

    [​IMG]

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

    [​IMG]

    提取水印为:

    [​IMG]

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

    屏摄图:

    [​IMG]

    实验结果:

    [​IMG]

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

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

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

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

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

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


    以下是源代码:

    %% 运行环境 Matlab2010a

    clc;clear;close all;

    alpha = 1;

    %% read data

    im = double(imread('gl1.jpg'))/255;

    mark = double(imread('watermark.jpg'))/255;

    figure, imshow(im),title('original image');

    figure, imshow(mark),title('watermark');

    ……(阅读完整代码请点击「查看知乎讨论」查看)

    阅读原文
     
正在加载...