居民身份证号消失后出现的事物 — CI(连接信息)的真面目 🔐

“您的居民身份证号已消失,但其影子仍在互联网上徘徊。”

>

🎯 本文涵盖内容

  • CI(Connecting Information)是什么,为何创建
  • CI为何是88字节 — 哈希算法的秘密
  • CI生成过程(居民身份证号 → HMAC → Base64)
  • CI与DI,区别及各自用途
  • 围绕CI的个人信息保护争议

📌 引入 / 背景 — 废除居民身份证号后产生的事物

2014年,韩国原则上禁止民间企业收集居民身份证号。其背景是多年来反复发生的大规模个人信息泄露事故。信用卡公司、通信公司、购物中心 — 居民身份证号无处不在,每次泄露都会导致数千万条记录外泄。

然而,问题出现了。如果不能使用居民身份证号,如何在网上确认“这个人与那个人是同一个人”?例如,当A购物中心和B积分应用联动合作服务时,需要一种方式来确认在这两个服务中注册的“洪吉童”是否为同一人。

于是,CI(Connecting Information),即连接信息应运而生。

CI用于在线识别不同互联网企业间的同一人,是由本人确认机构将居民身份证号加密后生成的88字节信息。


🔍 CI到底是什么?

CI的定义

CI(Connecting Information)是用于识别特定个人的唯一通用Key值。由于它基于居民身份证号生成,因此保证了唯一性,并且由于采用单向加密,无法进行解密。

简单来说,它是一个将居民身份证号进行哈希处理后,再进行Base64编码的88字符字符串

实际CI值的示例如下:

wEi9oYSuekQGxT9MV4rKHG4CO+Zrp+onhLIIuembI8jx/0PLF5Ne3oMBxvUFlN4UmsgjeNErZfmpCVUFH..

它是包含英文字母大小写 + 数字 + 特殊字符(+、/、=)的88个字符。是不是很眼熟?没错,这就是Base64编码特有的形式。

为什么是88字节?

这里就回答了之前的问题。88字节是SHA-512哈希结果经过Base64编码后的大小。

哈希算法使用的是SHA-512加密算法。

阶段 说明 大小
SHA-512哈希输出 512位 = 64字节(二进制) 64字节
Base64编码 3字节 → 4字符转换 64 × 4/3 ≈ 88字符

也就是说,不是SHA-256,而是SHA-512 + Base64组合才产生88字节。✅


🔧 CI生成过程 — 逐级分解

第一步是将居民身份证号(RN)与密钥(SA, SK)组合。这里的密钥是本人确认机构与KISA共享的64字节秘密信息。第二步是将居民身份证号和密钥组合后的值,通过单向加密算法——哈希函数进行加密。

总结如下:

주민번호 + KISA 공유 비밀키(64바이트)
        ↓
   HMAC-SHA-512 (일방향 해시)
        ↓
    64바이트 바이너리
        ↓
   Base64 인코딩
        ↓
    CI (88바이트 문자열)

这里的核心是使用HMAC(Hash-based Message Authentication Code)而不是简单的哈希。HMAC通过将密钥混合在一起生成哈希,因此只有KISA和本人确认机构才能重现相同的CI。

Python伪代码示例

import hmac
import hashlib
import base64

# 居民身份证号 + KISA共享密钥
resident_number = "9001011234567"
secret_key = b"KISA_SHARED_SECRET_64BYTES_..."  # 实际密钥不公开

# 使用HMAC-SHA512生成哈希
hmac_result = hmac.new(
    secret_key,
    resident_number.encode("utf-8"),
    hashlib.sha512
).digest()  # 64字节二进制

# Base64编码 → 生成88字符的CI
ci = base64.b64encode(hmac_result).decode("utf-8")
print(f"CI 길이: {len(ci)}")  # 88
print(f"CI: {ci}")

⚠️ 实际的KISA密钥绝不公开。以上代码仅为概念理解的伪代码。


🆚 CI vs DI — 有何不同?

DI是Duplication Information的缩写,是64字节的信息。它是服务内的重复注册会员信息,一个服务中只存在一个DI。由于每个服务的DI都不同,因此要将各服务相互关联,就需要使用CI信息。

项目 CI(连接信息) DI(重复注册确认信息)
缩写 Connecting Information Duplication Information
大小 88字节 64字节
唯一性 全国所有服务中相同 仅在同一服务内相同
用途 服务间同一人连接 防止特定服务内重复注册
居民身份证号匹配 1:1匹配 因网站而异

简单比喻:CI就像居民身份证号一样,是全国通用的ID,而DI则是仅在特定网站有效的会员号


⚠️ 注意事项 / 围绕CI的争议

1. “第二居民身份证号”问题

连接信息是利用哈希函数转换居民身份证号,并添加“本人确认机构间共享秘密信息”生成的,一旦赋予,除非更改居民身份证号,否则无法更改,因此可以说它是第二居民身份证号。

2. 泄露时无法应对

CI的引入是为了废除居民身份证号,但由于CI与居民身份证号1:1匹配,导致CI可以用于个人识别。即使泄露,本人也没有修改权限,因此无法应对。

3. 个人信息保护法上的加密义务

个人信息处理者必须通过加密措施安全保管居民身份证号,以防止丢失、被盗、泄露、伪造、篡改或损坏。违反此规定,未采取加密措施的,将被处以3千万韩元以下的罚款。

CI也属于个人信息,因此服务提供商在将CI存储到数据库时,必须使用AES-256等安全算法进行加密保管。

通常,使用AES-256、SHA-256或更高版本则没有争议。


✅ 总结 / 结束语

项目 内容
CI定义 基于居民身份证号的单向哈希连接信息
哈希算法 HMAC-SHA-512
大小 64字节(二进制) → Base64 → 88字节
是否可解密 ❌ 不可(单向)
生成主体 本人确认机构(NICE、KCB、移动通信公司等)
法律法规 受《个人信息保护法》加密义务约束

CI作为居民身份证号的替代品而诞生,但实际上它是一个与居民身份证号1:1对应的永久标识符。从个人信息保护的角度来看,它仍然存在争议,是理解韩国独特本人确认体系的核心概念。

如果您想深入学习,建议参考KISA本人确认支持门户《个人信息安全保障措施标准指南》(2024年10月版)


Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注