# Kylin Realname Gateway - 法律合规文档

> **版本**: 1.0  
> **最后更新**: 2026-06-20  
> **适用范围**: 所有使用 kylin/realname-gateway 扩展包的系统  

---

## 一、适用法律法规

### 1.1 《关于防止未成年人沉迷网络游戏的通知》(国家新闻出版署 2019.11.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第一条 | 网络游戏企业应当要求未成年人以真实身份信息注册并登录网络游戏 | `NppaGatewayService::verify()` 对接 NPPA 实名认证系统 |
| 第二条 | 严格限制向未成年人提供网络游戏服务的时间 | 配合 `kylin/anti-addiction` 包实现时段限制 |
| 第三条 | 规范向未成年人提供付费服务 | 8 周岁以下禁充，8-16 周岁月充≤200元，16-18 周岁月充≤400元 |

### 1.2 《关于进一步严格管理 切实防止未成年人沉迷网络游戏的通知》(国家新闻出版署 2021.8.30)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第一条 | 严格限制向未成年人提供网络游戏服务的时间，仅周五、周六、周日和法定节假日每日 20时至 21 时 | `IdCardValidator::determineAgeGroup()` 四档年龄判定 |
| 第二条 | 所有网络游戏企业必须接入国家新闻出版署网络游戏防沉迷实名验证系统 | `NppaGatewayService` 对接 `api.wlc.nppa.gov.cn` |

### 1.3 《中华人民共和国未成年人保护法》(2021.6.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第七十四条 | 网络产品和服务提供者不得向未成年人提供诱导其沉迷的产品和服务 | 实名认证 + 防沉迷联动 |
| 第七十五条 | 网络游戏服务提供者应当按照国家有关规定和标准，对游戏产品进行分类，作出提示 | 年龄段判定后联动游戏分级 |

### 1.4 《未成年人网络保护条例》(2024.1.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第四十六条 | 网络游戏服务提供者应当通过未成年人监护人同意机制、防沉迷系统等有效措施，限制未成年人使用网络游戏 | 实名认证为防沉迷前置条件 |
| 第四十七条 | 网络游戏服务提供者不得在每日 22 时至次日 8 时向未成年人提供网络游戏服务 | 联动 `kylin/anti-addiction` |

### 1.5 《中华人民共和国个人信息保护法》(2021.11.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十八条 | 身份证号属于敏感个人信息，处理需有特定目的和充分必要性 | 仅用于实名认证，不存储原文 |
| 第二十九条 | 处理敏感个人信息需取得个人单独同意 | 调用方需在认证前获取用户同意 |
| 第五十一条 | 处理者应当采取加密等安全技术措施 | `encryptIdCard()` 使用 RSA 公钥加密传输 |
| 第五十五条 | 处理敏感个人信息应当进行个人信息保护影响评估 | 调用方需完成 PIA 评估 |

### 1.6 《中华人民共和国网络安全法》(2017.6.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十一条 | 网络运营者应当采取技术措施防范网络攻击 | HTTPS 传输、签名验证 |
| 第四十二条 | 网络运营者不得泄露、篡改、毁损其收集的个人信息 | 身份证号不存储原文 |
| 第四十七条 | 网络运营者应当加强对其用户发布的信息的管理 | 实名认证审计日志 |

### 1.7 《中华人民共和国数据安全法》(2021.9.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十一条 | 国家建立数据分类分级保护制度 | 身份证号属于敏感数据，加密传输 |
| 第二十七条 | 开展数据处理活动应当依照法律、法规的规定，建立健全全流程数据安全管理制度 | 审计日志记录所有认证行为 |

---

## 二、行业规范

### 2.1 NPPA 实名认证接口规范

| 规范项 | 要求 | 合规要点 |
|------|------|----------|
| 接口地址 | `https://api.wlc.nppa.gov.cn` | 国家新闻出版署官方接口 |
| 认证接口 | `/identity/authentication` | 提交实名认证 |
| 查询接口 | `/identity/query` | 查询已认证状态 |
| 校验接口 | `/identity/check` | 实名校验 |
| 签名算法 | HMAC-SHA256 或 secret_key 签名 | 请求头携带签名 |
| 加密算法 | RSA 公钥加密身份证号 | `encryptIdCard()` |
| 超时控制 | 建议 ≤ 10 秒 | 配置默认 8 秒 |
| 缓存策略 | 成功缓存 365±7 天，失败缓存 1 小时 | 防止重复请求 |

