我想做一个实验,涉及使用加性噪声来保护数据库免受推理攻击。
我的数据库应该首先生成一个平均值为25的特定值列表,然后我将通过添加一个随机噪声值来匿名化这些值,该值的预期值为0。
例如:
我可以使用范围[-1,1]内的均匀分布噪声,或者使用均值为0的正态(高斯(噪声。
我将在具有不同噪声的100、1000、10000值的数据库中测试这种匿名化方法。
我对使用哪个平台以及如何使用感到困惑,所以我在Excel中从10个值开始,对于均匀分布的噪声值,我使用RAND()
并添加到实际值,对于正常噪声,我使用平均值为0的Norm.Inv
,然后添加到实际值。
但我不知道如何从黑客的角度解释数据,当我向数据集添加噪音时,当数据集变得更大时,我如何解释它对隐私的影响?
另外,我应该使用数据库工具来处理这个问题吗?
据我所知,您正试图保护您的"实验性"数据库免受推理攻击。
攻击者试图使用已经允许公开使用的查询从数据库中窃取信息。首先,尝试决定您的标识符、准标识符和敏感值。
考虑一个学生管理系统,它有每个学生的平均成绩。我们知道GPA是一个敏感信息。标识符是"student_id",准标识符是"standing",比方说是"gender"。在大多数情况下,RDBM系统的管理员允许聚合查询,如"获取所有学生的平均GPA"或"获取高年级学生的平均GPA"等。攻击者试图从这些聚合查询中推断。如果不知何故,只有一名学生是高年级学生,那么查询"获得高年级学生的平均GPA"将返回一个特定人的GPA。
保护数据库免受此类攻击的主要方法有两种。去身份和匿名。去标识意味着从数据库中删除任何标识符和准标识符。但这在某些情况下是行不通的。以一名学生为例,他在成绩公布后参加了补考。如果你得到所有学生参加考试前后的平均GPA,并比较查询结果,你会发现有少量变化(比如说,从2.891到2.893(。攻击者可以根据这0.002的总GPA差异推断出某个学生的补考成绩。
另一种方法是匿名化。使用k匿名,可以将数据库划分为至少有k个实体的组。例如,2-匿名性确保其中没有包含单个实体的组,因此对单个实体组的聚合查询不再泄露私有信息。
除非您是组中的两个实体之一。
如果一个班有两名高年级学生,你想知道高年级学生的平均成绩,那么2匿名可以让你获得这些信息。但是,如果你是一名大四学生,并且你已经知道自己的成绩,你可以推断出其他学生的成绩。
在敏感值中添加噪声是应对这些攻击的一种方法,但如果噪声太低,那么它对泄露的信息几乎没有影响(例如,对于分数,知道某人在100分中有57分而不是58分几乎没有区别(。如果它太高,就会导致功能损失。
你还问过,随着数据集变得越来越大,你如何解释对隐私的影响。如果你取一个非常大的数据集的平均值,你会发现你发现的结果实际上是每个人的敏感值(这可能有点复杂,但认为数据集是无限的,敏感信息可以取的值是有限的,然后计算概率(。添加零均值的噪声是可行的,但随着数据集的增大,噪声的范围应该会越来越宽。
最后,如果您正在使用excel,它不是RDBMS,而是电子表格,我建议您想出一种方法来使用SQL查询的等价物,设置数据集的标识符和准标识符,以及任何人都可以执行的公共查询。
此外,除了匿名性,还可以看看数据集的"多样性"one_answers"紧密性",以及它们在数据库匿名化中的使用。
我希望这能回答你的问题。如果您还有其他问题,请提问。