网传 APP 截图都带「暗水印」可追踪身份——这是真的吗?亲手嵌入、提取、攻击,体验两种隐形水印技术的原理
隐形水印(Invisible Watermark)是一种将信息嵌入图像中、但人眼无法察觉的技术。企业用它在截图中嵌入用户 ID、时间戳等信息,一旦截图泄露,就能追溯到源头。
本页演示两种主流方案:
空间域水印——直接修改像素值的最低位(LSB),简单高效但不抗压缩
频域水印(DCT)——在频率空间嵌入信息,抗 JPEG 压缩、缩放等攻击
每个像素的颜色值是 0~255(8 位二进制)。最低位(LSB)的变化只改变亮度 ±1,人眼完全无法分辨。
例如:像素值 10110100(180)→ 改最低位为 1 → 10110101(181)
亮度只变了 0.4%,但这一位就能存储一个 bit 的信息。
点击或拖拽上传图片(也可使用下方示例图)
LSB 水印非常脆弱:JPEG 压缩、截图、缩放、加滤镜都会破坏最低位数据。点击「攻击测试」亲自验证——压缩后水印就读不出来了。
图像可以用 DCT(离散余弦变换)分解为不同频率的分量。低频 = 大面积色块,高频 = 边缘细节。
水印嵌入在中频区域:比低频更隐蔽(不影响整体色调),比高频更鲁棒(不会被压缩丢弃)。
JPEG 压缩本身就是基于 DCT 的,所以频域水印天然抗 JPEG 压缩。
点击或拖拽上传图片(也可使用下方示例图)
频域水印在 JPEG 压缩(质量 50%)后仍能提取。这就是为什么企业级暗水印方案几乎都基于频域变换——你截图、压缩、发朋友圈,水印依然在。
| 特性 | 空间域(LSB) | 频域(DCT) |
|---|---|---|
| 嵌入原理 | 修改像素最低位 | 修改 DCT 中频系数 |
| 隐蔽性 | 极高(1-bit 变化) | 高(取决于强度参数) |
| 嵌入容量 | 大(每像素 1+ bit) | 较小(受块数限制) |
| 抗 JPEG 压缩 | 极差 | 强 |
| 抗缩放裁剪 | 极差 | 中等 |
| 实际应用 | 隐写术、学术研究 | 企业暗水印、版权保护 |
多家互联网公司在内部系统截图中嵌入隐形水印(包含员工工号、截图时间)。曾有员工将内部截图发到社交媒体,公司通过提取水印在数小时内定位到泄密者。
钉钉、飞书、企业微信等办公软件的文档预览页面,都被曝出使用了类似的暗水印技术。有些是肉眼可见的浅色底纹(明水印),有些则是完全不可见的频域水印。
本页演示的是简化版原理。真实的企业级方案会结合多种技术(扩频、纠错码、模板同步等),鲁棒性远超本页演示。
结论:不要以为截图加个滤镜就能去掉暗水印。