Kerberos协议及安全性分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Kerberos协议及其安全性分析
一、概况:
Kerberos协议是20世纪80年代由MIT开发的一种协议。Kerberos主要是为TCP/IP网络设计的可信第三方鉴别协议,允许客户以一种安全的方式来访问网络资源。Kerberos的基础是NS协议。他与NS协议不同在于:kerberos认为所有的时钟已经同步好了。
Kerberos基于对称密钥体质,通常采用的DES,但也可用其他算法替代。他与网络上的每个实体共享一个不用的密钥,是否知道共享密钥便是实体的身份证明。
Kerberos的基本原理:在一个分布式的Client/Server体制机构中采用一个或多个kerberos服务器提供一个鉴别服务。客户端想请求应用服务器Server上的资源时,首先客户端向kerberos认证服务器请求一张身份证明,然后将身份证明交给Server进行验证,Server在验证通过后,即为客户端分配请求资源。
二、票据:
票据是kerberos中一个重要概念。票据是kerberos协议中用来记录信息、密钥等得数据结构,客户端用它向Server证明身份,包括了客户端身份标识、会话密钥、时间戮和其他信息。所有内容都是用Server密钥加密,因此只有认证服务器和合法验证者知道密钥,而客户端是不知道这个密钥的,故无法篡改票据内容。
根据党情对认证服务器的请求和客户端获得票据的方式,kerberos服务器自动设置标志:
(1)初始化表示
(2)认证前标志
(3)非法标志
(4)更新标志
(5)延期标志
(6)代理和代理标志
(7)前趋标志
三、域:
域指一个kerberos服务器直接提供认证服务的有效范围。通常kerberos 系统使用领域来控制一个由认证服务器进行认证的区域,每个认证服务器建立和维护自己的区域,并且支持跨域认证,即一个域中的客户端能够被另一个域的服务器认证。
四、K erberos的工作过程:
Kerberos协议分为两个部分:
1 . Client向KDC发送自己的身份信息,KDC从Ticket Granting Service 得到TGT(ticket-granting ticket),并用协议开始前Client与KDC之间的密钥将TGT加密回复给Client。
此时只有真正的Client才能利用它与KDC之间的密钥将加密后的TGT 解密,从而获得TGT。
(此过程避免了Client直接向KDC发送密码,以求通过验证的不安全方式)
2. Client利用之前获得的TGT向KDC请求其他Service的Ticket,从而通过其他Service的身份鉴别。
Kerberos协议的重点在于第二部分,简介如下:
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。
五、Kerberos协议的安全性分析:
Kerberos协议拥有不少优点,如:密码不易被窃听、密码不在网上传输,相比其他协议更安全、密码猜测更困难、对于用户而言更便捷:一次使用口令登录,可以获得多个服务。
但是,Kerberos协议本身并不是无限安全的,而且也不能自动提供安全。其安全威胁存在于以下几个方面:
1、kerberos不能解决拒绝服务攻击
2、入侵者通过某种方法窃取了主体的私钥,他就能冒充身份
3、Kerberos无法应付口令猜测攻击
4、要保证网络上每个主机时钟都是松散同步的
5、要保证主体的标识不能频繁地循环使用。
针对kerberos的安全弱点,我们可以使用TPM增强kerberos安全性: