Day20-03|4.5.3 公钥加密分配单钥密码体制的密钥:用混合密码兼顾安全与效率

本文对应《系统架构设计师教程(第2版)》第4章“信息安全技术基础知识”4.5.3“公钥加密分配单钥密码体制的密钥”。这里的“单钥密码体制”即通常所说的对称密钥密码体制。本节重点掌握:如何借助公钥密码安全分配对称密钥,以及如何把身份认证、会话密钥、数据加密、完整性和密钥生命周期组合起来。

一、学习目标

完成本节后,应能够:

  1. 解释公钥密码分配对称密钥的基本流程;
  2. 说明为什么实际系统采用混合加密而不是只使用一种密码体制;
  3. 区分公钥加密、数字签名和密钥协商的作用;
  4. 分析证书验证、中间人、重放、随机数和会话密钥管理风险;
  5. 在案例和论文中设计可扩展、可审计、可轮换的混合加密架构。

二、问题背景:对称密钥如何安全到达接收方

对称加密适合大量数据,因为速度快、资源消耗相对较低。但发送方和接收方必须共享同一把秘密密钥。若通过邮件、普通配置或未加密网络直接传递,攻击者可能在分发阶段获得密钥;若为每两个主体人工配置密钥,参与者数量增加后管理复杂度会快速上升。

公钥密码提供了一个解决思路:接收方公开自己的公钥,发送方使用该公钥加密一个随机生成的对称会话密钥,只有接收方的私钥才能恢复这个会话密钥。随后,双方使用会话密钥加密大量业务数据。

随机生成会话密钥 → 用接收方公钥保护会话密钥 → 用会话密钥保护业务数据

这就是混合加密的基本结构。公钥密码解决密钥分配问题,对称密码解决数据传输和存储的性能问题。

三、混合加密的基本流程

一个简化的单向保密流程如下:

  1. 接收方生成公钥和私钥,并通过证书或可信目录发布公钥;
  2. 发送方验证接收方证书、主体、用途和有效期;
  3. 发送方生成随机会话密钥和必要的nonce;
  4. 发送方使用对称算法和会话密钥加密业务明文;
  5. 发送方使用接收方公钥加密或封装会话密钥;
  6. 发送方把密文、加密后的会话密钥、nonce和认证标签发送给接收方;
  7. 接收方使用自己的私钥恢复会话密钥;
  8. 接收方验证认证标签和消息关联信息;
  9. 验证成功后使用会话密钥解密业务数据;
  10. 会话结束或超时后销毁会话密钥,并记录必要审计信息。
数据部分 保护方式 主要目标
业务明文 对称加密 高效保护大量数据的机密性
会话密钥 接收方公钥加密或密钥协商 安全分配短期秘密
消息完整性 认证标签、MAC或数字签名 发现篡改和伪造
通信主体 证书、双向认证和身份授权 确认公钥及主体归属
会话状态 随机数、序列号、超时 防重放和关联错误

四、为什么不用公钥密码直接加密全部数据

非对称密码的计算成本和数据长度限制通常高于对称密码,直接对大型文件、视频、数据库备份或高并发订单进行公钥加密,会产生明显的CPU、延迟和内存开销。公钥密码更适合处理短数据,例如会话密钥、摘要、随机数和签名。

对称密码在大量数据处理上效率高,可以使用硬件加速、并行处理和流式处理。混合加密把两种密码体制放在各自擅长的位置:非对称机制用于身份、密钥分配和签名,对称机制用于业务数据。

这不是简单把两个算法拼接起来。算法、模式、填充、随机数、证书、密钥标识、失败处理和审计需要按照完整协议设计,并优先使用成熟标准库和经过验证的安全协议。

五、公钥加密分配与密钥协商的区别

公钥加密分配通常是发送方生成会话密钥,再用接收方公钥加密该密钥,接收方使用私钥恢复。密钥协商则是双方通过公开信道交换参数,各自计算得到相同的共享秘密。两者都可以建立对称会话密钥,但安全属性、协议实现和抗攻击能力可能不同。

