APP下载

基于Kerberos协议的单点登录研究与设计

2011-09-07杜中军

计算机工程与设计 2011年7期
关键词:用户名单点解密

沈 阳, 杜中军

(四川大学计算机学院,四川成都610065)

0 引 言

目前,越来越多的软件应用正在从传统的C/S结构向B/S结构转变,一个组织中多个基于Web的业务应用系统共存的情况十分普遍。这些系统往往是在不同的时期内,由不同的软件开发人员采取不同的技术开发而来的。由于每个系统相互独立,都有各自的用户认证方式,所以用户登录时,不得不分别登录各个所需使用的系统,给用户带来极大不便。记住各个登录密码给用户提出了挑战,另一方面,对于系统管理员来说,维护和管理用户密码也变得困难。基于效率和安全的因素,改变传统的认证方式,设计出一种更为高效、安全的网络认证机制显得非常迫切,单点登录的概念由此产生。单点登录是一种可以登录多个相互关联但彼此独立的软件系统的一种方法,它只需用户登录其中的一个系统从而获得其它所有系统的登录许可而不用重复登录各个系统[1]。目前广泛使用的单点登录主要有:Kerberos[2],CAS[3],基于SAML的单点登录系统[4-6],微软的.NET Passport[7]。

1 相关研究工作

对于小型组织或单位,考虑到费用以及他们对单点登录的性能、安全性要求不高,可以采用基于一次性密码的认证机制[1]或基于代理的机制[8]来实现单点登录技术。但对于大型企业或单位,对于性能、安全性要求较高的应用系统而言,如电子商务、电子政务等系统,这两种实现机制显得捉襟见肘。对于此类的系统要求,公钥基础设施(publickeyinfrastructure,PKI)、Kerberos技术便应运而生。基于PKI认证的单点登录[3,9]采用著名的非对称加密算法,安全性是目前公认为最高的,但它占用了大量的Server端计算资源,防御Dos、Ddos攻击的能力差。传统的基于Kerberos的单点登录[10]系统采用对称加密算法,计算资源的消耗低,单位时间响应认证请求能力强,但存在重放攻击以及密文传输安全性问题。PKI认证技术中,公开密钥系统需要一个值得信赖而且独立的第三方机构充当认证中心(certification authority,CA),以确认公钥拥有者的真正身份,相对于Kerberos技术代价较高。本文设计了一种改进的基于Kerberos的单点登录系统,它在密文传输安全性和抗重放攻击方面都进行了较大程度的改进,而且它便于推广实施和应用。

2 单点登录设计

2.1 符号定义

在设计单点登录系统时会用到一些缩写词、与密码处理相关符号以及通信领域的概念,在本文中将他们定义如下[11]:

PS:Password,用户密码

TS:Time Stamp,时间戳

ID:User Identity,用户名

C:Client,客户方

S:resource Servers,资源服务器

KDC:Key Distribution Center,密钥分发中心

AS:Authentication Server,认证服务器

TGS:Ticket Granting Server,凭据分发服务器

H(M):使用SHA、MD5等单向散列算法对消息M进行Hash处理

K(key){M}:使用密钥key对消息M加密,采用DES、IDEA等对称密码算法

Long-termKey:长期保持不变(比如用户密码)以及由此派生出来的密钥(比如H(PS))

2.2 传统的Kerberos单点登录设计

在传统设计中,主要有3个模块:密钥分发中心、资源服务器、客户方,其中密钥分发中心又由凭据分发服务器和认证服务器组成。整个Kerberos认证过程通过3个阶段完成,分别为:AS Exchange、TGS Exchange和 C/S Exchange。这里我们假设:①资源服务器完全信赖密钥分发中心,②密钥分发中心和资源服务器能识别并认证每一个合法的用户,③仅有一个密钥分发中心和多个资源服务器。传统的Kerberos单点登录设计见图1。

图1 传统Kerberos单点登录流程

(1)C→ AS:K(H(PS)){TS||ID}||ID

(2)AS→C:K(H(PS)){SKDC-Client},K(K-KDC){SKDC-Client||ID||ET}

(3)C→TGS:K(SKDC-Client){ID||TS||Sname},K(K-KDC){SKDCClient||ID||ET}

(4)TGS→C:K(SKDC-Client){SServer-Client},K(K-Server){SServer-Client||ID||ET}

