敏感信息发送
本文档给出面向工单与客服模块的“敏感信息发送与存储”设计方案,结合业内最佳实践,覆盖加密通道、字段级保护、访问控制、审计合规与落地路径。
适用范围与对象
- 场景:工单系统、在线客服(人工/机器人)、渠道接入(网页、小程序、App、第三方平台)。
- 敏感数据(示例清单):
- 认证类:密码(绝不明文传输/存储)、一次性口令(OTP)、重置令牌。
- 个人标识:身份证号、护照号、银行卡号、CVV、手机号、邮箱、住址、出生日期等。
- 账号与交易:账户号、订单号、支付凭证/截图、对账文件。
- 会话内容:聊天文本中被识别为敏感的片段(正则/字典/ML)。
- 附件:图片/文档/PDF/录音,可能包含证照/卡面等。
设计原则
- 最小化:仅收集为完成业务所必需的数据;默认不收集密码,采用重置/授权替代。
- 默认加密:传输全链路加密;存储“磁盘加密 + 字段级加密/代币化”。
- 端到端优先:对极高敏感度字段(如身份证/卡号)倾向消息/字段级端到端加密,服务端仅处理密文与授权。
- 零信任:内外网一视同仁,mTLS/细粒度授权/最小权限访问。
- 可审计与可证明合规:不可篡改审计、留存/删除策略可验证。
威胁模型(概要)
- 传输劫持与中间人(MitM);跨域脚 本与注入;端侧木马与键盘记录。
- 服务器侧越权访问;内部人滥用;日志或备份泄露。
- 密钥泄露;云存储误配置;第三方集成数据外泄。
总体架构
- 客户端(Web/App/小程序/SDK)
- 接入网关(WAF/CDN/HSTS/HTTP/2+TLS 1.3)
- 敏感信息网关(Sensitive Gateway,职责:字段识别/脱敏、JWE 加解密、KMS 包封/解封、一次性查看令牌)
- 业务服务(工单/客服):仅处理最小化明文字段与密文占位符
- KMS/HSM:密钥管理、Envelope Encryption(DEK/KEK)
- 存储:数据库(字段级加密/代币化)、对象存储(客户端加密或 SSE-KMS)
- 审计与监控:集中日志、WORM/对象锁、SIEM、DLP、异常检测
传输安全(加密通道)
- 外部:TLS 1.3(强制 HSTS、禁用弱套件、OCSP Stapling),CDN/WAF 前置。
- 内部:服务间 mTLS(SPIFFE/SPIRE 或服务网格),短期证书与自动轮换。
- 内容级加密(建议用于高敏字段):
- JWE(RSA-OAEP/AES-GCM)或 age/ECIES,采用“客户端生成随机 DEK + 服务端使用 KMS 包封”的 Envelope 模式。
- 会话级临时公钥分发与轮换;支持前向保密(PFS)。
- 浏览器安全:CSP、SRI、SameSite Cookie、严格的 Referer-Policy;表单使用安全输入控件,避免第三方脚本接触密文前的数据。
存储安全
- 磁盘/卷加密:数据库与对象存储启用加密(AES-256)。
- 字段级加密:
- 客户端或敏感网关侧加密,数据库仅存密文;密钥由 KMS/HSM 管理。
- 可搜索需求通过“不可逆索引”满足:如 HMAC-SHA-256(规范化字段, IndexKey) 的前缀/模糊匹配替代,避免明文索引。
- 代币化(Tokenization):
- 将身份证/卡号替换为 Token;需要明文时通过受控解密流程(理由/审批/一次性查看)。
- 密码策略:
- 密码不通过客服通道传输;统一走“重置链接/一次性口令(OTP)”。
- 存储使用 Argon2id(或 bcrypt 高 cost)、长随机 Salt、Pepper 存于 KMS。
- 附件:
- 客户端加密(AES-GCM)后分片上传,对象存储使用 SSE-KMS 作为二次防线;元数据最小化。
密钥管理(KMS/HSM)
- Envelope Encryption:每条记录/每个附件生成随机 DEK,由 KEK(KMS/HSM 管理)包封;密文与包封的 DEK 一并存储。
- 轮换策略:
- KEK 定期轮换(季度/半年),DEK 可按对象/批次天然独立;提供批量重包封作业。
- 双人审批、分权管理、密钥用途分离(加密/签名)。
- 密钥撤销与退场:留痕记录、影响面评估、紧急切换流程演练。
访问控制与最小 化展示
- 授权模型:组合 RBAC/ABAC(角色 + 业务属性 + 风险等级 + 工单所有权)。
- 默认脱敏:
- 身份证/卡号默认显示为“前后各若干位 + 中间掩码”;查看明文需说明理由与工单上下文,记录审计事件。
- 支持“一次性查看/限时查看/水印/屏幕标识”,超时自动隐藏。
- 敏感操作保护:
- 强制二次验证(MFA/U2F)与会话重新确认。
- 会话隔离与最小窗口可视范围;下载需授权与追踪。
审计、监控与 DLP
- 不可篡改审计:
- 审计日志写入 WORM/对象锁(S3 Object Lock/GCS Retention),保留期依合规设定。
- 关键事件:查看明文、导出、解密失败、密钥操作、权限变更、异常频次访问。
- 监控与告警:
- 与 SIEM 对接,基于用户/工单/字段级指标做异常检测(爆发式查看、越权路径、深夜访问)。
- DLP:
- 入站与出站内容做规则/ML 检测,自动打码或阻断,支持“安全收集卡片”替代自由文本。
客户端与 SDK 要点
- Web:CSP、SRI、子资源隔离;敏感输入在 安全组件内完成本地加密后再传输;避免第三方脚本接触明文。
- iOS/Android:证书绑定(Pinning)、Keychain/Keystore 存储密钥材料、Biometric 解锁敏感视图;前/后台切换时自动遮挡。
- 上传:分片 + 重试 + 完整性校验(chunk HMAC/整体 MAC);失败分片不可恢复到明文。
- UI 交互:默认掩码、点击揭示需二次确认与理由输入,限制复制/自动过期。
工单/客服模块落地
- 工单字段模型:
customer_name(脱敏可见)、id_number(密文+Token)、card_no(密文+Token)、phone/email(密文可联络或以网关服务代拨/代发)、attachments(客户端加密对象引用)、notes(分段脱敏)。
- 客服收集流程:
- 使用“安全表单/安全卡片”引导用户填写所需字段;前端本地加密+一次性提交链接;表单到期自动失效。
- 在聊天窗口中自动 DLP 识别并提示改用安全表单,防止明文发送。
- 附件:
- 仅显示缩略图(经网关临时解密 + 透传图像代理,添加水印/防盗链),原件需一次性查看令牌。
- 机器人与 LLM:
- 默认对敏感片段做脱敏/替代占位符;模型提示加入 no-train 与 PII redaction;对外部模型仅发送最小化上下文。
API 契约(示例)
创建敏感消息
POST /api/secure-messages
请求体(字段级加密 + Envelope 示例,ciphertext 为 AES-GCM 密文,dek_wrapped 为 KMS 包封 DEK):
{
"channel": "ticket|im",
"ticket_id": "T2025xxxx",
"payload": {
"id_number": {
"alg": "A256GCM",
"ciphertext": "Base64(GCM(cipher))",
"iv": "Base64(iv)",
"tag": "Base64(tag)",
"dek_wrapped": "Base64(KMS.wrap(DEK))",
"kid": "kms-key-id"
},
"phone": { "...": "同上" },
"notes": "已脱敏的普通文本"
},
"client_meta": { "sdk": "web@1.2.3", "fp": "device-fp" }
}
响应:201 Created,返回消息 id 与可选 token_id(一次性查看)。
一次性查看敏感字段
GET /api/secure-messages/{id}/fields/{field}?one_time_token=...
- 验证权限、理由与时效,审计后返回短生命周期明文或前端可解密密文。
附件上传(客户端加密分片)
-
POST
/api/secure-attachments/init→ 返回upload_id与分片策略 -
PUT
/api/secure-attachments/{upload_id}/{part_no}→ 上传加密分片 -
POST
/api/secure-attachments/complete→ 校验分片 HMAC/总体 MAC,落库密文与dek_wrapped
数据生命周期与留存/删除
- 收集:DLP 拦截与安全表单替代;强隐私提示与同意记录。
- 留存:按字段/工单类型设置 TTL;达期自动密文销毁(含密钥引用);涉法保全进入“保全策略”。
- 删除:用户权利请求(GDPR/PIPL)触发定位 Token → 解密/删除/无法还原证明;备份/日志链路联动清理或超期失效。
合规与地区要求
- GDPR/CCPA、PIPL、ISO 27001、SOC 2;支付相关参考 PCI DSS;国内等保测评要求。
- 数据跨境与数据主权:数据域隔离与就地处理;跨境通过脱敏/匿名化或经批准的传输机制。
测试、演练与验收
- 单元/集成:加解密正确性、Token 唯一性与不可逆索引一致性、失败与重试语义。
- 安全测试:渗透/红队、依赖漏洞扫描、密钥轮换/撤销演练、数据泄露桌面推演。
- 恢复演练:KMS 不可用/密钥吊销/对象存储故障下的降级策略与 RTO/RPO。
性能与可用性
- 加解密开销:对热路径采用批量与异步;大附件走流式与分片并行;合理的连接复用与 HTTP/2。
- 高可用:网关/敏感服务与 KMS 多可用区部署,读写分离与幂等回放。
实施路线(建议)
- 第 1 阶段(2-4 周):安全表单 + DLP 拦截、TLS 强化、密码改走重置/OTP 流程;附件客户端加密 MVP。
- 第 2 阶段(4-6 周):字段级加密/Token 化落地到身份证/卡号/手机 号,审计不可篡改、一次性查看上线。
- 第 3 阶段(4-8 周):mTLS 内网全覆盖、KEK 轮换/密钥治理、跨域数据驻留与区域化部署。
- 第 4 阶段(持续):LLM 脱敏网关、异常检测、指标运营化与持续合规。
关键指标(KPI)
- 明文敏感数据在传输/存储中的暴露率:= 0。
- 一次性查看申请→批准→查看的审计闭环达成率:> 99%。
- 密钥轮换达成度与时效;DLP 拦截命中率与误报率。
- 事件响应:发现→遏制→通报的时延;审计链完整性验证频率。
附:字段级加密典型流程
-
客户端为每字段生成随机 DEK(AES-256-GCM),就地加密 → 得到
ciphertext/iv/tag。 -
使用服务端公布的 KMS 公钥(或经网关接口)对 DEK 包封(
dek_wrapped)。 -
发送至敏感网关 → 校验/审计 → 入库密文与包封 DEK;业务侧仅见 Token/占位符。
-
授权查看时:
- 触发一次性查看流程(理由+审批+MFA)→ 解封 DEK → 解密 → 短时返回或前端解密。
- 审计事件写入不可篡改日志,含上下文与水印标识。
附:审计事件枚举(示例)
- SENSITIVE_VIEW_REQUESTED/APPROVED/DENIED/EXPIRED
- SENSITIVE_VIEWED_ONETIME/REDACTED
- KEY_ENVELOPE/UNWRAP/ROTATE/REVOKE
- DLP_MATCH/BLOCK/REPLACE
- ATTACHMENT_UPLOAD_INIT/PART/COMPLETE/ABORT
- PRIVILEGE_ESCALATION/ROLE_CHANGE
附:安全配置清单(最小集合)
- TLS 1.3 + HSTS;内网 mTLS;CSP+SRI;SameSite=Strict;Referrer-Policy=no-referrer。
- KMS/HSM;Envelope;双人审批;按季度 KEK 轮换;WORM 审计与对象锁。
- Argon2id 密码哈希;Tokenization;客户端附件加密;不可逆索引(HMAC-SHA-256)。
- 默认脱敏展示;一次性查看;MFA;审批与理由强制;水印与时效。
- DLP 入/出站;SIEM 告警;异常检测;留存/删除与跨域合规。