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

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

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

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

工具目录

分类

查看所有分类
Loading categories
SwordStamp — 语义水印:基于子句单元的顺序鲁棒检测 | Kitploit
工具/GitHubGitHub/d-diaa/swordstamp
密码学论文与研究学习与教育精选资源AI 安全
GitHubd-diaa/swordstamp

SwordStamp

语义水印:基于子句单元的顺序鲁棒检测

查看仓库
13天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SwordStamp

SwordStamp 为基于嵌入的语义水印增加了对顺序鲁棒的检测和语义跨度单元。本工件包含论文的确切配置、生成和检测代码、未修改的攻击套件、质量评估,以及确定性的结果提取和绘图。

主要结果

在 5% 的误报率和 90% 的内容保留要求下,特定方案的嵌入位移攻击(EDA-S)达到:

水印EDA-S 攻击成功率
SemStamp47.9%
k-SemStamp33.3%
PMark46.1%
SAMark32.6%
SwordStamp18.7%
k-SwordStamp10.8%

相对于其已发表的基线,SwordStamp 和 k-SwordStamp 将 EDA-S 成功率分别降低了 29.2 和 22.5 个百分点,而干净保真度成本仅为 1.8 和 4.4 个百分点。它们的干净检测率分别为 94.9% 和 97.0%。在更强的检测器访问 EDA-D 压力测试下,k-SwordStamp 的最大质量门控成功率为 39.7%,而 k-SemStamp 为 65.5%。

跨内容保留要求的最强无盒攻击成功率

干净保真度与最强无盒攻击成功率

这些结果涵盖英文新闻续写、一个提供商模型、两个提供商编码器,以及一对 EDA 改写器/替代模型。

绘制编译后的数据包

visualization 仅使用编译后的 CSV/Parquet 数据包。如果论文单元格缺失,它会报错而不是绘制不完整的图形。

root@kitploit:~
uv sync --frozen --only-group plot --no-install-project
uv run --no-sync python -m visualization extract \
  --bundle results/paper --output results/paper
uv run --no-sync python -m visualization render \
  --bundle results/paper --output results/paper

这会在 results/paper/tables/ 下写入可审计的表格,并在 results/paper/figures/ 下以 PNG 和 PDF 格式生成七张图。匿名审阅分支包含编译后的数据包;在发布分支上完整运行会通过 python -m visualization compile 创建相同的文件。

嵌入位移攻击(EDA)

嵌入位移攻击(EDA)是一种自适应整篇文本改写攻击。在每个输出单元,它采样 K 个续写,并保留在替代编码器下与其源锚点余弦位移最大的候选。由于每个候选都延续完整的改写前缀,一个目标函数可以改写内容、重新排序内容,以及拆分或合并检测单元。

无盒 EDA 可以看到标记文本和公开的水印设计。它不查询检测器或生成器,也收不到任何密钥、提供商编码器或质量预言机。

对于 bag 锚定,论文使用 attack.bag_agg=min:最大化与最近源锚点的距离。已报告的无盒运行使用 Qwen/Qwen2.5-3B-Instruct、BAAI/bge-base-en-v1.5、K={1,2,4,8,16,32,64}、温度 1.0、top-p 0.95、每个候选最多 96 个 token,以及最多 512 个改写 token。

其他水印设计者可以直接调用 EDA:

root@kitploit:~
from attacks.paraphrasing.adaptive import adaptive_attack_paraphrase

attacked = adaptive_attack_paraphrase(
    texts,
    base_model="Qwen/Qwen2.5-3B-Instruct",
    surrogate_model="BAAI/bge-base-en-v1.5",
    num_candidates=32,
    anchor="positional",       # EDA-P;对顺序鲁棒设计使用 "bag"
    bag_agg="min",
    segmentation_type="sentence",
    segmentation_backend="nltk",
)

对于论文的 SwordStamp 感知 EDA-S,设置 anchor="bag"、segmentation_type="semspan"、semcut_max_words=15 和 semcut_window=5。在此仓库内,等效的 CLI 为:

