Kerberos认证协议是应用对称密钥来对客户机(Client)/服务器(Server)应用程序作精确鉴定的。它主要解决的问题是:在公开的分布式环境中,工作站上的用户希望访问分布在网络上的服务器,希望服务器能限制授权用户的访问,并能对服务请求进行认证[6]。Kerberos认证协议的总体框架图如下:

基于TCP/IP的Kerberos认证协议

从图可知,在Kerberos认证协议中,存在4种不同的角色:客户端,即用户(C),提供某种服务的服务器(S),认证服务器(AS)和票据准许服务器(TGS).它们之间通过对称加密机制作为加密/解密算法,每个用户(C)必须拥有一个认证密钥Kc,该认证密钥由用户和认证服务器AS之间共享一对对称加密密钥Ktgs,而票据准许服务器(TGS)和服务器(S)之间共享一对对称加密密钥Ks.

总体来说, Kerberos认证协议可以分为以下3个步骤:

第一步:认证服务交换.包括消息(1)和(2),用户(C)向认证服务器(AS)证明自己的身份,以便获得票据许可票据(TGT).协议的形式化描述如下:

(1)C → AS    (2)AS → C 

第二步:票据许可服务交换.包括消息(3)和(4),用户向票据准许服务器(TGS)索取访问服务器(S)的服务许可票据(SGT).协议的形式化描述如下:

(3)TGS → C   (4)C → TGS

第三步:用户与服务器交换.包括消息(5)和(6),用户使用所请求的服务.

(5)C → S     (6)S → C

从以上的过程分析中,我们可以发现Kerberos认证协议存在以下问题:

1). 所有的用户(C)帐号信息都存放在一台认证服务器(AS)中,如果该服务器被入侵,则一定会危及整个网络的安全。

2).原有的认证服务可能被存储或替换.虽然时间戳是专门用于防止重放攻击的,但在票据的有效时间内仍然可能奏效.因为事实上,攻击者可以事先把伪造的消息准备好,一旦得到票据就马上发出伪造的票据,在相当短的时间内是难以检查出来的。

3).服务许可票据的正确性是基于网络中所有的时钟保持同步,如果主机的时间发生错误,则原来的认证票据就是可能被替换的。因为大多数网络的时间协议是不安全的,所以,分布式计算机系统中这将导致极为严重的问题。

4). Kerberos防止口令猜测攻击的能力很弱,攻击者通过长期监听可以收集大量的票据,经过计算和密钥分析进行口令猜测。当用户选择的口令不够强时,就不能有效地防止口令猜测攻击。

5).Kerberos服务器与用户共享的秘密是用户的口令字,服务器在回应时不验证用户的真实性,而是假设只有合法用户拥有口令字。如果攻击者记录申请回答报文,就易形成代码本攻击。

6).实际上,最严重的攻击是恶意软件攻击。Kerberos认证协议依赖于Kerberos软件的绝对可信,而攻击者可以用执行Kerberos协议和记录用户口令的软件来代替所有用户的Kerberos软件,达到攻击的目的。一般而言,装在不安全计算机内的密码软件都会面临这一问题。

7).虽然Kerberos认证协议可以在较大规模网络环境中使用,但是在分布式系统中,认证中心星罗棋布,共享密钥的管理分配、存储和更新是一个非常困难的问题.以及它的配置也不是一件简单的事情。

从对于Kerberos的局限性和问题分析中可以得出,其很多缺陷均是由于单独采用对称密钥技术造成的。因此建议可以将公钥加密机制有机地融合到Kerberos认证协议中去,便能克服其保密性不强,扩展性差等缺点。