从图可知,在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认证协议中去,便能克服其保密性不强,扩展性差等缺点。
应用层其他安全认证协议的研究
除了Kerberos认证协议以外, TCP/IP的应用层安全认证协议还包括用户口令认证协议(PAP),挑战-握手协议(CHAP)和X.509协议.下面从系统的实用性,扩展性和管理性等几个方面进行综合对比,给出其优缺点和使用环境,以作参考.如下表3.1所示:
以上通过应用层安全认证协议的对比可以看出,X.509认证协议是目前基于公钥体制的使用最为广泛的认证标准和协议,其次就是Kerberos认证协议.因此,在实际的应用中,我们可以根据所用系统的实用性,扩展性,管理性以及成本等方面来综合考虑,来决定选用哪种安全认证协议[8].
结束语
认证是信息安全防护系统中的核心和基础,是许多安全处理过程的前提.本文简单对TCP/IP应用层上的安全认证协议进行研究,并且从系统的实用性,扩展性和管理性等几个方面进行综合对比评价,给出其参考的使用环境.其中重点对Kerberos认证协议进行详细地讨论,并提出了对其改进的认证协议设计思想.希望这对当前网络信息安全的应用有一定的技术价值和理论意义.