kerberos认证过程

简单介绍

kerberos一词原意为希腊神话中守护地狱之门的一条三头神犬。麻省理工学院在雅典娜计划中以此为名,提出了并实现了用于计算机网络的身份认证协议。以kerberos为名,显示了该协议具有相当的安全性。

功能

  • 一个安全认证协议
  • 用tickets验证
  • 避免本地保存密码和在互联网上传输密码
  • 包含一个可信任的第三方
  • 使用对称加密
  • 客户端与服务器之间能够相互验证

以上的特点表明,Kerberos只提供一种功能——在网络上安全的完成用户的身份验证

认证过程

kerberos协议的认证过程可以两个部分:

  • 证明自己
  • 请求他人

在说明kerberos的认证过程之前,先简单介绍几个基本的名词。

  • KDC (key distribution center) key分配中心,受信任的第三方
    • AS (the Authentication Server) 认证服务
    • TGS (Ticket Granting Service) 票据授予服务
      • TGT (ticket-granting ticket) 票据

那么从上面的层次可以大概了解到,KDC作为kerberos协议信任的第三方,包括AS和TGS,而TGT票据是由TGS授予的。

证明自己的过程

Client向KDC发送自己的身份信息,KDC从Ticket Granting Service得到TGT(ticket-granting ticket), 并用协议开始前Client与KDC之间的密钥将TGT加密回复给Client。
此时只有真正的Client才能利用它与KDC之间的密钥将加密后的TGT解密,从而获得TGT。(此过程避免了Client直接向KDC发送密码,以求通过验证的不安全方式)

请求他人的过程

Client利用之前获得的TGT向KDC请求其他Service的Ticket,从而通过其他Service的身份鉴别。

1. Client将之前获得TGT和要请求的服务信息(服务名等)发送给KDC,KDC中的Ticket Granting Service将为Client和Service之间生成一个Session Key用于Service对Client的身份鉴别。然后KDC将这个Session Key和用户名,用户地址(IP),服务名,有效期, 时间戳一起包装成一个Ticket(这些信息最终用于Service对Client的身份鉴别)发送给Service, 不过Kerberos协议并没有直接将Ticket发送给Service,而是通过Client转发给Service.所以有了第二步。
2. 此时KDC将刚才的Ticket转发给Client。由于这个Ticket是要给Service的,不能让Client看到,所以KDC用协议开始前KDC与Service之间的密钥将Ticket加密后再发送给Client。同时为了让Client和Service之间共享那个秘密(KDC在第一步为它们创建的Session Key), KDC用Client与它之间的密钥将Session Key加密随加密的Ticket一起返回给Client。
3. 为了完成Ticket的传递,Client将刚才收到的Ticket转发到Service. 由于Client不知道KDC与Service之间的密钥,所以它无法算改Ticket中的信息。同时Client将收到的Session Key解密出来,然后将自己的用户名,用户地址(IP)打包成Authenticator用Session Key加密也发送给Service。
4. Service 收到Ticket后利用它与KDC之间的密钥将Ticket中的信息解密出来,从而获得Session Key和用户名,用户地址(IP),服务名,有效期。然后再用Session Key将Authenticator解密从而获得用户名,用户地址(IP)将其与之前Ticket中解密出来的用户名,用户地址(IP)做比较从而验证Client的身份。
5. 如果Service有返回结果,将其返回给Client。

PjvNKH.md.png

本文标题:kerberos认证过程

文章作者:boogle

发布时间:2018年08月27日 - 15:27

最后更新:2019年03月07日 - 11:36

原始链接:https://zhengbao.wang/kerberos认证过程/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

感觉写的不错,给买个棒棒糖呗