简单的差分隐私与差分隐私算法分析

介于网上对于差分隐私的介绍大多停留在定义上面,本文将简单介绍差分隐私以及算法设计,仅仅用作直觉上和概念上的丰富,没有详细计算过程,部分地方也比较粗略,请多多包涵。详细内容请阅读相关文献书籍。BRB/04/02

差分隐私是一种技术手段,用于防范对于算法的差分攻击。差分攻击简单的说,把算法想象为一个黑箱,输入数据到黑箱当中返回输出,发布输出,而攻击者则利用相似的数据集(仅有一个或一小部分不同)放入黑箱中,然后得到各自的输出,然后通过输出判断数据集的差异,从而导致输入信息的泄露。一般来说,输入数据来自用户,这样用户个体的信息将遭到泄露。

差分隐私技术最初来自密码学,简单的理解,可以认为是一种对于计算结果的“加密”,但是对应的“解密”过程是比较困难的,注意这里我没有说绝对,在庞大的查询数量之下还是会泄露隐私,但这里我们有了一种手段,去了解自己的算法模型什么时候会“撑不住”了。

需要注意的是,差分隐私技术保护的是输出,即计算结果,并不保护过程。并且差分隐私技术会导致结果产生一定的误差,如果场景需要绝对准确的结果,则不适用差分隐私技术。

在改为差分隐私版本的算法之前,需要注意的是,原算法可以是确定性算法、近似算法、随机算法、或二者交集,但是差分隐私处理后的算法一定属于随机算法,因为确定性算法无法保证差分隐私的定义(比较特例的情况除外,实际意义不大)。

下面列举一个简单的差分隐私算法。
任务:有一组数据D,仅记录n个用户ID和属性(取值0,1),将D输入算法A,返回拥有属性0的用户的占比(通常称这种查询为counting query)。
根据描述,算法A:
Input: D D D = ( i d , f e a t u r e ) n (id,feature)^{n} (id,feature)n
Output: Z Z Z
Algorithm: Z Z Z = ∣ { D ∣ D ( f e a t u r e ) = 0 } ∣ n \frac{|\{D|D(feature)=0\}|}{n} n{DD(feature)=0}, return Z Z Z
在这类算法当中,假设有一个攻击者,想要获取用户个体的信息,他能够操作输入数据,也就是说,他能利用各种输入数据的输出进行推理。比如,他输入一个数据库 D 1 D_{1} D1包含小明的信息,但他并不知道小明的feature是0还是1,于是他又输入一个数据库 D 2 D_{2} D2,将小明删除,通过比较两个输出,攻击者就知道了小明的feature是0还是1了。

那么可以得到以下内容:

  1. 我们称这样的 D 1 D_{1} D1 D 2 D_2 D2相邻的,他们“距离”为1(对于不同数据有更严格的定义)。
  2. 在一般情况下,确定性算法不可以是差分隐私的。
  3. 攻击者想要通过数据的全局统计信息推断个体信息。

我们的做法是加入一些结果扰动,让不同输入的结果之间难以辨别,同时又不能产生过大的误差。
首先计算一下结果的全局敏感度(Global Sensitivity),GS= 1 n \frac{1}{n} n1。全局敏感度就是说 面对各种这样的( D 1 D_1 D1, D 2 D_2 D2),所产生的最大结果差距是多少。
选择适合的噪声,有拉普拉斯噪声(随机变量服从拉普拉斯分布),高斯噪声(服从高斯分布)等等。那么我们使用拉普拉斯噪声,记Y~Lap(b)。

改造成差分隐私版本的算法A如下。
Input: D = ( i d , f e a t u r e ) n (id,feature)^{n} (id,feature)n
Output: Z
Algorithm: Z Z Z = ∣ { i d ∣ f e a t u r e = 0 } ∣ n \frac{|\{id|feature=0\}|}{n} n{idfeature=0} Z = Z + Y Z=Z+Y Z=Z+Y, Y Y Y~ L a p ( b ) Lap(b) Lap(b), return Z Z Z

注意的地方是,b与Z的全局敏感度GS以及隐私预算有关。详细选择这里不做叙述。

这样我们获得了一个满足任务的,差分隐私算法。也就是说,对于一定数量的差分攻击,攻击者获得的是比较模糊的结果,不能对个体信息进行推断。当然,数量够了依旧不安全。通常我们会设置一个隐私损失 ϵ \epsilon ϵ,代表我每次查询之后会带来多大的隐私花费,显然 ϵ \epsilon ϵ越大表示隐私性损失得越多(通常意味着给的回答比较准确),在很少次查询之后,我的算法就不再提供足够的隐私保证了,那么我就不应该再让你继续查询下去了。由此看来,在保证相同的误差情况下,隐私损失越小越好。是存在这样两个算法的,在隐私保护相同的情况下,一个的回答准确程度就是会比另一个要高的。

有一个非常好的直观,就是有一天你需要做一个社会调查,调查人们是否经常抠鼻孔。这是一个相对敏感的调查,一般人也不太会希望自己的行为被别人知道(尽管可能没什么直接利益损失),那么你应该为每个人支付多少钱让他们去填写这个调查问卷呢?换句话说,别人得到多少钱才能够为之承担隐私泄露的风险呢?这个权衡因素就是你发布结果使用算法的隐私损失 ϵ \epsilon ϵ。如果你敢打包票说我们算法一定不会泄露隐私,那么你也可以不用进行付费调查(不过,现实当中很多情况压根不考虑 = =)。

同时我们还应该考虑差分隐私算法在某一个问题上能够达到的误差下界是多少,这也是一个可以思考的问题(一般证明通常采用反证,即我构造一种情况,算法是差分隐私的,但是我的误差一定超过某个量级,这就证明了下界就是这个量级,但是并不能证明它是tight的,而如果能恰好提出一个算法(指数时间也无所谓),达到了证明的下界,那可以说这个下界非常完美)。

注意的是,改造完毕后,算法将成为随机算法

设计差分隐私算法需要的基本知识包括:

  1. 纯差分隐私( ϵ \epsilon ϵ-DP)和松弛差分隐私(( ϵ \epsilon ϵ, δ \delta δ)-DP)的定义
  2. 常见的差分隐私机制(Mechanisms)
  3. 预处理定理(Post-Processing Theorem)
  4. 组合定理(Composition Theorems),basic 和 advanced。
  5. 需要设计的非隐私版本算法的相关基本知识

By BRB 2023.04.02

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值