EdwardAThomson/Scramble-Gate
GitHub: EdwardAThomson/Scramble-Gate
ScrambleGate 是一种用于防御LLM应用提示注入攻击的实验性技术。
Stars: 2 | Forks: 2
# ScrambleGate
**ScrambleGate** 是一种用于防御 LLM 应用中 **提示注入攻击** 的实验性技术。
⚠️ **实验性:请勿在生产环境中使用。此技术不可行。** ⚠️
## 概述
目标是创建一个作为 **随机预执行门** 的工具:在将提示发送到主模型之前,ScrambleGate 会随机采样并打乱输入的部分,然后将它们发送到 LLM 进行安全分类。
如果检测到任何打乱视图中的恶意意图,则阻止执行。然而,当输入被打乱时,性能会变差。
这里还尝试了一个额外的想法,即输入的(随机)掩码,它比打乱效果更好,但引入了误报(LLM 变得更加可疑)。
## 🎯 动机
提示注入是 LLM 系统日益增长的攻击向量。
大多数防御措施依赖于静态过滤器或基于规则的扫描,攻击者可以适应这些扫描。
ScrambleGate 将 **随机化** 引入检测管道,灵感来自计算机安全中的 **ASLR(地址空间布局随机化)**:
- 正如 ASLR 随机化内存布局以使漏洞不可靠,
- ScrambleGate 随机化提示视图(打乱+采样),因此攻击者无法预测门将检查的内容。
## 🔑 核心思想
1. **标准化与去混淆**
- Unicode 清理,零宽度删除,同形符标准化。
- 对加密有效载荷进行 Base64/hex/URL 解码。
2. **带覆盖的窗口采样**
- 将输入分割成重叠的窗口。
- 跟踪覆盖范围(n-gram 颗粒)以确保广泛的检查。
3. **随机打乱**
- 通过掩码标记、轻量级句子打乱或保持清洁生成每个窗口的多个“视图”。
- 在所有视图中运行检测器。
4. **多检测器评分**
- 正则表达式/规则启发式方法(例如,“忽略之前的指令”,“显示系统提示”)。
- 结构异常检查(编码块,可疑重复)。
- (可插拔)ML 分类器或 LLM 探针用于语义意图。
5. **随机阻塞**
- 任何高风险分数都会阻止提示。
- 覆盖率低于阈值 → 升级以进行审查。
## 📁 项目结构
### 核心脚本
- **`scramblegate.py`** - ScrambleGate 防御实现的主脚本
- 核心函数 `gate_prompt()`,具有窗口、打乱和检测
- 基线 LLM 检测以进行比较 (`baseline_llm_check()`)
- 可配置的策略和检测阈值
- **`scramblegate_runner.py`** - Agent Dojo 集成和基准测试
- 测试 ScrambleGate 对真实提示注入攻击的防御
- 与 Agent Dojo 测试套件(银行、Slack、旅行、工作空间)集成
- 生成包含基线比较的详细 markdown 报告
- 保存包括打乱视图在内的详细审计跟踪
- **`test_scramblegate.py`** - 核心功能的单元测试
- 测试门逻辑、打乱函数和检测机制
### 依赖项
- **`requirements.txt`** - Python 包依赖项
- **`.env`** - 环境变量(使用您的 `OPENAI_API_KEY` 创建)
## ⚙️ 快速开始
1. 设置您的环境:
```
export OPENAI_API_KEY="your-api-key-here"
```
2. 使用不同的打乱模式运行测试:
```
# 使用概率性打乱(推荐)
python scramblegate_runner.py probabilistic
# 仅使用掩码测试
python scramblegate_runner.py masking_only
# 仅使用纯打乱测试
python scramblegate_runner.py pure_scrambling
# 仅使用干净副本测试
python scramblegate_runner.py clean_only
# 使用确定性掩码+打乱测试
python scramblegate_runner.py deterministic_masking
```
这将测试 ScrambleGate 对 Agent Dojo 提示注入基准的防御,并生成详细报告。
## 🎯 打乱模式性能
基于 Agent Dojo 基准测试(27 个注入任务):
| 模式 | 检测率 | 关键见解 |
|------|----------------|-------------|
| **broken_probabilistic** | **59.3%** | **偶然的掩码偏差(最高性能)** |
| probabilistic | 51.9% | 清洁、掩码、打乱视图的平衡混合 |
| clean_only | 48.1% | 多次分析相同副本 |
| masking_only | 33.3% | `
标签:ASLR, LLM 安全, n-gram, Unicode 清理, URL发现, 内存布局随机化, 同形异义字符处理, 安全检测, 安全防御策略, 实验性技术, 密钥泄露防护, 异常检测, 文本处理, 机器学习安全, 注入攻击防御, 生产不推荐, 窗口采样, 编码解码, 规则匹配, 输入混淆, 逆向工具, 随机化技术, 零宽度字符处理