最近一直在学习差分隐私,刚开始学的时候由于对这方面的知识不太清楚,一直处于模模糊糊的理解状态。现在学习了一段时间后开始有了一些初步的认识,所以把学习过程中的一些知识总结一下,方便以后复习,也为其他的小伙伴提供一些思路。由于我也是初学者,所以难免会出现一些错误,希望各位大佬可以指出。
本文的主要内容是按照Dwork在2013年写的The Algorithmic Foundations of Differential Privacy
整体的逻辑是按照三部分展开:什么是差分隐私,利用一个简单例子形象说明
差分隐私的第一种形式,严格差分隐私
差分隐私的第二种形式,松弛差分隐私
附:符号的一些说明
1 - 什么是差分隐私
差分隐私顾名思义就是用来防范差分攻击的,我最早接触到差分攻击的概念是数据库课上老师介绍的。举个简单的例子,假设现在有一个婚恋数据库,2个单身8个已婚,只能查有多少人单身。刚开始的时候查询发现,2个人单身;现在张三跑去登记了自己婚姻状况,再一查,发现3个人单身。所以张三单身。图1-1 差分攻击示意图
这里张三作为一个样本的的出现,使得攻击者获得了奇怪的知识。而差分隐私需要做到的就是使得攻击者的知识不会因为这些新样本的出现而发生变化。
那怎么做到呢?加入随机噪声。比如刚才的例子,本来两次查询结构是确定的2和3,现在加入随机噪声后,变成了两个随机变量,画出它们概率分布图。图1-2 概率分布图
现在,如果张三不在数据库的话,得到结果可能是2.5;张三在的话,得到的结果也可能是2.5;两个数据集查询得到某一个结果的概率很接近,以至于我们根本分不清这个结果来自于哪一个数据集,这样也就实现了攻击者的知识不会因为张三这个样本的出现与否而发生变化。
这些只是概念上的理解,总结一下就是对查询的结果加入噪声,使得攻击者无法辨别某一样本是否在数据集中。一个形象的说法就是,双兔傍地走安能辨我是雄雌。
2 - 公式化的理解
刚才只是讲到概念上的理解,现在从数学上理解一下。上面的查询函数可以用