### 2.2 身份证号校验规范

| 规范项 | 要求 | 合规要点 |
|------|------|----------|
| 长度 | 18 位 | `IdCardValidator::validate()` |
| 校验码 | GB 11643-1999 标准 | 加权因子 + 校验码映射 |
| 生日提取 | 第 7-14 位 | `extractBirthday()` |
| 年龄计算 | 周岁 | `calculateAge()` |
| 年龄段判定 | 4 档（<8 / 8-16 / 16-18 / ≥18） | `determineAgeGroup()` |

### 2.3 防沉迷年龄段标准

| 年龄段 | 代码 | 说明 | 限制 |
|--------|------|------|------|
| 未满 8 周岁 | 0 | 幼儿 | 禁止登录、禁止充值 |
| 8-16 周岁 | 1 | 少年 | 限时登录、月充≤200元 |
| 16-18 周岁 | 2 | 青少年 | 限时登录、月充≤400元 |
| 已满 18 周岁 | 3 | 成年 | 无限制 |

---

## 三、合规检查清单

### 3.1 法律合规

- [x] 对接 NPPA 官方实名认证系统
- [x] 身份证号 RSA 公钥加密传输
- [x] 身份证号不存储原文（仅缓存认证结果）
- [x] 审计日志记录所有认证行为
- [x] 请求签名验证
- [x] 超时控制（8 秒）
- [x] 缓存策略（成功 365±7 天，失败 1 小时）

### 3.2 数据保护

- [x] 身份证号属于敏感个人信息，加密传输
- [x] 认证结果缓存不含身份证原文
- [x] 审计日志不含身份证原文
- [x] 错误日志不记录身份证号

### 3.3 未成年人保护

- [x] 四档年龄段判定
- [x] 未成年身份识别
- [x] 与 `kylin/anti-addiction` 联动

---

## 四、代码检测报告

### 4.1 检测结果

| 检测项 | 状态 | 说明 |
|------|------|------|
| NPPA 网关对接 | ✅ 已通过 | `NppaGatewayService` 对接 `api.wlc.nppa.gov.cn` |
| 身份证校验 | ✅ 已通过 | `IdCardValidator` 18 位校验码验证（GB 11643-1999） |
| 身份证加密 | ✅ 已通过 | `encryptIdCard()` RSA 公钥加密 |
| 超时控制 | ✅ 已通过 | 默认 8 秒 |
| 缓存策略 | ✅ 已通过 | 成功 365±7 天，失败 1 小时 |
| 年龄段判定 | ✅ 已通过 | 4 档（<8 / 8-16 / 16-18 / ≥18） |
| 签名算法 | ✅ 已修复 | 新增 `buildSignature()` 方法，使用 HMAC-SHA256 签名（依据 NPPA 接口规范） |
| 审计日志 | ✅ 已修复 | 新增 `auditVerify()` 方法，记录认证行为（不含身份证原文），依据《网络安全法》第四十七条、等保 2.0 8.1.4.6 |
| 错误处理 | ✅ 已通过 | 异常捕获 + 日志记录 |
| 配置管理 | ✅ 已通过 | 环境变量配置，支持发布 |

### 4.2 审查结论

本包为 NPPA 防沉迷实名认证网关，对接国家新闻出版署官方系统，符合《关于防止未成年人沉迷网络游戏的通知》和《未成年人网络保护条例》要求。

**修复内容**：
1. `NppaGatewayService::buildHeaders()` 新增签名头 `sign`，使用 HMAC-SHA256 算法
2. 新增 `buildSignature()` 私有方法，对请求参数进行签名
3. `verify()` 方法新增审计日志记录，记录认证行为（不含身份证原文）
4. 审计日志写入 `kylin/audit-log`，包含：认证状态、年龄段、游戏 ID、用户 ID、IP
5. 审计日志写入失败不中断业务，仅记录 warning 日志

---

## 五、免责声明

本扩展包在代码层面实现了实名认证网关的合规管理，但不构成法律建议。使用方应：

1. 确保已获得 NPPA 的 appId、bizId、secret_key、public_key
2. 确保调用方已获取用户对处理敏感个人信息的单独同意（依据《个人信息保护法》第二十九条）
3. 确保调用方已完成个人信息保护影响评估（PIA）（依据《个人信息保护法》第五十五条）
4. 配合 `kylin/anti-addiction` 包实现完整的防沉迷系统
5. 咨询专业法律顾问，确保系统整体合规
