AbokiNapoli/differential-privacy-defense
GitHub: AbokiNapoli/differential-privacy-defense
针对联邦学习中的梯度反演攻击,实现差分隐私防御机制,帮助医疗影像 AI 在保护患者隐私的同时维持诊断准确率。
Stars: 0 | Forks: 0
# 差分隐私防御工具包
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
针对联邦学习的差分隐私机制与梯度反演攻击防御的实现,专为保护隐私的医疗影像 AI 设计。
本工具包伴随以下研究:**“关于联邦气胸检测的隐私-效用前沿:评估差分隐私防御抵御梯度反演的效果”**
## 概述
联邦学习允许多家医院在不共享原始患者数据的情况下协作训练 AI 模型。然而,**梯度反演攻击**可以从共享的梯度中重建敏感的训练图像。本工具包实现并评估了**差分隐私 (DP)** 防御机制,该机制通过向梯度添加经过校准的噪声,使此类攻击在计算上变得不可行,同时保持模型的效用。
### 隐私-效用前沿
医疗影像 AI 面临着一种根本性的矛盾:
- **更高的隐私性** (较低的 ε) → 更多的噪声 → 更低的诊断准确率
- **更高的效用性** (较高的 ε) → 更少的噪声 → 更高的攻击脆弱性
本工具包旨在帮助找到**最佳运行点**,使得隐私保证对于临床数据而言足够强大,同时保持充分的准确率以实现可靠的诊断。
## 核心概念
### 差分隐私 (DP)
如果无论是否包含任何单个个体的数据,随机算法的输出分布几乎完全相同,则该算法满足 (ε, δ)-差分隐私。这可以防止攻击者确定特定患者是否在训练集中。
- **ε (epsilon)**:隐私预算。越小 = 隐私性越强。典型范围:0.1–10
- **δ (delta)**:隐私失败的概率。应满足 ≪ 1/n,其中 n 为数据集大小
- **C (裁剪范数)**:单个样本梯度的最大 L2 范数
### 梯度反演攻击
恶意服务器可以通过求解优化问题,从梯度中重建训练数据:
```
minimize ||∇_θ L(x_dummy, y_dummy) - ∇_θ L(x_true, y_true)||²
```
其中攻击者通过优化虚拟数据 (x_dummy, y_dummy) 来匹配观察到的梯度。如果没有 DP 保护,此方法可以恢复出可辨认的图像。
### 防御流程
```
Per-Sample Gradients
↓
Gradient Clipping (bound L2 norm to C)
↓
Aggregation (mean across batch)
↓
Noise Addition (Gaussian: σ = C√(2ln(1.25/δ)) / ε)
↓
Differentially Private Gradient (safe to share)
```
## 功能
- **DP 机制**:高斯和拉普拉斯噪声注入
- **梯度裁剪**:单样本 L2 范数边界限定
- **隐私预算跟踪**:监控多轮训练中的累积隐私损失
- **攻击模拟**:评估不同噪声水平下的重建质量
- **前沿分析**:寻找适用于临床应用的最佳 (ε, δ)
- **可视化**:隐私-效用权衡图,噪声影响分析
## 安装
```
# Clone 仓库
git clone https://github.com/AbokiNapoli/differential-privacy-defense.git
cd differential-privacy-defense
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
```
## 快速开始
### 运行演示
```
python demo.py
```
此演示运行了一个完整的模拟,展示了:
1. 梯度裁剪对异常值样本的影响
2. ε=2.0 时的 DP 噪声注入
3. 有无 DP 保护下的梯度反演攻击
4. 6 个 epsilon 值下的隐私-效用前沿
5. 噪声对医疗图像的视觉影响
**输出**:`output/` 文件夹中的 4 个可视化文件。
### 基本用法
```
from src.privacy_defense import DifferentialPrivacyMechanism
import numpy as np
# 使用 clinical-grade privacy (ε=2.0) 初始化 DP
dp = DifferentialPrivacyMechanism(
epsilon=2.0,
delta=1e-5,
max_grad_norm=1.0,
mechanism="gaussian"
)
# 来自 backpropagation 的 per-sample gradients
gradients = np.random.randn(32, 100000) # 32 samples, 100K parameters
# Apply differential privacy
protected_gradient = dp.apply_dp(gradients)
# 检查隐私状态
print(dp.get_privacy_guarantee())
```
### 模拟攻击
```
from src.privacy_defense import GradientInversionAttack
attack = GradientInversionAttack(image_shape=(512, 512))
# Without DP (vulnerable)
result = attack.simulate_attack(
true_gradient=protected_gradient,
model_weights=model_weights,
dp_mechanism=None
)
print(f"Attack PSNR: {result['psnr']:.2f} dB") # High = vulnerable
# With DP (protected)
result = attack.simulate_attack(
true_gradient=protected_gradient,
model_weights=model_weights,
dp_mechanism=dp
)
print(f"Attack PSNR: {result['psnr']:.2f} dB") # Low = protected
```
### 寻找最佳隐私预算
```
from src.privacy_defense import PrivacyUtilityAnalyzer
analyzer = PrivacyUtilityAnalyzer(
epsilon_values=np.array([0.1, 0.5, 1.0, 2.0, 5.0, 10.0])
)
# Evaluate 所有配置
results = analyzer.evaluate_frontier(baseline_accuracy=0.92)
# 寻找最优:max privacy 且 min accuracy ≥ 85% 且 attack success ≤ 20%
optimal_eps = analyzer.find_optimal_epsilon(
min_accuracy=0.85,
max_attack_success=0.2
)
print(f"Optimal epsilon: {optimal_eps}")
```
## 项目结构
```
differential-privacy-defense/
├── src/
│ ├── __init__.py
│ ├── privacy_defense.py # Core DP mechanisms & attack simulation
│ └── visualization.py # Privacy-utility plotting
├── tests/
│ └── test_privacy_defense.py # Unit tests
├── examples/
│ └── federated_training.py # Example federated learning loop
├── output/ # Generated visualizations
├── demo.py # Main demonstration script
├── requirements.txt
└── README.md
```
## 测试
```
pytest tests/ -v
```
测试涵盖:
- DP 机制初始化与验证
- 梯度裁剪(范数边界限定、小梯度保留)
- 噪声注入(形状保留、数值变化)
- 完整 DP pipeline 集成
- 隐私预算跟踪
- 攻击模拟(有无 DP 保护)
- 前沿分析(准确率与隐私的权衡)
## 研究背景
本工具包是为**用于医疗影像的联邦学习**研究而开发的,具体情况如下:
- **数据不能离开医院**(患者隐私法规)
- **梯度在机构间共享**以进行协作训练
- **梯度反演攻击**威胁到患者机密性
- **诊断准确率必须保持在较高水平**(临床可行性要求 >85%)
- **隐私预算必须紧凑**(对于敏感医疗数据要求 ε < 3)
### 为什么这对非洲医疗保健至关重要
非洲医院通常缺乏建立集中式数据湖的基础设施。具有强隐私保证的联邦学习可以实现:
- 无需数据共享的**跨医院协作**
- 通过汇集多个国家的数据来进行**罕见病检测**
- 满足数据保护法律的**法规合规性**
- 赢得患者和临床医生对 AI 系统的**信任**
## 主要结果(来自模拟)
| ε | 模型准确率 | 攻击成功率 | 隐私级别 | 建议 |
|---|---------------|----------------|---------------|----------------|
| 0.1 | ~72% | ~2% | 强 | 准确率过低 |
| 0.5 | ~81% | ~8% | 强 | 勉强可接受的准确率 |
| **1.0** | **~86%** | **~17%** | **强** | **接近最优** |
| **2.0** | **~89%** | **~32%** | **中等** | **良好的平衡** |
| 5.0 | ~91% | ~60% | 弱 | 攻击风险过高 |
| 10.0 | ~92% | ~78% | 弱 | 不推荐 |
**临床应用最佳值:ε ≈ 1.0–2.0**(取决于法规要求)
## 引用
如果您在研究中使用了本工具包:
```
@software{duah_dp_defense_2024,
author = {Duah, Nana Agyemang},
title = {Differential Privacy Defense Toolkit for Federated Medical Imaging},
year = {2024},
url = {https://github.com/AbokiNapoli/differential-privacy-defense}
}
```
## 参考文献
- Abadi et al. (2016). "Deep Learning with Differential Privacy." *ACM CCS*.
- Zhu et al. (2019). "Deep Leakage from Gradients." *NeurIPS*.
- Yin et al. (2021). "See Through Gradients: Image Batch Recovery via GradInversion." *CVPR*.
- Dwork & Roth (2014). "The Algorithmic Foundations of Differential Privacy." *FnT-TCS*.
## 许可证
MIT 许可证
## 致谢
作为加纳大学关于医疗影像隐私保护 AI 的 MPhil 研究的一部分而开发。
标签:AI安全工具包, Apex, Linux系统监控, Python, 人工智能安全, 凭据扫描, 医学图像分析, 医疗保健AI, 医疗影像AI, 医疗数据安全, 合规性, 图像重建攻击, 安全多方计算, 安全规则引擎, 对抗防御, 差分隐私, 开源安全, 数据隐私, 无后门, 机器学习, 梯度反转攻击, 梯度泄露防御, 模型安全, 深度学习, 网络安全, 联邦学习, 计算机视觉, 逆向工具, 隐私保护, 隐私效用权衡, 隐私计算, 隐私预算