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, 反取证, 大语言模型安全, 安全评估, 对抗性攻击, 提示词越狱, 机密管理, 逆向工具