Kerberos简介


Kerberos简介
 

1、Kerberos简介

Keberos是为TCP/IP网络系统设计的可信的第三方认证协议。网络上的Keberos服务基于DES对称加密算法,但也可以用其他算法替代。因此,Keberos是一个在许多系统中获得广泛应用的认证协议,Windows2000就支持该协议。

2、Kerberos的组成

Kerberos应用程序库:应用程序接口,包括创建和读取认证请求,以及创建safe message 和private message的子程序。

加密/解密库:DES等。

Kerberos数据库:记载了每个Kerberos 用户的名字,私有密钥,截止信息(记录的有效时间,通常为几年)等信息。

数据库管理程序:管理Kerberos数据库。

KDBM服务器(数据库管理服务器):接受客户端的请求对数据库进行操作。

认证服务器(AS):存放一个Kerberos数据库的只读的副本,用来完成principle的认证,并生成会话密钥.

数据库复制软件:管理数据库从KDBM服务所在的机器,到认证服务器所在的机器的复制工作,为了保持数据库的一致性,每隔一段时间就需要进行复制工作.

用户程序:登录Kerberos,改变Kerberos密码,显示和破坏Kerberos标签(ticket)等工作。

Microsoft Windows Server 2003操作系统上实现了Kerberos5身份验证协议。Windows Server2003总是使用扩展公钥身份验证机制。KerBeros身份验证客户端作为SSP(Security Support Provider)通过访问SSPI(Security Support Provider Interface)来实现身份验证。用户身份验证初始化过程被集成在Winlogon这SSO(Single Sign-On)体系中。

Keberos最初是美国麻省理工学院为Athena项目开发的。其中第1—第3版为内部开发版,第4版提供扩散密码分组链接(PCBC)模式。该模式存在一个问题:交换两个密文分组,将使两个对应的明文分组不能被正确解密,但根据明文和密文异或的性质,错误将被抵消。所以,如果完整性检查只检查最后几个解密的明文分组,它可能欺骗接收者,让接收者接收部分错误的消息。因此,Keberos第5版使用CBC(C ipher Block Chaining)模式。

3、Keberos的工作步骤:

(1)请求许可票据。

(2)返回许可票据。

(3)请求服务器票据。

(4)返回服务器票据。

(5)请求服务。

Keberos的凭证:票据和认证码。

4、工作原理

简要大概地说一下Kerberos是如何工作的:

假设你要在一台电脑上访问另一个服务器(你可以发送telnet或类似的登录请求)。你知道服务器要接受你的请求必须要有一张Kerberos的“入场券”。

要得到这张入场券,你首先要向验证服务器(AS)请求验证。验证服务器会创建基于你的密码(从你的用户名而来)的一个“会话密钥”(就是一个加密密钥),并产生一个代表请求的服务的随机值。这个会话密钥就是“允许入场的入场券”。

然后,你把这张允许入场的入场券发到授权服务器(TGS)。TGS物理上可以和验证服务器是同一个服务器,只不过它现在执行的是另一个服务。TGS返回一张可以发送给请求服务的服务器的票据。

服务器或者拒绝这张票据,或者接受这张票据并执行服务。

因为你从TGS收到的这张票据是打上时间戳的,所以它允许你在某个特定时期内(一般是八小时)不用再验证就可以使用同一张票来发出附加的请求。使这张票拥有一个有限的有效期使其以后不太可能被其他人使用。

实际的过程要比刚才描述的复杂得多。用户过程也会根据具体执行有一些改变。[2] 

5、缺陷

1.失败于单点:它需要中心服务器的持续响应。当Kerberos服务结束前,没有人可以连接到服务器。这个缺陷可以通过使用复合Kerberos服务器和缺陷认证机制弥补。

2.Kerberos要求参与通信的主机的时钟同步。票据具有一定有效期,因此,如果主机的时钟与Kerberos服务器的时钟不同步,认证会失败。默认设置要求时钟的时间相差不超过10分钟。在实践中,通常用网络时间协议后台程序来保持主机时钟同步。

3.管理协议并没有标准化,在服务器实现工具中有一些差别。

4.因为所有用户使用的密钥都存储于中心服务器中,危及服务器的安全的行为将危及所有用户的密钥。

5.一个危险客户机将危及用户密码。

6、Kerberos的优点

分析整个Kerberos的认证过程之后,总结一下Kerberos都有哪些优点:

1.较高的Performance

虽然我们一再地说Kerberos是一个涉及到3方的认证过程:Client、Server、KDC。但是一旦Client获得用过访问某个Server的Ticket,该Server就能根据这个Ticket实现对Client的验证,而无须KDC的再次参与。和传统的基于Windows NT 4.0的每个完全依赖Trusted Third Party的NTLM比较,具有较大的性能提升。

2.实现了双向验证(Mutual Authentication)

传统的NTLM认证基于这样一个前提:Client访问的远程的Service是可信的、无需对于进行验证,所以NTLM不曾提供双向验证的功能。这显然有点理想主义,为此Kerberos弥补了这个不足:Client在访问Server的资源之前,可以要求对Server的身份执行认证。

3.对Delegation的支持

Impersonation和Delegation是一个分布式环境中两个重要的功能。Impersonation允许Server在本地使用Logon 的Account执行某些操作,Delegation需用Server将logon的Account带入到另过一个Context执行相应的操作。NTLM仅对Impersonation提供支持,而Kerberos通过一种双向的、可传递的(Mutual 、Transitive)信任模式实现了对Delegation的支持。

4.互操作性(Interoperability)

Kerberos最初由MIT首创,现在已经成为一行被广泛接受的标准。所以对于不同的平台可以进行广泛的互操作。