Kerberos协议分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Kerberos协议分析

1.1Kerberos协议概述

Kerberos协议是20世纪80年代由MIT开发的一种协议。Kerberos协议主要是为TCP/IP网络设计的可信第三方鉴别协议,允许客户以一种安全的方式来访问网络资源。网络上的Kerberos服务器起着可信仲裁者的作用。Kerberos的基础是NS协议。它与NS协议不同之处在于:Kerberos认为所有的时钟已经同步好了。

Kerberos协议有4个参与者,通信主体客户A,应用服务器以及认证服务器AS,票据服务器TGS。认证服务器的作用是对登录的每个主体进行认证;票据服务器的作用在于向网络上的服务器证明客户的真实身份。

Kerberos协议的基本原理如下:在一个分布式的Client /Server体系机构中采用一个或多个Kerberos服务器提供一个鉴别服务。客户端想请求应用服务器Server上的资源时,首先客户端向Kerberos认证服务器请求一张身份证明,然后将身份证明交给Server 进行验证,Server在验证通过后,即为客户端分配请求的资源。

1.2Kerberos协议的详细描述

工作站端运行着一个票据授权的服务,叫Kinit,专门用做工作站同认证服务器Kerberos间的身份认证的服务。

1.用户开始登录,输入用户名,验证服务器收到用户名,在用户数据库中查找这个用户,结果发现了这个用户。

2.验证服务器生成一个验证服务器跟这个登录用户之间共享

的一个会话口令(Session key),这个口令只有验证服务器跟这个登录用户之间使用,用来做相互验证对方使用。同时验证服务器给这个登录用户生成一个票据授权票(ticket-granting ticket),工作站以后就可以凭这个票据授权票来向验证服务器请求其他的票据,而不用再次验证自己的身份了。验证服务器把{ Session key +ticket-granting ticket }用登录用户的口令加密后发回到工作站。

3.工作站用自己的口令解密验证服务器返回的数据包,如果解密正确则验证成功。解密后能够获得登录用户与验证服务器共享的Session key和一张ticket-granting ticket。到此,登录用户没有在网络上发送口令,通过验证服务器使用用户口令加密验证授权票的方法验证了用户,用户跟验证服务器之间建立了关系,在工作站上也保存来相应的身份证明,以后要是用网络中的其他服务,可以通过这个身份证明向验证服务器申请相应服务器的服务票,来获得相应服务身份验证。

4.如果用户第一次访问IIS服务器,工作站的kinit查看本机上没有访问IIS服务器的验证票,于是kinit会向验证服务器发出请求,请求访问IIS服务的验证票。Kinit先要生成一个验证器,验证器是这样的:{用户名:工作站地址}用跟验证服务器间的Session key加密。Kinit将验证器、票据授权票、你的名字、你的工作站地址、IIS服务名字发送的验证服务器,验证服务器验证验证授权票真实有效,然后用跟你共享的Session key解开验证器,获取其中的用户名和地址,

与发送这个请求的用户和地址比较,如果相符,说明验证通过,这个请求合法。

5.验证服务器先生成这个用户跟IIS服务器之间的Session key 会话口令,之后根据用户请求生成IIS服务器的验证票,是这个样子的:{会话口令:用户名:用户机器地址:服务名:有效期:时间戳},这个验证票用IIS服务器的密码(验证服务器知道所有授权服务的密码)进行加密形成最终的验证票。最后,验证服务器{会话口令+加好密的验证票}用用户口令加密后发送给用户。

6.工作站收到验证服务器返回的数据包,用自己的口令解密,获得跟IIS服务器的Session key和IIS服务器的验证票。

7.工作站kinit同样要生成一个验证器,验证器是这样的:{用户名:工作站地址}用跟IIS服务器间的Session key加密。将验证器和IIS验证票一起发送到IIS服务器。

8.IIS服务器先用自己的服务器密码解开IIS验证票,如果解密成功,说明此验证票真实有效,然后查看此验证票是否在有效期内,在有效期内,用验证票中带的会话口令去解密验证器,获得其中的用户名和工作站地址,如果跟验证票中的用户名和地址相符则说明发送此验证票的用户就是验证票的所有者,从而验证本次请求有效。

1.3Kerberos的工作过程

在Kerberos认证系统中使用了一系列加密的消息提供认证,使得正在运行的客户端能够代表一个特定的用户来向验证者证明身份。

Kerberos协议的部分是基于NS的,但针对它所用的环境作了一些修改。主要包括:使用了时间戳来减少需要做基本认证的消息数目;增加了票据授予服务使得不用重新输入主体的口令就能支持后面的认证;用不同的方式实现域间认证。

1.3.1认证请求和响应

客户端和每个验证者之间都需要一个独立的票据会话密钥,以用它进行通信。当客户端要和一个特定的验证者建立关系时,使用认证请求和响应,从认证服务器获得一个票据和会话密钥。在请求中,客户端给认证服务器发送它的身份、验证者名称、指定的有效时间、请求时所发的随机数、验证者名称和票据的其他信息,所有内容均用用户在认证服务器上注册的口令作为密钥来加密,再附上包含相同内容的票据,这个票据将作为应用请求的一部分发送给验证者。

1.3.2应用请求和响应

应用请求和响应,是Kerberos协议中最基本的消息交换,客户端就是通过这种消息交换向验证者证明它知道嵌在Kerberos票据中得会话密钥。应用请求分两部分:票据和认证码。

1.3.3获得附加票据

在基本Kerberos认证协议中,允许一个知道用户口令知识的客户端获得一张票据和会话密钥,来向在认证服务器上注册过的任何验证者证明身份。

1.3.4 Kerberos 的加密

Kerberos 加密基本过程:

(1)A AS: A

客户A 请求Kerberos 认证服务器AS 发给接入KerberosTGS 的票据。

(2)AS A :{KS}Kas ,TGT={KS,Ts}Kst

(3)A TGS :B ,TGT ,{Ta}KS

(4)TGS A :{A,Kab}KS ,Ticket={B ,Kab}Kbt

(5)A B :Ticket ,{Ta}Kab

(6)A B :{Ta+1}Kab

Kerberos 协议认证过程:

1 2 3 4

5 AS

TGS A B

相关文档
最新文档