只公布"平均值"、"人均"、"占比",就算安全了吗?拖动下面的 ε,亲眼看攻击者如何仅凭统计结果把一个人从数据里揪出来。
旁边这块仪表已默认跑了一次攻击,显示的是攻击者仅凭统计结果推断「张三是否在数据里」的把握。点下面的按钮换一批噪声再来一次,看看结果如何波动。
选择一个场景。系统会生成一批普通用户,再加入一个极端的「张三」。
攻击者不需要看到原始数据,只要能比较「包含张三」和「不包含张三」的统计结果,极端个体就可能暴露。
ε 是隐私预算。ε 越小,噪声越大,隐私越强;ε 越大,结果越准,但更容易暴露单个人。
「预算」= 你愿意为整批数据总共泄露多少隐私。 第 3 节的 ε 是单次查询的成本,这里把它累加起来:给数据集设一个总额 3.0,每发布一次就扣掉相应的 ε,扣完为止。
为什么要有上限?如果允许无限次查询,攻击者可以把多次噪声结果平均掉,噪声就等于白加了。 (这是一个独立的沙盘演示,点击下方按钮不会影响上面第 3 节的统计结果。)
去掉姓名只能隐藏显式身份。只要统计结果对某个人足够敏感,仍可能通过差异反推。
差分隐私故意让发布值抖动,让「有你」和「没你」看起来差不多。
查询越多,攻击者越能平均掉噪声。隐私预算就是限制反复试探的刹车。