Programming Differential Privacy第二章

反标识

反标识是从数据集中删除标识信息的过程。“取消身份”一词有时是与术语匿名化和假名化同义使用。
目标
定义以下概念:
–取消识别
–重新识别
–识别信息/个人识别信息
–链接攻击
–聚合和聚合统计
–不同的攻击
•执行链接攻击
•执行差异化攻击
•解释反识别技术的局限性
•解释汇总统计的局限性
我们将保存一些识别信息以备稍后使用,届时我们将使用它作为辅助数据来执行重新识别攻击。

2.1链接攻击

根据文章举一个例子:假设想确定James的收入,但是现在只确定其名字,adress,zip code。现在可能两个数据集同时包含adress,zip code这两种数据,我们只需要进行两个表的联接。如果有唯一的这样一行就成功。Pandas.merge

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

adult = pd.read_csv("adult_with_pii.csv")
adult.head()

adult_data = adult.copy().drop(columns=['Name', 'SSN'])
print(adult_data)

adult_pii = adult[['Name', 'SSN', 'DOB', 'Zip']]
print(adult_data)

# 连接的关键所在
karries_row = adult_pii[adult_pii['Name'] == 'Karrie Trusslove']
pd.merge(karries_row, adult_data, left_on=['DOB', 'Zip'], right_on=['DOB', 'Zip'])


2.1.1查找难度

这个场景是虚构的,但在实践中,链接攻击非常容易执行。有多容易?事实证明,在许多情况下,仅一个数据点就足以精确定位一行!
衡量这类攻击有效性的一个好方法是查看某些数据段的“选择性”如何,即它们在缩小可能属于目标个体的潜在行集方面有多好。也就是说越准确越好。下面的直方图显示,绝大多数出生日期在数据集中出现1次、2次或3次,并且没有出生日期出现超过8次。这意味着出生日期是相当有选择性的——它可以有效地缩小个人可能的记录。

2.1.2特殊性

pd.merge(karries_row, adult_data, left_on=['Zip'], right_on=['Zip'])
pd.merge(karries_row, adult_data, left_on=['DOB'], right_on=['DOB'])
print(adult_pii)

# 生日图
adult_pii['DOB'].value_counts() .hist()
plt.xlabel('Number of Dates of Birth')
plt.ylabel('Number of Occurrences');
# zip code图
adult_pii['Zip'].value_counts().hist()
plt.xlabel('Number of ZIP Codes')
plt.ylabel('Number of Occurrences');

2.1.3图

aaa
bbb

2.1.4识别多少人

一些数据唯一识别,一些数据被识别成多个。

比如同名

attack = pd.merge(adult_pii, adult_data, left_on=['DOB'], right_on=['DOB'])
attack['Name'].value_counts().hist();

在这里插入图片描述
如果我们同时使用出生日期和邮政编码,我们可以做得更好。事实上,我们能够唯一地重新识别整个数据集。

attack = pd.merge(adult_pii, adult_data, left_on=['DOB', 'Zip'], right_on=['DOB', 'Zip'])
attack['Name'].value_counts().hist();

ddd
根据Latanya Sweeney的工作调查,87%的美国人可以通过出生日期、性别和邮政编码的组合唯一地重新识别身份。

attack['Name'].value_counts().head(1)

Barnabe Haime    2
Name: Name, dtype: int64
attack['Name'].value_counts().head(2)

Barnabe Haime      2
Antonin Chittem    2
Name: Name, dtype: int64

2.2 聚合

防止私人信息泄露的另一种方法是仅发布聚合日期。
在许多情况下,汇总统计数据被细分为更小的组。例如,我们可能想知道平均值具有特定教育水平的人的年龄。

adult['Age'].mean()

2.2.1小团体的问题

聚合被认为可以改善隐私,因为很难确定特定个人对聚合统计的贡献。但是,如果我们把一个只有一个人的群体聚集在一起呢?在这种情况下,汇总的统计数据准确地显示了一个人的年龄,根本没有隐私保护!在我们的数据集中,大多数人都有一个独特的邮政编码——因此,如果我们通过邮政编码计算平均年龄,那么大多数“平均值”实际上反映了一个人的确切年龄。
有些人口普查区人口众多,但有些人口为零!上面的情况很常见,即小团体阻止聚合以隐藏有关个人的信息。一个群体的规模有多大,“足够大”,总的统计数据可以提供帮助?很难说,这取决于数据和攻击
-因此,要建立一种信心,即汇总统计数据确实保护了隐私,这是一个挑战。然而,即使非常大

adult[['Education-Num', 'Age']].groupby('Education-Num').mean().head(3)



Education-Num		Age
1					42.764706
2					46.142857
3					42.885886

adult[['Education-Num', 'Age']]
adult[['Zip', 'Age']].groupby('Zip').mean().head()

2.2.2差异化攻击

当您对同一数据发布多个聚合统计信息时,聚合问题会变得更加严重。例如,考虑以下两个针对数据集中大型组的求和查询(第一个针对整个数据集,第二个针对除一个之外的所有记录)

如果我们知道两个答案,我们就可以简单地计算出差异并完全确定Karrie的年龄!这种攻击即使聚合统计数据超过很大的组,也可以继续。

adult['Age'].sum()
1256257

adult[adult['Name'] != 'Karrie Trusslove']['Age'].sum()
1256218

adult['Age'].sum() - adult[adult['Name'] != 'Karrie Trusslove']['Age'].sum()

这是一个重复出现的主题。
• 发布有用的数据,很难确保隐私
• 无法区分恶意查询和非恶意查询

总结

链接攻击涉及将辅助数据与已取消标识的数据相结合,以重新标识个人。

• 在最简单的情况下,可以通过连接包含这些数据集的两个表来执行链接攻击。
• 简单的链接攻击非常有效:
– 仅一个数据点就足以将内容缩小到几条记录
– 缩小记录集有助于建议可能有用的其他辅助数据
– 两个数据点通常足以重新识别特定数据集中的很大一部分人口
– 三个数据点(性别、邮政编码、出生日期)唯一识别87%的美国人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
局部差分隐私的操纵攻击是指攻击者试图影响隐私保护机制以获取敏感信息的行为。该攻击针对局部差分隐私机制的特性和缺点进行利用,以窃取隐私数据或干扰数据发布的结果。 局部差分隐私的目标是在保护个体隐私的前提下,提供对于整体数据集的有意义的分析结果。然而,攻击者可通过操纵自己的个体数据或其他数据的投入,来影响数据分析结果。例如,攻击者可能故意修改或篡改自己的数据,以改变数据发布的结论,或者通过协作或串通他人进行攻击。 操纵攻击的目的是干扰数据发布的结果,以推断出更多的隐私信息或获得误导性的数据分析结果。攻击者可能通过加入虚假的数据或者删除真实的数据来扰乱数据集的特性,使得发布的结果偏离真实情况。这种攻击可能会导致分析人员得出错误的结论或泄露隐私信息。 对抗局部差分隐私操纵攻击的方法包括对数据进行更严格的验证和校验、采用更复杂的算法进行数据发布,以及增加对攻击行为的监测和检测。此外,用户和数据发布者在数据分享和数据发布过程中需要保持警惕,增强对潜在攻击的认识和防范意识。 总之,局部差分隐私的操纵攻击是一种针对隐私保护机制的攻击行为,可通过操纵个体数据或其他数据的投入来干扰数据发布的结果。为了应对这种攻击,需要采取相应的安全措施和对攻击行为进行检测和防范。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值