0

我想做一个涉及使用附加噪声来保护数据库免受推理攻击的实验。

我的数据库应该首先生成一个平均值为 25 的特定值列表,然后我将通过添加一个随机噪声值来匿名化这些值,该噪声值旨在具有 0 的预期值。

例如:我可以使用[-1,1]
范围内的均匀分布噪声或使用均值为 0的正态(高斯)噪声。

我将针对具有不同噪声的100、1000、10000 个值的数据库测试这种匿名化方法。

我对使用哪个平台以及如何使用感到困惑,所以我从 Excel 中的 10 个值开始,对于均匀分布的噪声值,我使用RAND()并添加到实际值,对于正常噪声,我使用Norm.Inv均值0,然后添加到实际值.

但是我不知道如何从黑客的角度解释数据,当我向数据集添加噪声时,当数据集变大时,我如何解释它对隐私的影响?

另外,我应该使用数据库工具来处理这个问题吗?

4

1 回答 1

1

据我了解,您正试图保护您的“实验”数据库免受推理攻击。

攻击者尝试使用已允许公开使用的查询从数据库中窃取信息。首先,尝试确定您的标识符、准标识符和敏感值。

考虑一个学生管理系统,其中包含每个学生的 GPA。我们知道 GPA 是一个敏感信息。标识符是“student_id”,准标识符是“站立”,比方说“性别”。在大多数情况下,RDBM 系统的管理员允许聚合查询,例如“获取所有学生的平均 GPA”或“获取高年级学生的平均 GPA”等。攻击者试图从这些聚合查询中推断。如果不知何故只有一名高年级学生,则查询“获取高年级学生的平均 GPA”将返回一个特定人员的 GPA。

有两种主要方法可以保护数据库免受此类攻击。去识别化和匿名化。去标识化意味着从数据库中删除任何标识符和准标识符。但这在某些情况下不起作用。考虑一位在成绩公布后参加补考的学生。如果你得到他参加考试之前和之后所有学生的平均 GPA,并比较查询的结果,你会看到少量的变化(比如说,从 2.891 到 2.893)。攻击者可以从总 GPA 的 0.002 差异推断出该特定学生的补考分数。

另一种方法是匿名化。使用 k-匿名,您可以将数据库分成至少有 k 个实体的组。例如,2-匿名确保其中没有包含单个实体的组,因此对单个实体组的聚合查询不再泄漏私人信息。

除非,是组中的两个实体之一。

如果一个班级有 2 位高年级学生,并且您想知道高年级学生的平均成绩,则 2-匿名可以让您获得该信息。但如果你是大四学生,而且你已经知道自己的成绩,你就可以推断出其他学生的成绩。

在敏感值中添加噪声是处理这些攻击的一种方法,但是如果噪声太低,那么它对泄露的信息几乎没有影响(例如,对于成绩,知道某人有 100 分中的 57 分而不是 58 分几乎没有区别)。如果它太高,则会导致功能丧失。

您还询问了如何解释随着数据集变大对隐私的影响。如果你对一个非常大的数据集取平均值,你会发现你找到的结果实际上是每个人的敏感值(这可能有点复杂,但认为数据集是无限的,敏感信息可以取的值是有限的,然后计算概率)。添加均值为零的噪声是可行的,但是随着数据集的变大,噪声的范围应该会变宽。

最后,如果您使用的不是 RDBMS 而是电子表格,我建议您想出一种方法来使用 SQL 查询的等价物,设置数据集的标识符和准标识符,以及可以执行的公共查询由任何人。

此外,除了匿名性之外,还可以查看数据集的“多样性”和“接近性”以及它们在数据库匿名化中的用途。

我希望这能回答你的问题。如果您还有其他问题,请询问。

于 2020-05-05T16:26:31.350 回答