(5)C→S:K(SServer-Client){ID||TS},K(K-Server){SServer-Client||ID||ET}

(6)S→C:K(SServer-Client){Data}

AS Exchange由步骤1和步骤2组成。首先,用户输入自己的用户名和密码以登录认证服务器。时间戳和用户名经过用户密码的hash值H(PS)加密并与明文形式的用户名一起发送到认证服务器。然后,认证服务器根据用户名从数据库获取该用户密码的hash值,并用它对加密的文件包解密,如果得到的是一个合法的时间戳并且解密获得的用户名与明文传送的用户名相等,则认证成功。密钥分发中心产生一个它与用户之间的会话密钥,即SKDC-Client。认证服务器将同时发送两份加密包给客户方,分别为用H(PS)加密的SKDC-Client和用密钥分发中心自己的密钥K-KDC加密的SKDC-Client、用户名以及该包的到期时间,这个包称为TGT。

TGS Exchange由步骤3和步骤4组成。客户方收到上一阶段的加密包后,使用H(PS)解密第一份加密包获得SKDCClient。接着,客户方用该会话密钥加密用户名、此时获得的时间戳以及要访问的资源服务器名称,该包称为Authenticator,并且将它与从认证服务器获得的TGT一并发送给凭据分发服务器。凭据分发服务器获得加密包后先用K-KDC解密TGT获得会话密钥SKDC-Client,然后用该会话密钥解密Authenticator,如果是一个合法的时间戳并且得到的两个用户名相同则通过验证。密钥分发中心产生一个客户方和资源服务器之间的会话密钥,即SServer-Client。凭据分发服务器同时发送两份加密包给客户方,分别为用SKDC-Client加密的SServer-Client和用资源服务器自己的密钥加密的SServer-Client、用户名和该包到期时间,这个包称为ST。

C/S Exchange由步骤5和步骤6组成。客户方收到上一阶段的加密包后,使用SKDC-Client解密第一份加密包获得SServer-Client。然后,使用SServer-Client加密用户名和当前获得的时间戳,该包也称为Authenticator,并且和上一阶段获得的ST一起发送给资源服务器。资源服务器获得加密包后,首先使用自己的密钥对 ST进行解密获得 SServer-Client。接下来,使用SServer-Client对Authenticator解密,如果获得的是一个合法的时间戳并且解密获得的两个用户名相同,则该用户获得资源服务器的访问许可,就可以使用会话密钥 SServer-Client进行彼此间的通信。

在整个过程中,ST是基于某个具体的资源服务器的,而TGT则是和具体的资源服务器无关,客户方可以使用一个TGT从密钥分发中心获得基于不同资源服务器的ST,从而实现单点登录。具体来说就是,在步骤3中,客户方一旦获得TGT后,在该TGT的存活期内,就可以根据访问需要任意反复地指定资源服务器名称,加密后随TGT一并发送给凭据分发服务器,验证通过后获得该资源服务器的ST,从而得到该资源的访问许可。

为了防止重放攻击,在步骤1、步骤3和步骤5中使用了时间戳。用户只需登录一次,就可以根据需要访问多个资源服务器,因为每个用户只有一个密码,从而避免了用户记住多个密码的麻烦。整个系统中只有一个用户认证信息的数据库,极大方便了管理员对用户密码的管理。使用对称加密算法对网络中传送的数据进行加密,性能明显优于使用非对称加密算法的PKI认证。

尽管如此,在一个开放的网络环境中,该系统仍然存在如下一些安全隐患:

(1)在网络安全领域中有这样的原则:被Long-termKey加密的数据最好不要该在网络上传输。在步骤4和步骤5中,使用了资源服务器的密钥对数据进行加密传送,降低了资源服务器的安全系数。

(2)虽然时间戳在一定程度上可以防止重放攻击,但在Kerberos中一般将它设置为5分钟,这样就留给攻击者时间,遗留下进行重放攻击的隐患。

(3)资源服务器和客户方并未进行双向认证。资源服务器对客户方进行了验证,但客户方并未对资源服务器进行验证,存在服务器欺骗的可能。

2.3 改进单点登录设计

