跳到内容

第 12 卷 / 第 14 章 / 第 3 课

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

研究者需要查询不同地区的健康事件统计。只隐藏行级记录仍可能被相邻查询相减,推断某位新加入参与者的情况。数据平台决定给计数加噪,却发现同一人可以贡献上千条事件,分析者也能无限重复查询取平均;“加过噪”听起来像保护措施,却还没有形成可证明保证。

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

本课目标 ​

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

1. 保证针对输出分布 ​

对选定保护单位定义相邻关系 D∼D′。若随机机制 M 对所有相邻数据集对和所有可测输出集合 S 都满足下式,则称其满足 (ε,δ)-DP:

P[M(D)∈S]≤eεP[M(D′)∈S]+δ

这里 ε≥0、0≤δ<1,概率针对机制的随机性。定义约束整个输出分布,不只检查某一次结果。

  • ε 控制两种输出分布的可区分程度;
  • δ 是不等式中的加性松弛项,应严格约束,不能直接解释为某人的泄露概率;
  • “相邻”可定义为加入/删除一个人,或替换一个人的全部数据,必须在报告中说明;
  • 保护单位应是人、设备还是事件,由风险模型决定。

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

2. 敏感度决定噪声尺度 ​

查询 f 的全局 L1 敏感度:

Δf=supD∼D′‖f(D)−f(D′)‖1.

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

敏感度由相邻关系和整个发布范围共同决定,不能只写一个“每行上限”:

查询相邻关系强制条件全局 L1 敏感度
不同人数加入/删除一个人稳定个人 ID 去重1
事件条数加入/删除一个人每人在本次发布范围内至多 C 行C
总时长加入/删除一个人每人一个值,裁剪到 [0,24]24
平均时长固定、公开人数 n>0,替换一个人每人一个值,裁剪到 [0,24]24/n

最后一行来自一个人的值至多改变 24,总和除以不变的 n。若人数也是私密数据,就不能直接套用实际人数作分母;一种方案是分别发布加噪的和与计数,再按两次机制组合预算。噪声分母接近零时,可用事先公开的下限做后处理,但小群体误差仍需评估。参见 NIST SP 800-226 附录 B.5。

“每天每人一条、值域 [0,24]”若用于 30 天的总时长发布,个人贡献仍可能达到 720。裁剪次数要覆盖查询窗口;裁剪比例与群体偏差也要评估。若从私密数据挑裁剪边界或公开裁剪比例,这些额外访问与发布同样需要隐私处理。

3. 拉普拉斯机制示意 ​

对纯 ε-DP 的数值查询,可按 Δf/ε 的尺度加入 Laplace 噪声:

python
import numpy as np

def illustrative_private_count(person_ids, epsilon, rng):
    if not np.isfinite(epsilon) or epsilon <= 0:
        raise ValueError("epsilon must be finite and positive")
    person_ids = list(person_ids)
    if any(not isinstance(value, str) or not value for value in person_ids):
        raise ValueError("person IDs must be nonempty strings")
    true_count = len(set(person_ids))
    return true_count + rng.laplace(0.0, 1.0 / epsilon)

person_ids = ["synthetic-a", "synthetic-a", "synthetic-b", "synthetic-c"]
rng = np.random.default_rng(42)  # Reproducible arithmetic only; no private release.
released = illustrative_private_count(person_ids, epsilon=0.5, rng=rng)
print(round(released, 3))

例子使用合成人员 ID,去重后人数为 3,输出约为 4.588。固定 seed 只用于复现算术,公开 seed 会让噪声可预测,不能用于真实隐私发布。这个函数也没有预算账本、安全随机数、并发控制和浮点机制保证;替换随机数生成器一项仍不足以上生产。

在理想实数 Laplace 机制中,ε=0.5、Δf=1 给出尺度 b=2。因此平均绝对噪声为 2,约 95% 的绝对噪声不超过 bln⁡20≈5.991。这是精度描述,不是隐私参数 δ。相邻计数只差 1,由三角不等式,任一输出的密度比不超过 e1/b=e0.5。机制及其证明见 Dwork 与 Roth 第 3 章。

4. 没有通用的 epsilon 分级表 ​

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

选择参数需要记录:

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

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

5. Composition 会消耗保证 ​

同一人的数据用于多次发布时,隐私保证要组合。基本顺序组合给出 (∑iεi,∑iδi) 上界;更高级 accountant 在满足其条件时可能给出更紧的界。预算记录的是保证上界,不是已经测得的伤害。只有各分区在保护单位上不重叠、分区规则满足机制条件时,才可使用并行组合;同一个人的不同日期记录并不满足这个条件。

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

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

例如独立发布 100 次、每次 ε=0.5,基本组合上界为 50;尺度为 2 的噪声取平均后,方差从 8 降为 8/100。这次精度改善伴随额外发布。专门设计的联合机制有时可在固定总预算内提高效用,不能一概否定;需要核对完整机制及其证明。

缓存同一次发布结果再展示不新增原始数据访问。缓存键应绑定快照、查询参数、贡献规则和机制版本;换快照后重新计算是另一次发布。不要把“复用结果”实现成“给不同查询复用同一个噪声”,相减时噪声会抵消。

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