想象你是一场顶级化装舞会的总导演。上百位社会名流受邀出席,但八卦周刊的狗仔队正在酒店外虎视眈眈。你能做的,是让每位嘉宾都穿上相似的礼服、戴上相同的面具,让他们淹没在人群中。可问题来了:如果这十几位穿同款礼服的人手腕上都系着同一种红色丝带,狗仔队照样能一眼认出他们属于“同一个秘密圈子”;再进一步,如果这一个圈子的人谈吐气质和舞会大部队格格不入,即使叫不出名字,狗仔也能推断出他们有共同的隐秘身份。数据脱敏中大名鼎鼎的 k-匿名、l-多样性、t-接近性,正是这场博弈的三层解决方案:先让至少 k 个人“看起来一样”,再让这群人“内在各不相同”,最后让这群人的整体气息“与全场别无二致”。读完这篇,你将明白结构化数据发布前,如何给隐私穿上这件三层防护的“隐身衣”。
掌握数据脱敏的三层递进模型,是 AI 从业者安全发布数据集、通过隐私合规审计的核心基本功,也是隐私保护学习的基石。
可视化演示
步进展示结构化数据隐私保护:k-匿名(准标识符泛化k条不可区分)、l-多样性(同质组攻击防御)、t-接近性(分布偏移EMD约束),三种模型层层递进。
本节配有交互动效(进入视口后自动加载,约 3KB)。
k-匿名模型 每条记录在QI上与k-1条不可区分 泛化/抑制构建等价类 |EC| ≥ k k-匿名通过泛化准标识符防止链接攻击,但无法防御同质组泄露。
隐私泄露威胁
舞会还没开始,狗仔队就已经拿到了嘉宾名单。名单上有明星的姓名、身高体重、穿着喜好,甚至还有一张张病历卡。如果举办方直接把这份原始名单贴到公告栏,那就等于公开宣布“谁得了什么病”。其实任何一份待发布的数据集,都像这张名单一样藏着三类属性:姓名和身份证号这类“直接标识符”就是嘉宾脸上的名牌,必须撕掉;身高、年龄、性别、邮编这类“准标识符”是嘉宾的外轮廓,单独看谁都不像,可组合起来就能锁定一个人;而疾病、收入、消费记录这类“敏感属性”,正是当事人最不想公开的秘密。
为什么删掉姓名还不够?因为攻击者手里往往还有另一份公开数据。把两份表按年龄、性别、邮编这些共同字段一拼接,原本匿名的记录就像拼图一样还原成了具体的人。这被称为重识别攻击或数据链接攻击——相当于狗仔队先去酒店前台套出了“有位三十多岁、住在静安区的男性顾客”,再回头对照名单,瞬间就对号入座了。数据发布方要做的脱敏,绝不是撕个名牌那么简单,而是要把这些“外部可拼接特征”整体打散。
从数据建模的角度看,一份待发布表可以形式化地拆成三个集合:直接标识符、准标识符和敏感属性。脱敏的核心思路正是“去除直接标识符,改造准标识符,保留敏感属性”。
所以,办舞会的第一步不是发邀请函,而是先把名单里“一眼认出人”和“多问几句能认出人”的信息全部处理掉。只有认清了三类属性的区别,后续的 k-匿名、l-多样性、t-接近性才有了用武之地。
- 记录集合 D表示待发布的数据表,好比舞会的完整嘉宾名单,每条记录对应一位嘉宾。
- 直接标识符 A_dir姓名、身份证、手机号这类能唯一指认个人的字段,如同名牌,发布前必须删除。
- 准标识符 A_qid年龄、性别、邮编等不能单独认人、组合却可锁定的字段,如同身高身材,是脱敏的主战场。
- 敏感属性 A_sens疾病、收入等需要保护的隐私字段,脱敏后要保留其统计价值,但不能让人反推出具体属于谁。
k-匿名模型
举办方发现,光撕掉名牌还不够,狗仔队靠身高体型也能锁定目标。于是他们想出一个笨办法:给外貌相似的人发同款礼服和同款面具,确保任何一位嘉宾身边至少有 k-1 个人和他看起来一模一样。这样一来,狗仔队即使拍到了某张照片,也无法确定照片里到底是张三还是李四。这正是 k-匿名模型的核心思想:让每一条记录都“淹没”在至少 k 条不可区分的记录之中。
在数据世界里,实现这种“淹没”的手段有两种:泛化和抑制。泛化是把精确值变成更宽的范围,比如把年龄 23 岁变成 [20,30) 岁、把城市“上海”变成“华东地区”,相当于把礼服的尺码做得更宽大,把五官轮廓画得更模糊;抑制则是直接把某些值删除(整列或整行抹去),相当于让某位嘉宾干脆不出席这场舞会。两个手段配合,把准标识符处理到“无法对号入座”的程度,再按处理后的准标识符分组,每一组就叫一个等价类。
正式地,设脱敏后的数据被划分为若干等价类 G,k-匿名要求每一个等价类中至少包含 k 条记录:
k-匿名的确让狗仔队没法直接点名道姓了,但新的麻烦接踵而至:如果这 k 个穿同款礼服的人,病历卡上清一色写着同一种病,那狗仔队只要确认目标在这个小组里,就相当于已经知道了他的病。这就是 k-匿名最大的软肋——它只保证“看起来一样”,却完全不关心这群人“内在是否也千篇一律”。
- 等价类 E经泛化后准标识符完全相同的一批记录,相当于穿同款礼服的一组嘉宾。
- 等价类集合 G整张表被划分出的所有等价类的集合,好比舞会现场一个个“同款礼服小组”。
- 组内记录数 |E|某个等价类里记录的条数,也就是小组人数。
- 匿名参数 k要求每组至少达到的人数下限,k 越大,小组越庞大,个体越难被辨认。
攻击模型剖析
狗仔队不是吃素的。他们蹲守了三晚,总结出三招对付“同款礼服小组”的办法。第一招叫同质攻击:小组里所有人的敏感属性完全相同,找到小组就等于找到了答案。比如某个等价类里 6 条记录全部是高血压,攻击者只要确认目标属于这个组,那么患病事实直接实锤。当等价类内敏感值唯一时,攻击成功的条件概率直接升到 1。
第二招叫背景知识攻击。狗仔队事先知道某位明星有戴定制手表的习惯,于是蹲在门口专门找戴那块表的人。即使等价类里有好几种病,靠着这一条外部线索,他们也能把猜测范围大幅缩小。对应到数据上,攻击者可以利用公开资料获取的额外信息,与脱敏表中的准标识符结合,进一步压低可能的候选人数。k-匿名对这种“带着答案找线索”的攻击基本无能为力。
第三招更隐蔽,叫偏斜攻击。就算小组里什么病都有,只要某种病在这个小组里出现的比例远超全局平均水平,狗仔队也能猜个八九不离十。比如全城高血压发病率只有 5%,而某个小组里 60% 的人都得了高血压,那么成员患高血压的概率就异常地高。同质攻击是“一锅端”,背景知识攻击是“缩小包围圈”,偏斜攻击则是“用统计规律增大猜中概率”。对 k-匿名而言,这三种攻击几乎招招致命:
这三板斧告诉我们一个残酷的事实:k-匿名这副“同款礼服”只能防住最笨的狗仔队。想要挡住真正有备而来的攻击者,必须让小组内部也充满“信息噪音”。l-多样性和 t-接近性,正是为堵住这些漏洞而生的升级装备。
- 敏感取值 s疾病、收入等敏感属性中的一个具体取值,如“高血压”。
- 准标识符组 q_i某条记录泛化后的准标识符取值组合,即它所在的等价类“外观”。
- 条件概率 P(s|q_i)已知记录落在 q_i 组内时,其敏感值是 s 的概率。
- 概率等于 1当组内取值唯一时,推断结果必然成立,隐私完全泄露。
l-多样性模型
既然同款礼服小组里所有人穿一样的衣服会暴露“共性”,举办方决定在内部做文章:规定每个小组里配饰、手包、发型必须至少有 l 种不同的款式。这样一来,狗仔队即使锁定了小组,也无法确定某个人到底戴哪款手表、拎哪个手包。l-多样性模型的思路完全一致:要求每个等价类中的敏感属性至少有 l 个不同的取值,让“知道你在哪个组”不再等价于“知道你的秘密”。
这个约束直接对敏感属性生效,补上了 k-匿名对等价类内部不设防的短板。只要我们保证每个等价类内敏感值足够多样,同质攻击就从根上被化解了——毕竟同质攻击的前提是“组内全都一样”,现在组内花样百出,自然没法一锤定音。实践中常见的做法是把敏感属性分组后统计去重个数,通常取 l = 3 或 l = 5。
形式化定义:对任意等价类 E,其敏感属性取值的不同种类数必须不少于 l:
不过,配饰多样并不代表气质多样。如果某个小组里十个人中有八个都拎着红色名包,那红色名包几乎成了这个小组的“队服”,偏斜攻击仍然能生效。l-多样性只约束了“种类数量”,却放任了“分布比例”。要真正融入人群,还需要把每个小组的整体气质也拉回与全场一致的水平。
- 敏感值集合 {s|s∈E}把等价类 E 中每条记录的敏感属性取值收集起来并去掉重复项。
- 去重计数 |·|统计集合中不同取值的个数,相当于数一数小组里有几种不同的配饰。
- 多样性下限 l人为设定的最少种类数,l 越大,组内敏感值越丰富,隐私保护越强。
- 不等式 ≥表示“至少达到 l”,只有每个等价类都满足才算通过校验。
t-接近性模型
现在举办方悟出了一个更深刻的道理:想让一个小组在舞会上完全隐形,光靠组内“多点花样”还不够,这个小组的整体气质——谈吐、举止、穿着风格——必须和全场嘉宾的总体气质几乎一致。否则一群满身名牌、举止高调的贵宾突然出现在休闲装为主的舞会里,本身就是最大的信号。t-接近性模型正是把这个直觉变成了数学约束:每个等价类内敏感属性的分布,必须与整张表的全局分布足够接近,两者距离不能超过阈值 t。
这里的“分布距离”可以用多种度量方式实现,比如全变差距离、KL 散度或 EMD 距离。直观地说,全局有 1/3 的人患高血压、1/3 患糖尿病、1/3 患流感,那么每个等价类内部也应该大致维持这个比例,而不是出现某一类异常富集。一个常见的简化度量是全变差距离:先逐类计算类内比例与全局比例的差的绝对值,再取一半作为整体偏移量;偏移越小,说明该类越“大众化”。
数学上,令类内分布为 P_E,全局分布为 P_D,t-接近性要求:
至此,三层防护终于齐了:k-匿名解决“认得出是谁”,l-多样性解决“知道是哪个类别”,t-接近性解决“类别本身也与众不同”。狗仔队就算蹲到天亮,也只能看到一群和全场毫无分别的宾客,再也找不到任何突破口。
- 类内分布 P_E(s)敏感值为 s 的记录在等价类 E 中占的比例,如同小组里某种配饰的普及率。
- 全局分布 P_D(s)整个数据集中敏感值为 s 的记录占比,代表全场的“平均气质”。
- 绝对差求和对每一种敏感取值都计算类内与全局的比例差并取绝对值,累加所有差。
- 系数 1/2 与阈值 t乘以 1/2 把距离归一化到 [0,1];t 是允许的最大偏移,t 越小要求越严苛,隐私保护越强。
三模型对比
三层防线听起来层层加码,但每一层都要付出代价。穿同款礼服还好说,无非是服装统一;可要是强行要求每组配饰、气质都与全局一致,那举办方就得花大力气改造嘉宾——表现在数据上,就是越来越多的信息被模糊化、删除、扭曲。保护强度与信息效用之间,天生就是一对跷跷板。
从约束性质上看,三者的严格程度是递增的:k-匿名只关心等价类的“大小”,l-多样性关心等价类内敏感值的“种类数”,t-接近性则直接约束敏感值的“分布形状”。一个满足 t-接近性的数据集,通常同时满足较大的 k 和 l,但反过来却不一定成立。换句话说,t-接近性是站在前两者肩膀上的更强者,而它花费的信息代价也更高。
在具体参数选择上,可以做一个粗略的权衡模型:把 k、l、t 看作联合保护强度,信息效用与保护强度呈反比关系。若定义数据效用 U,则可近似写为:
所以,没有“绝对安全”的模型,只有“匹配风险”的配置。医院发布统计数据给科研机构,可以选择较高的参数保护患者隐私;企业做内部分析时,则可以适当放宽参数保留更多细节。数据脱敏的精髓,正是这场保护与效用之间的精确配平。
- 数据效用 U脱敏后数据仍然可用于统计建模、机器学习分析的价值程度。
- 联合保护参数 k×l×t三个模型参数共同决定隐私保护强度,任何一个增大都会收紧信息口径。
- 反比符号 ∝表示效用与乘积成反方向变化,乘积越大效用越小。
- 工程折中选择参数时要结合发布场景的风险评估,不追求极端保护而牺牲全部可用性。
工程实践案例
回到这场舞会,举办方整理出了一份标准作业流程:第一步,审查名单,划掉所有直接标识符;第二步,找出可能的准标识符组合,评估重识别风险;第三步,根据风险偏好选定 k、l、t 参数;第四步,执行泛化与抑制,构建等价类;第五步,逐组验证是否同时满足三项约束,不满足就返回调整;第六步,在满足约束的前提下,选择信息损失最小的方案发布数据。
我们用一个医疗数据集来走一遍这个流程。假设医院要发布门诊患者的疾病统计表,原始字段包括姓名、年龄、性别、疾病。第一步直接删除姓名;第二步把年龄做泛化处理(如 23 岁 → [20,30) 岁);第三步设定 k=3、l=2、t≤0.3;第四步按 “年龄段+性别” 分组;第五步检验每一组的记录数、敏感值种类数和分布偏移。只有当所有等价类都达标,数据才能被批准对外发布。这个流程在工程上常借助 ARX、OpenAnonymizer 等开源工具自动化完成,它们能自动搜索满足约束且信息损失最小的泛化方案。
为了量化“信息损失”以选择最优方案,工程上常使用如下指标:对每个属性计算脱敏前后的取值域大小变化,加权求和得到整体信息损失率:
一个真实的病案系统里动辄几十万行数据,手工脱敏根本不现实。把上述三个模型写成校验逻辑,交给工具自动搜索最优泛化策略,就能在几分钟内产出一张既合规又可用的匿名表。舞会照常举行,狗仔队空手而归,嘉宾的秘密安然无恙——这就是数据脱敏工程化的终极意义。
- 原始域大小 h_a属性 a 在脱敏前的不同取值个数,如年龄有 60 种取值。
- 脱敏后域大小 h'_a泛化后属性 a 只剩多少个不同取值,如年龄段只剩 4 段。
- 属性权重 w_a不同属性的重要程度,权重高的属性损失对整体影响更大。
- 求和与 1 的差对每个属性的“损失比例”加权求和,得到全局信息损失率,数值越低越好。
AI 应用场景
医疗数据发布前脱敏
阶段:数据准备与预处理
解决的问题:医院向科研机构开放病历统计数据集时,直接发布会泄露患者隐私。传统做法是简单删除姓名和身份证号,但攻击者仍可通过年龄、性别、科室、住址组合重识别患者。采用 k-匿名 + l-多样性 + t-接近性三重模型后,每个等价类至少 k 条记录、敏感值足够多样、分布接近全局,科研统计仍可进行,但患者身份无法被反推。
具体案例:某三甲医院要发布“高血压门诊患者复诊率”研究数据集。脱敏团队将年龄泛化为 5 岁间隔、合并罕见病种分组,设定 k=5、l=4、t=0.2,用 ARX 工具自动搜索最优方案,最终发布的数据集体积缩减 30%,但回归模型的预测精度损失控制在 8% 以内,通过伦理委员会审查。
金融风控联合建模
阶段:多方数据融合与特征工程
解决的问题:多家银行想联合训练反欺诈模型,但原始交易流水含客户消费习惯等敏感信息,直接共享既违法又危险。通过 k-匿名对客户画像做泛化(如把消费金额区间拉宽、城市模糊为区域)、用 l-多样性保证每个画像桶内欺诈标签不单一、再用 t-接近性使各桶的欺诈率接近整体水平,从而在不暴露个体信息的前提下保持特征分布的一致性。
具体案例:某金融科技公司联合三家城商行构建信贷风控特征库。数据经三重脱敏后,每个画像桶至少覆盖 20 位客户,欺诈标签至少 3 种取值,桶间欺诈率差异不超过 0.1。模型在验证集上 AUC 仅下降 2.1%,同时满足《个人信息保护法》合规要求。
用户行为日志对外共享
阶段:日志清洗与特征发布
解决的问题:互联网公司希望把用户行为日志脱敏后的特征表共享给第三方做推荐系统优化。日志中的设备型号、网络类型、活跃时段组合起来可能唯一定位一个用户。采用 k-匿名对设备型号做泛化(如 iPhone 15 Pro → 高端机型),配合 l-多样性保证每个分组内兴趣标签多样,t-接近性确保各分组的行为分布与整体一致,实现个体不可识别而群体特征可用。
具体案例:某短视频平台的推荐算法团队将脱敏后的“内容偏好 × 设备档位”统计表授权给广告代理商。数据经三重脱敏处理后,代理商只能看到聚合统计量,无法还原任何单个用户的历史,广告定向的 CTR 预估损失控制在 5% 左右。
Python 演示
# -*- coding: utf-8 -*-"""k-匿名 / l-多样性 评估演示""" class AnonymityChecker: def __init__(self, data): self.records = data self.equivalence_classes = {} self.gc_count = 0 def generalize_age(self, age): self.gc_count += 1 if 20 <= age < 30: return "[20-30)" if 30 <= age < 40: return "[30-40)" if 40 <= age < 50: return "[40-50)" return "[50-60]" def build_classes(self): for age, gender, disease in self.records: key = (self.generalize_age(age), gender) self.equivalence_classes.setdefault(key, []).append(disease) return self.equivalence_classes def check_k_anonymity(self, k): for diseases in self.equivalence_classes.values(): if len(diseases) < k: return False return True def check_l_diversity(self, l): for diseases in self.equivalence_classes.values(): if len(set(diseases)) < l: return False return True if __name__ == "__main__": data = [ (23, "M", "流感"), (27, "M", "流感"), (35, "F", "心脏病"), (59, "F", "癌症"), (61, "M", "癌症"), (64, "F", "感冒"), (29, "M", "胃炎"), (45, "M", "肺炎"), (66, "F", "糖尿病"), (37, "M", "高血压"), (58, "M", "冠心病"), (68, "F", "心脏病"), ] checker = AnonymityChecker(data) groups = checker.build_classes() print("等价类划分:") for key, diseases in groups.items(): print(key, "->", diseases) print("满足 3-匿名?", checker.check_k_anonymity(3)) print("满足 3-多样性?", checker.check_l_diversity(3))
key = (self.generalize_age(age), gender)泛化后的年龄段加性别构成准标识符,作为等价类的分组键。self.equivalence_classes.setdefault(key, []).append(disease)把同准标识符的记录归入同一等价类,并收集其敏感值(疾病)。if len(diseases) < k:只要某个等价类记录数少于 k,整张表就不满足 k-匿名,立即返回 False。if len(set(diseases)) < l:对等价类内疾病去重后计数,不足 l 种说明多样性不达标。(23, "M", "流感")原始记录三元组:年龄、性别、疾病,模拟病历表的一行。checker.check_k_anonymity(3)设定 k=3,要求每组至少 3 条记录才能发布。
常见误区
误区公司要脱敏,我把数据里的 name 和 id_card 两列删掉,剩下的字段应该就能随便发布了吧?
正解像年龄、性别、邮编、居住城市这类准标识符,单独看确实认不出人,但组合起来往往能唯一定位个体。攻击者拿一份公开的选民登记表一拼接,立刻就能把“32 岁、女、杭州西湖区”还原成具体的人。k-匿名的存在意义,恰恰就是针对准标识符做进一步泛化,而不是只删直接标识符。
为何常见:因为直观上“去掉名字=匿名”,初学者容易忽略准标识符的组合识别能力,直到重识别攻击真实发生才意识到问题。
误区既然 k-匿名是让 k 条记录不可区分,那把 k 设得越大,隐私保护肯定越强,何必在乎数据精度?
正解k 盲目增大会导致泛化粒度急剧变粗,年龄可能从 5 岁一段变成 30 岁一段,城市可能直接变成“中国”,数据几乎失去统计分析价值。工程上 k 通常取 3~20,并且要结合发布场景评估“信息效用损失可接受范围”,而不是无脑拉满。保护与效用是跷跷板,失衡的脱敏等于没脱敏。
为何常见:人们容易把“隐私保护”理解成“参数越大越好”的单向思维,忽略了数据发布的本来目的是做分析,而不是做废品。
误区数据集通过了 k-匿名校验,等价类人数都够,应该就不会泄露隐私了,可以放心对外发布。
正解k-匿名只保证“不可区分”,完全不保证“不可推断”。如果等价类内敏感属性完全相同,攻击者锁定等价类即锁定答案,这就是同质攻击;如果攻击者拥有额外背景信息,还能发动背景知识攻击;即使类内取值多样,若分布严重偏离全局,偏斜攻击照样能显著提高猜中概率。所以 k-匿名通常要和 l-多样性、t-接近性配合使用,构成多层防线。
为何常见:k-匿名是最早流行且最直观的模型,很多人学到它就停下来,没有继续理解后续攻击模型的演化逻辑。
误区l-多样性要求等价类内敏感值至少 l 种,那把 l 设成 5、6、甚至和取值总数一样大,隐私肯定万无一失。
正解l-多样性只约束“种类数”,不约束“分布形状”。一个等价类里虽然有 5 种疾病,但其中 90% 都是高血压,攻击者仍然能以高概率断定目标患病;如果这 5 种病全部指向同一类代谢疾病,相似值攻击也能让患者大致类别暴露。真正要控制分布偏移,需要 t-接近性模型来兜底。
为何常见:学习时容易把“多样性”简单等同于“种类多”,忽略了概率分布才是信息量的核心。
误区t-接近性就是让每组敏感值的种类越多越好,最好把敏感值随机打乱,让每个组的取值列表看起来差不多。
正解t-接近性约束的是“分布距离”而非“数值随机性”。它要求类内各敏感值出现的比例与全局比例足够接近,例如全局高血压 10%,那么每个等价类内高血压也应接近 10%,而不是靠随机打乱制造假象。实现手段通常是精细的泛化策略或敏感值重分布,本质上是一个约束优化问题,不是简单的洗牌。
为何常见:随机化是很多入门教程讲脱敏时最爱提的操作,容易让人把“洗牌”误当成“分布对齐”,混淆了机制与目标。
面试题
Q1. 在数据脱敏中,“准标识符”指的是哪类字段?
- A.姓名、身份证号等唯一标识
- B.不能单独但可组合识别的属性← 正确答案
- C.与个人隐私完全无关的属性
- D.待发布数据集中的全部属性
答案:B。直接标识符是姓名、身份证号这类能唯一认人的字段,删掉即可;准标识符像年龄、性别、邮编,单个看认不出人,组合起来却能锁定个人,是 k-匿名处理的核心对象。
Q2. k-匿名参数 k 的含义是什么?
- A.数据表的列数
- B.等价类最小记录数← 正确答案
- C.敏感属性取值个数
- D.脱敏执行的轮数
答案:B。k-匿名要求每个等价类至少包含 k 条不可区分的记录,也就是“同款礼服小组”至少要有 k 人。列数、敏感值种类和脱敏轮数都和 k 的定义无关。
Q3. 同质攻击的核心原因是什么?
- A.攻击者掌握的背景信息过强
- B.等价类内敏感属性取值单一← 正确答案
- C.数据管理者未加密存储
- D.病案系统遭网络攻击入侵
答案:B。同质攻击发生在等价类内所有记录的敏感属性完全相同时,攻击者锁定等价类就等于锁定了敏感值。背景信息过强是另一种攻击——背景知识攻击,加密与网络入侵不属于数据发布场景的威胁模型。
Q4. l-多样性模型的核心要求是什么?
- A.等价类至少包含 l 条记录
- B.敏感属性不同取值至少 l 种← 正确答案
- C.数据总量至少达到 l 万行
- D.准标识符数量至少有 l 个
答案:B。l-多样性要求每个等价类内敏感属性去重后至少有 l 种取值,用组内多样性对抗同质攻击。等价类记录数由 k 管,数据总量与准标识符数量与 l-多样性无关。
Q5. t-接近性模型通过什么方式约束隐私风险?
- A.类内记录数不小于阈值 t
- B.类内与全局分布距离不超过 t← 正确答案
- C.类内敏感取值种类等于 t
- D.每条记录至少脱敏 t 轮
答案:B。t-接近性要求每个等价类的敏感属性分布与整张表的全局分布足够接近,距离不超过阈值 t,从而防御偏斜攻击。记录数、取值种类和脱敏轮数都不是它的约束对象。
Q6. “泛化”在数据脱敏中是指什么?
- A.将具体取值替换为更宽范围← 正确答案
- B.直接删除该行记录不发布
- C.对字段进行非对称加密
- D.将记录随机打乱后重排
答案:A。泛化是把精确值变成更宽泛的区间,如年龄 23 变成 [20,30),是 k-匿名的主要实现手段。删除记录是“抑制”;加密和随机打乱是其他脱敏技术,不属于泛化范畴。
Q7. 已知全局疾病分布为 (高血压 0.33,糖尿病 0.33,流感 0.34),某等价类分布为 (0.80,0.10,0.10),用全变差距离衡量,该等价类的分布偏移是?
- A.0.12
- B.0.23
- C.0.47← 正确答案
- D.0.92
答案:C。全变差距离等于 0.5 × (|0.80-0.33|+|0.10-0.33|+|0.10-0.34|)=0.5×(0.47+0.23+0.24)≈0.47。距离越接近 1 说明类内分布与全局差异越大,偏斜攻击风险越高。
Q8. 仅满足 k-匿名时,以下哪些攻击仍然可能得手?
- A.同质攻击← 正确答案
- B.背景知识攻击← 正确答案
- C.偏斜攻击← 正确答案
- D.暴力破解攻击
答案:ABC。k-匿名只保证等价类内记录数达到 k,不约束敏感值的种类、分布和外部背景信息,因此同质攻击、背景知识攻击、偏斜攻击都可能成功。暴力破解是加密安全领域的概念,不属于数据发布重识别攻击范畴。
Q9. l-多样性模型仍然存在哪些局限性?
- A.敏感类别分布出现偏斜← 正确答案
- B.取值相近引发相似攻击← 正确答案
- C.无法抑制同质攻击风险
- D.可约束分布与全局一致
答案:AB。l-多样性只要求敏感值种类数,若某类在组内占比极高则发生偏斜攻击;若几个敏感值本质指向同一结论(如高血压前期与高血压)则发生相似值攻击。它恰恰已经解决了同质攻击,而“约束与全局一致”是 t-接近性的职责。
Q10. 关于 t-接近性模型,下列说法正确的有?
- A.阈值 t 越小隐私保护越强← 正确答案
- B.阈值 t 越小数据效用越低← 正确答案
- C.可约束类内敏感分布贴近全局← 正确答案
- D.与 l-多样性在数学上完全等价
答案:ABC。t-接近性通过分布距离约束类内与全局的一致性,t 越小要求越严苛,隐私保护增强但信息损失也变大。它与 l-多样性不是等价关系,t-接近性严格强于 l-多样性对分布形状的约束。