公钥加密分配的关键是接收方公钥可信以及私钥安全;密钥协商的关键是双方身份认证、随机数和抗中间人保护。未经认证的密钥协商可能让攻击者分别与双方建立会话,造成中间人攻击。因此,实际协议通常把证书、签名、密钥协商和对称加密结合起来。

六、身份认证与证书验证

如果发送方拿到的公钥不属于接收方,公钥加密也无法保证真正的机密性。攻击者可以在通信中替换公钥,解密发送方数据后再用真实接收方公钥重新加密。证书和信任链用于降低这种中间人风险。

发送方应验证证书签发者是否可信、证书主体是否匹配、证书链是否完整、有效期是否正确、密钥用途是否允许加密或密钥协商、吊销状态是否正常、算法和参数是否符合安全策略。不能因为测试方便就信任所有证书或关闭主机名校验。

内部微服务也需要身份认证。服务间位于同一个集群或网络区域,不意味着可以跳过证书、令牌和权限校验。服务证书应与工作负载、组织、环境和用途绑定,短周期证书需要自动续期和失败告警。

七、会话密钥的生成与生命周期

会话密钥通常是随机生成、短期有效、一次会话或一段数据使用的对称密钥。它可以降低长期密钥暴露影响,并减少多个主体之间长期共享秘密的风险。

会话密钥应使用安全随机源生成,不能由用户名、时间或固定字符串推导;应绑定连接、双方身份、协议版本和用途;应设置超时、数据量或事件触发的轮换条件;结束、失败或异常时及时销毁;不应写入普通日志或持久化明文存储。

长连接、批量文件和异步任务要明确会话密钥生命周期。连接重连后不能无条件复用过期密钥,任务重试不能造成nonce和密钥重复,服务迁移时要安全传递或重新建立会话。密钥标识可以写入消息头,但不能把密钥内容暴露出来。

八、消息完整性与防重放

混合加密只解决机密性还不够。攻击者可能修改密文、替换接收方、重复提交旧请求或调整消息顺序。系统要使用认证加密、MAC、数字签名、序列号、时间戳、随机数和上下文绑定保护完整性与新鲜性。

认证标签应覆盖密文以及必要的业务上下文,例如协议版本、发送方、接收方、会话编号、消息类型和序列号。验证标签失败必须拒绝处理,不能尝试使用解密结果。防重放机制要保存已处理的序列号或短期窗口,重复请求应幂等或拒绝。

对重要业务,如支付、合同、配置发布和审批,除了会话认证,还可能需要签名,以便在第三方审计或争议处理时证明来源。会话密钥和数字签名解决的问题不同,不能相互替代。

九、前向保密与密钥泄露影响

前向保密关注长期私钥未来泄露时,攻击者是否能够解密过去保存的会话流量。采用临时密钥交换并在会话结束后销毁临时秘密,可以降低历史通信被追溯解密的风险。架构师在分析高敏感长期通信时,应关注是否具备这一能力。

长期服务器私钥泄露可能影响证书身份、当前会话和历史数据。使用短期会话密钥、密钥轮换、证书吊销和安全擦除可以降低影响,但不能完全消除已泄露数据的风险。发生泄露后,要评估攻击者可获得的密文、会话、证书和日志范围,并制定轮换、通知和恢复计划。

十、混合加密在不同场景中的应用

1. Web安全通信

客户端通过证书验证服务端,协商会话密钥,后续HTTP数据使用对称加密和认证保护。双向认证场景还要验证客户端证书。证书续期、会话恢复、协议降级和密码套件策略都需要管理。

2. 文件共享

文件使用随机数据密钥加密,数据密钥分别用一个或多个接收方公钥封装。新增接收方只需增加一份密钥封装信息,不必重新加密整份文件;撤销接收方时需要轮换数据密钥或重新生成受控副本。

3. 多方消息

群组消息可以使用群组会话密钥加密,再通过各成员公钥安全分发;成员加入和退出时要更新群组密钥,防止新成员读取历史消息或退出成员继续读取新消息。密钥更新和成员状态同步是难点。

4. 云存储和多租户

对象数据使用数据密钥加密,数据密钥由租户或平台密钥加密密钥保护;应用通过身份和租户授权调用密钥服务。租户退出、权限变化和灾难恢复时,需要处理密钥冻结、移交、轮换和销毁。

