Day37-18|18.5.4 机密性框架:让敏感信息只被正确的主体看到

对应教材目录:第 18 章 安全架构设计理论与实践 → 18.5 网络安全体系架构设计 → 18.5.4 机密性框架

学习目标:理解机密性保护的对象、威胁和密码学边界;掌握传输、存储、使用和备份阶段的保护方法;能够在案例分析与论文中写出密钥生命周期、访问控制、脱敏、审计和业务可用性之间的协同设计。

一、机密性到底要保护什么

机密性是指信息只能被获得授权的主体访问、理解或使用,未经授权的主体即使截获、复制或观察了数据,也不能得到有效内容。它保护的不只是数据库中的一列字段,还包括网络报文、日志、备份、缓存、消息、临时文件、配置文件、终端屏幕和运维人员能够看到的内容。

机密性通常面对四类风险:传输窃听、存储泄露、内部越权和侧信道观察。传输窃听发生在客户端到网关、服务到服务、服务到数据库和消息队列链路上;存储泄露发生在数据库、对象存储、磁盘、备份和快照中;内部越权包括管理员直接查询敏感表、开发人员读取生产数据和服务账号权限过大;侧信道则可能通过日志、错误信息、响应时间和缓存行为推断敏感内容。

可以把机密性目标写成一个生命周期模型:

产生 -> 传输 -> 处理 -> 存储 -> 共享 -> 备份 -> 归档/销毁
   |       |       |       |       |       |          |
分级    加密    最小暴露  密文/脱敏  授权   密钥保护   到期销毁

高级架构设计不能只写“使用 AES 加密”。算法只是实现手段,真正的架构答案还要说明加密边界、密钥由谁管理、密钥如何轮换、故障如何恢复、应用如何解密以及谁可以审计解密行为。

二、机密性框架的基本关系

机密性保护通常由四个层次共同组成:

  1. 身份与访问控制:先确认主体身份,再决定其是否有权看到数据。
  2. 密码学保护:在数据离开可信边界后,使未授权主体无法直接理解内容。
  3. 数据最小化与脱敏:即使主体有权访问,也只提供完成任务所需的信息。
  4. 审计与运营:记录谁在何时以何种原因查看、解密、导出或共享数据。
数据分类分级
      |
      +--> 访问策略 ----> 是否允许访问
      |
      +--> 加密策略 ----> 传输加密 / 存储加密 / 字段加密
      |
      +--> 脱敏策略 ----> 展示脱敏 / 测试脱敏 / 导出脱敏
      |
      +--> 审计策略 ----> 查看、解密、导出、授权留痕

如果只有加密没有访问控制,应用自身仍可能把明文返回给错误用户;如果只有访问控制没有加密,数据库管理员、备份文件窃取者和链路监听者仍可能直接获得明文;如果只有加密没有密钥治理,密钥泄露后所有密文都可能失去保护。因此机密性是组合能力。

三、密码学基础与架构选型

1. 对称加密

对称加密使用同一把密钥进行加密和解密,速度快,适合大数据量和高吞吐场景。常见用途包括数据库字段、对象文件、备份、消息正文和本地配置。架构上不应把固定密钥直接写入代码或镜像,而应由密钥管理系统提供,并通过短期凭据和访问策略控制使用。

2. 非对称加密

非对称加密使用公钥和私钥,适合身份确认、密钥交换和小数据量保护。私钥需要严格保管,公钥可以分发但必须验证来源。HTTPS/TLS 中通常使用非对称机制协商会话密钥,再使用对称算法传输业务数据,这是安全性和性能之间的折中。

3. 哈希与密码存储

哈希函数通常用于完整性校验、摘要和口令存储辅助,不应把普通哈希误当作加密。用户口令应使用专门的密码哈希算法、独立盐值和适当工作因子。密码验证服务应限制尝试次数,并配合多因素认证和风险识别。

4. 认证加密与完整性

只加密不校验完整性可能遭受篡改。现代应用通常采用带认证的加密模式,或者将加密与消息认证码组合,使接收方能够判断密文是否被修改。考试作答时应把“保密”和“防篡改”区分开:机密性回答谁能看到,完整性回答内容是否被改过,二者可以采用组合密码机制但目标不同。

四、传输机密性设计

1. 客户端到服务端

公网访问通常使用 TLS 保护,重点包括证书合法性、协议版本、密码套件、证书轮换、私钥保存和失效处理。对于移动端和专用客户端,还可以进行证书固定,但要考虑证书轮换失败导致大面积不可用的问题。

