AI测试架构知识库AI测试架构知识库
首页
  • 方法论体系
  • 评估体系
  • 对比分析
  • 最佳实践
  • LLM技术
  • VLM技术
  • Agent技术
  • RAG技术
  • 模型评估
  • 自愈测试
  • UI测试场景
  • API测试场景
  • 性能测试场景
  • 安全测试场景
  • 移动测试场景
  • 数据工程
  • MLOps实践
  • 平台建设
  • DevOps集成
  • 质量评估
  • 效果度量
  • 风险控制
  • 合规审计
  • 视觉融合
  • 稳定性测试
  • 服务端技术
  • 系统架构
  • 前沿探索
  • 软技能
首页
  • 方法论体系
  • 评估体系
  • 对比分析
  • 最佳实践
  • LLM技术
  • VLM技术
  • Agent技术
  • RAG技术
  • 模型评估
  • 自愈测试
  • UI测试场景
  • API测试场景
  • 性能测试场景
  • 安全测试场景
  • 移动测试场景
  • 数据工程
  • MLOps实践
  • 平台建设
  • DevOps集成
  • 质量评估
  • 效果度量
  • 风险控制
  • 合规审计
  • 视觉融合
  • 稳定性测试
  • 服务端技术
  • 系统架构
  • 前沿探索
  • 软技能
  • AI安全

    • AI 安全与对齐
    • 对齐评估
    • 内容安全
    • 隐私保护
    • 红队测试

🔐 隐私保护

一句话总结:隐私保护在 AI 训练中防止敏感数据泄露,在推理中保护用户隐私,同时保持模型效用。

📋 目录

  • 隐私威胁
  • 差分隐私
  • 联邦学习
  • 安全多方计算
  • 数据匿名化

⚠️ 隐私威胁

隐私泄露攻击类型

威胁模型

威胁者能力目标
外部攻击者API 查询提取训练数据
半诚实内部访问模型参数恢复敏感信息
恶意同谋访问训练日志推断用户数据
侧信道攻击者观测运行时间推断输入数据

📐 差分隐私

核心概念

差分隐私公式

$$DP: P(M(D) \in S) \leq e^\epsilon \times P(M(D') \in S) + \delta$$

其中 $D$ 和 $D'$ 仅相差一条记录。

DP-SGD 实现

class DPSGDTrainer:
    def __init__(self, model, epsilon, delta, clip_norm):
        self.model = model
        self.epsilon = epsilon
        self.delta = delta
        self.clip_norm = clip_norm
        self.noise_multiplier = self.compute_noise()
    
    def compute_noise(self):
        """计算噪声系数"""
        # 基于 (ε, δ)-DP 公式计算
        return (clip_norm * math.sqrt(2 * math.log(1.25 / delta))) / epsilon
    
    def train_step(self, batch):
        """差分隐私训练步骤"""
        # 1. 计算每个样本的梯度
        gradients = []
        for sample in batch:
            grad = compute_gradient(self.model, sample)
            # 2. 梯度裁剪
            grad = clip_gradient(grad, self.clip_norm)
            gradients.append(grad)
        
        # 3. 聚合梯度
        mean_grad = torch.stack(gradients).mean(dim=0)
        
        # 4. 添加高斯噪声
        noise = torch.randn_like(mean_grad) * self.noise_multiplier
        noisy_grad = mean_grad + noise
        
        # 5. 更新模型
        self.model.apply_gradient(noisy_grad)

隐私预算追踪

ε 值保护强度适用场景
1.0极高医疗数据
5.0高金融数据
10.0中高一般个人数据
100.0中公开数据集

🌐 联邦学习

联邦学习架构

联邦聚合算法

算法描述鲁棒性
FedAvg简单平均低
FedProx加入 proximal 项中
FedMedian中值聚合高
Krum基于距离选择高
Trimmed Mean修剪均值高

FedAvg 实现

class FedAvgServer:
    def __init__(self, model, n_clients, round_fraction=0.1):
        self.model = model
        self.n_clients = n_clients
        self.round_fraction = round_fraction
    
    def train_round(self, clients, local_epochs=5, batch_size=32):
        """单个联邦训练轮次"""
        # 1. 选择活跃客户端
        active_clients = random.sample(clients, 
            int(len(clients) * self.round_fraction))
        
        # 2. 发送全局模型
        global_weights = self.model.get_weights()
        
        # 3. 收集本地更新
        updates = []
        for client in active_clients:
            local_model = client.train(local_weights, 
                local_epochs, batch_size)
            update = local_model.get_weights() - global_weights
            updates.append((client.data_size, update))
        
        # 4. 加权聚合
        total_size = sum(size for size, _ in updates)
        aggregated = np.zeros_like(global_weights)
        for size, update in updates:
            aggregated += (size / total_size) * update
        
        # 5. 更新全局模型
        self.model.set_weights(global_weights + aggregated)
        
        return self.evaluate()

隐私保护联邦

class PrivacyPreservingFedAvg:
    def __init__(self, server, dp_epsilon, secure_aggregation=True):
        self.server = server
        self.epsilon = dp_epsilon
        self.secure_agg = secure_aggregation
    
    def secure_aggregate(self, updates):
        """安全聚合:服务器只看到和,看不到单个更新"""
        # 使用同态加密或秘密共享
        encrypted_updates = [self.encrypt(u) for u in updates]
        # 服务器只能解密总和
        aggregated = self.decrypt_sum(encrypted_updates)
        return aggregated

🔒 安全多方计算

MPC 在 AI 中的应用

MPC 技术方案

方案通信复杂度计算复杂度适用场景
GMWO(n)O(n)两方计算
SPDZO(n)O(n²)多方计算
TFHEO(log n)O(n log n)同态加密
Secret SharingO(n²)O(n²)通用场景

🧹 数据匿名化

匿名化技术

k-匿名模型

class KAnonymizer:
    def __init__(self, k):
        self.k = k
    
    def anonymize(self, df: pd.DataFrame) -> pd.DataFrame:
        """实现 k-匿名"""
        # 1. 识别准标识符
        quasi_identifiers = self.identify_qi(df)
        
        # 2. 泛化函数
        generalization_hierarchy = {
            'age': [0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
            'zip_code': ['*', '123', '1234', '12345'],
            'gender': {0: 'M', 1: 'F'}
        }
        
        # 3. 划分等价类
        equivalence_classes = df.groupby(quasi_identifiers)
        
        # 4. 确保每类大小 >= k
        for name, group in equivalence_classes:
            if len(group) < self.k:
                df = self.suppress_or_generalize(df, group)
        
        return df

隐私保护等级

等级技术保护强度数据效用
原始无无100%
L1删除标识符低80%
L2泛化中60%
L3k-匿名中高50%
L4差分隐私高30-70%
L5联邦 + DP最高25-65%

📚 延伸阅读

  • Differential Privacy — DP 综述
  • Federated Learning — 联邦学习综述
  • PrivateAgg — 安全聚合
  • DP-SGD — 差分隐私 SGD
在线编辑文档
上次更新: 2026/4/28 17:49
贡献者: colewort
Prev
内容安全
Next
红队测试