查看原文
其他

本地差分隐私 VS 全局差分隐私

庄智廉 隐私计算研习社 2022-12-10


本文是本地差分隐私和全局差分隐私的基础介绍。文中给出了代码示例,以方便读者理解。英文原文作者是Shaistha Fathima 与 Rohith Pudari。


1

什么是差分隐私


Cynthia Dwork在书籍《Algorithmic Foundations of Differential Privacy》给出的定义是:

Differential Privacy describes a promise, made by a data holder, or curator, to a data subject (owner), and the promise is like this: "You will not be affected adversely or otherwise, by allowing your data to be used in any study or analysis, no matter what other studies, datasets or information sources are available".

简而言之,差分隐私使得攻击者无法推断出特定个体是否在数据库中,即使攻击者具有无限的攻击能力并且可以访问数据库中除该个体外的所有数据条目。
差分隐私通过向数据(输入过程或者输出过程)添加统计噪声来发挥作用。根据添加噪声的位置,差分隐私可分为本地差分隐私或者全局差分隐私。


2

本地差分隐私


本地差分隐私将噪声添加到单个数据点。

假设我们想统计一个班级的平均零花钱,但有一部分人不想公布自己持有的零花钱数目。这时候该怎么办?

这里可以用到本地差分隐私。我们让班级的同学在真实数目的基础上,加上一个范围在[-10,10]的随机数。比如,假设X有30元,加上一个随机数-5,那么他就告知统计者他有[(30+(-5))=25]元。由此,我们保护了个人隐私。
这里,如上图所示,噪声可以直接添加到数据库,或者添加到用户本地数据中。

数据管理者或者说中央聚合器并不知道个体的真实数据,因此隐私受到保护。个体不必担心自己的数据被非法使用。但是,因为每个个人添加了噪声数据,总的噪声会变得非常大,使得统计数据偏差变得很大。为了解决这个问题,实际使用中会偏向使用较大的隐私预算 (ε).

代码示例

假设,我们想进行一项调查——“你有偷过东西吗?”大多数人可能不想参与其中,即使愿意,也可能会撒谎!为了解决这个问题,并获得预期的结果,我们可以使用一种称为随机响应的方法。
假设上述问题只能回答“是”或“否”,我们按照以下步骤操作:
第一步:掷硬币 2 次。
第二步:如果第一次抛硬币是正面,那么诚实地回答(是/否)。
第三步:如果第一次抛硬币是反面,则按照第二次抛的硬币回答。如果它是正面,则必须回答“是”,如果它是反面,则必须回答“否”。在这里,我们并没有给回答者做选择。这也是我们添加“随机性”的地方。
读者可以参考文章[1]来了解更多。随着噪声或随机性的引入,现在每个人都受到“合理的否认”的保护。
假设测试总人数为N,回答"是"的总人数为N。真实盗窃过的人数比例为π。
第一次抛硬币,回答“是”人数:(1/2)πN
第二次抛硬币,回答Yes人数:(1/2)(1/2)N
所以,N
=(1/2)πN+(1/2)(1/2)N
π=2N*/N-(1/4)
由此,我们通过以上的计算得到统计结果。然而,这是有代价的,因为我们使用的是平均值,在获得了隐私同时也失去了准确性。让我们看一下代码示例:
def create_db(num_entries):

    db = torch.rand(num_entries) > 0.5

    return db, pdbs


def query(db):

    true_result = torch.mean(db.float())
    
    first_coin_flip = (torch.rand(len(db)) > 0.5).float()
    second_coin_flip = (torch.rand(len(db)) > 0.5).float()

    augmented_database = db.float() * first_coin_flip + (1 - first_coin_flip) * second_coin_flip

    db_result = torch.mean(augmented_database.float()) * 2 - 0.5
    
    return db_result, true_result


# Adding noise to each datapoint individually
db = create_db(10)
private_result, true_result = query(db)
print("With Noise:" + str(private_result)) # With Noise:tensor(0.7000)
print("Without Noise:" + str(true_result)) # Without Noise:tensor(0.5000)

