数据的隐私保护问题最早由统计学家Dalenius 在20世纪70年代末提出,他认为,保护数据库中的隐私信息,就是要使任何用户(包括合法用户和潜在的攻击者)在访问数据库的过程中无法获取关于任意个体的确切信息 。
从已有的研究来看,k-anonymity及其扩展模型在隐私保护领域影响深远且被广泛应用。这些模 型的基本思想是将数据集里与攻击者背景知识相关的属性定义为准标识符,通过对记录的准标识符值进行泛化、压缩处理,使得所有记录被划分到若干个等价类(Equivalence Group),每个等价类中的记录具有相同 的准标识符,从而实现将一个记录隐藏在一组记录中。因此,这类模型也被称为基于分组的隐私保护模型。
差分隐私是Dwork在2006年针对统计数据库的隐私泄露问题提出的一种新的隐私定义。在此定义下,对数据集的计算处理结果对于具体某个记录的变化是不敏感的,单个记录在数据集中或者不在数据集中,对计算结果的影响微乎其微。所以,一 个记录因其加入到数据集中所产生的隐私泄露风险被控制在极小的、可接受的范围内,攻击者无法通过观察计算结果而获取准确的个体信息。
差分隐私保护模型的思想源自于一个很朴素的观察:当数据集 D 中包含个体 Alice时,设 对 D 进行任意查询操作f(例如计数、求和、平均值、中位数 或其它范围查询等)所得到的结果为f(D),如果将 Alice的信息从 D 中删除后进行查询得到的结果仍然为f(D),则可以认为,Alice的信息并没有因为被包含在数据集 D 中而产生额外的风险。差分隐私保护就是要保证任一个体在数据集中或者不在数据 集中时,对最终发布的查询结果几乎没有影响。具体地说,设有两个几乎完全相同的数据集(两者的区别仅在于一个记录不同),分别对这两个数据集进行查 询访问,同一查询在两个数据集上产生同一结果的概率的比值接近于1。
差分隐私定义
隐私保护预算
隐私保护预算\(\epsilon\)用来控制算法M在两个相邻数据集上获得相同输出的概率比值,它事实上体现了M所能够提供的隐私保护水平。实际应用中,\(\epsilon\)的取值很小,例如0.01,0.1,或者ln2,ln3等,\(\epsilon\)越小,表示隐私保护水平越高。当\(\epsilon\)为0时,表示对于任意临近数据集,算法都将输出两个概率分布完全相同的结果,这些结果也不能反映出任何关于数据集的有用的信息。因此,\(\epsilon\)的取值要考虑到安全性和可用性之间的平衡。
敏感度
敏感度是决定加入噪声大小的关键参数,它指删除数据集中任一记录对查询结果造成的最大改变。差分隐私中定义了两种敏感度,即全局敏感度和局部敏感度。
函数的全局敏感度由函数本身决定,不同的函数会有不同的全局敏感度。一些函数的全局敏感度较小,因此只需要加入少量的噪声即可掩盖因一个记录被删除对查询结果所产生的的影响。但某些函数的全局敏感度较大,必须在函数输出中添加足够大的噪声才能保证隐私安全,导致数据可用性较差。因此提出了局部敏感度的概念。
但是,局部敏感度在一定程度上体现了数据集的数据分布特征,如果直接应用局部敏感度来计算噪声量则会泄露数据集中的敏感信息,因此局部敏感度的平滑上界被用来与局部敏感度一起确定噪声量的大小。
所有满足这一定义的函数都可被定义为平滑上界,将局部敏感度带入到此函数中可得到平滑敏感度,进而用于计算噪声大小。
由于绝大部分关于差分隐私保护的研究均针对计数查询、求和查询等敏感度较小的函数,因此,若无特殊说明,本文中敏感度均指全局敏感度。
差分隐私的组合性质
一个复杂的隐私保护问题通常需要多次应用差分隐私才能解决。在这种情况下,为了保证整个过程的隐私保护水平控制在给定的预算\(\epsilon\)之内,需要合理地将全部预算分配到整个算法的各个步骤中。这时可以利用隐私保护算法的两个组合性质:
实现机制
为了使一个算法满足差分隐私保护的要求,对不同的问题有不同的实现方法,这些实现方法称为“机制”。拉普拉斯机制和指数机制是两种最基础的差分隐私保护机制。其中,拉普拉斯机制适用于对数值型结果的保护,指数机制适用于非数值型结果。
Laplace机制
Laplace机制通过向确切的查询结果中加入服从Laplace分布的随机噪声来实现\(\epsilon\)-差分隐私保护。记位置参数为0、尺度参数为b的Laplace分布为Lap(b),那么其概率密度函数为
噪声(尺度)参数b取决于当我们修改一个人的数据时,查询结果总会改变多少。一组查询总共的“最大改变”被称为他们的敏感度,取b=敏感度/\(\epsilon\)即能满足\(\epsilon\)-差分隐私。
指数机制
指数机制适用于非数值型的数据,设查询函数的输出域为\(Range\),域中的每个值\(r\in Range\)为一个实体对象,在指数机制下,函数\(q(D,r)\rightarrow R\)称为输出值\(r\)的可用性函数,用来评估输出值\(r\)的优劣程度。