新闻详情
基于Kerberos协议网络身份认证的改进方法
来源:本站 作者:匿名 发布:2014/4/11 栏目:学校新闻 点击:3604
基于Kerberos协议网络身份认证的改进方法
胡建伟
(河南省南阳工业学校 河南 南阳 473035)
摘 要:分析了Kerberos协议的原理与机制,讨论了Kerberos协议的局限性(如口令猜测问题、时间同步问题等),通过对这些问题的研究,并提供了一个企业网的身份认证系统的改进和实现方法。
关键词:计算机网络 网络协议 安全认证 Kerberos协议
1、问题的提出:现有的许多企业网络系统或是单纯出于方便用户使用,或是没有经过认真、充分的理论论证,都或多或少地存在这样或那样的安全隐患,致使网络易被内部用户非法访问、受外部黑客攻击和其他不轨行为的侵扰,并且恶性攻击的损失也越来越大。基于这些原因,ISO公布的基于OSI参考模型上的“信息安全体系结构”(1989年)较完整地定义了五大类安全服务(认证+访问控制+保密性+完整性+抗否认性),其中的身份认证服务可以说是整个安全系统的重点和难点所在,它不仅有信源识别的基本作用,而且有验证信息完整性的副作用。建立一个较理想的身份认证系统,这一直是人们关心的热点。
Kerberos实现了应用服务器和客户之间的双向的身份认证,极大地提高了系统的安全性,而成为当今社会中广泛应用的一种认证协议。本文主要对Kerberos协议进行研究,试图对其改进并实现企业网的身份认证系统,进一步提高企业网络的安全性能。
2、Kerberos协议的分析
2.1 Kerberos协议的认证过程
Kerberos是一种典型的常用的用于客户机和服务器认证的私钥认证体系协议,其一大优点就是使用方便、易于实施。它是MIT(美国麻省理工学院)的Athena计划的一个部分,原义为希腊神话中守护地狱之门的一只凶猛的三头狗,意喻该协议具有及其强大的安全性能。在此我们只涉及该协议的认证(Authentication)部分。
出于对用户实现和安全分析的考虑,Kerberos的认证中心服务任务被分配到两个 相对独立的服务器——AS(认证服务器,它同时应该连接并维护一个中央数据库存放用户口令、标识等重要信息)和TGS(Ticket Granting Server)。因此整个系统将由四部分组成:AS,TGS,Client,Server。
Kerberos的主要认证模型如图1所示:
图1 Kerberos协议认证模型
在下述认证过程中,使用以下的记号:
·IDtgs=TGS的身份码;
·Ktgs=AS与TGS共享密钥;
·Ks=TGS与S共享密钥;
·Kc,tgs=C与TGS共享密钥;
·Kc,s=C与S共享密钥;
·Kc=AS与C共享密钥;
·Times=时间标志:表明门票开始使用时间、截止使用时间等;
·Nonce=随机数:用于保证信息总是最新的和防止重传攻击;
·Realm=用户C所属的范围;
·Options=用户请求的包含在门票中的特殊标志。
协议具体过程简述如下所示。符号"||"代表连接操作(concatenation)。
(1)如果用户需要某种远程服务,它首先向Kerberos密钥分发中心KDC(KeyDistribution Center)中的认证服务器AS发送报文KER_C_AS_REQ,申请一份同本地票据授权服务器TGS通信的票据TGT。即:
C→AS:KER_C_AS_REQ= Options||IDc|| Realmc||IDtgs||Times||Nonce1
(2)AS确认此用户ID是否在数据库中,若在,则AS产生一个客户端与TGS通信的会话密钥Kc,tgs(即签发许可票据TGT),以用户密钥对其加密,并产生用户相对于TGS的认证信息Tickettgs(以TGS的密钥对其进行加密),所有这些信息一并返回给用户。即:
AS→C:KER_AS_C_RESP= Realmc||IDc||Tickettgs||EKc[ Kc,tgs||Times||Nonce1||IDtgs ]
其中:Tickettgs=EKtgs[ Flags||Kc,tgs || Realmc||IDc||ADc||Times ]。
(3)用户得到消息后,随即向票据授权服务器(TGS)发送与之会话的TGT以及服务申请(报文中含有远端ServerID号、时间戳Times、经过AS鉴别的Tickettgs 及用户产生用来证明票据有效性的Authenticatorc)。即:
C→TGS:KER_C_TGS_REQ=Options||IDs||Times||Nonce2|| Tickettgs ||Authenticatorc
其中:Tickettgs=EKtgs[ Flags||Kc,tgs || Realmc||IDc||ADc||Times ]。
Authenticatorc= Ekc,tgs[ IDc||Realmc||TS1 ]
(4)TGS验证票据并向用户签发服务票据。即:
TGS→C:KER_TGS_C_RESP=Realmc||IDc||Tickets||EKc,tgs[Kc,s||Times||Nonce2|| Realms||
IDs)。
其中:Tickets= EKs [ Flags||Kc,s||Realmc||IDc||ADc||Times ]。
(5)用户向远端Server提交服务票据和自己产生的认证码Authenticatorc ,Server通过比较票据和认证码里的信息来验证可靠性,从而决定是否给予相应的服务。即:
C→S:KER_C_S_REQ= Options|| Tickets || Authenticatoru
其中:Tickets= EKs [ Flags||Kc,s||Realmc||IDc||ADc||Times]
Authenticatoru= EKc,s[ IDc||Realmc||TS2 ||Subkey||Seq# ]
Subkey和Seq#均为可选项。Subkey为子密钥,用户可指定此次会话的密钥,若省略,则会话密钥为Kc,s。Seq为本次会话指定的起始序列号,以防止重传攻击。
(6)如果需要交互认证,远端服务器将向客户端发送一条包含时间戳的消息,并以双方的会话密钥对之加密,客户端收到消息后经解密得到时间戳,若正确,则表明服务器知道自己的私钥,并将消息解密得到了相应的会话密钥,从而证明了自己的身份。即:
S→C:KER_S_C_RESP= EKc,s[ TS2||Subkey||Seq# ]
2.2 Kerberos的局限性
从攻击的角度来看,在上述Kerberos认证过程的分析中,把Kerberos推广到分布式系统的局限性也是比较明显的,大致有以下几个方面:
(1)口令猜测问题:Kerberos认证协议对口令攻击比较脆弱,从Kerberos协议的认证过程来看,AS并不能验证用户的身份,而是基于发回用户的KER_AS_C_RESP报文是用Kc加密的,只有知道Kc的人才能够对之解密,而Kerberos是一种私钥网络认证协议,它是以对称加密算法DES作为协议的基础,这就给密钥的交换、存储和管理带来了安全上的隐患,同时不能提供抗否认认证机制,而Kc和用户的passwd有关。由于很多用户不重视对强口令的选择,入侵者可以通过收集票据来对此解密,如果票据足够多,口令的恢复是可能的。
(2)时间同步问题:整个Kerberos的协议都 严重地依赖于时钟,而实际证明,要求在网络环境中实现良好的时钟同步,是一个很难的课题。但这并不是说Kerberos没有出路可言。我们可以大胆地假定,如果能够实现一种基于安全机制的时间服务,或是研制一种相对独立于计算机和网络环境、且基于一种或几种世界标准时钟的,能够准确进行时间转化和时间服务的联机物理时钟,这种问题将得到较好的解决。
(3)重放攻击的问题:虽然时间戳是专门用于防治重放攻击的,长票的生存期较长,容易被重放攻击;对短票而言,如果攻击者技术高明,任有机会重放攻击,况且攻击者可以着手破坏系统的时钟同步性。假设在一个Kerberos服务域内的全部时钟保持同步收到消息的时间在规定的范围内(一般可以规定t=5分钟),就认为该消息是新的。而事实上,攻击者可以事先把伪造的消息准备好,一旦得到许可证就马上发出,这在5分钟内是难以检查出来的。
(4)认证域之间的信任问题:认证域之间的多级跳跃过程复杂且不明确,相互信任和协调不方便。若各Kerberos区域形成复杂或不规则的网状结构,则要求方便的域间服务,将付出极大的代价,即系统的可扩充性不强。针对这种无序的状况,应有规划有目的地建立起全球一体化的分层(树状)结构,形成良好的信任链条。
(5)密钥的存储问题:Kerberos认证中心要求保存大量的共享私钥,无论是管理还是更新都有很大的困难,需要特别细致的安全保护措施(甚至应采用硬件/物理方法),将付出极大的系统代价。
3、Kerberos协议的改进
3.1 基于双因素认证方式的改进
由于在Kerberos系统中用户的口令容易受到口令猜测攻击,因此无法完全保证用户的口令不被非法用户盗用,在这种情况下,如果结合用户必须持有的硬件秘密信息来进行认证,无疑能使用户身份认证的安全性得到充分的保障。
考虑到目前USB接口己经成为计算机设备上的主流接口,因此使用 USB接口设备来作为保存用户秘密信息的载体,是一个相对简单易行的方法。在当前产品中USB Token 是一种利用USB接口与计算机相连的安全设备。一般具有:PIN码保护;安全存储保护;硬件RSA;硬件SHA1,DES等算法及一定的运算能力等。用户USB认证卡集成一定的算法可产生随机数与用户口令(PIN)结合在一起(USB+PIN),便产生了双因素Kerberos认证协议来进行身份认证。
采用基于请求/应答方式的著名的Schnorr身份认证机制Kerberos协议进行改进。
与原Kerberos协议相对照,仅修改了用户和AS之间的交互协议,具体过程如下:
(1)USB认证卡产生随机数γ,其中γ≡gk(mod p),k为U所选择的随机数,0<=k<=q-1。
C→AS:
KER_C_AS_REQ= Options||IDc|| Realmc||IDtgs||Times||Nonce1||γ。
(2)AS产生随机数r,随报文一起发送给用户。
AS→C:KER_AS_C_RESP= Realmc||IDc||Tickettgs||EKc[ Kc,tgs||Times||Nonce1||IDtgs ]||r
在用户端计算s,s≡gr+k (mod q),然后发送给AS服务器值s;
在AS上计算并验证:γ≡gs•vr(mod p)
(3)C→TGS:KER_C_TGS_REQ=Options||IDs||Times||Nonce2|| Tickettgs ||Authenticatorc
(4)TGS→C:KER_TGS_C_RESP=Realmc||IDc||Tickets||EKc,tgs[Kc,s||Times||Nonce2|| Realms||IDs]。
(5)C→S:KER_C_S_REQ= Options|| Tickets || Authenticatoru
(6)S→C:KER_S_C_RESP= EKc,s[ TS2||Subkey||Seq# ]
从上可以看出过程(3)~(6)是与原Kerberos协议相同的。
本方案的优点:
(1)即使通行字被攻击者截获也难以使用
(2)用户需要送PIN(只有持卡人才知道),因此,即使智能卡被盗也难以使用卡进行违法活动。
3.2 基于椭圆曲线密码体制对Kerberos协议的改进
3.2.1采用私钥密码体制的局限性
在Kerberos协议中用户的密码以明文的形式保存在Kerberos的数据库中,这些密码的管理和使用具有相当的风险,一旦Kerberos服务器的数据库被攻破,所有用户密码都将暴露给攻击者。即使报文在传送过程中,如果收集的票据足够多,口令的恢复是可能的。这种
私钥密码体制的加密密钥和解密密钥相同或者本质上相同(即从其中一个可以很容易地推出另一个),所以密钥管理成为影响系统安全的关键性因素,难于满足开放式计算机网络的需求。
3.2.2公钥(非对称)加密体制
这种体制的加密密钥和解密密钥不相同而且从其中一个很难推出另一个。这样加密密钥可以公开,而解密密钥可由用户自己秘密保存,其典型代表是RSA(Receive, Shamir, Adelman)体制.
公钥加密体制具有以下优点:密钥分配简单;密钥的保存量少;可以满足互不相识的人之间进行私人谈话时的保密性需求;可以完成数字签名和数字鉴别。
公钥密码体制的概念是由迪弗尔(Diffie)和赫尔曼(Hellman)于1976年首次提出的。公钥密码体制不同于传统的对称密码体制,它要求密钥成对出现,一个为加密密钥(Ke),一个为解密密钥(Kd),如图2所示。
图2 公钥(非对称)加密体制
在公钥密码体制中,加密密钥Ke是公开的,加密算法E和解密算法D也是公开的,只有解密密钥Kd是需要保密的。虽然Kd是由Ke决定的,但却不能根据后者计算出前者。
公匙加密技术的特点如下:
a、用Ke对明文M加密后,再用Kd解密,即可恢复明文,即D(E(M,Ke),Kd)= M
而且,加密和解密的运算可以对调,即E(D(M,Kd),Ke)= M
b、加密密钥不能用来解密,即D(E(M,Ke),Ke)≠ M
c、计算机可以很容易地产生成对的Ke和Kd。
d、从Ke实际上不能导出Kd。
使用公钥密码技术就可以实现数字签名。发送方A用其不公开的解密密钥Akd对报文M进行运算,将结果D(M,Akd)传给接收方B。B用已知的加密密钥对接收到的内容进行运算,得出结果E(D(M,Akd),Ake) = M。因为除了A以外没有人能拥有A的解密密钥,所以除了A以外就没有人能产生密文D(M,Akd)。这样,就表示报文M被电子签名了。
目前已有大量的数字签名算法,如RSA数字签名算法,ElGamal数字签名算法,Fiat-Shamir数字签名算法,Schnorr数字签名算法,美国的数字签名标准/算法(DSS/DSA),椭圆曲线数字签名算法等。
3.2.3 椭圆曲线密码体制
为了保证RSA算法的安全性,它的密钥长度需要再增大,使得它的运算负担越来越大。相比之下,椭圆曲线密码体制(elliptic curve cryptography)可用短得多的密钥获得同样的安全性,因此具有广泛的应用前景。ECC已被IEEE公钥密码标准P1363采用。
1.椭圆曲线
椭圆曲线并非椭圆,之所以称为椭圆曲线是因为它的曲线方程与计算椭圆周长的方程类似。1985年Miller,Koblitz 独立提出以下形式的三次方程:
y2+axy+by=x3+cx2+dx+e
其中a,b,c,d,e是满足某些简单条件的实数,曲线上的点连同无穷远点O的集合。图3是椭圆曲线的两个例子。
图3 椭圆曲线的两个例子
加法:若曲线三点在一条直线上,则其和为零。
倍数:一个点的两倍是它的切线与曲线的另一个交点。
2.有限域上的椭圆曲线
密码中普遍采用有限域上的椭圆曲线。其中最为常用的是由方程
y2≡x3+ax+b mod p p是奇素数,且4a3+27b2 mod p≠0 定义的曲线。
针对所有的0<= x <p,可以求出有效的y,得到曲线上的点(x,y),其中x,y < p。记为Ep(a,b)
Ep(a,b)中也包括O
3.椭圆曲线的加密解密
选择Ep(a,b)的元素G,使得G的阶n是一个大素数,秘密选择整数r。计算P=rG,公开(p,a,b,G,P),保密r。
加密M:选择随机数k,C={kG,M+kP} 如果k使得kG或者kP为O,则要重新选择k。
解密C:(M+kP)-r(kG)=M+krG-rkG=M
4.椭圆曲线算法
(1)找到一个难题:
考虑等式Q=kP,其中Q、P属于Ep(a,b),k<p
已知k和P,计算Q,是容易的
已知Q和P,计算k,是困难的
(2)选择Ep(a,b)的元素G,使得G的阶n是一个大素数
G的阶是指满足nG=O的最小n值
(3)秘密选择整数r,计算P=rG,然后
公开(p,a,b,G,P),P为公钥
保密r
(4)加密M:先把消息M变换成为Ep(a,b)中一个点Pm
然后,选择随机数k,计算密文Cm=(kG,Pm+kP)
如果k使得kG或者kP为O,则要重新选择k.
(5)解密Cm: (Pm+kP)-r(kG)=Pm+krG-rkG=Pm
5.椭圆曲线密码的安全性
(1)难于从P和kP获得k。
(2)对椭圆曲线研究的时间短
(3)椭圆曲线要求密钥长度短,速度快。
由于椭圆曲线具有丰富的群结构和多选择性,并可在保持和RSA/DSA体制同样安全性能的前提下大大缩短密钥长度(目前160比特足以保证安全性),因而在密码领域有着广阔的应用前景。表1给出了椭圆曲线密码体制和RSA/DSA体制在保持同等安全的条件下各自所需的密钥长度。
表1 ECC和RSA/DSA在保持同等安全的条件下各自所需的密钥长度(单位为比特)
RSA/DSA |
512 |
768 |
1024 |
2048 |
21000 |
ECC |
106 |
132 |
160 |
211 |
600 |
3.2.4 用椭圆曲线密码体制对Kerberos协议的改进
1.设计思想:在对Kerberos协议改进的研究中,始终要保持协议原来的架构,就会保持协议的安全性能。以公钥体制代替私钥体制(对称算法),由于协议和算法是两回事,所以算法的改变不会造成协议架构的变化。这样便可以实现企业网身份认证系统的设计,但公钥加密体制相对于对称加密体制而言,远算复杂性大大增加,加密和解密需要消耗更多的系统资源,降低了加密和解密的速度,因此,有必要寻找一种快速计算的公钥算法。
椭圆曲线算法(ECC)在安全性能、效率、密钥长度、带宽、速度等方面均占有优势。所以我们选择椭圆曲线密码体制对Kerberos协议的改进,从而实现企业网身份认证系统的设计。
根据Kerberos协议的认证过程,如果我们在每次加密过程中都启用ECC算法,并没有必要,而要改进协议可根据认证的具体情况分别采用公开密钥加密算法及私钥加密算法,这样既提高了系统的安全性,又很少影响系统解密的速度。
用椭圆曲线算法,仅修改用户和AS之间的交互协议,便可实现对用户身份的确认。
2.准备工作:为用户C分配一对公钥(pub)和私钥(pri),分别记作C_pub和C_pri,并将C_pub存于认证服务器AS。
3.改进后的认证过程:
(1)C→AS:KER_C_AS_REQ= Options||IDc|| Realmc||IDtgs||Times||Nonce1
(2)AS→C:
KER_AS_C_RESP= Realmc||IDc||Tickettgs||C_pub [ Kc,tgs||Times||Nonce1||IDtgs]
AS服务器用以用户C的公钥C_pub代替EKc,把报文发送给客户端。用户C用私钥C_pri解密报文。
(3)C→TGS:KER_C_TGS_REQ=Options||IDs||Times||Nonce2|| Tickettgs ||Authenticatorc
(4)TGS→C:
KER_TGS_C_RESP=Realmc||IDc||Tickets||EKc,tgs[Kc,s||Times||Nonce2|| Realms||IDs]。
(5)C→S:KER_C_S_REQ= Options|| Tickets || Authenticatoru
(6)S→C:KER_S_C_RESP= EKc,s[ TS2||Subkey||Seq# ]
从以上可以看出仅在第二步用户端的公钥对会话密钥进行加密,有效地防范了对票据的字典攻击,提高了Kerbors认证协议的安全性能,系统的加密解密速度又比较快,因此采用椭圆曲线算法对Kerbors协议进行改进是一种合适的方法。
以上我们对Kerberos协议的改进中采用两种方式一是基于双因素认证方式的改进,一是基于椭圆曲线密码体制对Kerberos协议的改进,前一种需要硬件的支持,而后一种直接用软件就可以实现,我们在企业网身份认证系统中将采用椭圆曲线密码体制。
[参考文献]
[1]侯整风,李岚.椭圆曲线密码系统(ECC)整体算法设计及优化研究.电子学报,2004,32(11):1904~1906
[2]杨武英,魏海平.基于椭圆曲线密码体制的口令认证系统研究.网络安全技术与应用,2005,(4):15~17
[3]莫燕,张玉清,李学干.对Kerberos协议的攻击及对策研究.计算机工程, 2005, 31(10):66~68
上一个新闻:关于中职学校计算机机房管理与维护
下一个新闻:张衡培育出的科技之花国内没有国外香
南阳工业学校相关新闻
- 2024/6/15 家指点春风化雨 高手亮剑拨云见日——南阳工业学校思想政治理论
- 2024/5/26 专家指点春风化雨 高手亮剑拨云见日——南阳工业学校思想政治理
- 2023/6/7 南阳工业学校毕业证领取流程
- 2023/6/7 机电工程系党支部带头拼发展,着力打造“服务有力星”支部
- 2023/4/27 我校获批河南省示范性骨干专业点和示范性特色专业点建设项目
- 2022/8/17 南阳工业学校杜福康喜获一等奖
- 2022/7/2 范长海同志任南阳工业学校党委书记
- 2022/6/29 南阳工业学校学生会活动图片集锦
- 2022/6/27 我校十大优势,报名我校的十大理由