← 中文资源

简体中文版本

分析数据匿名化工作流

在分析摄取前剥离并泛化标识符,用重识别测试验证匿名性,并记录变换血缘。

阅读英文原文

目标

删掉姓名不叫匿名化:年龄加邮编加诊断在真实案例里足以唯一锁定一个人。按可识别性给字段分级、泛化准标识符、再真的跑一遍重识别攻击,“匿名”这两个字才配得上写进文档。测试还要进 CI,schema 一变就重新受审。

步骤要点

  1. 按可识别性分级字段:直接标识符、准标识符、敏感属性,三类处理方式各不相同,分级表覆盖进分析的每个字段。
  2. 按类变换:直接标识符丢弃或令牌映射,准标识符泛化(年龄段、区域粗化),敏感属性尽量聚合。
  3. 对产物跑重识别攻击:准标识符组合唯一性、与公开数据集的链接攻击、事件流序列唯一性。
  4. 每次变更重新验证:新增字段或泛化调整都触发匿名性测试,作为数据质量门禁进管道 CI。
  5. 记录血缘并支持删除:记录每个字段的变换历程,用受控令牌映射让删除请求能按键清除而不破坏匿名性。

排错提示

删了姓名就自称匿名是自欺,攻击测试要覆盖准标识符组合的唯一性;新增字段后重识别率飙升说明门禁没进 CI,匿名测试应随 schema 变更自动触发;删除请求无从下手是因为令牌映射被销毁,保留受控的键控映射即可两全。

适用边界

匿名性是相对攻击者能力的度量,更强的背景知识可能攻破当前粒度,需定期重测;令牌映射本身成为高价值资产,其访问控制要与原始数据同级。

代码示例

field classification -> transform:
  user_email      direct    -> drop (token retained, keyed)
  user_id         direct    -> salted token (deletable)
  age             quasi     -> 5-year bands
  postal_code     quasi     -> first 2 chars
  diagnosis       sensitive -> keep (analysis needs it)
  event sequence  quasi     -> session-truncated, coarsened ts

attack report (quarterly):
  unique combos: min 3 quasi-ids needed (k=27)
  linkage vs public voter file: 0 matches at current grain
  sequence uniqueness: 0.3% rows unique -> coarsen ts +1