Chinaunix首页 | 论坛 | 博客
  • 博客访问: 143828
  • 博文数量: 16
  • 博客积分: 2059
  • 博客等级: 上尉
  • 技术积分: 285
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-29 09:52
文章分类

全部博文(16)

文章存档

2013年(8)

2012年(1)

2011年(1)

2010年(4)

2009年(1)

2008年(1)

分类: 网络与安全

2013-01-13 00:56:12

当前工作需要在研究kerberos,在网站上看到《Kerberos Protocol Tutorial 》,一边学习一边尝试翻译下来,给也有需要的人。下面是部分。

``````````````````````````````````````````````````````````````````````````````````````````````

1.       介绍

Kerberos协议是设计来在开放,不安全的网路上提供可信的认证,属于这个网路上的主机间的通信会被截获。然而,人们应该意识到Kerberos对那些防护脆弱的计算机不能提供任何保证:因此,认证服务器,应用服务器(例如, IMAP, POP, SMTP, TELNET, FTP, SSH, AFS, LPR,..)和客户端必须保持经常更新,这样发出请求的用户和服务器提供者的真实性才能保证。

 

以上的观点证实了一句话:”Kerberos是为了不可信的网路上的受信主机提供身份认证的协议 通过举例的方式重申下这个概念:如果某人获得了一个Server的访问特权,能拷贝包含密钥的文件,则Kerberos的策略是无用的。事实上,入侵者会把这个Key放到另一台PC上,然后只需获得那个Server的一个简单的欺骗DNS或者IP地址,则对客户端来说它就是一个可信的Server

2.       目标

在描述构成Kerberos身份认证系统的元素和看看它的操作前,先列出这个协议希望达成一些目标:

 

s   用户密码必须从未在网路上传输;

s   用户密码必须从未以任何形式存储在客户机上;它必须在使用后立即丢弃;

s   用户密码必须从未以任何不加密的形式保存在认证Server的数据库里;

s   每个工作会话(work session)用户只被要求输入密码一次。因此在这会话期间,用户能以透明方式(transparently)访问被授权的所用服务器而不必再次输入密码。这个特性叫单点登录(Single Sign-On).

s   认证信息是集中管理,驻留在认证服务器(Authentication Server). 应用服务器不必包含用户的身份认证信息。这对取得厦门的结果是必须的:

*  管理员能够通过在单点位置操作就可以停用任何用户的账号,而不必去提供各种服务的多个应用服务器上做操作;

*  当一个用户更改密码后,同时对所有服务生效;

*  没有身份认证信息的冗余,否则它们必须在不同地方得到安全保障;

s   不仅用户必须证明他就是他说的那个人,而且当被请求时,应用服务器也必须向客户机(Clients)证明它们的真实性。这个特性就是总所周知的双向认证(Mutual authentication;

s   随着认证和授权的结束,如果需要,客户机和服务器必须能够建立加密连接。为了这个目的,Kerberos提供了对加密数据的密钥的生成和交换的支持。

3.       Kerberos组建和术语的定义

这部分是对对象和术语的定义,这些知识对随后的Kerberos协议的描述十分关键。虽然许多定义是基于其他,但不管怎样我尽可能的以这样顺序排列他们,以使在定义术语前,这个术语的含义不会给出。不管怎样,必须阅读这部分

3.1 领域(Realm)

术语:领域就是一个身份认证管理疆域。它的目的是建立这样的边界,在边界内身份认证服务器有权对用户,主机和服务器进行认证。这并不意味必须属于同一领域的用户和服务才能认证: 如果两个对象是互相信任的不同领域的部分,则身份认证也可发生。这个被称为交互认证(Cross-Authentication)的特性将在下面描述。

 

基本上,如果,只有如果一个用户/服务和某个领域的认证服务器共享密钥,则这个用户和服务器属于一个领域。

领域的名称是大小写敏感的,也就是,大写字母和小写字母是不同的,通常情况领域名称总是以大写字母出现。在一个组织中,把领域名称设为和DNS域名(大写字母表示,虽然)相同是很好的实践。当选择领域名称时候遵循这些小技巧能显著的简化Kerberos客户端的配置,当和子域建立信任关系时候它也是所需的。举例说明,如果一个组织属于 example.com这个DNS域,则把相关的Kerberos领域是EXAMPLE.COM是合适的。

3.2 Principal

一个Principal就是用来指向认证服务器数据库中特定条目(entry)的名字。一个Principal和一个给定领域的每个用户,主机和服务相关联。PrincipalKerberos 5是下列式样:

 

组件1/组件2/…/组件N@REALM component1/component2/…/component@REALM

 

然而,在实践中最多用到2个组件。对指向一个用户的条目,Princiapl是下面的式样:

 

名字[/实例]@领域(Name[/Instance]/REALM

 

实例(instance)是可选的,一般是用来更好的限定用户式样。例如管理员用户通常有一个admin实例。下面是所指用户的Principals的例子:

 

pippo@EXAMPLE.COM     admin/admin@EXAMPLE.COM       pluto/admin@EXAMPLE.COM

 

相反,如果条目指向服务,则princials有下列样式:

 

Service/Hostname@REALM

 

第一个组件是服务名,例如IMAP, AFS,ftp. 经常host这个词用来暗指对机器的通用访问(telnet,rsh,ssh)。第二个组件是提供服务的机器的完整主机名(FQDN)。这个组件精确匹配(以小写字母)应用服务器IP地址的DNS反响解析很重要。下面是所指服务的Principals合法样例:

 

imap/mbox.example.com@EXAMPLE.COM

host/server.example.com@EXAMPLE.COM

afs/example.com@EXAMPLE.COM

 

注意最后的情况是个例外因为第二个组件不是一个主机名而是Principal指向的AFS单元名。最后,有些Principals并不指向用户或者服务而是在认证系统的操作中起作用。一个完整的案例就是krbtgt/REALM@REALM和它的关联键是用来加密票据授权的票据(Ticket Granting Ticket=TGT)(我们稍后会看到它)

 

Kerberos4,当指向服务的principal中的hostname是短格式,而不是FQDN;从未有超过2个组件,他们是用“圆点”(”.”)而不是”/”来分隔的。下面是合格的样例:

 

pippo@EXAMPLE.COM    pluto.admin@EXAMPLE.COM                 

 

未完待续。。。。。。。

阅读(1926) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~