Kerberos网络认证系统的关键技术分析
2016-07-22刘寿臣
刘寿臣
摘要:为了保证在开往网络中通信的安全性,认证机制是不可缺少的工具。该文围绕信息认证方式中的Kerberos认证系统,阐述了Kerberos协议的基本思想,实现目标,详细地介绍了Kerberos系统中所涉及到的相关概念,认证原理和流程,其认证流程包括3个子交换,分别是认证服务器交换,票据服务器交换,客户/服务器认证应用交换。此外,从单区域下的Kerberos认证扩展到多区域下的Kerberos协议工作方式,指出了其存在的局限性。Kerberos认证协议主要应用于网络环境中的身份识别,已经得到了广泛的使用。
关键词:Kerberos协议;认证;多区域Kerberos
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)16-0069-02
1 概述
伴随着网络和信息技术的高速发展,人类的生活变得更加的方便快捷,人类社会享受着网络提供的各类服务。与此同时,也在遭受着来自网络空间中的网络攻击,网络威胁等。
当越来越多的商业活动,事务处理通过开放不安全的通信网运行时,我们需要保证在开放网络中通信的安全性,完成网络安全系统的构造,加密,访问控制,数字签名以及认证等安全机制都必不可少[2]。
拥有一个良好的认证机制可以有效地防止攻击者假冒合法用户,对访问网络的用户进行必要的身份合法性验证,通过验证协议确认身份的用户将按照此身份所获得的权限在网络中访问所需要的资源。网络认证中非常有影响力的系统为Kerberos,它是一个在许多系统中获得广泛应用的认证协议,是Windows2000操作系统的网络认证基础。
2 Kerberos简介
Kerberos是一种网络认证协议,基于对称密码算法实现,密码设计基于Needham—Schroeder协议。其基本思想是使用可信第三方把某个用户引见给某个服务器,引见方法是在用户和服务器间分发会话密钥建立安全信道。其设计目标是通过密钥系统为客户端、服务器应用程序提供强大的认证服务。
该认证过程的实现依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传输的数据包可以被任意的读取,修改和插入数据。
Kerberos认证协议假定网络当中主机是不可信的,要求每个client对每次业务请求证明其身份,不要求用户每次业务请求都输入密码。Kerberos系统的应用广泛,比如:构造Windows网络中的身份认证,服务器和服务器之间的认证,网格计算,计算机联成网单点登录访问整个网络的资源,访问其他服务器不需要再次认证。
Kerberos中三方分别是认证服务器,用户,服务器。有相关一系列的设计准则:
1)用户必须在工作站会话开始的时候验证自己(登录会话);
2)密码永远不在网络中明文传输或在存储器中存储;
3)每个用户有一个口令;
4)每个业务有一个口令;
5)知道所有口令的唯一实体是认证服务器。
Kerberos数据库中有Workstation的密码,Server密码以及票据服务器TGS的密码。
3 身份证明资源
3.1 Tickets(票据)
每个业务请求需要一个Ticket,一个票据只能用于单个用户访问单个服务器,Ticket由“Ticket Granting Server”(TGS)分发,TGS具备所有Server的加密密钥。Tickets对clients是无意义的,clients只是使用它们接入服务器。TGS用服务器的加秘密钥加密每个ticket,加密的tickets可在网上安全传输,只有对应的服务器可以解密。大量的用户每次申请票据会浪费资源而且加重TGS的工作负荷,所以每一个ticket拥有一定时间范围内的生存期,通常为几个小时,这样可以有效地减少适当的系统负担。
3.2 Ticket内容
ü Client名,即用户登录名
ü Server名(服务器)
ü Client主机网络地址
ü Client和Server之间的会话密钥,用于加密client和server间的请求和响应
ü Ticket的生存期
ü 产生时戳(发放ticket的时间)
TGS作为可信第三方,为client和server分配密钥,通过TGS来验证用户的身份。
用户在访问某服务器时,只凭借ticket是不能做到的。因为在网络环境中,存在很多的“坏人”,ticket可能会被窃取或重放,手持ticket的用户和ticket中对应的client名未必一致,为了访问服务器,用户除了ticket之外还需要提交认证符。
3.3 Authenticators(认证符)
认证符证明client身份,包括client用户名,client网络地址,时戳(访问服务器的时间)。认证符以session key加密(Tickets内的会话密钥)。攻击者可以截取票据,但是无法得知会话密钥,没有办法构造合法认证符。
服务器利用session key获取认证符的网络地址和用户名信息,如果和tickets中网络地址用户名一致,这样就可以确认用户的身份[3]。
4 Kerberos协议流程
用户欲访问服务器资源,首先去Autntication Server(认证服务器)进行认证。认证成功,AS分配一个访问Ticket Granting Server的票据,凭借此ticket向Ticket Granting Server申请访问Server准入的凭证。过程包括3个交换,分别是认证服务器交换(AS交换),票据授予服务器交换(TGS交换),客户/服
务器交换(AP交换)。
4.1 AS(Authentication Server)交换
用户访问TGS之前必须访问认证服务器,Client向AS发送明文“认证服务”请求(AS_REQ),请求内容包括登录名和TGS名称,以获得一个ticket用于与TGS通信,AS找到登录名和TGS名对应的密钥。
AS生成一个ticket(TGticket):login name,TGS name,Client网络地址,TGS会话密钥,AS以TGS的秘密密钥(AS和TGS的长期共享密钥)加密此ticket。
AS同时产生一个随机会话密钥供client和TGS使用。会话密钥和加密的ticket以用户的秘密密钥加密,将TGTicket返回给用户。
TGT的两部分都含有Client和“票据授予服务器”共享的会话密钥TGS session key。
4.2 TGS交换
访问TGS:Client以用户口令作为秘密密钥解密消息,Client这时获得了会话密钥和TGS通信的ticket,因为Client不知道TGS的秘密密钥,所以看不到ticket内部的内容。
当client想开始使用服务,client必须获得一个ticket,Client构造一个请求发送给TGS。
TGS响应:TGS用其秘密密钥解密ticket获得TGS会话密钥,TGS用会话密钥解密认证符,TGS检查验证登录名,client地址和TGS server都正确,TGS验证信任状是最新的,一旦所有验证通过,TGS产生一个ticket使client用于请求的server,Ticket用server密钥加密。而且产生一个会话密钥,用于client和server通信。以TGS会话密钥加密整个消息发回给client。
4.3 AP交换
用户访问服务器 ,client以TGS会话密钥解密TGS响应,Client现在获得了与服务器通信的会话密钥和ticket,Client用与和访问TGS一样格式的数据访问服务器,从应用服务器那里获得应用服务。
访问TGS,AS作为client和TGS的第三方;访问Server,TGS作为client和server的第三方[1]。
5 Kerberos区域和多区域的Kerberos
以上Kerberos协议原理的介绍基于一个区域内的客户端访问同一个区域内的服务器。多区域的Kerberos认证要求,Kerberos服务器之间相互信任,两两之间有共享密钥。区域A的Kerberos对本区域Client的认证,区域B的Kerberos应该相信区域A对用户的认证。Kerberos跨区域的密钥交换流程见图:
6 总结
本文对Kerberos认证协议进行了详细的介绍,在Kerberos认证过程中,每次业务请求需要一个ticket,ticket来源于TGS(访问TGS的ticket由认证服务器分发)。工作站不能解密用服务器密钥加密的tickets,每个ticket有个相应的session key。此外,Tickets不能重用,具备有限的的生命期;Authenticators只能使用一次,失效很快。服务器需要维护一个信任状(Authenticators)列表。Kerberoas跨区域服务存在局限性,Kerberos服务器两两之间有共享密钥的要求导致当Kerberos区域扩展较大的情况下势必带来密钥管理不便的结果。
参考文献:
[1] Wenbo Mao.现代密码学理论与实践[M].北京:电子工业出版社,2004.
[2] 沈鑫剡.计算机网络安全[M].北京:人民邮电出版社,2011.
[3] 石淑华,池瑞楠.计算机网络安全技术[M].北京:人民邮电出版社,2012.
[4] 刘冰. 在数字化校园中利用Portal和Ldap实现统一身份认证的研究与应用[D]. 沈阳:沈阳理工大学, 2008.
[5] 曹福祥. 计算机身份认证的技术分析和比较[J]. 中国科技信息,2007(7).
[6] 王媛媛. 电子商务中身份认证技术的分析与比较[J].信息技术与信息化,2009(4).