Kerberos 是非常出名的密钥分配协议,同时也兼具了鉴别协议的功能,也是一个 KDC(Key Distribution Center,密钥分配中心)。Kerberos 采用 AES 进行加密,所以安全性更高。
Kerberos 的工作原理
其核心思想是这样的:和我们平时生活一样,当我需要到社区中心盖一些章的时候,社区中心往往需要你提供一个证明,证明你是你,这样的证明通常你需要找派出所去开具。所以这个 AS 就像是派出所,而 TGS 就像是社区中心。
关键术语介绍
AS(Authentication Server):鉴别服务器,用于验证用户身份
TGS(Ticket-Granting Server):票据授予服务器,用于提供两个用户之间身份的凭证
KA:这是A自己的密钥K_A:这是 A 自己的密钥KA?:这是A自己的密钥
KS:这是A与TGS通信用的会话密钥K_S:这是 A 与 TGS 通信用的会话密钥KS?:这是A与TGS通信用的会话密钥
KTG:这是TGS自己的密钥K_{TG}:这是 TGS 自己的密钥KTG?:这是TGS自己的密钥
T:时间戳T:时间戳T:时间戳
KB:这是B自己的密钥K_B:这是 B 自己的密钥KB?:这是B自己的密钥
KAB:这是A与B通信用的会话密钥K_{AB}:这是 A 与 B 通信用的会话密钥KAB?:这是A与B通信用的会话密钥
具体流程
- 首先,A 向 AS 发送明文,这段明文证明 A 是 A,因为 AS 提前对 A 的信息进行了备案的,所以 AS 能够验证 A 的信息。
- AS 验证了 A 是 A ,然后用 A 的密钥加密,给 A 发送了 A 与 TGS 的会话密钥 K_AS 和 用于给 TGS 验证 A 身份的 A,K_S,并且对叫 A 提供给 TGS 的验证信息进行了 K_TG 的加密,这样 A 是无法解密的,只能当 A 传递给 TGS 的时候,TGS 进行解密验证
- 接下来 A 向 TGS 发出了两段信息,一个是用他们的会话密钥加密的时间戳,时间戳用于防止重放攻击,另一个是刚才的票据
- 当 TGS 验证了票据后,TGS 给 A 发送了用于 B 验证 A 的票据,以及 B 的信息和 A,B 之间的加密密钥
- 接下来 A 给 B 传递了一个时间戳,和一个给 B 的票据
- B 验证之后,返回一个时间戳+1
经过上面的步骤,可以看出 A , B 之间已经获得了双方通信的密钥了