🛡️ 第七章 与安全相关的法律和制度
📄 一句话概括

编号这种信息最特别的地方在于【它不是数据,是钥匙】:一个人的号码唯一、终身不变、可以跨部门对上,所以法律把它能用的场合限死在三条——正因为它太好用,才不能随便用。

📝 本节和前面几节的关系

7-1 把信息分了层,7-2 讲了层里的数据怎么用。本篇面对的是最特殊的一类:专门造出来、用来【对上人】的编号。 它和 6-10 有一个共同的底层问题:当同一个标识符出现在很多系统里,能对上多少东西,风险就有多大。编号的作用正是把这种【对上】变得极其容易——这也是它必须被限死用途的原因。

一、编号的两种,正好对应两类主体

日本有两套编号,面向两类完全不同的主体:

两者最实质的差别在这里:

这个对照值得单独记下来:同样是【编号】,一个的核心风险是泄露与滥用,另一个的核心风险是抄写与错配。法律对它们的处理方式因此完全不同——这也说明安全措施从来不是按【技术类别】选的,是按【风险落在谁身上】选的。

二、个人编号:用途被限死在三个领域

下面的 Demo 用十个场景把这条界划出来:

# 节选自本节 Demo 脚本 d3():十个场景能否使用个人编号
for a, b, c in [
    ("税务申报、纳税证明", "可以", "法定领域之一"),
    ("养老金、医疗保险等社会保险", "可以", "法定领域之一"),
    ("灾害时的救助与津贴发放", "可以", "法定领域之一"),
    ("银行开户时作为本人确认文件", "只能用卡,不记号", "卡可作身份证明,编号不留存"),
    ("公司内部员工管理(如工资台账)", "限于法定申报所需", "可收集,但不得用于其他目的"),
    ("医院登记患者信息", "可以(走保险资格确认)", "2024-12 起以卡代保险证"),
    ("商场会员卡积分登记", "不可以", "不属于法定领域"),
    ("民宿入住登记", "不可以", "不属于法定领域"),
    ("健身房会员管理", "不可以", "不属于法定领域"),
    ("电商网站的用户账号绑定", "不可以", "不属于法定领域"),
]:
    print("  " + pad(a, 40) + pad(b, 24) + c)

实跑输出:

==================================================================================================
一、个人编号(教材译作【户口本号码】)只能用在三个领域
==================================================================================================
  用法                                    能否使用编号            说明
  税务申报、纳税证明                      可以                    法定领域之一
  养老金、医疗保险等社会保险              可以                    法定领域之一
  灾害时的救助与津贴发放                  可以                    法定领域之一
  银行开户时作为本人确认文件              只能用卡,不记号        卡可作身份证明,编号不留存
  公司内部员工管理(如工资台账)          限于法定申报所需        可收集,但不得用于其他目的
  医院登记患者信息                        可以(走保险资格确认)  2024-12 起以卡代保险证
  商场会员卡积分登记                      不可以                  不属于法定领域
  民宿入住登记                            不可以                  不属于法定领域
  健身房会员管理                          不可以                  不属于法定领域
  电商网站的用户账号绑定                  不可以                  不属于法定领域

  一句话记法:编号的用途是【法律给的三个领域】,不是【通用身份证号】。
  私人企业能用的只有那张卡上的电子证明(JPKI),用来做本人确认。

读这个输出:

三、法人编号:13 位数字里的校验位

法人编号的最后一道防线不是密码学,是小学算术:

# 节选自本节 Demo 脚本 d3():法人编号校验位的重算
def calc(base12):
    s = 0
    for i, ch in enumerate(reversed(base12)):
        weight = 1 if i % 2 == 0 else 2
        s += int(ch) * weight
    r = s % 9
    return 0 if r == 0 else 9 - r, s

实跑输出:

==================================================================================================
二、法人编号的校验位:13 位数字里的最后一道检查
==================================================================================================
  法人编号共 13 位:第 1 位是校验位,后 12 位是基础编号。
  算法:对后 12 位从右往左交替乘 1、2 求和,除以 9 取余,校验位 = 9 − 余数(余 0 时为 0)。

  给出的编号        基础 12 位        加权和    重算校验位    判定
  7123456789012     123456789012      74        7             校验通过
  5123456789012     123456789012      74        7             校验不通过(首位应为 7)
  7123456789013     123456789013      75        6             校验不通过(末位应为 6)

  → 三个编号里只有第一个是对的。
    校验位的作用不是防伪造,而是防【抄错一位】——13 位数字很容易少写一位。
    这也解释了为什么法人编号要印成 13 位而不是随意的流水号。

读这个输出:

四、动手 Demo:发卡与能用是两件事

同一段脚本的第三部分,把卡的数量与使用情况列了出来:

==================================================================================================
三、卡与编号的两个数字
==================================================================================================
  项目                              数值              时点·说明
  个人编号卡持有数                  1.0174 亿张       2026-01 下旬
  持卡率                            81.2%             同上
  医保卡使用率                      63.24%            2025-12,旧保险证到期后跳升
  85 岁以上使用率                   约 24%            同一年龄段持卡率却超过 80%
  2025 年度待更新电子证明           2,768 万件        忘记更新会直接失效
  医疗机构遇到问题的比例            约 90%            日本保险医疗机关联合会调查

  这张表里最该记住的是最后两行:
  持卡率 81%、使用率 63%,看着都过半了 —— 但 90% 的医院遇到过问题。
  【把卡发出去】和【这套制度在窗口真的能用】是两件事。
  85 岁以上那一行 24% 则说明:越是需要看病的人,越用不了这张卡。