十一、工程实现与错误处理

安全协议应明确握手失败、证书无效、密钥服务不可用、认证标签失败、版本不兼容、超时、重试和回滚。错误提示不能泄露私钥、明文、内部拓扑或过多验证细节,但日志要保留足够的事件编号和审计信息。

重试需要结合幂等和随机数管理。一个支付请求因网络超时重试时,不能生成新的业务结果或重复扣款;一个加密任务重试时,不能在同一密钥下复用不允许重复的nonce;一个证书续期任务失败时,应告警并保持旧证书在安全过渡期内可用。

密码库、证书和密钥服务是关键依赖,要设置高可用、限流、缓存和安全降级。不能为了绕开密钥服务故障,把主密钥复制到每个应用节点;也不能因为证书服务暂时不可用就信任所有未知证书。

十二、案例分析:跨机构电子病历交换

医院A需要把患者检查结果安全发送给医院B。双方通过互联网连接,数据量较大,且需要确认发送主体、接收主体和文件完整性。

设计方案:双方通过可信证书确认机构和服务身份,建立受保护通信;发送方为每个文件生成随机数据密钥,使用带认证的对称算法加密文件和必要元数据;使用医院B的公钥封装数据密钥;对文件摘要和业务上下文进行签名,便于医院B验证来源、完整性和不可否认性;消息包含文件编号、发送方、接收方、版本、时间戳和序列号,防止错投和重放;医院B先验证证书链、签名、标签和业务关联,再解密数据;数据密钥按文件或批次隔离,设置有效期和访问权限;医院A和B的私钥由硬件安全模块或专用密钥服务保护;传输、读取、解密、验签、失败和导出均写入审计;发生证书或私钥泄露时能够吊销、轮换和通知;双方设置对账和重传机制,防止网络重试造成重复接收。

十三、综合知识练习

选择题1

混合加密中,使用接收方公钥主要保护的是( )。

A. 大量业务明文 B. 对称会话密钥 C. 数据库索引 D. 页面样式

答案:B。解析:公钥密码主要用于安全分配或封装对称会话密钥。

选择题2

下列最能防止中间人替换公钥的是( )。

A. 只查看公钥字符串长度 B. 验证证书主体、信任链、有效期和用途 C. 关闭证书校验 D. 信任所有证书

答案:B。解析:证书验证用于确认公钥与合法主体的绑定关系。

选择题3

混合加密中同时使用认证标签或MAC,主要是为了( )。

A. 提高文件大小 B. 保护消息完整性并发现篡改 C. 替代备份 D. 取消身份认证

答案:B。解析:加密保护机密性,认证标签或MAC主要验证完整性和来源关联。

简答题

请描述公钥加密分配对称会话密钥的主要步骤。

参考答案:接收方发布经过验证的公钥;发送方验证证书和主体;发送方生成随机对称会话密钥;使用对称算法加密业务数据;使用接收方公钥加密或封装会话密钥;发送密文、封装密钥、随机参数和认证信息;接收方使用私钥恢复会话密钥,先验证完整性和防重放信息,再解密业务数据;会话结束后使会话密钥失效并记录审计。

十四、论文素材与今日复盘

论文可写:“针对跨机构大数据量安全交换问题,我采用混合加密架构:通过证书验证通信主体和公钥归属,使用非对称机制封装随机生成的短期会话密钥,使用带认证的对称算法保护业务数据,并通过签名、时间戳、序列号和业务上下文绑定保证来源、完整性和防重放。会话密钥按连接、文件和租户隔离,设置超时、轮换和销毁策略;私钥由密钥服务或硬件设备保护,证书和密钥生命周期可自动化管理,异常、验签失败、密钥调用和敏感解密操作全程审计。”

今日复盘:混合加密用公钥解决密钥分配,用对称密码保护大量数据;证书验证解决公钥归属,签名解决来源和完整性,认证标签解决消息篡改检测;会话密钥、证书和私钥都要有生命周期、轮换、吊销和审计。第4.5节完成,下一篇进入 4.6 访问控制技术。