# 实施计划与验收

> 巴青平台密码改造分期计划、任务分解与验收标准。

---

## 1. 总体里程碑

| 阶段 | 周期（建议） | 目标 |
| --- | --- | --- |
| 一期 | 3～4 周 | 身份鉴别（UKey + 短信双因子）+ 密码模块骨架 + 密码机联调 |
| 二期 | 4～5 周 | 平台核心表（用户、权限、日志）SM3/SM4 改造 |
| 三期 | 6～8 周 | 业务表按映射表改造 + 存量迁移 |
| 四期 | 2～3 周 | 巡检告警、密钥轮换、等保测评配合 |

---

## 2. 一期：身份鉴别与密码框架

> **进度说明**：后端短信双因子、`ruoyi-crypto` Stub、阿里云短信 SDK、`login.auth-mode` 切换已落地；UKey 证书登录接口已撤销，仅保留字段与策略枚举预留。

### 2.1 任务清单

| 序号 | 任务 | 产出 | 状态 |
| --- | --- | --- | --- |
| 1.1 | 采购/部署密码机、验签服务器联调环境 | 联调报告 | ⏳ |
| 1.2 | 新建 `ruoyi-crypto` 模块，`CryptoService` 封装 SM3/SM4 | 代码 + 单元测试（Stub） | ✅ |
| 1.3 | 对接签名验签服务器，`/login/cert` 接口 | 证书登录可用 | ⏳ 待实施 |
| 1.4 | 短信双因子登录（互联网） | `/login/sms/send`、登录校验 | ✅ 后端 |
| 1.4a | 阿里云短信 SDK 集成 | `AliyunSmsGatewayClient` + `dry-run` | ✅ |
| 1.4b | 若依默认登录一键切换 | `login.auth-mode: ruoyi` | ✅ |
| 1.5 | `sys_user` 增加 `cert_sn`、`login_policy` 等字段 | `sql/crypto_phase1.sql` | ✅ 脚本已提供（字段预留） |
| 1.6 | `sys_login_policy` 配置与文档 | 策略可配置 | ✅ |
| 1.7 | 安全审计：短信失败记 `sys_logininfor` | 日志可查 | ✅ |
| 1.8 | 前端：登录页短信双因子、`api/login.js` | ✅ |

### 2.2 验收标准

- [ ] 内网管理员可使用国密 UKey 登录管理后台（待 1.3）
- [x] 互联网环境管理员须口令 + 短信验证码方可登录（后端，`auth-mode=sms-2fa`）
- [x] 验证码错误有明确提示且不泄露内部信息
- [x] 可通过 `login.auth-mode: ruoyi` 恢复若依默认登录
- [ ] 密码机 SM3/SM4 单次调用成功率 ≥ 99.9%（生产 HSM 联调后压测）
- [x] `ruoyi-crypto` Stub 无硬编码主密钥

---

## 3. 二期：平台核心数据保护

### 3.1 任务清单

| 序号 | 任务 | 产出 |
| --- | --- | --- |
| 2.1 | 执行用户/权限/日志表 DDL 扩展 | `sql/crypto_migration.sql` |
| 2.2 | 初始化 `sys_crypto_field_config` | 平台表配置数据 |
| 2.3 | MyBatis 加解密拦截器上线 | 用户手机、邮箱 SM4 |
| 2.4 | `sys_user` / `sys_role` / `sys_user_role` / `sys_role_menu` 行级 HMAC | 写后生成、读时校验 |
| 2.5 | `sys_oper_log` / `sys_logininfor` 写入后异步 HMAC | 防篡改 |
| 2.6 | `sys_security_alert` + 告警通知 | 篡改可感知 |
| 2.7 | 口令存储方案定稿并实施 | 与测评口径一致 |
| 2.8 | 前端：`request.js` 完整性错误处理；用户管理证书绑定 | 待前端改造 |

### 3.2 验收标准

- [ ] 库中 `phonenumber` 等为密文，应用层展示正常
- [ ] 手工篡改 `sys_user_role` 后，用户登录或权限加载触发告警并阻断
- [ ] 手工篡改 `sys_oper_log.integrity_hmac` 后，读日志触发告警
- [ ] 个人信息、权限、日志类数据 HMAC 覆盖率 100%（映射表范围内）
- [ ] 密码机调用有 `sys_crypto_audit_log` 记录

---

## 4. 三期：业务数据与存量迁移

### 4.1 任务清单

| 序号 | 任务 | 产出 |
| --- | --- | --- |
| 3.1 | 扫描全部 `biz_*` 表，补全映射表 | 更新映射表文档 |
| 3.2 | 分期改造：医疗资源、交易、养殖等 | 各模块 DDL + 配置 |
| 3.3 | 存量数据迁移 Job（分批、可暂停） | `CryptoMigrationJob` |
| 3.4 | 双写/校验期（明文列与密文列比对） | 迁移报告 |
| 3.5 | 下线明文列（验收后） | 变更记录 |