考虑到传统Kerberos单点登录的以上问题,本文提出了一种改进的单点登录设计方案,本设计中添加了客户方向资源服务器申请密钥分发中心与资源服务器之间的会话密钥的阶段,这里把它称为SKDC-ServerRequest。假设密钥分发中心只负责产生它与资源服务器之间的会话密钥但并不保存它,并且每个资源服务器与密钥分发中心之间的会话密钥都不一样,其它条件和传统Kerberos的假设条件相同。改进的单点登录设计见图2。

图2 改进单点登录流程

(1)C→AS:K(H(PS)){TS||ID}||ID

(2)AS→C:K(H(PS)){SKDC-Client},K(K-KDC){SKDC-Client||ID||ET}

(3)C→S:ID||Sname

(4)S→C:K(K-KDC){SKDC-Server||ID||Sname||ET}

(5)C→TGS:K(SKDC-Client){ID||TS||Sname||H(MAC)},K(K-KDC){SKDC-Client||ID||ET},K(K-KDC){SKDC-Server||ID||Sname||ET}

(6)TGS→C:K(SKDC-Client){SServer-Client},K(SKDC-Server){SServer-Client||ID||ET}

(7)C→S:K(SServer-Client){ID||TS||Flag||H(MAC)},K(SKDC-Server){SServer-Client||ID||ET}

(8)S→C:K(SServer-Client){TS}

ASExchange由步骤1和步骤2组成。客户方通过此过程获得属于自己的TGT,通过此凭据,客户方可以向密钥分发中心申请用于访问某个资源服务器的ST。该阶段与传统Kerberos单点登录的AS Exchange过程相同。

SKDC-Server Request由步骤3和步骤4组成。客户方将自己的 ID和所要访问资源服务器的名称以明文的形式发送给该资源服务器,以申请该资源服务器已从密钥分发中心获得的它与密钥分发中心之间的会话密钥。资源服务器收到申请后,如果在它的缓存中存在这个会话密钥,则将之加密发送给客户方。反之,如果缓存中没有该会话密钥,则资源服务器通过向RS认证服务器RSAS发送申请,申请内容为该用户的用户名和资源服务器名称,这个过程非常类似于客户方向密钥分发中心申请它们之间的会话密钥,见图2中的虚线部分。RSAS收到资源服务器的申请后,密钥分发中心将产生一个它与资源服务器之间的会话密钥SKDC-Server,然后用自己的密钥将SKDC-Server、用户名、资源服务器名称和该包的到期时间加密发送给资源服务器,该包记为SKTGT。资源服务器收到该加密包后,将之存入缓存以待申请。

TGS Exchange由步骤5和步骤6组成。客户方收到 AS Exchange阶段的加密包后,使用H(PS)解密第一份加密包获得SKDC-Client。接着,客户方用该会话密钥加密用户名、此时获得的时间戳、要访问的资源服务器名称和自己MAC地址的hash值,该包称为Authenticator,并且将它与从认证服务器获得的TGT、从资源服务器获得的SKTGT一并发送给凭据分发服务器。凭据分发服务器获得加密包后先用K-KDC解密TGT获得会话密钥SKDC-Client,然后用SKDC-Client解密Authenticator,如果是一个合法的时间戳、解密得到的H(MAC)与从IP包中提出的MAC地址的hash值相等并且得到的两个用户名相同则通过验证。之后,密钥分发中心再用自己的密钥对SKTGT解密,获得密钥分发中心与资源服务器的会话密钥SKDC-Server。密钥分发中心产生一个客户方和资源服务器之间的会话密钥,即SServer-Client。凭据分发服务器同时发送两份加密包给客户方,分别为用SKDC-Client加密的SServer-Client和用SServer-Client加密的SServer-Client、用户名以及该包到期时间,这个包称为ST。

C/S Exchange由步骤7和步骤8组成。客户方收到上一阶段的加密包后,使用SKDC-Client解密第一份加密包获得SServer-Client。然后,使用该会话密钥加密用户名、当前获得的时间戳、用于双向验证的Flag标记和客户端硬件地址的hash值,该包也称为Authenticator,并且和从上一阶段获得的ST一起发送给资源服务器。资源服务器获得加密包后,首先使用SKDC-Server对ST进行解密获得SServer-Client。接下来,使用该SServer-Client对Authenticator解密,如果获得的是一个合法的时间戳、解密得到的H(MAC)与从IP包中提出的MAC地址的hash值相等并且获得的两个用户名相同,则该用户获得资源服务器的访问许可。资源服务器将解密获得的时间戳提取出来,并使用SServer-Client会话密钥加密发送给客户方。当客户方接收到该包并使用SServer-Client解密之后,如果确认时间戳和原来的完全一致,那么它可以认定该资源服务器正是它要访问的资源服务器。接着就可以使用会话密钥SServer-Client进行彼此间的通信。