2. 服务到服务

微服务系统中不能因为“在内网”就认为通信可信。服务间应根据风险采用 TLS 或双向 TLS,服务身份由证书、工作负载身份或服务网格统一管理。高敏感接口还要叠加授权、请求签名、重放防护和最小网络权限。

3. 消息和异步链路

消息队列中的主题、分区、消费组和死信队列都可能保存敏感内容。设计时应同时考虑传输加密、消息正文加密、消费者授权、消息保留期和备份保护。若消息需要被多个服务消费,可以使用信封加密,让每个授权消费者获得对应的数据密钥,而不是共享一个全局密钥。

4. 防止日志和错误信息泄露

应用不应把口令、完整令牌、身份证号、银行卡号、私钥和明文密钥写入日志。异常响应应避免暴露 SQL、内部路径、堆栈和详细授权原因。日志平台本身也要加密,并对检索和导出权限进行控制。

五、存储机密性设计

1. 全盘加密与存储介质保护

全盘或卷级加密适合防止磁盘丢失、服务器下线和快照被直接读取,实施成本相对较低。但应用和数据库正常运行时通常仍会读到明文,因此它不能代替字段级控制。

2. 数据库透明加密

透明数据加密由数据库或存储层对表空间、数据文件和日志进行加密,对业务改造较少,适合大范围保护静态数据。其局限是数据库进程和有权限的管理员可能仍然能够看到明文,查询结果也可能被导出。因此对于特别敏感字段,还需要字段级加密、脱敏和数据库审计。

3. 字段级加密与令牌化

字段级加密适合身份证号、银行卡号、医疗信息等少量高敏感字段。应用在写入时加密,授权服务在满足条件时解密。加密字段会影响排序、模糊查询和索引,需要通过哈希索引、令牌化、分离检索字段或专用查询服务解决。

令牌化使用不含业务含义的令牌替换原始值,把真实数据放在受控保管库中。业务系统即使泄露令牌,也不能直接恢复原始数据。令牌化适合支付卡号、证件号和外部共享场景,但必须管理令牌映射、重复性要求、故障恢复和跨系统一致性。

4. 缓存、搜索和对象存储

缓存可能保存登录态、用户资料和查询结果,应配置访问认证、网络隔离、过期时间和必要的加密。搜索引擎中的倒排索引可能复制原始字段,不能只加密主库而忽略搜索副本。对象存储要控制桶策略、临时链接有效期、下载审计、版本保留和跨地域复制。

六、密钥管理是机密性架构的核心

1. 密钥生命周期

完整的密钥生命周期包括生成、分发、启用、使用、轮换、吊销、备份、恢复和销毁。密钥的安全性通常不只取决于算法,而取决于密钥是否被复制到日志、环境变量、代码仓库、镜像、个人电脑和备份中。

生成 -> 注册 -> 授权使用 -> 轮换 -> 旧密钥只解密
  |                              |
硬件/密钥服务                  到期封存
                                 |
                            备份恢复/最终销毁

2. 信封加密

信封加密用数据密钥加密业务数据,再用密钥加密密钥加密数据密钥。数据密钥可以按对象、租户或批次生成,主密钥只用于保护数据密钥。这样既减少主密钥使用频率,又便于轮换和分层授权。

明文 --数据密钥 DEK--> 密文数据
DEK  --主密钥 KEK----> 加密后的 DEK
密文数据 + 加密后的 DEK + keyId = 加密对象

轮换主密钥时通常无需重新加密全部业务数据,只需重新包装数据密钥;但若算法、数据密钥或合规要求发生变化,仍可能需要批量重加密。

3. 密钥服务高可用

密钥管理系统故障会影响登录、查询和写入,因此必须设计高可用和降级边界。应用可以缓存有限的公钥或短期密钥材料,但不应长期缓存高权限主密钥。对于已加密数据,可以区分“继续读旧数据”“禁止新增写入”“完全阻断高敏感操作”等故障策略,并明确风险和恢复流程。

七、数据最小化、脱敏和隐私保护

机密性不等于所有数据都必须加密到用户无法使用。更好的方案是让业务只处理必要的数据,并在不同场景输出不同视图。

场景 典型保护方式
客服查看客户资料 姓名部分显示、证件号掩码、访问原因必填
测试环境 生产数据脱敏、随机化、不可逆替换
对外导出 最小字段、分级审批、水印、有效期下载链接
运维排障 临时授权、只读、命令审计、自动回收
统计分析 聚合、匿名化、差分处理或令牌化

