密钥管理是密码系统不可缺少的组成部分,也是密码系统中最重要、最困难的部分。出发点是在一种安全策略指导下的密钥产生、存储、分配、删除、归档和应用方案。

目的:维持系统各实体之间的密钥关系,抗击各种威胁:

  1. 密钥泄露
  2. 密钥和公钥身份真实性丧失
  3. 未授权使用

内容:产生、登记、装入、存储和保护、分配和密钥协定、使用控制、备份恢复、更新、撤销和销毁。

密钥类型

  • 会话密钥:两个终端在一次通信中使用的密钥。用于加密文件时叫文件密钥,加密数据时叫数据加密密钥。
  • 密钥加密密钥:用于对会话密钥或文件密钥进行加密时采用的密钥。又称辅助(二级)密钥或密钥传送密钥。
  • 主机主密钥:对密钥加密密钥加密的密钥,存于主机处理器。
  • 基本密钥:也叫初始密钥、用户密钥。由用户指定或系统分配给用户的,可以在较长时间内由一对用户专用的密钥。
  • 公钥体制下还有公开密钥、秘密密钥、签名密钥。

密钥的层次关系可以用下面的公式表示:

EKm(Ke)其中 Km 为密钥加密密钥,Ke 为会话密钥E_{K_m}(K_e) \quad \text{其中 } K_m \text{ 为密钥加密密钥,} K_e \text{ 为会话密钥}

密钥产生

密钥产生不当会导致密钥空间的减小和字典式攻击。要尽可能随机等概率产生密钥。不同等级的密钥产生方式不同:

  • 主机主密钥最重要,要保证完全随机
  • 密钥加密密钥可以伪随机或者安全算法产生
  • 会话密钥可以通过密钥加密密钥和某些算法产生
  • 初始密钥可以用类似主机主密钥的方式

密钥登记与装入

密钥登记:将密钥和特定使用者绑定。

密钥装入:主机主密钥和终端主密钥装入时要有电磁屏蔽,装入后不可再读出,可间接验证。会话密钥不存在装入问题。

密钥保护

最好放在物理安全的地方。否则要使用机密性和完整性服务来保护。公钥的存储方式有:一次性发放给用户;用户存放在公共媒体上;利用公钥建立密钥环分散保存。

密钥分配和密钥协定

  • 密钥分配协议:系统内一个成员选择密钥,并安全传送给别的成员的协议。
  • 密钥协定协议:系统内两个或多个成员在公开信道上联合建立秘密密钥。两个成员的密钥协定也称为密钥交换,如著名的 Diffie-Hellman 密钥交换。

一个是单成员确定,一个是协商确定。

主密钥的分配:将密钥切分成多部分,通过多种方式传输。

密钥分配体制

  1. 集中式:中心服务器负责密钥的分发,密钥的存储量和用户量差不多。代表:Kerberos 协议。
  2. 分布式:用户协商密钥交换。例如 Diffie-Hellman 密钥交换。但没有鉴别能力,不能抵抗中间人攻击。

密钥的分配技术

  1. 静态分配:中心以脱线方式预分配
  2. 动态分配:请求-分发的在线分发技术

密钥的静态配置管理体制

  1. 点对点配置:单个体需要存储 n1n-1 个密钥,整体密钥量为 n2n^2
  2. 网状配置:用户统一和一个 KMC 交互,总密钥量为 nn。KMC 容易成为性能瓶颈。
  3. 星状配置:局部的网状配置再进一步集中到一个 KMC,配置局部 KMC,是密钥的层次管理方案。

公钥分配方案

首先是著名的 Diffie-Hellman 密钥交换,可被中间人攻击。利用离散对数的复杂度保证密钥不被获取,通过原根和选定随机数进行密钥协定,但中间人可以截获并伪造双方密钥进行攻击。

K=gxuxvmodpK = g^{x_u \cdot x_v} \mod p

STS 协议

假设用户有签名/验证算法 sig/ver,可信中心的签名/验证为 sig_TA/ver_TA,用户有证书 (ID(u), ver_u, sig_TA(ID(u), ver_u))

  1. 用户 U 随机选 xuZpx_u \in \mathbb{Z}_p,计算 gxumodpg^{x_u} \mod p 发给 V
  2. 用户 V 随机选 xvZpx_v \in \mathbb{Z}_p,计算 gxvmodpg^{x_v} \mod pSv=sigv(gxugxv)S_v = \text{sig}_v(g^{x_u} \| g^{x_v}),发送 (C(V),gxv,Sv)(C(V), g^{x_v}, S_v) 给 U;同时计算 K=gxuxvK = g^{x_u \cdot x_v}
  3. 用户 U 计算 K=gxuxvmodpK = g^{x_u \cdot x_v} \mod p,用 ver_v 验证 SvS_v,用 ver_TA 验证 C(V)C(V),计算 Su=sigu(gxugxv)S_u = \text{sig}_u(g^{x_u} \| g^{x_v}),把 (C(U),Su)(C(U), S_u) 发给 V
  4. V 验证 ver_u(S_u)ver_TA(C(U))

STS 协议在 Diffie-Hellman 基础上引入 TA 的证书校验机构,在交换密钥的同时补充身份认证,解决了中间人攻击。

MIT 协议

引入了证书,但双方不进行签名。MIT 协议在用户丢失证书时可以进行中间人攻击。

密钥使用控制

目标:标识密钥的种类,使得密钥值和合法使用范围绑定。通常标识有:密钥拥有者、密钥标识符、有效时间、特定算法、特定使用环境和用户、密钥产生注册认证的实体、完整性检查。

密钥长度

目标:保证系统安全但不能开销太大。确定长度需要考虑:保存信息的价值、信息的保密时间、攻击者的资源情况。


本文从 CSDN 迁移并重写,原文链接