root@kitploit:~
uv run python -m attacks DATA_PATH --config PRESET \
  --set attack.paraphraser=adaptive \
  --set attack.custom_model=Qwen/Qwen2.5-3B-Instruct \
  --set attack.surrogate_model=BAAI/bge-base-en-v1.5 \
  --set attack.num_candidates=32 \
  --set attack.anchor=bag --set attack.bag_agg=min \
  --set segmentation.attacker_type=semspan \
  --set segmentation.attacker_backend=nltk

DATA_PATH 始终是基础语料库,PRESET 标识带水印的单元格。有关所有保留的攻击和配置字段,请参阅 attacks/README.md。

替代位移与提供商编码器位移

精确论文矩阵

config/paper.py 是唯一的事实来源。对于 LSH 和 k-means 中的每一种,scripts/experiments/swordstamp.sh 运行这个五级加法阶梯,包含 64 个提供商候选:

  1. 基于句子的上下文相关拒绝;
  2. 64 选 1 最佳选择;
  3. 固定有效集;
  4. 多样性感知排序;以及
  5. 语义跨度,最大 15 个词,比较窗口为 5。

网格仅包含这十个单元格和一个无水印基线。PMark 仅限在线;SAMark 每次运行使用一种标志模式。EDA-D 预算为 K={4,8,16,32,64}。

比较子模块仅在数据集/结果边界和共享误报校准处适配公开的 PMark 和 SAMark 评估源码;水印算法未做更改。

完整实验流程

先决条件包括 Git、uv、Python 3.11、用于模型运行的 CUDA、对固定模型版本的访问权限,以及临时存储。

root@kitploit:~
git clone --recurse-submodules [email protected]:D-Diaa/SwordStamp.git
cd SwordStamp
bash scripts/setup.sh
uv run --frozen python scripts/check_artifact.py
  1. 准备确定性的、不相交的 C4 分区:

    root@kitploit:~
    uv run --frozen python scripts/prepare_c4.py --output-dir data
    
  2. 安装并配置固定的调度器。安装程序在更改任何内容之前会打印其用户级副作用:

    root@kitploit:~
    bash scripts/install_gpu_scheduler.sh --print-plan
    bash scripts/install_gpu_scheduler.sh --yes
    gpu-scheduler init --gpus 0,1
    gpu-scheduler start
    
  3. 预览,然后提交每个物理分片:

    root@kitploit:~
    for shard in c4-val-def-256 c4-val-def-256b c4-val-def-512; do
      BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/swordstamp.sh
      BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/pmark.sh
      BASE="data/$shard" DRY_RUN=1 bash scripts/experiments/samark.sh
    done
    # 检查确切的 DAG 后移除 DRY_RUN=1。
    
  4. 编译、提取和渲染:

    root@kitploit:~
    uv run --frozen python -m visualization all \
      --bundle results/paper --output results/paper
    

调度器提供 CUDA_VISIBLE_DEVICES;不要通过探测 nvidia-smi 来选择 GPU。完整复现是一个多天的 GPU 工作负载。ARTIFACT.md 列出了硬件、模型版本、预期输出以及声明到命令的映射。scripts/experiments/README.md 记录了恢复和强制行为。

布局和许可证

  • config/、segmentation/、sampling/、watermarking/:SwordStamp。
  • attacks/:EDA 和保留的攻击套件。
  • quality/:保真度和内容保留评估。
  • visualization/:仅限论文的编译、表格和 Matplotlib 图形。
  • scripts/experiments/:基于调度器的精确论文工作流。
  • external/:固定的 PMark 和 SAMark 比较子模块。

第一方代码在 MIT 许可证下发布。模型、数据集、生成的文本和比较子模块保留其各自的条款;请参阅 THIRD_PARTY.md。

引用

SwordStamp 软件由 Abdulrahman Diaa 编写。论文作者为 Abdulrahman Diaa、Jonathan Petit 和 Florian Kerschbaum。机器可读的引用元数据位于 CITATION.cff 中。

下载工具
变体锚点和单元配置
EDA-P位置句子adaptive、anchor=positional、攻击者单元 sentence
EDA-S目标方的公开设计SemStamp、k-SemStamp 和 PMark 使用位置句子;SAMark 使用 bag/sentence;两种 SwordStamp 变体使用 bag/semspan
EDA-D提供商检测器oracle;继承防御方编码器、分区和分段