本设计在继承了传统Kerberos单点登录的所有优点的基础上,在极大程度上降低了传统Kerberos单点登录存在的安全隐患:

(1)KDC与资源服务器之间的数据加密不再使用资源服务器自己的密钥,而是使用它们之间的会话密钥,给恶意攻击者带来极大攻击难度。

(2)不再单一使用时间戳来避免重放攻击,而是配合MAC地址的验证来实现双重保障,让重放攻击几乎难以实现。

(3)通过设置标记位实现客户端与资源服务器端的双向验证,使得客户端也可以对资源服务器进行验证,只有验证通过后才可以正式发起会话。

3 实验与结果分析

为了进一步验证本设计方案的有效性,我使用Java语言开发了软件系统的原型。由于系统需在开放的网络环境中进行实验,但实验室环境无法完全真实地开放在一个网络环境中,所以,我在实验室内部搭建了一个局域网,以达到模拟开放网络的实验环境。实验中使用sniffer抓包工具对网络中传输的加密包进行捕获,并实施重放攻击,通过实验对两种单点登录系统进行了比较,得出表1的比较结果。

表1 两种单点登录的实验结果定性比较

4 结束语

改进的单点登录较传统的Kerberos单点登录系统不仅在系统安全性,抗重放攻击方面有了很大程度的提高,而且实现了客户端与资源服务器端的双向验证,并且便于推广和应用。但相比与基于PKI的单点登录系统仍然存在一些有待解决的问题。首先,能否将两种单点登录的优势结合起来,实现一种更为安全和高效的单点登录系统。其次,本系统中多处使用了会话密钥,但会话密钥存在生命期。如果太长,攻击者将会有足够的时间进行攻击;太短,客户端不得不频繁地进行重新认证。所以,在未来的工作中,这两方面的问题将是继续研究的工作。

[1]Tiwari P B,Joshi S R.Single sign-on with one time password[C].IEEE First Asian Himalayas International Conference on Internet,2009:1-4.

[2]丁立新,赵曦滨,顾明.基于Kerberos的Web单点登录研究[J].计算机工程与应用,2005,41(14):124-126.

[3]Song peng,Yu jinshan.CAS single sign-on technology for integration of enterprise's application system[J].Journal of Huaqiao University(Natural Science),2009,30(3):351-353.

[4]Takaaki Komura,Yasuhiro Nagai,Shoichi Hashimoto,et al.Proposal of delegation using electronic certificates on single sign-on system with SAML-protocol[J].Ninth Annual International Symposium on Applications and the Internet,2009:235-238.

[5]陈科,佘堃,黄迪明.基于安全断言标记语言辅件技术的单点登录系统分析[J].计算机应用,2005,25(11):2574-2576.

[6]Wu kaixing,Yu xiaolin.A model of unite-authentication single sign-on based on SAML underlying Web[C].Second International Conference on Information and Computing Science,2009:211-213.

[7]http://www.passport.com[OL].

[8]Sahana K Bhosale.Architecture of a single sign on(SSO)for internet banking[C].IET International Conference on Wireless,Mobile and Multimedia Networks,2008:103-105.

[9]Zhao Gang,Zheng Dong,Chen Kefei.Design of single sign-on[C].Proceedingof the IEEEInternationalConference on E-Commerce Technology for Dynamic E-Business,2004:253-256.

[10]邱航,权勇.基于Kerberos的单点登录系统研究与设计[J].计算机应用,2003,23(7):142-144.

[11]季旻,林中.单点登录方案的研究与设计[J].计算机工程与设计,2009,30(12):2862-2864.

猜你喜欢

用户名单点解密
《护士进修杂志》投稿程序
《护士进修杂志》投稿程序
炫词解密
解密“一包三改”
历元间载波相位差分的GPS/BDS精密单点测速算法
《护士进修杂志》投稿程序
炫词解密
机智的快递员
数字电视地面传输用单频网与单点发射的效果比较
企业信息门户单点登录方案设计