读这个输出:

五、⚠️ 2026 现状

30 秒实验

今天做两个动作,各 15 秒:

  1. 翻一下你的钱包或手机,看有没有一张卡片上印着一串【谁都看得见但你从不说出口】的数字。 判断一个号码属于哪一类,看它印在卡面上还是只印在文件上——公开的(法人编号、车牌)和受限的(个人编号、账号)用法完全不同。
  2. 打开任一网购 App 的【实名认证】入口,看它要的是【身份证照片】还是【姓名+号码】。 这两种要求对应的合规成本差别很大——要照片是为了核对,要号码是为了留存,而留存一项就要说明保存多久、谁能看。

这一节要带走的一句是:编号的设计目的是【对上人】,所以它的风险不在【被别人知道】,而在【被到处用】——管好编号,关键是管住它的用途清单,而不是管住它的保密等级。

常见误区

  1. 错误:编号是敏感信息,所以只要加密保存就安全了。——纠正:编号的风险不是【泄露】,是【被滥用】。一组加密保存得很好的编号,如果被拿去做【本来不该用编号做的事】(比如按编号建立跨部门的用户画像),泄露风险是零,违法风险是满的。这正好是 7-1 那句【合规是安全的上位约束】的又一个例子:加密解决的是技术问题,用途管制解决的是制度问题。

  2. 错误:银行开户要了卡,就是拿走了我的个人编号。——纠正:日本的设计恰恰把这两件事分开了:卡在这里的作用是【本人确认】,用的是卡里的电子证明(JPKI);编号本身不在允许收集的范围内。这个设计很值得借鉴:把【证明你是你】和【记录你是谁】拆成两个动作,只做前者就能满足绝大多数业务的真实需要——而后者的收益往往只是【多一个可用于关联的字段】。

  3. 错误:法人编号有校验位,说明它是防伪造的。——纠正:校验位的数学设计只能挡住【随机错误】,挡不住【刻意构造】。这个 Demo 里,把第一位从 7 改成 5,重算出的校验位仍然是 7——因为后 12 位没变;任何知道算法的人都能算出正确校验位。所以它对应的风险是【手误】,不是【欺诈】。要判断某个编码是否有防伪能力,看它是否涉及密码学(签名、MAC),还是只有算术(加权求和、模运算)——这两类东西常被混为一谈。

  4. 错误:系统上线了、卡发了,这个项目就算成功了。——纠正:这份 Demo 数据给出的答案正好相反:持卡率 81.2%、使用率 63.24%,但 90% 的医疗机构遇到过问题。这三个数字的落差,就是【推广成功】与【可用性成功】之间的距离。任何涉及到人的系统都有这条落差——判断是否真的上线,要看最不方便的那群用户(老人、残障、非母语者)能不能用,而不是看平均使用率。

自测三问(点开对答案) 1. 为什么个人编号的用途必须由法律严格限定,而法人编号可以完全公开? —— **因为两者对应的风险类型不同**。**个人编号是【终身不变、跨领域通用】的标识符,它的最大威胁是【跨库关联】**:只要某个私人企业能拿到它,就能把你在不同机构留下的记录串起来,而这种串联是无法撤回的——**编号一旦泄露,你换不掉它**。**法人编号则相反**:**它本来就登记在公开名册上、本身不含隐私信息,用途是让交易对方能核实【这家公司的身份】**。**所以对它的管理重点不是保密,是唯一性与正确性**——**这也是校验位存在的理由。** **推而广之:判断一个标识符要不要严格管制,看它泄露之后【能不能被换掉】**。 2. 公司为了做工资台账收集员工编号,为什么还要强调【不得用于其他目的】? —— **因为【能收集】这个许可,是按【用途】发出来的,不是按【数据】发出来的**。法律允许企业在【税务与社会保险的法定申报】这个用途上收集编号,**不代表这个编号变成了企业的一项通用资产**。**最常见的越界方式有两个**:① 拿编号去核对员工在其他机构的记录(比如查有没有其他收入);② 把编号存进与申报无关的系统里(比如 CRM、门禁)。**这两件事都不是技术故障,是权限设计问题**——**对应到 1-8 里的最小权限原则:许可要跟着【这件事】走,不能跟着【这个人】或【这个字段】走。** 3. 【发卡 81%、使用 63%、医院抱怨 90%】这三个数字放在一起说明了什么? —— **它说明【数字化的完成度】不能用单一指标衡量**。**持卡率衡量的是【分发】,使用率衡量的是【采用】,而医院抱怨率衡量的是【实际可用性】**——**三者是三个不同的阶段,任何一个卡住都会让整个系统停在半途**。**在这个例子里,卡在第三阶段**:**读卡器故障、密码忘记、证书过期、老人操作困难**,这些问题不会体现在持卡率上,**只会在窗口那一分钟里暴露出来**。**这条经验对所有技术改造都通用**:**上线指标的选取,要包含【失败时用户遇到什么】,而不只是【有多少人已经接进来】。**

相关笔记