kerberos认证全程

来源:互联网 发布:zip解压软件for mac 编辑:程序博客网 时间:2024/05/17 08:53

Kerberos认证是一种基于KDC( Key Distribute Center )的身份认证协议的一种认证方式,Kerberos认证系统中有3个角色:KDC、用户和服务器。而KDC有两个部件:一个Kerberos 认证服务器AS(Authentication Server)和一个票据授权服务器TGS(Ticket Granting Server)。密钥分发中心(KDC)作为第三方服务来验证用户机和服务器的相互身份,并建立密钥以保证计算机间安全连接。

Kerberos实际上是一种基于票据(Ticket)的认证方式。客户端要访问服务器的资源,需要首先购买服务端认可的票据。也就是说,客户端在访问服务器之前需要预先买好票,等待服务验票之后才能入场。在这之前,客户端需要先买票,但是这张票不能直接购买,需要一张认购权证。客户端在买票之前需要预先获得一张认购权证。这张认购权证和进入服务器的入场券均有KDC发售。右图基本揭示了Kerberos整个认证的过程。这里写图片描述

kerberos认证过程

1、User Client-based Logon

这个阶段发生在用域账户登陆的时候,在登陆成功以后会自动将自身的明文用户名发送给AS,请求TGT。用户在logon的时候会输入用户名与密码,密码将以hash的形式保存在本地缓存中,并以此作为Client端的user key。

2、Client Authentication

AS在收到Client发送过来的用户名以后,会用这个用户名去自身的account database中查找是否存在这个域账户,如果域账户存在,找出这个账户所对应的密码,并返回两个信息给Client(并分别用用户的密钥和KDC自己的密钥加密)。
这里写图片描述
clinet用登录时的password对Message A解密,如果password与AS database里面的password一致,则登录成功,获得client/TGS session key。

3、Client Service Autherization

当需要服务时,client将再发送两个信息给TGS,如下图这里写图片描述
TGS从C中重新得到Message B(TGT),然后用TGS secret key解密TGT(ticket granting ticket),得到client/TGS session key,然后用这个密钥对Message D解密,验证对方的真实身份,然后返回两条信息给client。
这里写图片描述

4、Client Service Request

clinet从TGS得到E,F后,通过缓存的client/TGS session key对message F解密获得client/server session key。然后client向服务器端发送两条消息。
这里写图片描述
server对Message E解密(只有用自己的secret key才能打开),保证了client-to-service ticket不是伪造的。得到client/server session key,用它对Message G解密,以验证client的身份。
实际上,到目前为止,服务端已经完成了对客户端的验证,但是,整个认证过程还没有结束。谈到认证,很多人都认为只是服务器对客户端的认证,实际上在大部分场合,我们需要的是双向验证(Mutual Authentication)——访问者和被访问者互相验证对方的身份。现在服务器已经可以确保客户端是它所声称的那么用户,客户端还没有确认它所访问的不是一个钓鱼服务呢。为了解决客户端对服务器的验证,服务要需要将解密后的Authenticator再次用Service Session Key进行加密,并发送给客户端。
这里写图片描述
客户端再用缓存的Service Session Key进行解密,如果和之前的内容完全一样,则可以证明自己正在访问的服务器和自己拥有相同的Service Session Key。

0 0
原创粉丝点击