# 数据分类与字段加密映射表

> 巴青平台密码改造字段级清单。  
> 算法：**SM3-HMAC**（完整性）、**SM4**（机密性）。  
> 状态：`待改造` / `一期` / `二期` / `三期` — 实施时更新。

**图例**

| 保护 | 含义 |
| --- | --- |
| HMAC | 存储完整性，SM3-HMAC，库中存 `*_hmac` 或行级 `integrity_hmac` |
| SM4 | 存储机密性，原字段或 `*_cipher` 存 Base64 密文 |
| HMAC+SM4 | 同时做机密性与完整性 |

---

## 1. 身份鉴别数据

| 表名 | 字段 | 保护 | dataType | 期次 | 备注 |
| --- | --- | --- | --- | --- | --- |
| `sys_user` | `password` | HMAC+SM4 | `CREDENTIAL` | 二期 | 口令存储口径须与测评机构确认（SM4 或保留 BCrypt+HMAC） |
| `sys_user` | `user_name` | HMAC | `CREDENTIAL` | 二期 | 登录账号完整性 |
| `sys_user` | `cert_sn` | HMAC | `CREDENTIAL` | 一期 | UKey 证书序列号 |
| `sys_user` | `cert_subject` | HMAC | `CREDENTIAL` | 一期 | 证书主题 |
| Redis | `login:sms:*` | — | — | 一期 | 短信 OTP，TTL 过期，不落库 |

---

## 2. 个人信息

| 表名 | 字段 | 保护 | dataType | 期次 | 备注 |
| --- | --- | --- | --- | --- | --- |
| `sys_user` | `nick_name` | HMAC+SM4 | `PERSONAL` | 二期 | 姓名/昵称 |
| `sys_user` | `phonenumber` | HMAC+SM4 | `PERSONAL` | 二期 | 短信登录依赖，须可解密 |
| `sys_user` | `email` | HMAC+SM4 | `PERSONAL` | 二期 | |
| `sys_user` | `sex` | HMAC | `PERSONAL` | 二期 | 可选 SM4 |
| `sys_dept` | `phone` | HMAC+SM4 | `PERSONAL` | 三期 | 部门联系电话 |
| `sys_dept` | `email` | HMAC+SM4 | `PERSONAL` | 三期 | |
| `biz_medical_resource` | `contact_phone` | HMAC+SM4 | `PERSONAL` | 三期 | 兽医/机构联系电话 |
| `biz_medical_resource` | `detail_address` | HMAC+SM4 | `PERSONAL` | 三期 | 详细地址 |
| `biz_distributor` | `contact_phone` | HMAC+SM4 | `PERSONAL` | 三期 | 承销商 |
| `biz_supplier` | `contact_phone` | HMAC+SM4 | `PERSONAL` | 三期 | 供应商 |
| `biz_tech_resource` | `contact_phone` | HMAC+SM4 | `PERSONAL` | 三期 | 科技资源 |
| `biz_trade_order` | 收货人/联系方式等 | HMAC+SM4 | `PERSONAL` | 三期 | 以订单表实际字段为准 |
| `biz_epidemic_report` | 上报人联系方式等 | HMAC+SM4 | `PERSONAL` | 三期 | 疫情上报 |

> **扩展规则**：新增业务表含手机、姓名、证件号、地址、银行卡等，默认归入 `PERSONAL`，上线前登记本表。

---

## 3. 权限信息

| 表名 | 字段/范围 | 保护 | dataType | 期次 | 备注 |
| --- | --- | --- | --- | --- | --- |
| `sys_user` | `user_id,user_name,status,del_flag,dept_id` | HMAC（行级） | `PERMISSION` | 二期 | 用户主体完整性 |
| `sys_role` | 全行关键字段 | HMAC（行级） | `PERMISSION` | 二期 | `role_id,role_key,status,del_flag,data_scope` |
| `sys_user_role` | `user_id,role_id` | HMAC（行级） | `PERMISSION` | 二期 | 用户-角色关联 |
| `sys_role_menu` | `role_id,menu_id` | HMAC（行级） | `PERMISSION` | 二期 | 角色-菜单关联 |
| `sys_menu` | `menu_id,perms,status` | HMAC（行级） | `PERMISSION` | 三期 | 菜单权限标识 |

