Kerberos系统的分析和改进方案
发布: 2006-4-19 17:54 | 作者: Allan | 来源: 《深圳赛佛莱特科技有限公司》技术版
学号:19980013 姓名:陶有东 系别:信息中心
Kerberos系统的分析和改进方案
[文章摘要] 本文首先介绍了Kerberos的认证过程,特别是分析了Kerberos认证协议的局限性。然后采用了RSA加密算法的一种Yaksha改进算法,介绍了一个公钥密码认证协议。这种协议由用户验证自己产生的时间戳,这样就解决了时间同步的问题,并且克服了Kerberos的某些局限性。
[关键字] 信息安全,认证系统
一.Kerberos的认证方案分析
1.Kerberos的认证方案
认证是验证通信对象是原定的那位而不是冒名顶替者的技术。到目前为止,人们提出
许多认证协议。其中最常用的一种认证协议是Kerberos。它是基于Needham-Schroeder协议的变形,最初是MIT为Athena项目开发的,采用了对称密码体制。
Kerberos认证系统包括一系列的服务。除了客户工作站Alice以外,Kerberos还包括三个服务器:
认证服务器(AS),用于在登录时验证用户的身份;
授予许可证服务器(TGS),发放“身份证明许可证”;
服务器(Bob),Alice请求工作的实际执行者。
其中,AS与KDC类似,它与每个用户共享一个秘密口令。TGS的工作是发放许可证,用来使真正的服务器相信TGS许可证的持有人确实是它们所自称的本人。Kerberos的工作模型如下:
a). AAS: A, TGS, TEXP, N
b).ASA : KA[KS, TGS, TEXP, N], KTGS[ A, KS]
c).ATGS: KS[ TS ], KTGS[ A, KS] , B , TEXP, N
d).TGSA: KS[ KAB, B, TEXP, N], KB [A,KAB ]
e).AB : KAB[TS ], KB[ A,KAB]
f).BA: KAB[TS+1]
注:TEXP是验证的最后时间期限,N是一个随机数,
KA ,KB分别为A,B和AS所共享的密钥,
KTGS是TGS的密钥,KAB是A和B的会话密钥,KS是A与TGS的共享密钥,
TS是AS盖的时间印戳。
其中,AS签发的TGS许可证是KTGS[ A, KS];而TGS签发的服务许可证为KB [A,KAB ]。
为了开始一次对话,Alice在任意一台工作站前坐下,键入自己的名字。工作站把她的名字以明文形式传到AS。然后,发回一个会话密钥和一个用于TGS的许可证KTGS[ A, KS]。当第二条消息到达时,工作站才问Alice要口令。该口令用来生成KA,以便解密第二条消息,得到会话密钥和TGS许可证。这时,工作站覆盖Alice的密码,以保证它在工作站内最多存在几毫秒。登录后,Alice发送第三条消息给TGS,申请使用Bob的许可证。TGS回送一个会话密钥KAB ,供Alice和Bob使用。现在,Alice可以发送KAB 给Bob,和他建立一次对话。回答证明Alice确实在和Bob通话。
2.Kerberos的局限性
Kerberos的设计是与MIT校园环境结合的产物,把它推广到分布式系统存在一些局限性。
第一,原有的认证很可能被存储或被替换,虽然时间戳是专门用于防治重放攻击的,但在许可证的有效时间内仍然可能奏效,假设在一个Kerberos服务域内的全部时钟保持同步,收到消息的时间在规定的范围内(一般可以规定t=5分钟),就认为该消息是新的。而事实上,攻击者可以事先把伪造的消息准备好,一旦得到许可证就马上发出,这在5分钟内是难以检查出来的。
第二,认证码的正确性是基于网络中所有的时钟保持同步,如果主机的事件发生错误,原来的认证码就是可以被替换的,大多数网络的时间协议都是不安全的,而在分布式系统中这将导致极为严重的问题。
第三,Kerberos防止口令猜测攻击的能力很弱,攻击者可以收集大量的许可证,通过计算和密钥分析进行口令猜测。当用户选择的口令不够强时,更不能有效的防止口令猜测攻击。
第四,实际上,最严重的攻击是恶意软件攻击。Kerberos认证协议依赖于Kerberos软件的绝对可信,而攻击者可以用执行Kerberos协议和纪录用户口令的软件来代替所有用户的Kerberos软件,达到攻击目的。一般而言,装在不安全计算机内的密码软件都会面临这一问题。
另外,在分布式系统中,认证中心星罗棋布,域间会话密钥的数量惊人,密钥的管理、分配、存储都是很严峻的问题。
二.改进的认证协议
尽管Kerberos有其自身的局限性和弱点,但是它的设计思想是值得深入探讨的。一个新的认证协议就是在其基础上采用公钥算法得到的。系统中,由用户自己产生的时间戳来代替一次性使用的随机数来解决时间同步问题,从而有效的防止重放攻击。该系统与Kerberos一样需要第三方参与,并且认为第三方是可信赖的。第三方包括密钥分配中心KDC和认证服务中心AS。KDC、AS和用户各有一公钥、私钥对,密钥由各方自己准备,公钥向外公开,PM表示M的公钥,SM表示M的私钥。
(1) Yaksha算法
Yaksha算法是RSA公钥密码算法的一种变形。Yaksha与RSA一样以(ea,na)作为公钥,与RSA不同之处在于,Yaksha要求两个不同的私钥:用户的私钥daa,Yaksha服务器的私钥day,这两个新的私钥与原来的RSA私钥da有关,即daa*day=da mod na 。Yaksha算法中,每个用户i有自己的dii,同时Yaksha服务器保留相应的diy,并且两者不能互相推知。新的认证算法中AS作为Yaksha服务器,( ei,ni )表示Yaksha公钥,用户的Yaksha私钥用dii表示,diy表示传给Yaksha服务器的密钥。
(2) 认证算法
用户首先向KDC发出联网申请,提交认证服务中心的名字和自己的公钥,KDC验证其合法性后,向用户发送Yaksha公钥、私钥、有效期、用户身份代号等信息,同时将相应的Yaksha公钥、服务器私钥等信息发给AS,用户得到证书解密后得到信息后,向AS递交证书、身份代号、KDC等来证明身份。
0) AKDC: AS, A, EPA
a) KDC A: E SKDC [ A, ( ea,na ), TEXP, E PA[daa] ]
b) KDC AS: E PAS [A, ( ea,na ), TEXP, day]
c) A AS: A, KDC, E SKDC [ A, ( ea,na ), TEXP, E PA[daa] ]
任何人都可以用KDC的公钥验证证书,但是没有KDC的私钥不能伪造或篡改证书。这样的初始化协议完成了用户在AS的注册,并获得了实时认证用的Yaksha的密钥。
下面是实时认证阶段:
d) A B: A ,(TA,B)daa mod na
e) B AS: (TA,B)daa mod na ,(TB,A)dbb mod nb ,B
f) AS A: (B,TB,TA ,KAB)day *ea mod na
g) AS B: (A,TA,TB ,KAB)dby *eb mod nb
h) A B: Kab[TB]
i) B A: Kab[TA]
TA 、TB 分别是A,B根据自己的时钟加盖的纪元时间,为了防止已知明文攻击,TA 、TB 应该是时间的函数。
首先,A把B的名字等消息加盖时间戳TA 并用daa加密送至B。B收到后由明文A知道是A发的消息,但是B并不知道day,无法了解消息内容,更不能伪造或篡改。B把A传来的消息传送给AS,并将A的名字加盖时间戳TB用dbb 加密送至AS。AS解密B发过来的消息后,将A,B的会话密钥KAB分别用Yaksha私钥加密送至A,B。因为只有当A,B拥有的Yaksha私钥与AS的Yaksha相应时,A,B才能解密AS发过来的消息,所以此过程完成对A,B的认证。然后,A解密AS发过来的消息得到时间戳TA 后验证TA 中的时间是否在当前允许的范围内,并与自己发送的消息时间相符。验证通过后,A将TB 用KAB 加密后发给B,对B进行验证。B解密AS发过来的消息得到时间戳TB 后验证TB 中的时间的正确性。验证通过后,B将TA 用KAB 加密后发给A,对A进行验证。
这种认证的方法是在Kerberos的基础上采用了Yaksha算法的思想,克服了Kerberos的某些缺陷,联网时不使用口令,提高了安全性;在认证过程中,由用户对自己加盖的时间戳进行验证,解决了Kerberos的时间同步的问题,并有效的防止了重放攻击。但是,采用RSA公钥加密算法要比单钥加密速度慢一些。
参考文献:
1.计算机网络,第三版(Computer Networks, third edition) Andrew S. Tanenbaum
2. 网络和分布式系统中的认证, 《计算机研究与发展》1998.10 孙晓蓉, 徐春光, 王育民
3. Limitation of the Kerberos Authentication System , ACM SIGCOMM Computer Commuication Review ,1990,20(5):119-132, Bellovin S M, Merritt M.
4.The Yaksha Security System, Communications of the ACM, 1996,39(3) :55-60 Ganesan R.
Kerberos系统的分析和改进方案
[文章摘要] 本文首先介绍了Kerberos的认证过程,特别是分析了Kerberos认证协议的局限性。然后采用了RSA加密算法的一种Yaksha改进算法,介绍了一个公钥密码认证协议。这种协议由用户验证自己产生的时间戳,这样就解决了时间同步的问题,并且克服了Kerberos的某些局限性。
[关键字] 信息安全,认证系统
一.Kerberos的认证方案分析
1.Kerberos的认证方案
认证是验证通信对象是原定的那位而不是冒名顶替者的技术。到目前为止,人们提出
许多认证协议。其中最常用的一种认证协议是Kerberos。它是基于Needham-Schroeder协议的变形,最初是MIT为Athena项目开发的,采用了对称密码体制。
Kerberos认证系统包括一系列的服务。除了客户工作站Alice以外,Kerberos还包括三个服务器:
认证服务器(AS),用于在登录时验证用户的身份;
授予许可证服务器(TGS),发放“身份证明许可证”;
服务器(Bob),Alice请求工作的实际执行者。
其中,AS与KDC类似,它与每个用户共享一个秘密口令。TGS的工作是发放许可证,用来使真正的服务器相信TGS许可证的持有人确实是它们所自称的本人。Kerberos的工作模型如下:
a). AAS: A, TGS, TEXP, N
b).ASA : KA[KS, TGS, TEXP, N], KTGS[ A, KS]
c).ATGS: KS[ TS ], KTGS[ A, KS] , B , TEXP, N
d).TGSA: KS[ KAB, B, TEXP, N], KB [A,KAB ]
e).AB : KAB[TS ], KB[ A,KAB]
f).BA: KAB[TS+1]
注:TEXP是验证的最后时间期限,N是一个随机数,
KA ,KB分别为A,B和AS所共享的密钥,
KTGS是TGS的密钥,KAB是A和B的会话密钥,KS是A与TGS的共享密钥,
TS是AS盖的时间印戳。
其中,AS签发的TGS许可证是KTGS[ A, KS];而TGS签发的服务许可证为KB [A,KAB ]。
为了开始一次对话,Alice在任意一台工作站前坐下,键入自己的名字。工作站把她的名字以明文形式传到AS。然后,发回一个会话密钥和一个用于TGS的许可证KTGS[ A, KS]。当第二条消息到达时,工作站才问Alice要口令。该口令用来生成KA,以便解密第二条消息,得到会话密钥和TGS许可证。这时,工作站覆盖Alice的密码,以保证它在工作站内最多存在几毫秒。登录后,Alice发送第三条消息给TGS,申请使用Bob的许可证。TGS回送一个会话密钥KAB ,供Alice和Bob使用。现在,Alice可以发送KAB 给Bob,和他建立一次对话。回答证明Alice确实在和Bob通话。
2.Kerberos的局限性
Kerberos的设计是与MIT校园环境结合的产物,把它推广到分布式系统存在一些局限性。
第一,原有的认证很可能被存储或被替换,虽然时间戳是专门用于防治重放攻击的,但在许可证的有效时间内仍然可能奏效,假设在一个Kerberos服务域内的全部时钟保持同步,收到消息的时间在规定的范围内(一般可以规定t=5分钟),就认为该消息是新的。而事实上,攻击者可以事先把伪造的消息准备好,一旦得到许可证就马上发出,这在5分钟内是难以检查出来的。
第二,认证码的正确性是基于网络中所有的时钟保持同步,如果主机的事件发生错误,原来的认证码就是可以被替换的,大多数网络的时间协议都是不安全的,而在分布式系统中这将导致极为严重的问题。
第三,Kerberos防止口令猜测攻击的能力很弱,攻击者可以收集大量的许可证,通过计算和密钥分析进行口令猜测。当用户选择的口令不够强时,更不能有效的防止口令猜测攻击。
第四,实际上,最严重的攻击是恶意软件攻击。Kerberos认证协议依赖于Kerberos软件的绝对可信,而攻击者可以用执行Kerberos协议和纪录用户口令的软件来代替所有用户的Kerberos软件,达到攻击目的。一般而言,装在不安全计算机内的密码软件都会面临这一问题。
另外,在分布式系统中,认证中心星罗棋布,域间会话密钥的数量惊人,密钥的管理、分配、存储都是很严峻的问题。
二.改进的认证协议
尽管Kerberos有其自身的局限性和弱点,但是它的设计思想是值得深入探讨的。一个新的认证协议就是在其基础上采用公钥算法得到的。系统中,由用户自己产生的时间戳来代替一次性使用的随机数来解决时间同步问题,从而有效的防止重放攻击。该系统与Kerberos一样需要第三方参与,并且认为第三方是可信赖的。第三方包括密钥分配中心KDC和认证服务中心AS。KDC、AS和用户各有一公钥、私钥对,密钥由各方自己准备,公钥向外公开,PM表示M的公钥,SM表示M的私钥。
(1) Yaksha算法
Yaksha算法是RSA公钥密码算法的一种变形。Yaksha与RSA一样以(ea,na)作为公钥,与RSA不同之处在于,Yaksha要求两个不同的私钥:用户的私钥daa,Yaksha服务器的私钥day,这两个新的私钥与原来的RSA私钥da有关,即daa*day=da mod na 。Yaksha算法中,每个用户i有自己的dii,同时Yaksha服务器保留相应的diy,并且两者不能互相推知。新的认证算法中AS作为Yaksha服务器,( ei,ni )表示Yaksha公钥,用户的Yaksha私钥用dii表示,diy表示传给Yaksha服务器的密钥。
(2) 认证算法
用户首先向KDC发出联网申请,提交认证服务中心的名字和自己的公钥,KDC验证其合法性后,向用户发送Yaksha公钥、私钥、有效期、用户身份代号等信息,同时将相应的Yaksha公钥、服务器私钥等信息发给AS,用户得到证书解密后得到信息后,向AS递交证书、身份代号、KDC等来证明身份。
0) AKDC: AS, A, EPA
a) KDC A: E SKDC [ A, ( ea,na ), TEXP, E PA[daa] ]
b) KDC AS: E PAS [A, ( ea,na ), TEXP, day]
c) A AS: A, KDC, E SKDC [ A, ( ea,na ), TEXP, E PA[daa] ]
任何人都可以用KDC的公钥验证证书,但是没有KDC的私钥不能伪造或篡改证书。这样的初始化协议完成了用户在AS的注册,并获得了实时认证用的Yaksha的密钥。
下面是实时认证阶段:
d) A B: A ,(TA,B)daa mod na
e) B AS: (TA,B)daa mod na ,(TB,A)dbb mod nb ,B
f) AS A: (B,TB,TA ,KAB)day *ea mod na
g) AS B: (A,TA,TB ,KAB)dby *eb mod nb
h) A B: Kab[TB]
i) B A: Kab[TA]
TA 、TB 分别是A,B根据自己的时钟加盖的纪元时间,为了防止已知明文攻击,TA 、TB 应该是时间的函数。
首先,A把B的名字等消息加盖时间戳TA 并用daa加密送至B。B收到后由明文A知道是A发的消息,但是B并不知道day,无法了解消息内容,更不能伪造或篡改。B把A传来的消息传送给AS,并将A的名字加盖时间戳TB用dbb 加密送至AS。AS解密B发过来的消息后,将A,B的会话密钥KAB分别用Yaksha私钥加密送至A,B。因为只有当A,B拥有的Yaksha私钥与AS的Yaksha相应时,A,B才能解密AS发过来的消息,所以此过程完成对A,B的认证。然后,A解密AS发过来的消息得到时间戳TA 后验证TA 中的时间是否在当前允许的范围内,并与自己发送的消息时间相符。验证通过后,A将TB 用KAB 加密后发给B,对B进行验证。B解密AS发过来的消息得到时间戳TB 后验证TB 中的时间的正确性。验证通过后,B将TA 用KAB 加密后发给A,对A进行验证。
这种认证的方法是在Kerberos的基础上采用了Yaksha算法的思想,克服了Kerberos的某些缺陷,联网时不使用口令,提高了安全性;在认证过程中,由用户对自己加盖的时间戳进行验证,解决了Kerberos的时间同步的问题,并有效的防止了重放攻击。但是,采用RSA公钥加密算法要比单钥加密速度慢一些。
参考文献:
1.计算机网络,第三版(Computer Networks, third edition) Andrew S. Tanenbaum
2. 网络和分布式系统中的认证, 《计算机研究与发展》1998.10 孙晓蓉, 徐春光, 王育民
3. Limitation of the Kerberos Authentication System , ACM SIGCOMM Computer Commuication Review ,1990,20(5):119-132, Bellovin S M, Merritt M.
4.The Yaksha Security System, Communications of the ACM, 1996,39(3) :55-60 Ganesan R.