=Start=
缘由:
前段时间有个数据泄露溯源的case涉及到了水印相关的知识,之前我对水印尤其是暗水印的了解不够清楚,后来通过查阅大量网页整理了一下相关内容,方便以后参考。
尤其是结论——有事没事都不要乱截图,如果是敏感内容,回溯追踪的实现方式(包括但不限于明、暗水印)很多,总有一种你不知道或者没有规避的,会据此找到你。需要各位加深印象,做好保护(不光是保护敏感数据不泄漏,这也是打工人自我保护的一个方面)。
正文:
参考解答:
总结一下
- 对于你不知道是否添加隐藏水印的系统/应用——最多只能简单试试,无法保证判断结论(是否已被添加水印)的准确性
- 对于确认已添加水印的系统/应用——很难清除
上网还是需要多多留意——上网不涉密,涉密不上网;
目前来看去除隐藏水印的难度很大,效果不好(主要难度在于你并不清楚添加了哪种/哪几种类型的水印,去除是否成功、全面)。
这种水印一般都是加到频域里面的,很难清除(除非你基于原始文本内容重新绘制,但这种难度很高,而且还可能会丢掉一些其他内容)。
- 最好的做法是——有事没事都不要乱截图,如果是敏感内容,回溯追踪的实现方式(包括但不限于明、暗水印)很多,总有一种你不知道或者没有规避的,会据此找到你。
最近又刷到了豆瓣一类软件含有隐藏水印的视频,因为某人的截图锁定到了他,把他的账号封停,感觉挺恐怖的。想问一下有没有什么方法或者软件可以防止或者查看这类水印。
贴个之前看到的。**首先,你在截图操作的瞬间,尤其是各家开发的内网的办公软件,客户端首先就能感知到你有没有截图,iOS甚至有这个API,Android也能通过监听截图保存路径实现,做过移动端开发的人应该都有所了解。所以你在什么时间、什么页面截了图,其实都能记录下来并上传服务器的。**
+
**除了截图操作之外,复制等可能会引起数据泄露的操作都有类似的API或是其它方式感知操作的行为。**
==
目前来看去除隐藏水印的难度很大. 效果不好.
=
上网还是需要多多留意
=
这种水印一般都是加到频域里面的,很难清除
图片盲水印查看器(图片LSB查看器)类似于StegSolve,能够查看图片各通道的最低位(LSB)信息,支持 R/G/B/A Plane 0/1/2 模式,方便查看图片是否添加了盲水印信息。
# 关于图片LSB隐写
LSB算法:最低有效位(英语:Least Significant Bit,LSB)是指一个二进制数字中的第0位(即最低位),权值为2^0,可以用它来检测数的奇偶性。其应用场景一般为隐藏明文或加密过的数据图片中,增加用户分析或破解敏感信息的难度。
LSB隐写原理就是图片中的像素一般是由三种颜色组成,即三原色(红绿蓝),由这三种原色可以组成其他各种颜色,在PNG图片的存储中,每个颜色占有8bit,即有256种颜色,一共包含256的三次方颜色,即16777216中颜色,而人类的眼睛可以区分约1,000万种不同的颜色,剩下无法区分的颜色就有6777216。LSB隐写就是修改了像素中的最低位,把一些信息隐藏起来。PNG图片是一种无损压缩,也只有在无损压缩或无压缩的图片(BMP图片是一种无压缩)上实现LSB隐写。如果是JPG图片,就没办法使用LSB隐写了。
# 关于盲水印
水印包括明水印和盲水印,我们通常说的水印指明水印,即能用肉眼直接看出来的水印。盲水印则不像明水印那样,能用肉眼直接看出来,通常是采用一些技术(比如LSB隐写)将一些能标识数据(比如:图片作者、所在网站(平台)或发布图片的当事人信息)写入被保护的图片中。盲水印相对于明水印更加隐蔽,不易察觉。另外,明水印可轻易地通过打马赛克、P图工具消除,而消除盲水印则有一定难度和技术门槛。
**广义来说,暗水印可以理解为,在一些载体数据中添加隐藏标记,这些标记在人类和机器可轻易感知的范围之外。**相较于常见的明水印,比如图片和视频中的公司logo、纸币中的水印纹理等。暗水印对大部分感知系统来说是透明的,不可见的。
基于图像的暗水印技术是暗水印里面最成熟的一种,嵌入方法也多种多样。根据嵌入维度不同,又可以细分为空域水印和变换域水印。空域水印可以简单的理解为直接对解码后的图像像素值进行编辑和嵌入信息;变换域水印是将图像的像素信息转换到变换域,然后在变换域添加信息后再转换到空域,这个过程中空域信息也会被修改。所以变换域水印也可以理解为间接的空域水印。
1.2.1.1 空域水印
直接选取空域特定位置的像素值进行修改来嵌入信息。空间域水印的难点在于如何在空域选择水印区域和在水印块中如何嵌入数据。根据水印区域选取方式不同可分为下面几种。
Least Significant Bits(LSB)水印这个方法简单粗暴,直接在图像的像素值上进行修改。假设水印载体为颜色深度8bit的RGB图像,水印信息为二值化图像。
1. 加水印过程
对原始图像的最后1bit(最低位)置零,
将用二进制表示的版权信息,赋值给原始图像的最后1bit,实现版权信息写入。(写入后原始图像像素值改变幅度为1)
2. 解水印过程
将图像的前7bits(高7位)置零,
提起最后1bit(最低位),得到版权信息。
3. 算法简评
此算法计算复杂度相对较低;对图像视觉效果影响很小;鲁棒性较低,难以抵抗常见的水印攻击手段。
1.2.1.2 变换域水印
变换域水印最终也会修改空域的数据,与上面不同的是并不是直接修改像素值,而是将图像的空域数据转换到变换域,然后按照一定方法写入水印信息,最后再将变换域数据转换回空域的值并重新生成图像信息。
常见的变换域水印用到的基础算法有 DCT、DFT、DWT,这三个算法特点各不相同,可单独使用也可以交叉使用。
基于 DCT 的水印算法--DCT 离散余弦变换属于一种特殊的 DFT 离散傅里叶变换,在暗水印领域有非常相似的使用手法。所以这里仅对基于 DCT 变换的水印进行展开。这个框架通用性比较强,在分块和频域位置选择合理的情况下,可以抵抗一定程度裁剪、缩放和压缩等常见的攻击手段。
基于 DWT 的水印算法--纯粹的仅适用 DWT 水印算法相对较少,大部分情况是 DWT + DCT 、DWT + SVD 等类型的组合水印。为何要使用 DWT 呢,原因是它可以在一定程度上提高水印的鲁棒性并且对图片画质影响较小。
# 如何去除看不到的水印
**直接复制文本,有的会嵌入特定字体。最好是复制到txt写字板里,再重新复制。**
==
其实这手段无非涉及两方面,一种就是图片的额外元数据被做手脚,比如相机会添加exif元数据信息,那么删除exif元数据信息即可。一种图片本身的像素被做手脚,也就是pixel点数据被轻微变动,由于轻微色差不影响人类可见效果,所以能被暗藏一系列数据。最简单的应对就是重写整个图片像素,比如不保留alpha透明信息,除了文字rgb255,255,255,其余一律变成0,0,0,神仙也找不到你。
==
我发现很多人根本不懂基本的图像渲染原理,所以多说一下,首先大家要明白,图像的基本构成是像素,无论多复杂的图案,最终在图像层面都是一个个pixel组成,比如图像大小1024x768,即可以拆分为786432个像素,而一个rgb真彩24位像素可以存储三个字节,也就是有2359296字节可以供隐藏数据,傅立叶变换也好,二值化变换也好,Walsh变换也罢。都叫“算法”,而具体像素值是“存储对象”,隐藏数据在图片,是由算法转换数据到图像,世上不只有傅立叶一种算法,但任何算法却一定会存储数据到pixel中去。所以一旦破坏规律性,纯化像素,任何隐藏算法都没用,因为它存储的渠道破坏了。所以去隐藏水印,关键就是破坏pixel中rgb的隐藏数据可能性,最简单的方式,就是以编程方式去差值,统一成纯色黑白。
==
有隐藏内容的图,无论算法为何种,数据都会分散保存在像素中,这是任何算法都改变不了的步骤。所以最根本的去隐藏信息做法,就是减少图像中的差异化像素(算法只是工具,怎么算随便),让色域相近的像素尽可能趋同,总之尽可能减少不同的pixel(尽可能往三原色表靠,比如三原色表中red是255,0,0,那就所有近似值都来这个,不要特殊值,再保险点就随机像素替换全图原有像素,和原有色彩根本无关),总之让图像上不同像素值越少越好,色彩越少,越容易破坏隐藏pixel中的数据,同时和原图差异越大越好,差异越大,越难以恢复隐藏数据。还是那句话,如果你一张图像素除了rgb255,255,255就是rgb0,0,0,神仙也没办法知道你是谁。用仙侠小说的说法,这叫一力破万法,无论拉伸重拍或者模糊化,其实都是在破坏原图像素,麻烦而且不一定有用(因为改变程度不一定够,好算法是可以容错的),不如直接破坏算法根基,全图像素大幅度变化,依存于像素的隐含数据自然也没用了。
参考链接:
如何去除看不到的水印
https://www.williamlong.info/archives/6549.html
有没有什么防止或查看截图出现隐藏水印的方法或软件?
https://meta.appinn.net/t/topic/32906
多益是如何查截图的?明、暗水印,打工人来了解一下!
https://mp.weixin.qq.com/s/0n1UzCBQNLmdHfl3LQbmhg
警惕!藏在APP截屏里的“暗水印”!
https://mp.weixin.qq.com/s/dDRIRtqq-eztY70CbkfEHA
前端截图身份溯源
https://mp.weixin.qq.com/s/4mDEU6obZG_fBm8V7s0H6A
A Challengers Handbook by Caesum
http://www.caesum.com/handbook/stego.htm
http://www.caesum.com/handbook/Stegsolve.jar
最近爆出豆瓣图片中的盲水印如何验证?
https://zhuanlan.zhihu.com/p/471664337
知乎喜迎全平台隐写水印
https://www.v2ex.com/t/877614
绝了,知乎竟然把你的信息藏在截图里
https://www.51cto.com/article/718585.html
图片盲水印查看器
http://www.atoolbox.net/Tool.php?Id=1052
图片盲水印在线工具
https://stegonline.iculture.cc/
请问如何查看图片的数字水印? 如何添加修改删除图片的数字水印?
https://zhidao.baidu.com/question/354142510.html
隐秘的印记:暗水印实践技术分享
https://www.secrss.com/articles/32116
数字水印在数据安全保护中的应用实践和优化
https://www.bilibili.com/read/cv21727671?from=articleDetail
隐形水印设置及查看 #提供代码样例可以测试
https://www.zhihu.com/question/50677827/answer/122388524
阿里巴巴公司根据截图查到泄露信息的具体员工的技术是什么?
https://www.zhihu.com/question/50735753/answer/122593277
暗水印的实现思路分享 #提供代码样例可以测试
https://juejin.cn/post/7202519872303874109
Blind&Invisible Watermark ,图片盲水印,提取水印无须原图! #提供代码样例可以测试
https://github.com/guofei9987/blind_watermark
文本盲水印:把信息隐匿到文本中,put invisible blind watermark into a text.
https://github.com/guofei9987/text_blind_watermark
在 Mac 上的“照片”中调整照片的光效、曝光等
https://support.apple.com/zh-cn/guide/photos/pht806aea6a6/mac
一种网页数字水印图像生成、识别、打印方法及装置
https://patents.google.com/patent/CN109190339A/zh
一种文件信息输出防泄密和溯源追踪的方法和系统
https://patents.google.com/patent/CN107423629B/zh
一种在文本文档中嵌入及检测数字水印的方法和装置
https://patents.google.com/patent/CN100364326C/zh
图解数据安全中心(Data Security Center,DSC)
https://support.huaweicloud.com/productdesc-dsc/dsc_01_1002.html
数据安全中心 DSC> API参考> API说明> 图片水印> 图片嵌入暗水印
https://support.huaweicloud.com/intl/zh-cn/api-dsc/CreateImageWatermark.html
=END=
《“如何判断图片已添加水印”》 有 1 条评论
谁泄露的公司内部机密?TextWatermark助你抓出内鬼!
https://mp.weixin.qq.com/s/hAZHUiPGmxyn20Lh2PTUpA
`
# 背景
2008年,特斯拉还没有出成品车,但公司内部机密消息经常性外泄,对公司造成了严重负面影响,马斯克决心抓出这个内鬼。于是他给全公司所有人员发送了一封邮件,虽然内容看起来相同,但由于空白字符的插入,导致所有人的邮件都是独一无二的。也因此,最终马斯克成功揪出了公司内鬼。
从DBIR 2022数据来看,每年至少有20%以上的数据泄露是由于内部人员造成的。内鬼已经成为除黑客、合作方外,一条主要的数据泄露途径。
防止数据泄露,从事前、事中、事后来看,分别可以通过防拷贝、防截屏、DLP和水印溯源来进行防御。但因移动办公大行其道,事前和事中防御效果逐渐失效,事后溯源因图片水印对于截屏效果较好,但如果是基于文本的复制粘贴,则显得力不从心。为此我们开源 textwatermark 文本水印python库,寄托此库为文本泄密溯源提供建设和解决方案。
# TextWatermark库介绍
文本水印说一千道一万,无非是通过插入、修改、修饰字符来插入特征。为此,本库提供五类水印插入方式,分别是:查找特定字符替换成同形异义字、在指定位置插入不可见字符、对字符进行额外的修饰、对字符添加组合字符,以及二进制方式表示不可见或组合字符,并最终扩展成15种水印模板。
不同模板适用不同场景,譬如:“不可见字符”水印模板在纯文本复制粘贴下效果较好,且隐蔽性极强,但对于截图和屏摄下无能为力;“字体样式”对于截图和屏摄的效果较好,但是隐蔽性较差,在进行纯文本的复制粘贴时会丢失水印信息;“空格字符”在粘贴、截图、屏摄下效果均较好,但在英文文本的表现力好,中文等情况下表现力差;“同形异义-数字”主要使用在手机号、身份证号等极短数字文本场景等。库使用者可以根据自身偏好使用不同的水印模板。当然后续我们也将添加多模板融合使用等功能,力争在各种场景下均能有更佳表现。
# 结束语
本库没有使用唯一的某一种模板,就是希望建立一种通用型文本水印解决方案来给开发者更多的选择。甚至开发者可以摒弃现有模板,去自定义一种自己独特的模板,以便水印有更强的隐蔽性和强壮性(可参考:https://textwatermark.jd.army/usage/#2)。
`
马斯克在特斯拉总部抓内鬼
https://www.163.com/dy/article/HS1OQ0O2055302A2.html
textwatermark pypi
https://pypi.org/project/textwatermark/
textwatermark website&docs
https://textwatermark.jd.army/
textwatermark github
https://github.com/JDArmy/TextWatermark