**行级 HMAC 拼接示例（`sys_user_role`）**

```text
PERMISSION|{keyVer}|{user_id}|{role_id}
```

---

## 4. 操作日志

| 表名 | 字段/范围 | 保护 | dataType | 期次 | 备注 |
| --- | --- | --- | --- | --- | --- |
| `sys_oper_log` | `oper_id,title,method,oper_name,oper_url,oper_param,json_result,status,oper_time` | HMAC（行级） | `LOG` | 二期 | 写入后异步算 HMAC |
| `sys_logininfor` | `info_id,user_name,ipaddr,login_location,browser,os,status,msg,login_time` | HMAC（行级） | `LOG` | 二期 | 含证书登录、验签失败记录 |

**说明**：日志表一般不做 SM4 整行加密（影响检索）；对 `oper_param` 中已识别的个人敏感子串可单独 SM4 脱敏存储（可选）。

---

## 5. 主要业务数据

### 5.1 牧业疫病诊疗

| 表名 | 字段 | 保护 | dataType | 期次 | 备注 |
| --- | --- | --- | --- | --- | --- |
| `biz_medical_resource` | `introduction` 等核心业务字段 | HMAC+SM4 | `BUSINESS` | 三期 | 按需求确定是否含简介全文 |
| 在线问诊/预约相关表 | 病情描述、诊断结论等 | HMAC+SM4 | `BUSINESS` | 三期 | 待模块表结构梳理后补全 |

### 5.2 交易市场

| 表名 | 字段 | 保护 | dataType | 期次 | 备注 |
| --- | --- | --- | --- | --- | --- |
| `biz_trade_order` | 金额、结算、合同相关 | HMAC+SM4 | `BUSINESS` | 三期 | |
| `biz_market_entry` | 入场登记敏感信息 | HMAC+SM4 | `BUSINESS` | 三期 | |
| `biz_isolation_patrol` | 巡查记录 | HMAC | `BUSINESS` | 三期 | 完整性为主 |

### 5.3 产业数据

| 表名 | 字段 | 保护 | dataType | 期次 | 备注 |
| --- | --- | --- | --- | --- | --- |
| 养殖产业/牧场/草场等 | 主体、面积、存栏等核心指标 | HMAC+SM4 | `BUSINESS` | 三期 | 见各模块技术方案 |
| 牦牛资产/金融相关 | 耳标、估值、权属 | HMAC+SM4 | `BUSINESS` | 三期 | |

### 5.4 政策与补贴

| 表名 | 字段 | 保护 | dataType | 期次 | 备注 |
| --- | --- | --- | --- | --- | --- |
| 补贴发放记录 | 户名、账号、金额 | HMAC+SM4 | `BUSINESS` | 三期 | 高敏感 |

---

## 6. 配置表（改造元数据）

| 表名 | 说明 |
| --- | --- |
| `sys_crypto_field_config` | 表名、列名、保护类型（HMAC/SM4/BOTH）、`data_type`、`key_index`、是否启用 |
| `sys_crypto_key_version` | 密钥版本与密码机索引映射 |
| `sys_security_alert` | 完整性校验失败、篡改告警 |
| `sys_crypto_audit_log` | 密码机调用审计（无明文） |

---

## 7. Canonical 规则登记

| dataType | 参与 HMAC 的字段顺序 | 空值规则 |
| --- | --- | --- |
| `CREDENTIAL` | 表定制 | 空字符串用 `<EMPTY>` |
| `PERSONAL` | 按映射表单字段升序 | 同上 |
| `PERMISSION` | 主键 + 权限关键列 | 同上 |
| `LOG` | 日志行全字段按列名排序 | 同上 |
| `BUSINESS` | 按 `sys_crypto_field_config` 配置 | 同上 |

**版本**：规则变更时 `integrity_key_ver` / `crypto_key_ver` 递增，保留旧版校验逻辑至迁移完成。

---

## 8. 待梳理清单（实施前补充）

- [ ] 各 `biz_*` 表完整字段扫描（自动化脚本输出草案）
- [ ] 测评机构确认口令存储口径
- [ ] 密码机厂商密钥索引分配表
- [ ] 大屏免密登录账号（`screenviewer`）是否纳入证书/短信策略
- [ ] 第三方 Open API 回调数据是否落库加密
