SearchJump/AI-Red-Teaming
GitHub: SearchJump/AI-Red-Teaming
AI红蓝对抗演练工具,实现多种机器学习安全攻击和防御技术。
Stars: 0 | Forks: 0
```
# 人工智能安全与模型评估评估
This repository contains a collection of Python scripts demonstrating various machine learning security, interpretability, and vulnerability concepts. These implementations are consolidated from five different assessments covering model extraction, prediction explanation, model inversion, data poisoning, and large language model (LLM) prompt injection.
---
## 仓库结构
```text
├── extraction_assessment.py # ResNet-50 classification extraction using MobileNetV2
├── assessments_assessment.py # Interpretability of sequence classification using Alibi AnchorText
├── inversion_assessment.py # MIFace model inversion attack targeting an MNIST CNN
├── poisoning_assessment.py # Clean-label poisoning attack on CIFAR-10 data
├── llm_assessment.py # Prompt injection targeting a semantic-search QA chatbot
├── other_mnist.pt # Pretrained model weights for the inversion task (external file)
├── cifar.py # Helper definitions for CIFAR-10 model training (external file)
└── README.md # Project documentation
```
## 安装与前置条件
要执行这些脚本,您需要一个具有GPU访问权限的Python环境(推荐用于训练和推理,尽管支持CPU回退)以及安装了标准的机器学习依赖项。
### 1. 安装依赖项
使用`pip`安装所有必需的库:
```
pip install torch torchvision numpy matplotlib pillow scikit-learn \
transformers sentence-transformers datasets faker \
adversarial-robustness-toolbox spacy
```
### 2. 下载SpaCy模型
预测解释脚本使用SpaCy的中等英语网络模型。直接下载:
```
python -m spacy download en_core_web_md
```
### 3. 必要的预训练文件
确保以下文件位于您的脚本工作目录中(如果是在原始平台环境之外本地运行):
* `other_mnist.pt`(由`inversion_assessment.py`使用)
* `cifar.py`(由`poisoning_assessment.py`使用)
## 脚本概述与执行
### 1. 模型提取 (`extraction_assessment.py`)
* **目标:** 从黑盒ResNet-50受害者模型(披萨与热狗分类器)中提取分类边界以训练轻量级的MobileNetV2代理模型。
* **机制:** 使用来自`food101`数据集的过滤输入查询受害者模型,以标记自定义目标训练集。
* **执行:**
python extraction_assessment.py
* **预期成果(保存到`my_assessment/`):**
* `extraction_counts.json` — 查询标签的分布。
* `extraction_proxy_scores.npy` — 新训练的代理模型产生的分数。
### 2. 解释模型预测 (`assessments_assessment.py`)
* **目标:** 使用Alibi库的`AnchorText`解释器找到导致OpenAI RoBERTa序列分类器将文本分类为“假”(机器生成)的精确关键词(锚点)。
* **机制:** 生成目标文本提示的扰动变体,以找到在强制分类结果中保持最高精度的单词。
* **执行:**
python assessments_assessment.py
* **预期成果(保存到`my_assessment/`):**
* `assessments_submission.json` — 对“假”分类有贡献的前三个关键词。
### 3. 模型反演 (`inversion_assessment.py`)
* **目标:** 使用模型反演攻击重建指定输出类的代表性输入特征。
* **机制:** 运行Adversarial Robustness Toolbox (ART)中的`MIFace`攻击以优化像素矩阵,从`other_mnist.pt`模型生成类`1`、`7`和`9`的重建。
* **执行:**
python inversion_assessment.py
* **预期成果(保存到`my_assessment/`):**
* `inversion_submission.npy` — 生成的形状为`(3, 1, 28, 28)`的图像表示。
### 4. 清标签数据投毒 (`poisoning_assessment.py`)
* **目标:** 执行针对CIFAR-10分类模型的清标签投毒攻击。
* **机制:** 将目标训练类(青蛙,索引6)的所有实例替换为另一个类(猫,索引3)的副本,同时保持原始标签未修改。当模型在数据上训练时,它将猫类特征与青蛙分类标签关联起来。
* **执行:**
python poisoning_assessment.py
* **预期成果(保存到`my_assessment/`):**
* `poisoning_dataset.npz` — 导出的投毒CIFAR-10训练集。
* `poisoning_model` — 在投毒数据集上训练的模型的状态字典。
### 5. LLM 提示注入 (`llm_assessment.py`)
* **目标:** 使用提示注入修改本地问答管道的结果。
* **机制:** 使用语义相似性搜索模拟目录以检索个人数据。将恶意输入字符串注入查询中,以覆盖检索到的数据库事实,迫使QA模型返回定制的最喜欢的颜色。
* **执行:**
python llm_assessment.py
* **预期成果(保存到`my_assessment/`):**
* `llm_submission.txt` — 成功的提示注入有效载荷。
## 验证输出生成
一旦所有任务都成功执行,您的输出目录结构应如下所示:
```
my_assessment/
├── extraction_counts.json
├── extraction_proxy_scores.npy
├── assessments_submission.json
├── inversion_submission.npy
├── poisoning_dataset.npz
├── poisoning_model
└── llm_submission.txt
```
标签:Adversarial Robustness Toolbox, AI伦理, AI安全, Chat Copilot, CIFAR-10, Datasets, DLL 劫持, Faker, Matplotlib, MIFace, MNIST, MobileNetV2, Numpy, Pillow, PyTorch, ResNet-50, Scikit-learn, Sentence-Transformers, SIP, SpaCy, TorchVision, XML 请求, 凭据扫描, 反取证, 大语言模型, 安全开发, 安全测试, 安全评估, 密钥泄露防护, 攻击性安全, 攻击技术, 机器学习安全, 机器学习攻击, 模型反演, 模型可解释性, 模型提取, 模型漏洞, 模型评估, 深度学习, 神经网络, 系统调用监控, 红队技术, 语义搜索, 逆向工具, 预测解释