脱敏要注意可逆性和组合泄露。只遮住身份证号中间几位,不代表与姓名、电话、地址组合后仍然安全。高风险场景要做重新识别评估,不能把“加星号”当作完整隐私保护。

八、案例分析:医疗平台的机密性架构

某医疗平台包含患者基本信息、诊断记录、影像资料和费用数据,服务医院、医生、患者和保险机构。要求:医生只能查看诊疗关系内的患者信息;患者可以查看自己的报告;保险机构只能获取理赔所需字段;影像文件需要长期保存;运维人员不能直接查看明文病历。

可采用以下方案:

  1. 按数据敏感等级分类,病历和影像列为高敏感,普通统计数据列为中低敏感。
  2. 外部访问全链路 TLS,内部高敏感服务采用双向 TLS 或工作负载身份。
  3. 数据库启用透明加密,身份证号、联系方式和病历摘要采用字段级加密或令牌化。
  4. 影像对象采用信封加密,按医院或患者域隔离数据密钥,密钥由集中式密钥服务管理。
  5. 医生授权同时校验用户身份、医院、科室、诊疗关系、患者授权和当前风险。
  6. 保险接口使用专用数据视图,只返回理赔必要字段,禁止直接访问核心病历表。
  7. 运维采用临时授权和双人审批,解密行为必须记录原因、工单和操作结果。
  8. 备份、快照、搜索索引和灾备副本使用同等级加密和访问控制。
  9. 对导出文件增加水印、有效期和下载审计,异常批量下载触发告警。

九、常见错误与答题提醒

第一,只写“采用 AES 加密”,没有写密钥存放、轮换和权限边界。第二,只保护数据库,没有保护备份、日志、缓存、搜索和消息副本。第三,把 TLS 等同于全链路安全,忽略服务到服务、消息和对象存储。第四,把脱敏当作万能方案,没有说明谁能恢复以及可逆性。第五,只考虑安全不考虑可用性,导致密钥服务短暂故障就让所有业务不可用。

论文中可以使用这样的表述:系统按照数据分类分级建立机密性保护策略,对传输、存储、使用、共享和备份环节分别设置控制;采用 TLS 保护通信,采用透明加密和字段级加密保护静态数据,使用信封加密降低密钥轮换成本;通过统一密钥管理、最小权限、临时授权、脱敏和审计,保证敏感数据在可用的前提下仅向授权主体暴露。

十、课后练习

练习 1

为什么全盘加密不能替代字段级加密?

参考答案:全盘加密主要防止磁盘或快照被离线读取,系统正常运行时数据库进程、拥有查询权限的管理员和应用仍可能看到明文;字段级加密可以缩小敏感字段暴露范围,但要额外解决查询、索引和密钥管理问题。

练习 2

某系统把主密钥直接配置在应用镜像的环境变量中,有哪些风险?如何改进?

参考答案:镜像、日志、部署清单、进程信息和备份都可能泄露主密钥,且轮换困难。应使用集中式密钥管理系统或硬件安全模块,应用通过短期身份获取使用权限,并采用信封加密、密钥版本和审计机制。

练习 3

请设计一个“数据导出”机密性控制方案。

参考答案要点:单独的导出权限;按字段和数据范围过滤;敏感字段脱敏;大批量导出审批;公网禁止或增强认证;文件加密、有效期、下载次数和水印;记录发起人、原因、范围、审批人、下载者和结果;异常行为告警。

练习 4

论文题:论“某政务数据共享平台的机密性设计”。请列出正文至少六个技术措施。

参考答案要点:数据分类分级、统一身份认证、访问控制、传输加密、数据库透明加密、字段级加密或令牌化、信封加密、密钥生命周期、脱敏视图、接口最小化、共享审批、日志审计、备份保护和灾难恢复。

十一、今日复盘

  • 我能否区分机密性、完整性和抗抵赖?
  • 我是否能从数据全生命周期寻找泄露点?
  • 我能否解释传输加密、存储加密、字段加密和脱敏的边界?
  • 我能否画出信封加密和密钥轮换流程?
  • 我是否考虑了日志、缓存、搜索、备份和灾备副本?
  • 我能否在答案中同时写出安全性、性能、可用性和运维成本的权衡?

最终要记住:机密性框架的核心不是某个密码算法,而是“谁在什么条件下、通过什么路径、看到哪些数据,以及密钥和授权如何受到持续控制”。这条主线能够把抽象理论落到系统架构设计和考试案例答题中。