跳到内容

14.3 差分隐私、敏感度与预算:噪声只是机制的一部分

研究者需要查询不同地区的伤情统计。只隐藏行级记录仍可能被相邻查询相减,推断某位新加入哨兵的情况。预言厅决定给计数加噪,却发现同一人可以贡献上千条事件,分析者也能无限重复查询取平均——“加过噪”并没有形成可证明保证。

差分隐私(DP)是一套关于随机机制、相邻数据集和隐私损失的数学约束。正确实现还需要贡献界限、预算会计、随机数安全和发布系统。

本课目标

  • 理解 $(\varepsilon,\delta)$-DP 的相邻数据集定义;
  • 计算计数/和/均值查询的全局敏感度;
  • 解释 clipping、composition 与 privacy accounting;
  • 识别“随手加拉普拉斯噪声”为什么不足以上生产。

1. 保证针对输出分布

若数据集 $D$ 与 $D'$ 只相差一个人的数据,随机机制 $M$ 满足:

$$ P[M(D)\in S]\le e^{\varepsilon}P[M(D')\in S]+\delta $$

对所有可能输出集合 $S$ 成立,则称其满足 $(\varepsilon,\delta)$-DP。

  • $\varepsilon$ 控制两种输出分布的可区分程度;
  • $\delta$ 允许一个需要严格约束的小概率项;
  • “相邻”可定义为加入/删除一个人,或替换一个人,必须在报告中说明;
  • 保护单位应是人、设备还是事件,由风险模型决定。

DP 不是“攻击成功率为零”,也不隐藏数据集本身的总体事实。它限制的是单个保护单位对发布的额外影响。

2. 敏感度决定噪声尺度

查询 $f$ 的全局 L1 敏感度:

$$ \Delta f=\max_{D\sim D'}\lVert f(D)-f(D')\rVert_1. $$

若每人最多贡献一行,计数敏感度通常为 1。若一人可贡献 1000 条事件,事件计数的 person-level 敏感度可高达 1000;必须限制每人的贡献。

和与均值需要值域界限。例如将每人的时长裁剪到 $[0,24]$ 小时,再定义每人最多一天一条。裁剪会引入偏差,应报告裁剪比例和对群体的影响。

3. 拉普拉斯机制示意

对纯 $\varepsilon$-DP 的数值查询,可按 $\Delta f/\varepsilon$ 的尺度加入 Laplace 噪声:

python
import numpy as np

def illustrative_private_count(bounded_person_ids, epsilon, rng):
    if epsilon <= 0:
        raise ValueError("epsilon must be positive")

    # 前提:上游已保证每个保护单位最多贡献一次
    true_count = len(set(bounded_person_ids))
    sensitivity = 1.0
    return true_count + rng.laplace(0.0, sensitivity / epsilon)

rng = np.random.default_rng()
released = illustrative_private_count(person_ids, epsilon=0.5, rng=rng)

这是教学示意,不是生产库:没有预算账本、加密安全随机数、并发控制、查询规范化、审计和攻击防护。生产中应使用经过评估的 DP 系统,并验证其实际实现保证。

4. 没有通用的 epsilon 分级表

epsilon < 0.1 称为强、≈1 称为中、>10 称为弱,脱离邻接定义、保护单位、组合次数、delta 和威胁模型就没有充分意义。

选择参数需要记录:

  • 要保护谁以及相邻定义;
  • 可能发布多少次、跨多久组合;
  • 攻击者的辅助信息;
  • 结果决策的最小可接受效用;
  • delta 相对于总体规模的理由;
  • 参数由谁批准、何时复审。

先给出整体隐私损失目标,再在查询和时间窗口间分配,不要每个分析师自行选择“看起来够小”的 epsilon。

5. Composition 会消耗保证

多次访问同一人数据时,隐私损失组合。朴素顺序组合下,多个 $\varepsilon_i$ 机制的总预算可累加;更高级 accountant 可给更紧界,但不会让无限查询免费。

重复提交同一查询并平均独立噪声,会提高精度,也持续消耗预算。系统要:

  • 识别等价/重写查询;
  • 统一预算账本与原子扣减;
  • 处理并发、失败和重试;
  • 缓存相同查询的同一次发布结果;
  • 限制跨接口旁路与多个数据副本。

“组合多个查询以降低噪声”恰好颠倒了隐私预算的风险。

6. Post-processing 与 side information

DP 输出的任何不再访问原数据的后处理不会额外削弱其 DP 保证。这使排序、可视化和确定性格式化可以复用同一发布结果。

DP 设计允许攻击者拥有广泛辅助信息;保证不依赖隐藏算法。但实现中的密钥、随机状态、未保护中间表和调试日志仍需安全控制。

7. Central 与 local 模型

  • Central DP:可信服务接收原始数据,统一执行机制;通常效用更好,但中心需强安全与治理。
  • Local DP:数据在离开设备前随机化,服务端看不到原值;信任要求不同,统计噪声通常更大。

还存在 distributed/shuffle 等模型。选择取决于信任边界、攻击者和系统架构,不能只比较 epsilon。

8. 实现风险清单

text
[ ] 邻接关系和保护单位明确
[ ] 每人贡献次数和值域已强制界定
[ ] 机制与 accountant 数学一致
[ ] 随机数和浮点实现经过评估
[ ] 预算扣减原子、持久且不可绕过
[ ] 中间结果、日志和缓存不泄露真值
[ ] 多次发布、分组和筛选计入组合
[ ] 裁剪偏差与小群体效用已评估
[ ] 参数、代码和发布记录可审计

9. DP 不解决什么

  • 原始数据库被未授权读取;
  • 分析目的不合理或歧视性决策;
  • 错误、偏倚或不具代表性的数据;
  • 小群体统计本身带来的群体伤害;
  • 非 DP 接口泄露同一数据;
  • 模型或发布系统之外的身份映射。

它是发布/学习机制的一项形式化保证,不是完整隐私计划。

常见误区

  • 加了随机噪声就是 DP:还需邻接、敏感度和机制证明。
  • epsilon 有统一安全阈值:上下文和组合决定解释。
  • 每个事件敏感度为 1:保护人为单位时需限制个人贡献。
  • 查询失败不消耗预算:若结果或副作用已可观察,处理必须按系统设计决定。

练习

  1. 分别定义 event-level 与 person-level 相邻关系,计算计数敏感度。
  2. 为平均工作时长选择 clipping 范围,并分析偏差。
  3. 设计原子预算账本,处理并发、重试和重复查询。
  4. 审计一个“加噪 API”,找出预算和旁路缺口。

小结

差分隐私的核心不是噪声按钮,而是一个可审计的整体保证:保护单位、贡献界限、机制、预算组合和系统边界必须一致。

最后一课把隐私要求落到日常运行:怎样持续执行访问授权、保留删除、请求响应、供应商管理和事件处置。

Built with VitePress | Software Systems Atlas