据我了解,您正试图保护您的“实验”数据库免受推理攻击。
攻击者尝试使用已允许公开使用的查询从数据库中窃取信息。首先,尝试确定您的标识符、准标识符和敏感值。
考虑一个学生管理系统,其中包含每个学生的 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 查询的等价物,设置数据集的标识符和准标识符,以及可以执行的公共查询由任何人。
此外,除了匿名性之外,还可以查看数据集的“多样性”和“接近性”以及它们在数据库匿名化中的用途。
我希望这能回答你的问题。如果您还有其他问题,请询问。