由于密码算法是公开的,网络的安全性就完全基于密钥的安全保护上。
密钥管理包括:密钥的产生、分配、注入、验证和使用。
1 对称密钥的分配
1.1 密钥分配中心 KDC
密钥分配中心 KDC (Key Distribution Center)的任务就是给需要进行秘密通信的用户临时分配一个会话密钥(仅使用一次)。
假定用户 A 和 B 都是 KDC 的登记用户。A 和 B 在 KDC 登记时就己经在 KDC 的服务器上安装了各自和 KDC 进行通信的主密钥(master key) KA和KB。
- 1)用户 A 向 KDC 发送时用明文,说明想和用户 B 通信。在明文中给出 A 和 B 在 KDC 登记的身份。
- 2)KDC 用随机数产生“一次一密"的会话密钥 K 供 A 和 B 的这次会话使用,然后向 A 发送回答报文。这个回答报文用 A 的密钥 KA 加密。这个报文中包含这次会话使用的密钥 KAB 和请 A 转给 B 的一个票据(ticket),该票据包括 A 和 B 在 KDC 登记的身份,以及这次会话将要使用的密钥 KAB。票据用 B 的密钥 KB 加密。
- 3)当 B 收到 A 转来的票据并使用自己的密钥 KB 解密后,就知道 A 要和他通信,同时也知道 KDC 为这次和 A 通信所分配的会话密钥 KAB。
此后,A 和 B 就可使用会话密钥 KAB 进行这次通信了。
KDC 还可在报文中加入时间戳,以防止报文的截取者利用以前己记录下的报文进行重放攻击。会话密钥 KAB 是一次性的,因此保密性较高。而 KDC 分配给用户的密钥 KB 和 KB,都应定期更换,以减少攻击者破译密钥的机会。
1.2 密钥分配协议 Kerberos
目前最出名的密钥分配协议是 Kerberos V5。Kerberos 既是鉴别协议,同时也是 KDC。使用 AES 进行加密。
Kerberos 使用两个服务器:鉴别服务器 AS (Authentication server)、票据授予服务器 TGS (Ticket-Granting server)。Kerberos 只用于客户与服务器之间的鉴别,而不用于人对人的鉴别。
- 1)A 用明文向鉴别服务器 AS 表明自己的身份。AS 就是 KDC,AS 对 A 的身份进行验证。只有验证结果正确,才允许 A 和票据授予服务器 TGS 进行联系。
- 2)鉴别服务器 AS 向 A 发送用 A 的对称密钥 KA 加密的报文,这个报文包含 A 和 TGS 通信的会话密钥 KS 以及 AS 要发送给 TGS 的票据(这个票据是用 TGS 的对称密钥 KTG 加密的)。
- 3)A 向 TGS 发送三项内容:
- 转发鉴别服务器 AS 发来的票据
- 服务器 B 的名字
- 用 KS 加密的时间戳 T
- 4)TGS 发送两个票据,每一个都包含 A 和 B 通信的会话密钥 KAB。给 A 的票据用 KS 加密;给 B 的票据用 B 的密钥 KB 加密。
- 5)A 向 B 转发 TGS 发来的票据,同时发送用 K 加密的时间戳 T。
- 6)B 把时间戳 T 加 1 来证实收到了票据。B 向 A 发送的报文用密钥 KAB 加密。
以后,A 和 B 就使用 TGS 给出的会话密钥 KAB 进行通信。
2 公钥的分配
认证中心 CA (Certification Authority)将公钥与其对应的实体(人或机器)进行绑定(binding)。
每个实体都有 CA 发来的证书(certificate),里面有公钥及其拥有者的标识信息(人名或IP地址)。此证书被 CA 进行了数字签名。
任何用户都可从可信的地方(如代表政府的报纸)获得认证中心 CA 的公钥,此公钥用来验证某个公钥是否为某个实体所拥有(通过向 CA 查询)。