随着信息技术及相关应用的不断普及,用户每天需要登录不同的信息系统,如WEB服务器、邮件服务器、数据库服务器及各种应用服务器等。
传统的认证机制采用基于用户名/密码的分散管理,即用户通过网络世界的身份标识来访问各种资源,不同系统生成的身份标识无法相互传递,导致用户必须通过每个系统单独的用户名和密码进行来认证方能进入系统。
传统认证机制存在两方面安全隐患:一是基于用户名/密码的认证方式安全强度不高;二是大量的用户名/密码给用户带来了额外的安全管理问题。在传统认证机制逐渐无法满足用户需求后,新的更具安全性的认证机制由此出现--单点登录技术。该技术在网络资源使用过程中更为高效、安全并且更加简便。
Kerberos是目前使用最广泛的单点登录协议之一,它利用集中式认证取代分散认证,通过减少用户身份认证次数,减轻服务器负担;同时使用对称密码算法实现通过可信第三方的认证服务。
Kerberos的运行环境由密钥分配中心(KDC)、应用服务器和客户端3个部分组成。
△ Kerberos运行环境示意图
· KDC是整个系统的核心部分,负责维护所有用户的账户信息。
KDC提供认证服务(AS)和会话授权服务(TGS)。认证服务(AS)对用户的身份进行初始认证,若认证通过便给用户发放授权票据(TGT);用户使用该票据可访问会话授权服务(TGS),从而获得访问应用服务器时所需的服务票据(ST)。
· 应用服务器接受用户的服务访问请求,验证用户身份,并向合法用户提供所请求的服务。
· 客户端在用户登录时发送各种请求信息,并接收从KDC返回的信息。
Kerberos基本认证过程可以分为3个阶段,分别由3组消息来完成。
第一阶段 获得票据许可票据
本阶段,用户登录客户端请求服务,认证服务器(AS)在数据库中验证用户的访问权限,生成票据许可票据和会话密钥。
1、用户从客户端向AS发送包含用户、服务器名和随机数N的消息KRB_AS_REQ。
2、AS验证C的身份和访问权限后,随机生成一个加密密钥作为下一阶段客户方与TGS通信的会话密钥:生成一个包含客户方、会话密钥以及开始和失效时间等信息的TGT,用TGS的密钥进行加密;AS将会话密钥和N用客户端的密钥K加密,并与TGT一起构成消息KRB_AS_REP,发送给客户端。客户端通过用户口令变换出K,获得会话密钥和N,根据N验证该消息是新鲜的。
第二阶段 获得服务许可票据
本阶段,客户端将票据许可票据以及包含用户名称,网络地址和时间的鉴别符发往票据授权服务器TGS,票据授权服务器TGS对票据和鉴别符进行解密,验证请求,然后生成请求服务许可票据。
1、客户端向TGS发送TGT、需要访问的服务器名、保证消息新鲜的N、以及用户会话密钥签名的客户端认证信息,防止数据在传输过程中被篡改、每次客户端要访问某服务时,必须首先生成一个新的认证信息(鉴别符),该信息包括客户端名、主机地址、客户端主机时间,并且最终使用会话密钥加密。
2、TGS用会话密钥验证TGT后,获取服务器名,从数据库获得服务器密钥KS,随机生成客户端与应用之间的通信会话密钥和服务许可票据。使用会话密钥加密N和应用会话密钥与新产生的服务许可密钥一起发送给客户端。
第三阶段 获得服务
客户端将服务许可票据和认证信息发送给服务器,服务器验证票据和认证信息中的相匹配,允许访问服务。如果需要双向鉴别,服务器返回一个认证信息。
1、客户端向服务器发送认证信息,并提交服务许可票据。
2、应用通过加密获得客户端的时间表及,同时将这些信息用应用会话密钥加密后发送客户端,客户端保留最近接收到的时间标记最大值,以防止重放攻击。
Kerberos认证系统虽然在网络环境中有着广泛应用,但也存在局限性。
首先,协议中的认证信息依赖于时间标记来实现抗重放攻击,这就要求使用该协议进行认证的计算机需要时间同步,而严格的时间同步需要有时间服务器,因此时间服务器的安全至关重要。
其次,协议认证的基础是通信方都无条件信任KDC,一旦其安全受到影响,将会威胁整个认证系统的安全,同时容易形成系统性能的瓶颈。