### 4.2 验收标准

- [ ] 映射表内业务敏感字段 SM4 存储
- [ ] 主要业务数据 HMAC 覆盖率 100%（映射表范围内）
- [ ] 存量数据迁移完成率 100%，抽样解密与原文一致
- [ ] 迁移过程业务可用（只读窗口有公告与回滚方案）

---

## 5. 四期：运营与测评

### 5.1 任务清单

| 序号 | 任务 | 产出 |
| --- | --- | --- |
| 4.1 | 定时完整性巡检 `CryptoIntegrityJob` | 巡检报告 |
| 4.2 | 安全告警处置流程（若依菜单 + 权限） | 运维手册 |
| 4.2a | 前端：安全告警管理页 `monitor/securityAlert` | 待前端改造 |
| 4.3 | 密钥轮换演练（`key_ver` 升级） | 演练记录 |
| 4.4 | 等保测评配合：演示 UKey、篡改告警 | 测评材料 |
| 4.5 | 性能优化（连接池、批量 HMAC） | 压测报告 |

### 5.2 验收标准

- [ ] 每日巡检执行成功，结果可查
- [ ] 密钥轮换后旧数据仍可校验（或已完成重算）
- [ ] 核心接口 P99 延迟增加 ≤ 50ms（相对改造前，视密码机性能调整）
- [ ] 等保相关检查项有文档与演示路径

---

## 6. 角色与分工（建议）

| 角色 | 职责 |
| --- | --- |
| 项目经理 | 里程碑、测评对接 |
| 安全架构 | 方案评审、密钥策略 |
| 后端开发 | ruoyi-crypto、登录、拦截器、迁移 Job |
| 前端开发 | 证书控件集成、短信登录 UI |
| 运维 | 密码机/验签服务器部署、监控 |
| 测试 | 功能、安全、性能、篡改用例 |

---

## 7. 测试用例要点

### 7.1 身份鉴别

| 用例 | 预期 |
| --- | --- |
| 有效 UKey 验签登录 | 成功获取 Token（待实施） |
| 过期/错误证书 | 401，记登录失败（待实施） |
| 互联网登录无短信码 | 拒绝登录（`auth-mode=sms-2fa` 时） |
| 错误短信码 | 拒绝登录，OTP 有效期内可重试 |
| `auth-mode=ruoyi` | 仅需账号+密码+图形验证码，与改造前一致 |
| `sms.aliyun.dry-run=true` | 验证码出现在日志 `【短信Stub】`，不调阿里云 |

### 7.2 完整性

| 用例 | 预期 |
| --- | --- |
| 正常读取用户手机 | 解密正确，校验通过 |
| DB 直接改 `phonenumber_cipher` | 读时告警，阻断或只读降级 |
| DB 直接改 `sys_role.role_key` | 权限加载告警 |
| 更新用户前旧 HMAC 被破坏 | 拒绝更新 |

### 7.3 密码机异常

| 用例 | 预期 |
| --- | --- |
| 密码机不可用 | 明确错误提示，不返回明文兜底（生产） |
| 主备切换 | 自动 failover，业务恢复 |

---

## 8. 风险与回滚

| 风险 | 缓解 |
| --- | --- |
| 密码机单点故障 | 双机 + 健康检查 |
| 迁移数据错误 | 双写期 + 抽样校验 + 保留明文列 |
| 性能下降 | 连接池、批量、热点缓存（慎用以安全评审为准） |
| 测评口径变更 | 一期前书面确认口令存储方案 |

**回滚**：`crypto.enabled=false` 仅允许在迁移双写期由运维开关；生产篡改保护开启后不建议关闭。

---

## 9. 交付物清单

| 交付物 | 路径/形式 | 状态 |
| --- | --- | --- |
| 技术方案 | `doc/密码改造/应用密码改造技术方案.md` | ✅ |
| 字段映射表 | `doc/密码改造/数据分类与字段加密映射表.md` | ✅ |
| DDL 草案 | `doc/密码改造/数据库改造DDL.md` | ✅ |
| 一期 DDL | `sql/crypto_phase1.sql` | ✅ |
| 配置与接口 | `doc/密码改造/配置与接口说明.md` | ✅ |
| 实施与验收 | 本文档 | ✅ |
| 代码模块 | `ruoyi-crypto`、`LoginSmsService` 等 | ✅ 一期后端 |
| 全量迁移 SQL | `sql/crypto_migration.sql` | ⏳ 二期 |
