@data: 24 February 2019
@author: ◕‿◕ Echo 戴帽子の鹿 °
1. 隐私
定义:单个用户的某一些属性,强调 单个用户。
举例:若医院发布肺癌趋势,表明抽烟的人得肺癌的几率更高。这不泄露隐私。进一步讲,大家都知道张三抽烟,是否张三就会有肺癌呢?那么这算不算隐私泄露?结论是同样不算,因为这只是一个猜测。若医院说,张三因为抽烟,所以有了肺癌,即隐私泄露。
所以,从隐私保护的角度讲,隐私的主体是单个用户,只有牵涉到某个特定用户才属于隐私泄露,而群体用户的信息(聚集信息)的发布不属于隐私泄露范畴。高德地图曾发过一张图,大意为开某一类车的群体喜欢去洗浴中心……很多人说暴露隐私,但从学术定义上来说,这不属于泄露隐私,因为没有牵涉到任何个体。
差分攻击:那么是不是就可以随意发布聚集信息呢?那倒未必,设想这样一种情况:医院发布了一序列信息说,这个月医院接诊了100个病人,其中有10个感染HIV。假设攻击者知道100个人中的99个人是否有感染HIV的信息,那么攻击者只需要将99个人的信息与医院发布的信息进行配对,那么就可以知道第100个人是否感染HIV。这种对隐私的攻击行为就是差分攻击。
举例:
序号 | 姓名 | 感染HIV |
---|---|---|
1 | Tom | 0 |
2 | Jack | 1 |
3 | Alice | 1 |
…… | …… | …… |
99 | Diego | 0 |
100 | Henry | 1 |
把上述表格的前 99 99 99 条记录作为数据集 D 1 D_1 D1,前 100 100 100 条记录作为数据集 D 2 D_2 D2。算法 M = count ( i ) M = \operatorname{count}(i) M=count(i),其中, i = 1 , 2 , 3 ⋯ i=1,2,3\cdots i=1,2,3⋯。因此,对于数据集 D 1 D_1 D1: count ( 99 ) = 9 \operatorname{count}(99)=9 count(99)=9, 数据集 D 2 D_2 D2: count ( 100 ) = 10 \operatorname{count}(100)=10 count(100)=10,这样我们可以推断第 100 100 100 条的记录的值一定为 1 1 1,此时就会造成隐私泄露,即所谓的差分攻击。
2. 差分隐私(Differential Privacy)
差分隐私,顾名思义,即防止差分攻击。它的目的就是即使你知道医院发布的100个人的信息以及另外99个人的细信息,你也绝对无法通过比对两者的信息而获取第100个人的信息。那么如何才能做到这一点呢?
差分隐私:如何你能找到一种方法让攻击者用某种方式查询100个人的信息和查询那99个人的信息得到的结果是一致的,那攻击者就没办法找出第100个人的信息。 所以重点在 “一致” 上,即加入 “随机性” 。如果查询100个记录和查询99个记录,输出同样的值的概率是一样的,攻击者就无法进行差分攻击。因此,差分隐私的 核心思想 为:对于差别只有一条记录的两个相邻数据集,查询它们获得相同值的概率非常非常的接近。这里要区别一下 “一致” 与 “接近”,如果概率一致,表示数据需要完全随机化,那数据就没有实用性了,其隐私保护也就没有意义了。? So,只能尽可能地让概率接近,而非一致,以期在隐私与实用性之间寻找一个平衡,即隐私保护与数据实用性之间的权衡问题。
差分隐私的基本思路:对于两个只相差一个记录的相邻数据集 D D D 和数据集 D ′ D' D′,查询算法 M M M 的输出结果 S S S 的概率应该非常接近。
Differential Privacy(DP)的定义
给定两个相似的数据集 D D D 和 D ′ D' D′,其中只有一条记录不同,即 ∣ D Δ D ′ ∣ ≤ 1 |D\Delta D'|\leq1 ∣DΔD′∣≤1。对于任意参数 ϵ > 0 \epsilon > 0 ϵ>0,查询函数 M M M 满足 ϵ \epsilon ϵ - differential privacy,则两个数据集 D D D, D ′ D' D′ 的查询结果在概率上应该接近。
严格上讲,对于任意的查询结果S满足:
P [ M ( D ) ∈ S ] ≤ e ϵ P [ M ( D ′ ) ∈ S ] P[M(D) \in S] \leq e^\epsilon P[M(D') \in S] P[M(D)∈S]≤eϵP[M(D′)∈S]
参数 ϵ \epsilon ϵ 接近 0 0 0 时, e ϵ e^\epsilon eϵ 接近 1 1 1,两个概率接近相等,保密程度高。
ϵ \epsilon ϵ 越大,数据越准确,保密程度越低。
举例:
以上面的是否感染HIV的表为例,在差分隐私保护的情况下,对于数据集 D 1 D_1 D1: count ( 99 ) = 9 + Y = S 1 \operatorname{count}(99)=9+Y=S_1 count(99)=9+Y=S1 ,对于数据集 D 2 D_2 D2: count ( 100 ) = 10 + Y = S 2 \operatorname{count}(100)=10+Y=S_2 count(100)=10+Y=S2 ,其中, Y Y Y 为添加的噪音。最终结果 S 1 S_1 S1, S 2 S_2 S2 均以几乎完全相同的概率输出 { 8 , 9 , 10 , 11 } \{8,9,10,11\} { 8,9,10,11}(这个结果知识假设)中的任意一个,其中,两者的概率差值为 e ϵ e^\epsilon eϵ。
3. 差分隐私实现
差分隐私实现:在原始数据/查询结果中加入随机性。
若某一种方法,用在数据集上能满足差分隐私的核心思想,则称该方法满足差分隐私。所以最常用的方法是在结果上加入满足某种分布的噪声,使查询结果随机化。目前,常见的方法有 拉普拉斯(Laplace)机制、指数(Exponential)机制、高斯(Gauss)机制。
初级版本:
A. 原始数据加噪声方式:
- 原始数据 + 指数噪声 = 指数保护隐私的数据 → \rightarrow → 给别人分析
- 原始数据 + 高斯噪声 = 高斯保护隐私的数据 → \rightarrow → 给别人分析
- 原始数据 + Laplace噪声 = Laplace保护隐私的数据 → \rightarrow → 给别人分析
B. 访问原始数据的函数加噪声方式:(别人想分析原始数据)
- 访问原始数据的结果 + 指数噪声 = 输出指数噪声保护的数据
- 访问原始数据的结果 + 高斯噪声 = 输出高斯噪声保护的数据
- 访问原始数据的结果 + Laplace噪声 = 输出Laplace噪声保护的数据
进阶版本:
- 原始数据 + 指数噪声 + 主成分分析 = 指数主成分分析保护隐私的数据 → \rightarrow → 给别人分析
- 原始数据 + 高斯噪声 + 主成分分析 = 高斯主成分分析保护隐私的数据 → \rightarrow → 给别人分析
- 原始数据 + Laplace噪声 + 主成分分析 = Laplace主成分分析保护隐私的数据 → \rightarrow → 给别人分析
拉普拉斯(Laplace)机制
即在查询结果中加入 Laplace分布 的噪音,适用于数值型输出。例如:zhihu里有多少用户为 985 985 985 大学毕业的?假设结果为 2000 2000 2000 人,那么每一次查询得到的结果都会稍微有些区别,比如有很高的概率输出 2001 2001 2001,较高概率输出 2010 2010 2010,较低概率输出 1990 1990 1990,等等。
Laplace分布 X ~ L a p ( μ , b ) X \tilde{ } Lap(\mu,b) X~Lap(μ,b)
Laplace噪声,即满足Laplace分布的一个随机值。在差分隐私领域,Laplace噪声是一种最常见的噪声添加方式,该分布的概率密度函数表示如下:
f ( x ∣ μ , b ) = 1 2 b e − ∣ x − μ ∣ b f(x|\mu,b)=\frac{1}{2b}e^{-\frac{|x-\mu|}{b}} f(x∣μ,b)=2b1e−b∣x−μ∣
其函数图如下:
由概率密度函数求分布的概率累积函数如下:
F ( x ∣ μ , b ) = { 1 2 e − μ − x b , x < μ 1 − 1 2 e − x − μ b , x ≥ μ F(x|\mu,b)=\left \{ \begin{aligned} \frac{1}{2}e^{-\frac{\mu-x}{b}},x<\mu \\ \\ 1-\frac{1}{2}e^{-\frac{x-\mu}{b}},x\geq\mu\\ \end{aligned} \right. F(x∣μ,b)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧21e−bμ−x,x<μ1−21e−bx−μ,x≥μ
推导过程:
当 x < μ x<\mu x<μ 时, f ( x ∣ μ , b ) = 1 2 b e − μ − x b f(x|\mu,b)=\frac{1}{2b}e^{-\frac{\mu-x}{b}} f(x∣μ,b)=2b1e−bμ−x:
F ( x ∣ μ , b ) = 1 2 b ∫ − ∞ x e − μ − x b d x = 1 2 b ∫ − ∞ x e x − μ b d x F(x|\mu,b)=\frac{1}{2b}\int^x_{-\infty}e^{-\frac{\mu-x}{b}}dx=\frac{1}{2b}\int^x_{-\infty}e^{\frac{x-\mu}{b}}dx F(x∣μ,b)=2b1∫−∞xe−bμ−xdx=2b1∫−∞xebx−μdx
令 t = x − μ b t=\frac{x-\mu}{b} t=bx−μ,可求得:
F ( x ∣ μ , b ) = 1 2 b ∫ − ∞ x − μ b b e t d t = 1 2 ∫ − ∞ x − μ b e t d t = 1 2 [ e t ] − ∞ x − μ b = 1 2 e − μ − x b F(x|\mu,b)=\frac{1}{2b}\int^{\frac{x-\mu}{b}}_{-\infty}be^tdt=\frac{1}{2}\int^{\frac{x-\mu}{b}}_{-\infty}e^tdt=\frac{1}{2} \left [e^t \right]^{\frac{x-\mu}{b}}_{-\infty}=\frac{1}{2}e^{-\frac{\mu-x}{b}} F(x∣μ,b)=2b1∫−∞bx−μbetdt=21∫−∞bx−μetdt=21[et]−∞bx−μ=21e−bμ−x
对于 x ≥ μ x \geq \mu x≥μ 的情况。由于Laplace噪声满足对称性,因此有以下等式成立:
F ( x ∣ μ , b ) = 1 2 b ∫ − ∞ x e − μ − x b d x = 1 − 1 2 b ∫ x + ∞ e − μ − x b d x = 1 − 1 2 b ∫ − ∞ x e − μ − x b d x = 1 − 1 2 e − μ − x b F(x|\mu,b)=\frac{1}{2b}\int^x_{-\infty}e^{-\frac{\mu-x}{b}}dx=1-\frac{1}{2b}\int^{+\infty}_xe^{-\frac{\mu-x}{b}}dx=1-\frac{1}{2b}\int^x_{-\infty}e^{-\frac{\mu-x}{b}}dx=1-\frac{1}{2}e^{-\frac{\mu-x}{b}} F(x∣μ,b)