“您的居民身份证号已消失,但其影子仍在互联网上徘徊。”
>
🎯 本文涵盖内容
- 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月版)。

发表回复