本博客地址:https://security.blog.csdn.net/article/details/122179132
一、去标识化的概念
去标识化就是通过使用匿名、假名等方法,让攻击者无法从处理后的数据记录定位到自然人的过程。
二、匿名化
所谓匿名化,就是通过一定的算法,不可逆地去除数据集中的身份标识信息,使得无法从中定位到任何自然人。也就是说,匿名化是一个目标,匿名化之后,无法定位到任何自然人,也就不会泄露个人数据了,可以不再看成是个人数据。
但是也要意识到,在实践中,往往很难做到真正的匿名化并同时保持数据的可用性,而需要在数据的可用性与隐私保护之间进行权衡。一般而言,匿名化是一个非常难以达成的目标。
这里我们通过一个例子来看看,我们假设原始记录是这样的:
姓名 | 身份证号 | 性别 | 出身年月 | 邮箱 | 家庭住址 | 疾病 |
---|---|---|---|---|---|---|
赵一 | 654123199012230987 | 男 | 1990.12 | 123@163.com | 余杭区纬一路12号 | 高血压 |
钱二 | 654123198910129876 | 男 | 1989.10 | 124@163.com | 余杭区纬二路23号 | 脑血栓 |
孙三 | 654123199109121234 | 女 | 1991.09 | 145@163.com | 余杭区经一路34号 | 皮肤病 |
李四 | 654123199206234567 | 男 | 1992.06 | 156@163.com | 余杭区经二路45号 | 心脏病 |
周五 | 654123198805248723 | 男 | 1988.05 | 167@163.com | 余杭区纬三路56号 | 妇科病 |
对于匿名化来说,我们在这其中要做的就是替换身份标识信息或删除身份标识信息,从而得到以下数据:
性别 | 出身年月 | 邮箱 | 家庭住址 | 疾病 |
---|---|---|---|---|
男 | 1990.12 | 123@163.com | 余杭区纬一路12号 | 高血压 |
男 | 1989.10 | 124@163.com | 余杭区纬二路23号 | 脑血栓 |
女 | 1991.09 | 145@163.com | 余杭区经一路34号 | 皮肤病 |
男 | 1992.06 | 156@163.com | 余杭区经二路45号 | 心脏病 |
男 | 1988.05 | 167@163.com | 余杭区纬三路56号 | 妇科病 |
以上就是将原始数据匿名化之后的数据,但在实际中,匿名化后的数据通过一定的分析后,仍有一定概率定位到个人,可见简单地删除敏感字段或假名化(姓名替换为假名),并不足以保护个人隐私。
三、假名化
假名化就是对可标识的用户身份信息用假名替换。但是需要了解的是,假名化的数据仍是有很大概率找出对应的自然人,难以达到去标识化的目的,所以假名化的数据仍将被视为个人数据,需要跟明文数据一样加以保护。
四、K-匿名算法
K-匿名算法
是通过引入等价类的概念,保障每条隐私数据都能找到相似的数据,从而降低了单条数据的识别度。K-匿名算法
的使用场景主要是数据集发布或数据集提供给第三方研究机构。
K-匿名算法
要求发布的数据中k条记录为一组,其中的每一条记录都要与其他至少k-1条记录不可区分(这k条记录相似,称为一个等价类)。
这里,参数k为一个整数,表示隐私保护的强度:
● k值越大,隐私保护的强度越强(任何一条疑似某人的记录,都可以再找到k-1条相似的记录)。
● k值越大,丢失的信息更多,数据的可用性就越低(一些比较罕见的样本如果无法凑成一个等价类就不能用了)。
我们来看一个最简单的k=2的场景来帮助理解,处理后的数据如下:
性别 | 出身年月 | 邮箱 | 疾病 |
---|---|---|---|
男 | 1986-1990 | 12* | 高血压 |
男 | 1986-1990 | 12* | 脑血栓 |
这两条信息在可用于定位的三个字段上完全相同(疾病是隐私信息,假设数据集发布前除了医院和自己家人,没有外人知道),无法从这个信息中判断具体的自然人患了何种疾病,从而降低了具体自然人的隐私泄露风险。
如果一条记录由于样本实在太少,无法构成包含k条记录的等价类,则这条记录就不应纳入数据集。当研究者拿到K-匿名
处理后的数据时,将至少得到k个不同人的记录,进而无法做出准确的判断;也就是说,任何一条记录,都可以再找到k-1条相似的记录。
但这仍然是存在缺陷的,如果一个等价类中的多个样本都是同一种疾病,则所涉及的几位自然人的隐私就泄露了,可能会被周围认识的人高度怀疑其患了该病,称之为一致性攻击。
性别 | 出身年月 | 邮箱 | 疾病 |
---|---|---|---|
男 | 1986-1990 | 12* | 高血压 |
男 | 1986-1990 | 12* | 高血压 |
为了防止一致性攻击,隐私保护模型在K-匿名
的基础上,要求保证任意一个等价类中的敏感属性都至少有L个不同的值。
放在这个例子中的话,就是说如果在一个等价类中,疾病种类小于L,则这个等价类中的记录就不能使用了。因为只有一个人患该病的话,也会造成该患者的隐私泄露,至少需要在一个等价类中为其找到L-1个病友或疾病,才能降低其中每一患者隐私泄露的风险。
然而在实际上,该方案还可能存在隐私泄露的风险,例如病毒核酸检测,会有阴性和阳性,它虽然达成了2个疾病概念,但这个多样性其实没有意义,无论结果是阴性还是阳性,记录出现在这个数据集本身就造成部分隐私信息泄露。此外,该方案还存在没有考虑敏感字段的总体分布、语义等方面的缺陷。
K-匿名
在实践中,总是不断地被发现存在缺陷以及不断地改进,基于当前知识判断不会造成隐私泄露,也不能排除将来有攻击者从中找出真实的自然人的隐私,因此直接提供数据集的方式所面临的风险还是非常高的。