投递文章投递文章 投稿指南投稿指南 RSS订阅RSS订阅

Windows 2000的分布式安全协议

来源:iT堂整理 发布时间:2008-01-06 收藏 投稿 字体:【

摘要  本文介绍了Windows 2000中分布式安全协议—Kerberos,包括它实现的安全服务:身份认证,数据的完整性和保密性,以及代理。
关键词  Windows 2000,Kerberos, 身份认证,完整性,保密性,代理

Abstract  This paper introduces the protocol – Kerberos for distributed security in Windows 2000, including authentication, data integrity and privacy, delegation.
Keywords  Windows 2000, authentication, data integrity and privacy, delegation

在Windows NT 4.0中,主要的分布式安全协议是NTLM(Windows NT LAN Manager)。而在Windows 2000里,微软采用了一个新的安全系统。在这个新的安全系统中,Kerberos是缺省的分布式安全协议。当然,Windows 2000 仍然支持NTLM以及SSL协议。
Kerberos
 Kerberos是在80年代早期由MIT创建的,当前最新的Kerberos版本是5.0。Windows 2000实现标准的kerberos协议。在Windows 2000:kerberos是以SSP(Security Service Provider)的方式通过SSPI(Security Service Provider Interface) 来实现的。应用程序可以直接通过SSPI来获得Kerberos的服务。实际上,SSL的大多数应用程序都不会直接利用SSPI不过,有一些应用程序是直接调用SSPI,例如图一所示,一个分布式的COM(DCOM)或COM+是利用DCOM提供的安全接口(在图中没有显示出来,实际上,DCOM是利用认证过的RPC接口,而该接口是直接调用SSPI)。除此以外,大多数协议是把SSPI的实现细节封装起来。因此,用户没有必要担心实现分布式安全性的具体实现细节。

SSPI
SSPI

 Kerberos SSP能够提供三种安全性服务(认证:进行身份验证;数据完整性:保证数据在传送过程中不被篡改;数据保密性:保证数据在传送过程中不被获取)。Kerberos是通过加密来实现这些服务。Windows 2000提供公钥和私钥加密。在私钥加密加密中,加密和解密的密钥是相同的。Kerberos不需要它的用户(一个安全实体)用一个特别的加密密钥,而只要使用一个一般的密码。在Windows 2000中,密码不会直接用来加密用户和服务器之间传送的数据。事实上,那些基于密码的密钥仅在登录时有用。而其它用来加密在网络上传送的数据的密钥都是动态生成的。准确的说,用户用来登录的密钥是用户密码的散列值。由于散列算法是单向的,因此,给定一个密码的散列值是无法获得密码的。在Windows 2000里,每一个用户都拥有密码,而访问服务器都会要求认证用户的密码。域中任何一个拥有密码的实体称为一个安全实体。运行在域控制器上的Kerberos服务器本身称为密钥分发中心(KDC)。域控制器拥有访问这个域内每一个安全实体密码的散列值的权限(这些信息是放在实体的活动目录中,也放在域控制器上。通常明文密码是不放在这个目录下的,而仅仅是密码的hash值)。不过,为了保持密码的同步,一个管理员可以同时在这个目录下存放用户的明文密码及其散列值。
 由于每一个实体的密码信息都是以最高级别的安全性进行存放,因此,域控制器做为域中最重要的组成部分,必需保证其安全性。
Kerberos协议允许对加密算法进行协商,大多数Kerberos是通过DES算法来实现的,考虑到兼容性, Windows 2000采用的是RC4的算法,RC4算法具有比DES运算更快,而且更安全的优点。
认证
 当用户要向服务器证实自己的身份时,这个用户必须向服务器提供一个适当的TICKET。每一个TICKET允许一个特定的用户向一个特定的服务器证实自己的身份。下图是一个TICKET的结构。TICKET包括加密部分和未加密部分。
其中,未加密部分包括:
1) 这个TICKET是由哪一个Windows 2000的域发出来的
2) 该TICKET定义的实体名字。
加密部分包括:
1)  各种标志
2) 一个加密密钥,通常是指一个会话密钥,即用来加密该TICKET中指明的用户和该t icket的目的服务器之间的数据。
3)  加密后用户实体名字和域名。
4)TICKET的有效生存周期
5)  用户系统的IP地址
6)  用户认证数据,通常是服务器用来确定该用户的存取权限。
7)  其它部分
所有这些部分都被服务器方的密钥加密,不论是用户,还是攻击者都无法修改或获得TICKET中的加密部分。因为他们没有服务器方的密钥。每一个TICKET都有其生存周期,也就是说攻击者只有有限的时间来破译TICKET。这就使的攻击变的更加困难,而且一个被盗用的TICKET也只能使用到它的终止时间。在用户登录以后,Windows 2000会自动更新用户的TICKET.
当一个用户要向一个服务器证实他的身份时,他必须获得一张到该服务器的TICKET。而Kerberos 就是用来获取和使用TICKET。在进一步说明协议的工作原理之前,先说明下面将要用的符号:
Kx:X的密钥(密码的散列值)其中X可以是客户(C), 服务器(S),或KDC(K).
{…}X:用X的私钥加密.
{T}Ks:用Server S的私钥加密的TICKET.
Kx,y:X和Y之间的会话密钥.
{…}Kx,y:用X和Y之间的会话密钥
用户登录到Windows 2000的域是用户第一次要求Kerberos的TICKET,从用户的角度来看,这个过程是简单的,即输入登录的名字,域名和密码,然后就是等待登录的结果。而实际上是不这么简单的。

加密

Request TGT

Return TGT
  

最新评论:
评论内容:请自觉遵守互联网相关政策法规。
用户名: 密码: 匿名 注册
热门文章
随机推荐
About iTtang - 联系方法  - 专题列表 - 友情链接  -  高级搜索   -  帮助中心  -