# 应用密码改造 — 文档目录

> 巴青牧业数字化平台（RuoYi v3.9.2 / Spring Boot 2.x）国密合规改造说明。  
> 覆盖：身份鉴别（UKey / 短信双因子）、密码机对接（SM3 完整性 / SM4 机密性）、篡改校验与告警。

---

## 文档清单

| 文档 | 说明 |
| --- | --- |
| [应用密码改造技术方案.md](./应用密码改造技术方案.md) | 总体架构、身份鉴别、密码服务封装、完整性校验、告警、分期实施 |
| [数据分类与字段加密映射表.md](./数据分类与字段加密映射表.md) | 平台表与业务表字段级保护策略（SM3 / SM4） |
| [数据库改造DDL.md](./数据库改造DDL.md) | 新增表、扩展字段、配置表、安全事件表 DDL 草案 |
| [配置与接口说明.md](./配置与接口说明.md) | `application.yml`、登录接口、已实现代码路径 |
| [实施计划与验收.md](./实施计划与验收.md) | 分期任务、联调要点、验收检查项 |

---

## 一期实施进度（互联网管理端 · 后端）

| 能力 | 状态 | 说明 |
| --- | --- | --- |
| 短信双因子登录 | ✅ 后端已实施 | `POST /login/sms/send`、`POST /login` + `smsCode` |
| 若依默认登录切换 | ✅ | `login.auth-mode: ruoyi` 或 `internet-sms.enabled: false` |
| `ruoyi-crypto` 模块 | ✅ Stub | `CryptoService` + BouncyCastle 开发实现 |
| 阿里云短信 SDK | ✅ | `alibabacloud-dysmsapi20170525`，支持 `dry-run` 日志 Stub |
| `sys_login_policy` | ✅ 代码+DDL | 脚本 `sql/crypto_phase1.sql` |
| UKey 证书登录 | ⏳ 待实施 | 字段/策略枚举已预留（`cert_sn`、`LoginPolicyType.CERT`）；接口未实现 |
| 前端登录改造 | ✅ 短信双因子 | 支持 `VUE_APP_LOGIN_AUTH_MODE=ruoyi|sms-2fa` |
| 字段 SM3/SM4 | ⏳ 二期 | MyBatis 拦截器、存量迁移 |

---

## 快速配置

```yaml
# 等保互联网双因子（生产）
login:
  auth-mode: sms-2fa
  network-zone: INTERNET

# 本地 / 内网开发：恢复若依默认登录
login:
  auth-mode: ruoyi
```

详见 [配置与接口说明.md §1.2](./配置与接口说明.md)。

---

## 改造范围摘要

| 类别 | 保护方式 | 典型数据 |
| --- | --- | --- |
| 身份鉴别数据 | SM4 + SM3 HMAC | `sys_user.password`、登录凭证 |
| 个人信息 | SM4 + SM3 HMAC | 姓名、手机、邮箱、身份证等 |
| 权限信息 | SM3 HMAC | `sys_user`、`sys_role`、`sys_user_role`、`sys_role_menu` |
| 操作日志 | SM3 HMAC | `sys_oper_log`、`sys_logininfor` |
| 主要业务数据 | SM4 + SM3 HMAC | 医疗资源、交易、养殖等产业表敏感字段 |

---

## 外部依赖

- **签名验签服务器**：国密 UKey 证书登录、SM2 验签（待实施）
- **密码机（HSM）**：SM3-HMAC、SM4 加解密（一期 Stub，生产待对接）
- **短信网关**：阿里云 dysmsapi（一期已集成 SDK）

---

## 关联代码（一期已落地）

| 模块 | 包/路径 |
| --- | --- |
| 密码服务 | `ruoyi-crypto` → `com.ruoyi.crypto` |
| 登录双因子 | `ruoyi-framework` → `LoginSmsService`、`SysLoginService` |
| 短信网关 | `ruoyi-framework` → `sms.AliyunSmsGatewayClient` |
| 登录接口 | `baqing-admin` → `SysLoginController` |
| 登录策略 | `ruoyi-system` → `SysLoginPolicyServiceImpl` |
| 一期 DDL | `sql/crypto_phase1.sql` |
