文件泄露了,怎么知道是谁干的?两种商业级文档溯源技术的真实演示。
文字指纹:同义词替换,文本层面的隐写。字间距水印:把 ID 藏进像素间距,截图也能提取。
输入一段文本,为不同收件方生成看起来完全一样、但指纹不同的版本。 文件泄露后,把泄露版本粘贴进来,就能知道是谁泄露的。
把你收到的「疑似泄露版本」粘贴进来,系统会提取指纹并告诉你是哪个收件方泄露的。
「总金额」↔「总价款」,「交付」↔「完成」,「保证」↔「确保」。每个替换点是一个 bit,0 或 1。
在句号后插入不可见的零宽空格序列,编码额外的 bit。复制粘贴时会一起带走,肉眼完全看不到。
N 个替换点编码 2ᴺ 个版本。10 个替换点 = 1024 个不同收件方,每人一份唯一版本。
拿到泄露版本,逐个检查替换点,还原出 ID,对应到具体收件方。
文本渲染成图片时,对特定字符间距做 ±0.3px 的微调来编码 ID。 肉眼完全看不出差异,但像素分析能读出 bit 序列。截图转发后水印依然存在。
上传一张用上面方法生成的图片,系统会分析每个字符间距,还原出隐藏的收件方 ID。
从文本中选出 N 个「间距锚点」——相邻两个字符之间的空隙。N 个锚点可以编码 2ᴺ 个不同 ID。
ID 的第 i 位为 1,就把第 i 个锚点的间距加 +δ;为 0 就减 −δ。δ 通常取 0.2~0.5px,肉眼不可见。
用 Canvas 2D API 逐字符绘制,精确控制每个字符的 x 坐标,实现亚像素级间距控制。
对图片做列扫描,找到每个字符的左右边界,计算实际间距,与基准间距比较,判断每个 bit 是 0 还是 1。