本地差分隐私的一些应用

RAPPOR[2]. 谷歌在Chrome浏览器中使用本地差分隐私技术收集用户数据。

Private Count Mean Sketch[3]. 苹果公司在 iOS键盘中通过本地差分隐私技术收集用户表情使用、常用单词数据。

Privacy-preserving aggregation of personal health data streams[4]. 开发了一种保护隐私的个人健康数据流收集机制,其特点是利用本地差分隐私(Local DP)以固定间隔收集数据。

3

全局差分隐私


在全局 DP 的情况下,噪声被添加到数据库的查询输出中。即,噪声只添加一次,然后与第三方共享。数据管理员/中央聚合服务器 将噪声添加到数据库查询的输出中。这样做,数据管理员/中央聚合服务器可以保证用户数据隐私不泄露给查询数据库的人。在这种场景下,数据管理员或中央聚合服务器是可信的。数据库拥有所有隐私数据,数据管理员可以访问真实的原始数据。

优势:噪声添加更可控,可使用更小的隐私预算 (ε).但是,每个用户都必须足够信任数据管理员或中央聚合服务器才能与其共享数据。这可能很难做到:聚合服务器有可能是不受信任的公司。此外,使用全局模型,所有数据都收集在一个位置。这也增加了灾难性故障的风险,例如,中央聚合服务器有可能被黑客入侵并泄露数据。

如果数据管理员或中央聚合服务器是可信的,那么本地 DP 和全局 DP 的唯一区别是全局 DP 在相同的隐私保护级别下会有更准确的结果。

代码示例

使用与上述相同的硬币翻转示例,但是这次将噪声添加到查询结果而不是单个数据点中。
def create_db(num_entries):
    
    db = torch.rand(num_entries) > 0.5
    
    return db, pdbs


def query(db):
    true_result = torch.sum(db.float())
    return true_result

    
# Data curator or aggregator adds noise 
# before sending the result for the query i.e., adding noise to the output.
def curator(db):
 noise = 0.2 # curator desides how much noise to add
 db_result = query(db) + noise # curator adding noise.


db, pdbs = create_db_and_parallels(10)
global_DP_result = curator(db)
true_result = query(db)
print("With Noise:" + str(global_DP_result)) # With Noise:tensor(8.2)
print("Without Noise:" + str(true_result)) # Without Noise:tensor(8.)
从上面的例子可以看出,全局差分隐私并没有牺牲太多的准确性,这依赖于对数据管理者的信任。

全局差分隐私的应用

Census Bureau Adopts Cutting Edge Privacy Protections for 2020 Census[5] 这是美国人口普查在发布前使用全局差分隐私技术对数据进行匿名化处理。
4


总结


对于本地差分隐私和全局差分隐私,我们该如何选择呢?当需要考虑个人用户的隐私问题,无法完全信任数据管理员或中央聚合服务器时,应选择本地差分隐私;当数据管理员或中央聚合服务器值得信赖时,全局差分隐私是一个更好的选择。

参考文献
[1] https://towardsdatascience.com/how-your-data-is-secured-by-a-coin-toss-c933f9e13d4a
[2] https://research.google/pubs/pub42852/
[3] https://machinelearning.apple.com/2017/12/06/learning-with-privacy-at-scale.html
[4] https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0207639
[5] https://www.census.gov/newsroom/blogs/randomsamplings/2019/02/census_bureau_adopts.html
原文链接:https://blog.openmined.org/basics-local-differential-privacy-vs-global-differential-privacy/
END
译者简介:
庄智廉,重庆大学大数据与软件学院研究生在读,主要研究兴趣包括隐私保护机器学习、差分隐私、联邦学习。知乎:acai。


往期推荐


客户端辅助的轮高效安全两方计算协议及其应用

非独立同分布数据孤岛的联邦学习:一项实验研究

GLFC:基于动态联邦的类别增量学习模型

联邦学习顶会论文及开源框架汇总


欢迎投稿
邮箱:pet@openmpc.com
参与更多讨论,请添加小编微信加入交流群

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存