来源:自学PHP网 时间:2015-04-17 18:33 作者: 阅读:次
[导读] 文章来源:Perls Blog第一部分 Kerberos 协议介绍1.Kerberos 协议简介 在希腊神话中,Kerberos是守护地狱之门的三头狗。在计算机世界里,美国麻省理工学院(MIT)把他们开发的这一网络认证系统...
文章来源:Perls Blog 第一部分 Kerberos 协议介绍
2.Kerberos协议术语解释 Principal:在Kerberos中,Principal是参加认证的基本实体。一般来说有两种,一种用来表示Kerberos数据库中的用户,另一种用来代表某一特定主机,也就是说Principal是用来表示客户端和服务端身份的实体, Principal的格式采用ASN.1标准,即Abstract Syntax Notation One,来准确定义),Principal是由三个部分组成:名字(name),实例(instance),REALM(域)。比如一个标准的Kerberos的用户是:name/instance@REALM 。 Credential: Ticket和与它相联系的会话密钥合在一起称为Credential。之所以有这个概念是因为它们是客户端在向服务器证明自己的身份时必需的两样东西.在一个Ticket的生存期内客户端会将这两样东西以Credential为单位保存在一个Cache文件中。 Ticket: 一个Ticket是一个用于安全的传递用户身份所需要的信息的集合。它不仅包含该用户的身份,而且包含其它一些相关的信息。一般来说,它主要包括客户方Principal,目的服务方Principal,客户方IP地址,时间戳(分发该Ticket的时间),该Ticket的生存期,以及会话密钥等内容。它的格式亦用ASN.1来准确定义。 Authenticator: 在客户端向服务端进行认证时,伴随Ticket一起发送的另外一个部分,它的作用是证明发送Ticket 的用户就是拥有Ticket的用户,即防止重放攻击。它的主要内容是一个时间戳(客户端发送Ticket的时间),在rfc1510中有它的完整的ASN.1定义。 AS(Authentication Server): 为用户分发TGT(Ticket Granting Ticket)的服务器。 TGT(Ticket Granting Ticket): 用户向TGS(Ticket Granting Server)证明自己身份的Ticket. TGS(Ticket Granting Server): 为用户分发到最终目的Ticket的服务器,用户使用这个Ticket向自己要求提供服务的服务器证明自己的身份。在实现上,AS和TGS实际上是由同一程序完成的,因为它们的实现机制并没有太大的差别,只是在加密所发出的Ticket时所使用的密钥不同(AS使用用户的密钥,而TGS使用会话密钥)。 KDC(Key Distribution Center):密钥发放中心,通常将AS和TGS统称为KDC,有时也把AS 单独称为KDC。 3.认证过程 1) Client → KDC:用户cnhawk向密钥分配中心(KDC)申请TGT; 4.一个应用实例 为了更清楚的说明Kerberos 5认证协议,实际应用中的例子(具体例子可以在我们后边的实际应用中看到):假设某一局域网A,它的DNS域为the9.com;Realm为THE9.COM;Kerberos的数据库,AS以及TGS服务器都在主机test1.the9.com上。A中主机test2.the9.com上的用户cnhawk对应的Principal为cnhawk/test2.the9.com@THE9.COM;A中的另一台主机test3.the9.com上的telnet服务器对应的Principal为host/test3.the9.com@THE9.COM。Rlogin的客户端程序telnet和服务端程序telnetd都是支持Kerberos的,即都支持Kerberos认证协议。cnhawk想用telnet远程登录到A中的另一台主机test3.the9.com上这时cnhawk所要完成的步骤是: ① 运行kinit程序。kinit程序的作用是向AS申请TGT,并将获得的TGT和会话密钥放在保存Credential的文件中。为此,cnhawk在命令行上键入: % kinit cnhawk/test1.the9.com % kinit cnhawk/test1.the9.com cnhawk/test1.the9.com@THE9.COMs Password: ② 运行telnet的客户端程序telnet,为此cnhawk在命令行上键入: test1# telnet -a -l cnhawk test3.the9.com telnet程序首先在保存Credential的文件中寻找未过期的TGT,并把它交给TGS,从而获得访问test3.the9.com上rlogin服务的Ticket。接下来,它把这个Ticket和Authenticator一起发送给test3.the9.com的服务器程序telnetd。telnetd在验证了cnhawk的身份后,就搜索本地cnhawk主目录下的文件".k5login",在".k5login"文件中放有允许用rlogin远程登录到cnhawk帐户下的Principal。在找到了cnhawk/test1.the9.com@THE9.COM之后,telnetd就申请一个虚拟终端,并fork一个shell,这时在test1.the9.com的终端上就会显示: FreeBSD/i386 (test3.the9.com) (ttyp1)
需要安装两台FreeBSD 5.2.1的系统,一台FreeBSD 4.9 三个系统我是用虚拟机上安装的。 最新评论添加评论更多文章推荐
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习 京ICP备14009008号-1@版权所有www.zixuephp.com 网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com
添加评论 |