当前位置: 首页 > news >正文

伪随机纠错码水印(PRC Watermark)

伪随机纠错码水印(PRC Watermark)

PRC 水印可以理解为“纠错码 + 伪随机偏置”的组合方案。它在尽量保持不可检测性的同时,显著提升了对 token 替换攻击的鲁棒性。

将文本token序列与码字关联,使水印同时具备不可检测性和抗一定比例token替换的鲁棒性

为什么需要 PRC 水印

传统红绿水印的痛点是脆弱:攻击者只替换少量 token(如 5%),就可能扰乱统计特征,导致检测失败。

PRC 的两点核心改进:

  • 用纠错码吸收部分位错误,提升抗替换能力。
  • 用小偏置delta进行隐蔽嵌入,尽量不破坏整体分布。

核心概念:码字(Codeword)

码字是一段固定长度的二进制串(如10110...),可看作水印的底层标识。所有合法码字组成集合C,检测时以此为参照。

1) 码字约束(汉明距离)

∀c1,c2∈C, dH(c1,c2)≥d \forall c_1, c_2 \in C,\ d_H(c_1, c_2) \ge dc1,c2C,dH(c1,c2)d

  • d_H(c1, c2):两个码字对应位不同的数量。
  • d:最小汉明距离,通常取n的 10%~20%。
  • 作用:保证码字之间差异足够大,为纠错解码提供空间。即使部分被改,解码器仍能识别原始码字

2) 码字生成

c=PRC(gk,seed) c = \text{PRC}(gk, \text{seed})c=PRC(gk,seed)

符号含义典型要求
gk水印密钥安全随机数,建议 >= 128 位
seed随机种子每个码字唯一,避免重复
PRC()码字生成函数输出长度为n的二进制串
c生成码字属于集合C,且满足距离约束

生成阶段:如何嵌入

1) 核心嵌入公式

  1. PRC 的嵌入核心是用小偏置让位串轻微靠近目标码字:
    Pr⁡[bi=1]=12+δ⋅(ci−0.5) \Pr[b_i = 1] = \frac{1}{2} + \delta \cdot (c_i - 0.5)Pr[bi=1]=21+δ(ci0.5)
  • c_i是码字第i位(0 或 1)。
  • delta是小偏置(如 0.01~0.05)。
  • 无水印时基线是Pr[b_i=1]=0.5

代入可得:

  • c_i=1Pr[b_i=1]=0.5+0.5*delta(略高于 50%)。
  • c_i=0Pr[b_i=1]=0.5-0.5*delta(略低于 50%)。

2) 直观理解

  1. 先把 token 映射成二进制位(如通过哈希奇偶)。
  2. 按码字位c_i对映射概率做轻微偏置。
  3. 通过小幅 logits 调整,让最终位串更接近码字c
  4. 因为delta很小,单条文本通常不易被显著统计区分。

3) 生成流程

  1. 生成合法码字:c = PRC(gk, seed)
  2. 对每个位置i
    • 得到 token 的原始映射位;
    • 根据c_i施加微弱偏置;
    • 必要时微调 logits,使输出更贴近目标位。
  3. 最终得到与c高匹配的位串b_1...b_n

检测阶段:如何判定

1) 核心检测公式

  1. PRC 的检测核心是用纠错解码恢复最可能的合法码字:
    c^=Decode(b1,…,bn) \hat{c} = \text{Decode}(b_1, \dots, b_n)c^=Decode(b1,,bn)

判定要点:若hat(c)可被纠错解码到合法集合C中,且距离满足阈值,则判定带水印。

2) 检测流程

  1. 将待测文本映射为位串b_1...b_n(规则与生成一致)。
  2. 在集合C中寻找与位串汉明距离最小的码字。
  3. 若最小距离<= d/2,则解码成功并判定为带水印;否则判定无水印。

3) 纠错直觉

  • n=100且最小距离d=20,则可纠正约10位错误(d/2量级)。
  • 这使系统在部分 token 被替换后仍可能恢复原码字。

关键参数速查

阶段参数典型范围作用
码字设计n50~200长度越大,鲁棒性更强,但检测更慢
码字设计dn*10% ~ n*20%决定可纠错空间与抗攻击能力
嵌入delta0.01~0.05控制隐蔽性与可检测性的平衡
检测距离阈值<= d/2决定判定边界与误报/漏报平衡
http://www.jsqmd.com/news/471358/

相关文章:

  • WeKnora快速上手:手把手教你搭建企业级智能问答系统
  • Ubuntu 下高效安装与配置 libjpeg-turbo 库的完整指南
  • 基于STM32+EC800M的低功耗自行车定位终端设计
  • Git-RSCLIP与MySQL集成:构建遥感图像数据库系统
  • MinerU 2.5-1.2B应用场景:科研文档、教材PDF如何快速转Markdown
  • Qwen3-VL-WEBUI无障碍交互实战:为视障用户提供实时环境语音描述
  • E-Hentai Downloader:解放图库爱好者的批量下载利器
  • UABEA:Unity资源全生命周期管理的跨平台技术解决方案
  • 深入解析Debian源码包构建:apt source与dget实战指南
  • WeKnora效果展示:实测精准问答,AI严格依据文本内容回答,杜绝胡说
  • 硬件面试(2)-PCB设计中的关键参数与工艺选择
  • 自行车智能RGB呼吸灯:低功耗状态感知与WS2812B精准驱动
  • NEURAL MASK 效果对比专题:多种图像修复算法性能横向评测
  • 深度学习核心算法全解析:从MLP到Transformer的实战指南
  • 深入解析Parquet列式存储:优势与性能调优实战
  • 纸带式八音盒硬件设计:模拟音频驱动与机电闭环实现
  • 核密度估计法(KDE)实战指南:从原理到应用,全面解析与正态分布及概率分布的关系
  • ESP32-S3辉光管时钟:LVGL图形界面与高压驱动工程实践
  • Z-Image-Turbo-rinaiqiao-huiyewunv实战教程:如何用默认提示词快速生成高还原度角色图
  • 告别机械操作,让星穹铁道回归策略乐趣——三月七小助手全解析
  • SCS 44. 从熵到纯度:ROGUE指标在单细胞亚群鉴定中的实战解析
  • 技术随笔《二》:人形机器人模仿学习开源框架实战与数据集应用指南
  • Spring Cloud Gateway与WebFlux下Swagger3的统一接入与动态聚合
  • 告别重复造轮子:用快马实现Cursor级效率,一键生成Vue3+Pinia项目脚手架
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI 操作系统概念学习助手:交互式解答与示例生成
  • 3步告别星穹铁道重复操作:March7thAssistant让你专注核心体验
  • M2LOrder模型在.NET生态中的集成方案
  • xv6 6.S081实验环境搭建与避坑指南
  • Windows Cleaner:智能系统清理工具的全方位解决方案
  • GME-Qwen2-VL-2B-Instruct部署教程:FP16显存优化+Streamlit界面快速上手