《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于DESX的Kerberos协议的分析与改进
基于DESX的Kerberos协议的分析与改进
来源:微型机与应用2013年第13期
王崇霞1,高美真2
(1.长治学院 计算机系,山西 长治 046010; 2.焦作师范高等专科学校 计算机与信息工程学院
摘要: Kerberos协议是一种基于可信第三方的身份认证协议,针对Kerberos协议具有口令猜测攻击、重放攻击等缺陷,提出一种基于DESX算法和SHA函数的Kerberos协议改进方案,通过分析比较,改进协议不但摒弃了原Kerberos协议存在的缺陷,且以相对较小的开销使Kerberos协议认证过程更安全可靠。
Abstract:
Key words :

摘  要: Kerberos协议是一种基于可信第三方的身份认证协议,针对Kerberos协议具有口令猜测攻击、重放攻击等缺陷,提出一种基于DESX算法和SHA函数的Kerberos协议改进方案,通过分析比较,改进协议不但摒弃了原Kerberos协议存在的缺陷,且以相对较小的开销使Kerberos协议认证过程更安全可靠。
关键词: Kerberos协议;身份认证;DESX;安全性;票据

 Kerberos协议是麻省理工学院(MIT)在20世纪80年代为Athena计划开发的一种基于可信第三方协助的统一身份认证协议,它可以在不安全的网络环境中实现用户对远程服务器的访问,并提供自动鉴别、数据安全性和完整性服务,其特点是用户只需输入一次身份验证信息就可以凭此验证获得访问服务器的票据。至今,Kerberos已经有5个版本,前3个版本是内部应用版本,Kerberos V4是被公诸于众的第1个版本,Kerberos V5针对V4存在的不足作了改进。但由于Kerberos协议基于对称加密算法DES实现,仍然存在口令猜测攻击、密钥管理困难等不足[1]。针对这些不足,学者们提出了很多对Kerberos协议的改进方案,如参考文献[1]利用公钥密码体制对Kerberos协议进行了改进;参考文献[2]基于动态密码体制对Kerberos协议进行修正;参考文献[3]基于椭圆曲线的零知识证明方法解决字典攻击问题;参考文献[4]提出基于混合加密体制和Daffier-Hellman密钥协商对Kerberos协议的修正方案;参考文献[5]提出用ECC算法作为加密和签名工具对Kerberos协议进行改进。这些方案虽然从不同角度对Kerberos协议进行了修正和补充,弥补了Kerberos协议的不足,但也在很大程度上修改了Kerberos协议算法,增加了运算复杂度,提高了系统开销。
 本文在深入分析Kerberos协议结构和认证过程的基础上,提出了基于DESX及SHA-2函数对Kerberos协议的改进方案,不但摒弃了Kerberos协议存在的不足,增加了Kerberos协议的安全性,而且由于DESX算法是DES算法的变型,在不改变Kerberos协议认证模型及开销较小的情况下弥补和修正了Kerberos协议的缺陷。
1 Kerberos协议及其安全性分析
1.1 Kerberos认证协议

 Kerberos体系结构由密钥分配中心KDC(Key Distribution Center)、应用服务器和客户3个部分组成,KDC在整个认证系统中处于核心地位,由认证服务器AS(Authentication Server)、票据授权服务器TGS(Ticket Granting Service)及认证数据库组成。
 Kerberos协议以域为单位进行管理,每个域中包含若干客户、1个认证服务器AS、1个票据授权服务器TGS和若干应用服务器。因此,Kerberos认证协议分为两种认证模式:域内认证和跨域认证。本文主要从域内认证模式阐述对Kerberos协议的改进。Kerberos协议认证流程共有6个步骤,如图1所示。

 本文用到的符号定义:
 C:客户;
 S:应用服务器;
 IDc:用户的身份标识;
 ADc:用户的地址;
 Kx:X与AS的共享密钥;
 Kx,y:x、y共享的会话密钥;
 Ticketx,y:访问时的票据;
 Lifetime:生存时间;
 TS:时间戳,信息的发送时间;
 Authenticationc:由客户产生,用于验证用户所持票据的真实性;
 {M}Kc:密钥Kc加密信息M;
 Option:可选项,用于请求在票据中设置相应的标志位,通过设置相应的标志,可以在协议中添加一些控制;
 Nonce:一个保鲜数,它表示回应的信息是新鲜的,预防遭到重放攻击;
Times:客户请求在票据中设置时间,包括请求票据的起始时间、过期时间和过期时间的更新时间,从而允许票据拥有任意长度的有效期;
 Subsky:子密钥,用以保护某一特定的应用程序会话;
 Seq:可选项,说明在此次会话中服务器向客户发送消息的序列号,将消息排序可以防止重放攻击。
 Kerberos协议的信息交换过程共分3个阶段6个步骤[6-7]:
 (1)客户C请求AS发放访问TGS的许可票据Tickettgs。C发送明文请求消息到AS,AS返回1张加密过的票据,加密密钥Kc由用户口令Password得到。当AS回应的信息到达客户端,客户提示用户C输入口令,由此产生密钥Kc,并对收到的报文解密,得到Tickettgs,若口令正确,票据正确解密,恢复加密的许可票据Tickettgs,否则提示错误返回。
 ①C→AS:{Options,IDc,IDtgs,Times,Nonce1}
 ②AS→C:{IDc,Tickettgs{Kc,tgs,Times,Nonce1,IDtgs}Kc}
 Tickettgs={flags,Kc,tgs,IDc,ADc,Times}Ktgs
 (2)客户C访问TGS获得访问应用服务器S的服务许可票据Tickets。TGS对收到的许可票据Tickettgs解密,并核查解密后的信息,检查票据有效期Times和新鲜数Nonce2,核定该票据是否过期;比较票据中的用户信息与收到的数据包中的用户鉴别信息是否一致,确定用户是否为合法用户,如用户合法,发放访问应用服务器的许可票据Tickets。用户鉴别信息Authenticationc1由用户C与TGS之间的共享密钥加密Kc,tgs。
 ③C→TGS:{Options,IDs,Times,Nonce2,Tickettgs,Authenticationc1}
Authenticationc1={IDc,TS1}Kc,tgs
 ④TGS→C:{IDc,Tickets,{Kc,s,Times,Nonce2,IDs}Kc,tgs}
Tickets={flags,Kc,s,IDc,ADc,Times}Ks
 (3)客户C据许可票据Tickets访问应用服务器,并进行相互身份验证。客户持许可票据Tickets申请访问应用服务器S,S解密信息(实现客户对应用服务器身份确认),并根据Tickets和用户鉴别信息Authenticationc2,验证用户身份,构建回应信息包。客户产生与应用服务器间会话的子密钥Subkey和序列号seq,来确保信息传输的安全性和信息传输的顺序性。
 ⑤C→S:{Options,ickets,Authenticationc2}
Authenticationc2={IDc,TS2,Subkey,Seq.#}Kc,s
 ⑥S→C:{TS2,Subkey,Seq.#}Kc,s
1.2 Kerberos的安全性分析
 Kerberos协议是目前计算机网络环境中应用最广泛的第三方认证协议,Kerberos协议虽然能够实现身份认证,并提供数据完整性和保密性服务,但却存在着一定的安全缺陷。参考文献[1]、[7]、[8]列举了Kerberos V4协议存在的安全问题,主要有以下几方面:
 (1)口令猜测攻击:Kerberos协议中,AS并不直接验证用户的口令,只是通过用户口令产生的密钥能否解密来判断用户的合法身份,若攻击者捕获该消息,并尝试各种口令解密,如果解密成功,攻击者即可得到用户口令,进而冒充用户身份访问服务器。
 (2)重放攻击:虽然Kerberos V4采用时间戳预防重放攻击,但在时间戳许可的有效时间内,攻击者若把事先准备好的伪造消息发出,服务器就很难判断信息是否是伪造的。
 (3)票据有效期有限:Kerberos V4用8 bit表示票据的有效期,因此其最大有效期约256×5=1 280 min[8]。
 除了以上所描述的缺陷,Kerberos V4还存在消息字节顺序由发送者决定、域间认证不完善、采用非标准的PCBC加密模式、多次使用同一个会话密钥等不足。Kerberos V5在V4的基础上进行了修改,改用了标准的CBC加密模式、对消息字节的发送顺序也作了一定的规定,并且可以设置一些标志位,增加了Nonce保鲜数、机动设置票据时间、用户访问应用服务器时产生子密钥、添加发送消息的序列号等,解决了大部分Kerberos V4存在的问题,但Kerberos V5依然存在口令猜测攻击的致命缺陷。
2 Kerberos协议改进方案
2.1 DESX加密算法

 数据加密标准DES(Data Encryption Standard)是由IBM公司研制的一种分组对称加密算法,自发布以来,DES在各行各业得到广泛应用。DESX算法是RSA数据安全公司对DES算法的改进,它采用白化技术来掩饰输入和输出,除了有DES的56 bit密钥外,DESX还有附加的随机密钥,将总密钥长度扩展到184 bit,即使用3个64 bit的密钥K1、K2和K3对数据块加密,充分保证了数据的安全。DESX加密过程分为3个步骤:(1)使用K2对数据块C做XOR运算;(2)使用K1对上一步结果做DES加密运算;(3)使用K3对第二步的结果进行XOR运算得到密文。即DESKk1,k2,k3(C)=k3?茌Desk1(k2?茌C)(密钥K=k1.k2.k3符号“.”表示级联)[9]。
 与DES和3DES相比,DESX只做了1次DES运算,计算开销和普通DES相当,但密钥长度提高到184 bit,在保证安全性前提下,极大地提高了执行效率,且白化技术迫使攻击者不仅要猜出算法密钥,而且必须猜出1个白化键,因此DESX抵御各种网络攻击的能力更强。
当DESX的密钥K=k1.k2.k3=k1.064.064时,DESX与DES兼容[9]。
2.2 SHA-2函数
 Hash函数可以将任意长的数据映射为定长的Hash码,也称为数据摘要,即h=H(M)。它具有单向性、抗碰撞性等特点,在身份认证、数字签名和完整性检验等方面得到了广泛应用。
 安全散列算法(SHA)是由美国国家标准与技术协会NIST设计发布的安全Hash函数,1995年发布了FIPS180-1,称之为SHA-1;由于SHA-1存在安全隐患,2002年,NIST又发布其修订版FIPS180-2,并称为SHA-2,其中包含3种新的Hash函数,因其Hash值长度分别为256 bit、384 bit和512 bit,故分别称为SHA-256、SHA-384和SHA-512。
 SHA-2是一种迭代结构的Hash函数,它可以把任意长度的输入数据压缩成固定长度的数据摘要。SHA-2不但具有Hash函数抗碰撞性、计算不可逆等特点,且SHA-2的数据分组和摘要信息都比SHA-1大,所以它具有更高的安全性[10],其在信息安全领域的应用也越来越多。
2.3 建议的Kerberos协议改进方案
 通过1.2节对Kerberos协议安全性的分析,对Kerberos协议的改进主要从以下几个方面进行:
 (1)针对加密算法,原Kerberos协议采用的DES算法密钥较短、强度较弱、存在互补对称性等缺陷,建议Kerberos协议以184 bit密钥的DESX算法对数据进行加密,提高了Kerberos协议的安全性。
 (2)针对口令猜测攻击,取消认证过程中的直接口令认证,改为采用SHA-2函数计算的多参数密钥认证, 并在数据通信过程中多次实现对用户的身份确认。
建议的Kerberos协议模型与原Kerberos协议模型相似,认证过程中每个阶段的修改主要有以下几点:
 (1)CAS,客户C请求认证服务器AS发放访问票据授权服务器TGS的许可票据Tickettgs。
客户C发送认证信息给认证服务器,认证服务器收到信息后反馈一个密钥Kc加密的信息及票据Tickettgs,客户收到信息后,输入口令Passwork作为解密密钥Kc。在原Kerberos协议中,密钥Kc即用户口令Password,而建议的Kerberos协议中密钥采用SHA-2函数计算得到,即:
 Kc=Hash(Password+用户信息+Times)
 Password是用户在系统中注册的口令信息,KDC认证数据库中仅存储用户Password,认证服务器在需要使用Kc加密数据时,通过Hash函数计算得到Kc;用户信息关于用户的一些信息,也可以是IDc或ADc等;Times为客户在请求票据中设置的时间,包括票据的起始时间、到期时间和到期时间的更新时间。
 (2)C TGS客户C访问TGS获得访问应用服务器S的服务许可票据Tickets。
客户收到Ktgs加密的票据Tickettgs,同IDc、Times、Authenticationc1等信息一起发送到票据授权服务器TGS,其中用户鉴别信息Authenticationc1的作用是验证用户所持票据的真实性,确保票据是被拥有者所持有。但是如果攻击者捕获该票据,并冒用IDc从另一个工作站上发送消息,会误导票据授权服务器TGS授权给攻击者。所以建议的Kerberos协议在Authenticationc1中添加用户身份信息,确保信息发送者是服务器授权的用户身份。
 Authenticationc1={IDc,ADc,TS1}Kc,tgs
 (3)S C,客户C访问应用服务器S,并实现C和S的双向身份认证。
客户通过与应用服务器间会话的子密钥Subkey和序列号Seq来确保信息传输的安全性和顺序性。客户持授权票据Tickets访问应用服务器S,应用服务器通过客户所持票据Tickets对其身份进行认证,同时在用户鉴别信息Authenticationc2中添加用户信息ADc,防止攻击者冒充客户身份,实现应用服务器和客户的双向确认。
Authenticationc2={IDc,ADc,TS2,Subkey,Seq.#}Kc,s
2.4 改进的Kerberos协议分析
 (1)加密算法的改进
 在建议的Kerberos方案中采用DESX加密算法,DESX算法是为了克服DES算法容易受到口令猜测攻击而提出的改进加密算法,它采用当前密码学中流行的级联密码和白化技术,将密钥长度扩展到184 bit,其密钥K2、K3被称为白化键,它采用混合计算排列的输入和输出来掩盖密钥[9]。因此采用DESX加密算法的Kerberos协议安全性更强。
 (2)口令猜测攻击
 在原Kerberos协议中,认证服务器通过用户是否能解密信息来判断用户的合法身份,且用户密钥是预先存储在AS中的不变的用户信息,由于通常用户所选择的密码比较简单或具有明显的特征,极易遭到口令猜测攻击。而建议的Kerberos方案中,用户密钥是通过多参数的Hash函数计算而来,且每次用户认证时,密钥会随当时认证时间、参数等信息不同而不同,由于Hash函数的不可逆性,攻击者通过口令猜测攻击能得到是不可能实现的。
 (3)重放攻击
 Kerberos V4协议中,在时间戳允许的范围内,攻击者可以把事先准备好的伪造消息发出,进行重放攻击。在建议的Kerberos方案中不仅设置了时间戳TS、生存期Times和保鲜数Nonce,并且在认证过程中协商产生序列号Seq,杜绝了重放攻击的发生。另外在与TGS和AS的交互过程中,鉴别信息Authenticationc1和Authenticationc2中添加用户身份信息ADc,防止攻击者冒充客户身份访问服务器,更加强了对重放攻击的预防。
 (4)用户身份确认

 


 在建议的Kerberos协议的实现过程中,每个阶段都对用户的身份进行确认,第一次,通过密钥解密信息来确认用户身份,第二次和第三次分别是客户与TGS和AS交互过程中,通过在加密了的鉴别信息Authenticationc1和Authenticationc2中添加用户身份信息ADc,实现对用户身份的确认,保障认证过程中每个阶段对客户身份的鉴别,防止攻击者冒充客户身份。
 建议的Kerberos改进方案采用DESX作为加密算法,DESX算法的计算开销和普通DES相当,且协议认证过程仅需执行一次Hash计算,因此在协议实现复杂度与加解密速度上,较参考文献[1]、[2]、[3]、[4]、[5]提议的Kerberos改进方案[11-12],存在明显的改善。
 本文详细分析了Kerberos认证协议,并针对Kerberos协议存在的安全隐患,提出了一种基于DESX加密算法和SHA-2函数的Kerberos改进方案。通过分析比较,建议的Kerberos改进方案弥补了原Kerberos协议存在的口令猜测攻击和重放攻击等缺陷,提高了协议认证过程的安全性,加强了协议认证过程中各阶段对客户身份的鉴别,有效防范了攻击者冒充客户身份,并且建议的协议方案与原协议实现模型类似,在Kerberos协议逐渐淘汰DES加密算法的过程中,具有很好的实用意义。
参考文献
[1] RAVI GANESAN. Yaksha: Augmenting Kerberos with Public Key Cryptography[J]. Network and Distributed System Security, 1995(6):132-143.
[2] 卢小良,袁丁.对一种基于动态密码体制的Kerberos协议的改进[J].四川师范大学学报,2006,29(2):239-242.
[3] 张健,戴威岭,郝善勇.基于椭圆曲线的零知识证明方法对Kerberos系统的改进[J].计算机工程,2002,28(10):143-144.
[4] 胡宇,王世伦.基于混合体制的Kerberos身份认证协议的研究[J].计算机应用,2009,29(6):1659-1661.
[5] 文铁华,谷士文.增强Kerberos协议安全性的改进方案[J].通信学报,2004,25(6):76-79.
[6] FREDERICK BUTLER, ILIANO CERVESATOB, AARON D. Jaggardc, Andre Scedrovd, Christopher Walstadd, Formal analysis of Kerberos 5[J]. Theoretical Computer Science,2006:57-87.
[7] STEVEN M. BELLOVIN, MICHAEL MERRITT. Limitations of the Kerberos Authentication System[J]. http://hdl.handle.net/10022/AC:P:9123,1999.
[8] 周倜,王巾盈,李梦君,等.Kerberos协议版本的分析与比较[J].计算机学报,2009,36(2):119-123.
[9] JOE KILIAN. How to Protect DES Against Exhaustive Key Search (an Analysis of DESX)[J]. Journal of Cryptology,2001(14):1,17-35.
[10] CHU HSING LIN, YI SHIUNG YEH, HUNG SHENG CHIEN, et al. Generalized secure hash algorithm: SHA-X[J].International Conference on Computer as a Tool (EUROCON), IEEE, 2011:27-29.
[11] 莫燕,张玉清,李学干.对Kerberos协议的攻击及对策研究[J].计算机工程,2005,30(10):66-69.
[12] NEUMAN,  KERBEROS B C. An authentication service for computer networks[J]. Communications Magazine,IEEE.1994,32(9):33-38.

此内容为AET网站原创,未经授权禁止转载。