AbokiNapoli/differential-privacy-defense

GitHub: AbokiNapoli/differential-privacy-defense

针对联邦学习中的梯度反演攻击,实现差分隐私防御机制,帮助医疗影像 AI 在保护患者隐私的同时维持诊断准确率。

Stars: 0 | Forks: 0

# 差分隐私防御工具包 [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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, 医疗数据安全, 合规性, 图像重建攻击, 安全多方计算, 安全规则引擎, 对抗防御, 差分隐私, 开源安全, 数据隐私, 无后门, 机器学习, 梯度反转攻击, 梯度泄露防御, 模型安全, 深度学习, 网络安全, 联邦学习, 计算机视觉, 逆向工具, 隐私保护, 隐私效用权衡, 隐私计算, 隐私预算