Skip to content

SeedHijack:伪随机数供应链如何误导 LLM 水印归因 ​

摘要 ​

SeedHijack 研究生成式文本水印的一项常被省略的前提:生成端用于选择绿表或等价采样集合的伪随机数发生器(PRNG)是否可信。作者将攻击放在生成供应链,而非输出文本层:替换 PRNG 后,攻击者不需要水印密钥、检测器或模型 logits,也能改变采样概率的统计关系。

在 KGW、Unigram、DipMark 三种方案及三个开源模型的作者实验中,替换后的 PRNG 可将水印 z-score 最高放大 2.42 倍,同时未触发六个内容侧统计检测器。该结论说明“检测到水印”不能单独说明生成器或归因链可信;它并不证明任意水印实现都可被同样替换,也不是对生产服务发生率的估计。

核心创新与差异 ​

既有页面讨论统计水印的编辑、转述和检测局限。SeedHijack 的独立增量是把首个失效控制定位为采样随机源的制品完整性:攻击改变的是水印内部的随机分区,而不是最终文本、密钥或检测阈值。因而内容侧检测即使正常工作,也可能看到被刻意放大的、看似更强的水印信号。

威胁模型与攻击链 ​

攻击者能够控制或替换生成服务加载的 PRNG 实现,但不持有水印密钥、检测器内部状态或目标模型 logits。目标资产是水印用于来源归因的统计可信度。

  1. 部署链加载了未受完整性约束的 PRNG 实现;
  2. 攻击实现按当前上下文参与水印采样集合的选择;
  3. 模型仍输出自然文本,但绿表命中统计被偏置;
  4. 内容检测器只观察文本统计,因而无法区分正常随机源与被替换的随机源。

最先失效的控制是生成依赖的来源证明与随机源完整性,而不是检测器的阈值调参。

攻击工件与复现材料 ​

作者论文给出的是 PRNG 层的概率构造,没有公开可直接替换生产水印服务的部署脚本。以下是对应步骤的本地、去武器化测试夹具,只验证“随机源来自受信任实现”的断言;它不生成水印文本,也不接入模型服务。

python
# 作者机制的安全验证对应物;仅用于 CI 中拒绝未知实现。
APPROVED_PRNG_DIGEST = "sha256:expected-test-fixture"

def load_watermark_rng(module_digest: str, dry_run: bool = True):
    if module_digest != APPROVED_PRNG_DIGEST:
        raise RuntimeError("DRY_RUN: reject unverified watermark RNG")
    return "approved-test-rng"

该夹具对应攻击链第 1 步的防护验证。真实恶意替换逻辑、生产密钥、模型调用和任何规避参数均未公开;若需复现论文,应只在自有开源模型、隔离密钥和作者公开材料范围内进行。

实验设计与实际过程 ​

作者在 KGW、Unigram、DipMark 与 Qwen2-7B、Llama-3-8B-UltraMedical、BioMistral-7B 的组合上比较正常和被替换随机源,并测试六个内容侧检测器与 QRNG 对策。以下数据均为作者实验,本站未复现;论文未将其作为商业 API 或真实归因争议的调查。

关键结果与实际影响 ​

  • 被测条件下,攻击对六个内容侧检测器报告 0/6 触发,z-score 最高增加 2.42 倍。
  • 作者报告 QRNG 对策可消除所测攻击的残余内容控制;其示例中 z-score 从 55.61 降至 21.65,绿表比例回到约 0.46。
  • 这些数字来自三种水印、三种开源模型和论文定义的攻击预算,不能推出所有 PRNG、水印密钥管理或云端服务同样受影响。

防护措施与验证方法 ​

将 PRNG 二进制、依赖锁定文件和加载路径纳入签名或远程证明;将水印密钥、模型版本、采样配置和随机源版本一起记录。验证时应在已知正常与替换测试夹具上分别检查归因统计、文本效用和检测器告警,而不是只报告输出侧 ROC。QRNG 是作者验证的一个对策,部署成本、熵源故障与密钥治理仍需单独评估。

局限与待验证问题 ​

论文依赖攻击者可以替换 PRNG 的供应链条件,未证明该条件在托管模型服务中普遍存在;结果也没有独立复现。水印信号本身仍只是概率性来源线索,不能替代签名制品、发布日志或人工调查。

参考链接 ​