avivschiby/mlsec-week10-llm-defenses

GitHub: avivschiby/mlsec-week10-llm-defenses

一个评估LLM改写防御对抗GCG与PAP越狱攻击效果的ML安全课程实验项目。

Stars: 0 | Forks: 0

# MLSec 第 10 周 — LLM 防御:改写 vs. 自适应攻击 ML 安全研讨会(TAU, 0368-3423)**第 10 周(LLM 防御)**课程实验。 我们实现并评估了一种针对 LLM 越狱的**改写防御**,并展示了 **自适应(语义)攻击**是如何绕过它的。核心发现是两种攻击类型之间的对比: - **基于语法**的攻击(GCG):脆弱的乱码后缀 → **被改写破坏**。 - **语义**攻击(说服 / PAP):流畅的自然语言 → **在改写中存活**。 ## 实验大纲 1. **改写防御** — 在不可信输入到达目标模型之前,使用改写 LLM 对其进行重写。*(此仓库的当前状态)* 2. **针对 GCG 评估** — 预计算的 GCG 后缀(`MatanBT/gcg-evaluated-data`), 使用 StrongReject 进行评分。 3. **自适应绕过(PAP)** — 击败该防御的说服性越狱。 4. **良性成本** — 防御前后的 20 个良性提示词(`alpaca_eval`)。 ## 第一步:改写防御 该防御(`src/defense.py`)遵循 Jain 等人的*针对对齐语言模型的对抗性攻击的基础防御*(第 4.2 节):将指令 `"paraphrase the following sentences:"` 前置到**整个**不可信输入中,并生成 重写内容(temperature 为 0.7,最多 100 个新 token)。整个输入都会被改写,因为 防御者无法知道哪一部分(如果有的话)是对抗性的。 ### 改写器(开放权重,可复现) | 别名 | HF id | 可运行配置 | |---|---|---| | `llama3.1-8b` | `meta-llama/Llama-3.1-8B-Instruct` | bf16, ~24 GB | | `qwen2.5-14b` | `Qwen/Qwen2.5-14B-Instruct` | bf16, ~48 GB | | `gemma4-26b-a4b` | `google/gemma-4-26B-A4B-it` | 4-bit, ~14 GB (MoE) | ## 设置 ``` conda create -y -n mlsec python=3.11 conda activate mlsec pip install -r requirements.txt export HF_TOKEN=... # required for gated models (Llama, Gemma) ``` ## 运行第一步完整性检查 展示在一个良性提示词以及一个带有 伪造 GCG 风格乱码后缀的良性提示词上的改写前后对比(该后缀应该会被破坏): ``` # 本地(需要 GPU)或在 Slurm 上 python -m scripts.test_defense --model gemma4-26b-a4b ``` ### 在 TAU Slurm 集群上 ``` sbatch slurm/run.slurm gemma4-26b-a4b squeue --me # 输出存放在 slurm/logs/ ``` ## 布局 ``` src/ config (models, params), HF model wrapper, paraphrase defense scripts/ runnable entry points (test_defense.py = Step 1 check) slurm/ cluster job script + logs ```
标签:PyTorch, Yelp, 反取证, 大语言模型安全, 安全评估, 对抗性攻击, 提示词越狱, 机密管理, 逆向工具