Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
reverse-SynthID-text — 对文本版SynthID的逆向工程 | Kitploit
工具/GitHubGitHub/aloshdenny/reverse-synthid-text
逆向工程隐写术密码学机器学习论文与研究学习与教育AI 安全对抗性攻击
GitHubaloshdenny/reverse-synthid-text

reverse-SynthID-text

对文本版SynthID的逆向工程

查看仓库
972478个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SynthID 水印逆向工程

SynthID 水印分析

概述

该目录包含用于分析和移除AI生成文本中SynthID水印的工具。该水印由Google DeepMind开发,并于2024年发表在《自然》杂志上。

SynthID 工作原理

水印生成过程

  1. N-gram 上下文:对于每个词元位置,SynthID 将之前的 ngram_len - 1 个词元(默认:4个词元)视为上下文。

  2. 哈希计算:计算以下内容的哈希:

    • 上下文词元
    • 候选的下一个词元
    • 一组秘密水印密钥(默认30个)
  3. G值分配:哈希用于为每个密钥层的每个可能的下一个词元分配一个二进制g值(0或1)。

  4. 概率修改:修改词元概率,以偏向g值为1的词元:

    root@kitploit:~
    new_prob[i] = prob[i] * (1 + g[i] - mean(g * prob))
    
  5. 采样:模型从修改后的分布中采样。

检测过程

  1. 对文本进行词元化
  2. 对于每个n-gram,使用相同密钥计算g值
  3. 如果平均g值显著大于0.5,则文本带有水印

漏洞

1. 改写攻击(最有效)

有效性:90-100%

水印嵌入在特定的词元序列中,而非语义中。使用无水印的模型进行改写会完全重新生成词元序列。

root@kitploit:~
from reverse_synthid import ParaphrasingAttack
attack = ParaphrasingAttack(model_name="gpt2")
clean_text = attack.paraphrase(watermarked_text)

2. 词元替换攻击

有效性:50-70%

用同义词替换词元会破坏n-gram模式:

root@kitploit:~
from reverse_synthid import TokenPerturbationAttack
attack = TokenPerturbationAttack()
clean_text = attack.substitute_synonyms(text, rate=0.3)

3. 同形文字攻击

有效性:95-100%

用视觉上相同的Unicode字符替换会破坏哈希:

root@kitploit:~
from reverse_synthid import HomoglyphAttack
attack = HomoglyphAttack()
clean_text = attack.apply_homoglyphs(text, rate=0.1)

4. N-gram 边界偏移

有效性:30-50%

插入或删除单词会移动所有后续n-gram边界:

root@kitploit:~
from reverse_synthid import TokenPerturbationAttack
attack = TokenPerturbationAttack()
clean_text = attack.insert_fillers(text, rate=0.1)

文件

  • reverse_synthid.py - 主攻击工具包,包含多种方法
  • analyze_watermark.py - 水印检测与分析工具
  • test_removal.py - 演示水印移除的测试脚本

用法

分析水印

root@kitploit:~
python analyze_watermark.py --input text.txt --verbose

移除水印

root@kitploit:~
# 使用改写(最有效,需要模型)
python analysis/reverse_synthid.py --input text.txt --output clean.txt --method paraphrase

# 使用扰动(无需模型)
python analysis/reverse_synthid.py --input text.txt --output clean.txt --method perturb

# 使用组合攻击
python reverse_synthid.py --input text.txt --output clean.txt --method combined

运行测试

root@kitploit:~
python analysis/test_removal.py

比较 SynthID 水印文本与去水印文本

对比图

技术细节

关键洞察:水印是脆弱的

水印依赖于:

  1. 精确的词元序列 - 对词元的任何更改都会影响n-gram
  2. 上下文窗口 - 插入词元会移动所有上下文
  3. 哈希函数 - 不同的字节产生不同的哈希

为什么改写有效

当你改写文本时:

  1. 语义得以保留
  2. 但精确的词元完全不同
  3. n-gram哈希完全不同
  4. g值模式被破坏

理论分析

对于长度为N、水印强度为W的文本:

  • 替换率 r 将信号降低约 1 - (1-r)^(ngram_len)
  • 插入率 r 移动 N*r 个n-gram边界
  • 改写 本质上使 W → 0(完全重新生成)

局限性

  1. 改写可能会改变语义的细微差别
  2. 简单的攻击可能可被检测
  3. 未来的水印可能更健壮

免责声明

此代码仅供教育和研究目的。它展示了水印方案中的漏洞,以帮助开发更健壮的方法。

参考文献

  1. Dathathri et al. "Scalable watermarking for identifying large language model outputs." Nature 634, 818-823 (2024).
  2. https://github.com/google-deepmind/synthid-text
下载工具