数据放在自己手里只是【持有】,一旦要拿出去用、给出去、或者加工之后发布出去,就必须回答同一个问题:这一步凭什么做——Opt-in 要先去要同意,Opt-out 要先备案后通知,k-匿名化则要能证明【认不出是谁】。
7-1 讲的是【这些数据分别属于哪一层】,本篇讲的是层分好之后的下一步:能怎么动它。 合法持有的数据,不等于可以随意使用。 这是很多人第一次做合规时最不适应的一点——收集时拿到的授权,通常只覆盖收集时说明的那个目的。 它和 6-6 是一组对照:PCI DSS 管的是【卡号能不能存在这儿】,本篇管的是【数据能不能给出去】——前者是行业规则,后者是法律义务,两者经常在同一套系统里同时生效。
一、先分清两件事:谁先动、通知在哪一步
第三方提供的两条路,差别不在【有没有告知】,而在【动作的先后顺序】:
| 方式 | 谁先动 | 前提条件 | 2026 修正后的变化 |
|---|---|---|---|
| Opt-in | 先取得本人同意 | 无(同意本身即授权) | 无变化 |
| Opt-out | 先提供、后通知 | 向监管机构备案+通知本人 | 须确认接收方身份与利用目的 |
| 特定生物识别信息 | 只能走 Opt-in | 2026 修正新增的个人信息类别 | 禁止用 Opt-out 提供 |
Opt-out 常被误解成【不用同意】,这是错的。 它省掉的不是义务,而是顺序:你必须事先向监管机构备案(等于把这件事公开登记),并且在提供时通知本人。备案+通知这两件事一件不做,这条路当场走不通。
一句话记法:
- Opt-in 是【先问】;
- Opt-out 是【先说】——但是把话说到监管和本人两边都要听见。
二、七种做法各自走哪条路
下面的 Demo 把常见的七种做法逐一判定:
# 节选自本节 Demo 脚本 d2():七种做法的路径判定
for a, b, c in [
("注册页上勾选【同意向合作方提供】", "Opt-in", "明确同意"),
("隐私政策里说明并备案、逐次通知本人", "Opt-out", "备案+通知,本人可喊停"),
("把健康数据提供给保险公司", "只能 Opt-in", "要保护的个人信息"),
("把人脸特征数据提供给分析公司", "禁止提供", "2026 起禁止走 Opt-out"),
("只用于统计作成(含 AI 训练)", "无需同意", "2026 新增例外"),
("提供【已匿名加工】的数据", "不属于提供", "无法识别到人"),
("本人喊停后仍继续提供", "违法", "通知后必须停止"),
]:
print(" " + pad(a, 50) + pad(b, 14) + c)
实跑输出:
==================================================================================================
二、七种做法各自走哪条路
==================================================================================================
做法 判定 依据
注册页上勾选【同意向合作方提供】 Opt-in 明确同意
隐私政策里说明并备案、逐次通知本人 Opt-out 备案+通知,本人可喊停
把健康数据提供给保险公司 只能 Opt-in 要保护的个人信息
把人脸特征数据提供给分析公司 禁止提供 2026 起禁止走 Opt-out
只用于统计作成(含 AI 训练) 无需同意 2026 新增例外
提供【已匿名加工】的数据 不属于提供 无法识别到人
本人喊停后仍继续提供 违法 通知后必须停止
最后一条最值得记:Opt-out 的【out】一旦生效,前面所有授权都不作数。
读这个输出:
- 最需要记住的是最后一行。Opt-out 是一条【随时可以被打断】的路:本人只要表达过一次拒绝,前面所有的备案、通知、授权全部作废,以后再发就是违法。
- 第 5 行是 2026 年新增的口子,但它不是无条件放行:必须公开用途,且接收方不能转手给第四方。换句话说——免掉的是【同意】,加回来的是【透明度和链条管控】。
- 第 6 行的理由和第 3、4 行完全不同:健康数据要 Opt-in 是因为它敏感,匿名数据不用授权是因为它已经不是【个人信息】了(7-1 的第二层判断)。同一个结论,可能站着完全不同的理由——分不清理由,就没法判断它在什么情况下会失效。
三、动手 Demo:拿六条记录手工做一遍 k-匿名化
k-匿名化要回答的问题很朴素:能不能做到【每个人至少和 k 个人长得一样】。下面的 Demo 用六条小记录把这件事从头做一遍。
# 节选自本节 Demo 脚本 d2():k-匿名化的三步泛化与一次抑制
K = 2 # 目标:每条记录至少与另 1 条不可区分
step1 = [(d[1], d[2][:3], d[3]) for d in data] # 原始:年龄、邮编前 3 位、性别
step2 = [("%d0~%d9" % (d[1] // 10, d[1] // 10), d[2][:3], d[3]) for d in data] # 年龄改十岁区间
step3 = [(("20~39" if d[1] < 40 else "40~59"), d[2][:2], d[3]) for d in data] # 年龄改二十岁区间、邮编前 2 位
g1, bad1 = check(step1)
g2, bad2 = check(step2)
g3, bad3 = check(step3)
实跑输出:
==================================================================================================
三、k-匿名化:拿六条记录手工做一遍
==================================================================================================
准标识符=(年龄, 邮编前 3 位, 性别);目标 k = 2
编号 年龄 邮编前 3 位 性别 疾病
A1 23 100-0001 男 流感
A2 23 100-0002 男 流感
A3 45 220-0011 女 糖尿病
A4 45 220-0012 女 糖尿病
A5 38 150-0001 男 骨折
A6 52 150-0002 女 高血压
第 1 步 原始数据:组数 4,满足 k=2 的组 2 个,不满足的组 2 个(涉及 2 条记录)
第 2 步 年龄改十岁区间、邮编前 3 位:不满足的组仍有 2 个
第 3 步 年龄改二十岁区间、邮编前 2 位:不满足的组仍有 2 个
第 1 步不满足的那两组:
年龄 38 | 邮编 150 | 男 只有 1 条记录
年龄 52 | 邮编 150 | 女 只有 1 条记录
→ A5 与 A6 天生就是【唯一的两个人】:
不同的年龄、不同的性别,邮编只差最后一位。
再泛化下去只能把年龄和性别全抹掉 —— 那时数据也不再是数据了。
正解是抑制(把这两条去掉):剩 4 条全部满足 k=2,代价是数据少了三分之一。
最后看一眼 k-匿名化挡不住的东西 —— 组内同质性:
{A1, A2} 同组,两人都是流感;{A3, A4} 同组,两人都是糖尿病。
k 只管住了【分不清谁是谁】,管不住【这一组得的是什么病】。
知道某个人落在这组里,就等于知道了他的病。
读这个输出:
- 第 1 步到第 3 步是同一个结论:泛化不是万能的。A5 与 A6 在【年龄、邮编、性别】这三个维度上永远是那个组里唯一的人——因为他们的组合太偏。继续泛化只有一条路:把维度一个个抹掉;抹到最后数据本身也失去用途了。
- 所以真正的解法是抑制(把记录删掉)而不是无限泛化。这个 Demo 的代价是六条变四条——去掉三分之一,正是匿名化的真实成本。做数据发布的时候,先想清楚【能接受损失多少】,再定 k 值。
- 最后一段是这一节最重要的一句话:k-匿名化挡住的是身份识别(这是谁),挡不住属性泄露(他得了什么病)。这一整类攻击叫【同质性攻击】,它的补丁是要求组内敏感属性至少有 l 种取值(l-多样性),但再往上走,任何基于【改数据】的方法都被证明有漏洞。
- 于是有了差分隐私,它换了一个思路:不去改数据,而是在查询结果里加入经过计算的噪声,让任何人没法判断【某个人的数据在不在里面】。代价也很直接——要控制噪声大小,就要有一个【隐私预算】,用完了就不能再查了。注意这个区别:k-匿名化是数据变换,差分隐私是关于【输出能推断出什么】的保证。
四、⚠️ 2026 现状
- 【Opt-out 这条路正在被收窄】。 日本 2026 年修正案明确要求:走 Opt-out 向第三方提供个人信息时,必须确认接收方的身份与利用目的,同时禁止用 Opt-out 提供面部特征等【特定生物识别信息】。这个方向和中国《个人信息保护法》里【单独同意】的思路是一致的:越是敏感的东西,越不能用【事后可拒绝】的方式默认允许。
- 【假名化不等于匿名化,这一点在监管那里从来没有含糊过】。 GDPR 框架下,假名化数据仍然认定为个人数据、仍在管辖内;只有不可逆、也不可能再识别到个人的匿名化数据才能脱出管辖。2026 年 5 月法国 CNIL 对 IQVIA 开出 500 万欧元罚单,理由之一就是【把假名化数据当成了匿名化数据】。 这是一个非常具体的判例:一次定性的错误,代价是七位数。
- 【匿名化的门槛正在被 AI 抬高】。 早期判断【能不能再识别】靠人工比对,现在机器学习能跨数据集找出人眼看不见的模式,甚至从统计规律里把被抑制的字段反推回来。这意味着几年前被认为安全的脱敏数据集,今天可能已经不安全了——匿名化不是一次性动作,而需要定期重估。
- 【学界的最新证据也很冷静】。 2026 年 4 月《科学数据》期刊组织了一次针对医学影像的去标识化重识别挑战赛,68 名选手对 38 份数据集尝试还原患者身份,结果是无人成功;但多个团队仅凭元数据和语言信息就准确定位到了数据来源医院。结论是两头都重要:真正可用的脱敏要同时处理【内容】与【元数据】——而现实里被忽略的往往是后者。
30 秒实验
今天做两个动作,各 15 秒:
- 打开手机【设置】里的隐私或广告选项,找【个性化广告】的开关。 默认打开、需要你手动关掉的,就是 Opt-out 的形态;默认关闭、需要你主动勾选的,才是 Opt-in。
- 点开一个 App 的权限页面,看有没有【仅在使用中允许】这一项。 这个中间档的意义是:把【同意】从一个开关变成了一个范围——这正是 2026 年监管在推的方向:不是不让你用,而是要让同意的范围与用途对得上。
这一节要带走的一句是:同意的价值不在【签过字】,而在【同意的那件事和实际做的那件事是一条】——用途一变,原来的同意就作废了。
常见误区
-
错误:我们在隐私政策里写了可能向第三方提供,所以就算 Opt-out 合规了。——纠正:写进隐私政策只是【告知】的形态之一,Opt-out 还额外要求【向监管机构备案】和【在提供时通知本人】。这两件事都不是文字工作,是流程工作——备案要有受理记录,通知要有发送记录,本人喊停要有处理时限。判断标准:如果监管问你【这个人有没有被通知过】,你能不能在 5 分钟内调出证据。
-
错误:数据只要做过匿名处理,就可以自由使用和发布了。——纠正:匿名化的成立条件是【无法再识别到个人】,而这是一个会随时间变化的结论。两种最常见的翻车方式:① 只删了姓名和电话,但留着邮编+生日+性别(这三项的组合足以锁定相当一部分人);② 内容处理干净了,但元数据(设备号、拍摄时间、机构名)把来源暴露了。正确做法是把匿名化当成一次风险评估而不是一次技术操作:要写清楚【针对什么对手、在什么条件下、判断不能再识别】,并定期重估。
-
错误:k-匿名化的 k 值定得越大越安全,干脆定 100。——纠正:k 值定得越大,需要泛化掉的维度越多,数据越没用。这个 Demo 已经演示了这个代价:六条记录为了满足 k=2 就要删掉两条。k=100 意味着任何一组准标识符组合都要有 100 条记录——现实中只有极粗的划分才能做到,那样的数据几乎失去了分析价值。合理做法是先问【这份数据要回答什么问题】,再定【最小可接受的 k】;而且别忘了 k 之外还有同质性攻击要处理——这也是为什么实践里常常直接跳到差分隐私或合成数据。
-
错误:差分隐私就是加噪声,随便加一点就行。——纠正:噪声加多少不是随便定的,它由一个【隐私预算】控制,而这个预算是有限的。预算小的好处是保护强,代价是结果不准;更关键的一点是——每查一次就消耗一部分预算,用完就不能再查了。这解释了一个很常见的现象:为什么同一份差分隐私数据,第一次查询和第一万次查询的可信度完全不同。 所以差分隐私不是【给数据加个噪声】的功能,而是一套【限制能问几次】的制度。
自测三问(点开对答案)
1. Opt-in 与 Opt-out 的差别到底在哪一步? —— **差别在【顺序】,不在【要不要征求本人意见】**。Opt-in 是提供之前先拿到同意,本人不同意就什么都不发生;**Opt-out 是提供方先动,然后把这件事登记备案、通知本人,并接受本人随时叫停**。**代价结构完全不同**:Opt-in 的风险是**转化率低**(同意要主动勾选),Opt-out 的风险是**一旦流程漏一环就是违法**(没备案、没通知、喊停没停)。**所以选择不是【哪个省事】,而是【哪种成本更可控】**:**面向上百万用户的消费类业务通常走 Opt-in(因为量大到没法逐个通知),小规模的、有明确业务关系的场景才可能用 Opt-out。** 2. 为什么这个 Demo 里,泛化做了三步还是有一组不满足 k=2? —— **因为那两条记录在保留的维度上本来就独一无二**:A5 是 38 岁男性、A6 是 52 岁女性,邮编又都集中在一个很窄的区间。**泛化只能把【相邻】的值合并到一起,没法让本来就分属两端的两个人变得相像**。**这揭示了一个容易被忽略的事实:匿名化的难点不在【大多数记录】,而在一小撮【离群的记录】**——它们往往正是最有分析价值的那几条(**罕见病例、极端值**)。**所以现实里的处理顺序通常是:先抑制离群记录,再对剩余数据做泛化**;**而抑制掉的那部分,恰恰是数据利用率损失的主要来源。** 3. 【k-匿名化挡不住同质性攻击】这句话的实际含义是什么? —— **它的意思是:k-匿名化只保证了【在一组里分不出谁是谁】,没有保证【这一组的敏感属性有变化】**。Demo 里 {A1, A2} 两人同组、两人都是流感——**对攻击者来说,先通过外部信息把人锁定到这一组(这一步往往不难),然后就直接读到答案**,**根本不需要再分清是 A1 还是 A2**。**这类攻击在医疗数据上尤其致命**,因为医院科室+年龄+地区这种组合本身就和疾病高度相关。**补法是要求每组内的敏感属性至少有 l 种不同取值(l-多样性),或者要求分布接近总体分布(t-接近性)**;**但这些方法在更高维的数据上仍会失效**——**这也是这条技术路线最终转向差分隐私的原因。**- ☐ 下一节(7-3 户口本号码与法人编号的管理)
相关笔记
- 个人信息的管理 —— 上一篇:先把信息分成三层,本篇讲每层能怎么动
- 户口本号码与法人编号的管理 —— 下一篇:编号类信息的用途是被法律限死的
- 电商网站中的信用卡管理 —— 卡号能不能存(行业规则)与本篇数据能不能给(法律义务)
- 企业防范信息泄露的思路 —— 数据分类是 DLP 的前置条件,也是匿名化的前置条件
- 🛡️ 网络与信息安全 · 索引 —— 全课路线图