最近,豆瓣 App 截图暗含水印的新闻,绷紧了很多人的神经。有网友发现,在豆瓣 App 中截图,当中竟然隐藏着肉眼难以识别的水印,水印的内容则是截图者的 UID 等信息。这意味着,在豆瓣 App 中截屏,根据水印很容易就可以追查到截屏者的某层身份。对此,豆瓣回应称,这是豆瓣小组的防搬运机制。
▲ 豆瓣 App 截图带有隐藏水印,默认难以察觉,某些手机开启夜间模式后可以清楚看到
豆瓣解释,豆瓣小组长开启了内容防搬运设置后,在对小组内容进行截图时,截图上将自动生成经加密的截图用户 ID、被截图帖子 ID、截图时间信息。而网友发现,这个信息对于截屏者来说是难以察觉的,水印文字的颜色和背景相似,只有开启夜间模式后才能比较显眼地观察到。
实际上,豆瓣 App 的这种做法,被业内称之为加“盲水印”。顾名思义,盲水印很难被觉察,但懂得其中窍门的话,就可以通过一些技术手段检测、还原水印。盲水印一般应用于一些对保密有需求的场合,例如企业内部。企业在内部论坛或者聊天工具加上员工信息身份的盲水印,如果员工截图发到外网,通过盲水印就很容易定位到泄密者,作出处理。
豆瓣显然不是一个内部使用的 App,现在一个面向公众的应用,居然启用了追查身份作震慑手段的防泄密机制,这正是让很多网友感到震惊之处。
据了解,如果豆瓣小组启用了“防搬运”功能,会在主贴底部有明显提示的字眼。但即便如此,带来的影响,也已挥之不去了 —— 豆瓣能这么做,其他 App 要不要也跟着做?这样做是不是能带来一些什么好处?
今天,就来简单聊聊盲水印和互联网社区的话题吧。
防不胜防的盲水印
我们先来简单了解一下盲水印的相关技术。
豆瓣使用的盲水印,其策略是融入背景色,虽然看似比较隐秘,但其实这还远算不上防不胜防。
某些图片盲水印,用肉眼根本无法察觉,需要使用特定的算法还原,才能观测到。同时,这类盲水印还非常难以去除,就算对打了盲水印的图片反转、裁剪、遮挡、涂抹等处理,水印依然可以被算法还原出来。
▲ a 是原始图像,b 是加了盲水印的图像,肉眼看不出区别
这类盲水印,既做到了“盲”的隐秘 —— 水印对其他人不可见,也做到了“印”的牢靠 —— 想要追踪的话,无论图片经过了怎样的处理,保证绝大部分情况下水印不会被破坏。
这类盲水印是怎样实现的呢?原理并不复杂,通常是将图片进行离散余弦、小波或者傅里叶变换,得到图片的频谱信息,再将水印的编码信息叠加到图片的频谱上,然后再进行一次逆变换,生成的图片就带有几乎无法检测、但又可以确切还原出来的盲水印了。
▲ 一种基于离散傅里叶变换添加盲水印的方法
而这样的盲水印制作也非常简单,网络上就有开源算法可以实现,下面以“blind_watermark”为例。
blind_watermark:
https://blindwatermark.github.io/blind_watermark/#/zh/
是一个关于盲水印的开源项目,依赖于 Python 运行。安装了 blind_watermark 后,只需要简单的几行命令,就可以为图片添加文字或者另一张图作为盲水印。
blind_watermark 向图片添加文字盲水印的案例
▲ blind_watermark 向图片添加文字盲水印的案例
添加了盲水印后的图,即便经过多种修改,依然可以还原出水印。而这一切,都是可以用开源免费的方案实现的。
blind_watermark 向图片添加文字盲水印的案例
▲ 加了水印的图即使经过各种修改,也依然可以提取出水印
除了图片可以添加水印,文字也是可以作标记的。下面举个“text_blind_watermark”的例子。
text_blind_watermark(demo):
https://www.guofei.site/pictures_for_blog/app/text_watermark/v1.html
text_blind_watermark 为文字加“盲水印”的原理也很简单,在文字当中穿插特殊的符号(demo 演示的是空格),解码算法识别出特定符号,就可以解出隐藏的信息了。或许 demo 中的空格键肉眼看上去还比较明显,但如果所使用的是更加隐秘的字符呢?字符分布更加稀疏呢?恐怕就非常难以觉察了。
豆瓣水印 豆瓣隐藏水印
简而言之,无论是图片还是文字,都可以用已有的成熟方案轻易添加“盲水印”。只要某个 App 有这个心思,完全可以 0 成本使用强力的盲水印,而且还不会被察觉到,不至于像豆瓣一样引发舆情。
从这个角度来看,豆瓣的水印方案只能算是小儿科了。如果启用更强力的盲水印,用户甚至完全无法察觉,这才是真正的“防不胜防”。
为什么豆瓣小组要添加盲水印?
正如前文所说,盲水印主要用于防泄密,企业内部页面、电影放映画面等都是盲水印的常见应用场合。由于盲水印不可见且带有泄密者的信息,因此它通常用于追查、震慑泄密者(所谓“抓内鬼”),而从某个层面来说,盲水印具备区分“敌我”的功能。
企业内部会议投影,加水印可以防泄密
▲ 例如企业内部会议投影,加水印可以防泄密(图为必捷网络产品演示)
这就很微妙了。豆瓣作为一个面向公众的 App,为何竟然有“抓内鬼”的需求,甚至说竟然有区分“敌我”的需求?
豆瓣官方的说法是,加入盲水印是为了“防搬运”,这似乎并不能完全平息舆论。如果是一些版权网站,例如小说网站、视频网站启用盲水印“防搬运”,是说得通的,但即使是版权网站,也往往只在水印中添加版权信息,或者禁止复制文字或下载内容,水印也通常不会掺杂用户个人信息,且往往会明确告知水印的存在。而豆瓣作为一个社区 App,使用个人信息作为盲水印“防搬运”,似乎多少有点不妥。
文字版权网站保护内容不被抄袭的手段往往是禁止复制
▲ 文字版权网站保护内容不被抄袭的手段往往是禁止复制(例如起点),为何豆瓣要在截图加水印?
这次启用盲水印机制的是豆瓣的 SNS 社区豆瓣小组,而并非豆瓣全站。豆瓣小组分为不同主题的小组,各个小组需要申请加入才能发表讨论,而其管理员“小组长”则可以审核入组申请,也可以决定小组成员的去留。如果小组长启用“防搬运”,意味着可以通过截图的盲水印追查到截图者的身份,并对其进行处理。
换言之,如果小组长认为组员截图导致组内讨论内容产生了传播,是不恰当的,则可将该组员禁言。盲水印“防搬运”机制,会促使组员不再外泄小组内所讨论的内容。加之豆瓣小组长本来就有删帖等权限,如此一来,小组内的讨论内容会更容易变得更具符合小组长的管理意愿,组内的观点也会变得更趋同。
显然,如果豆瓣小组想要团结意见观点相似的人,盲水印会是一个非常立竿见影的机制。我们可以想象,如果 QQ 群微信群中也启用了盲水印机制,那么群员很有可能就不再敢轻易截图,将群聊记录留证或公诸于众,否则一旦被发现,就面临着被踢出群聊的风险。有了“抓内鬼”的能力,网络社群管理者的威权,也就得以加强。
豆瓣小组加入盲水印,有利建立起更加整齐划一的讨论基调、聚集起观点近似的人群,这或许非常符合豆瓣想要打造的社区氛围。但是盲水印毕竟包含个人信息,作为一个公众 App,在这方面使用个人信息,并可能间接致使相关信息广泛传播,多少有侵犯隐私的嫌疑。或许正因如此,豆瓣小组已会明确提示已开启防搬运功能,用户不至于完全没有知情权。