前 言
在一个开放式网络计算环境中,用工作站来验证网络用户正确的访问网络服务是不可信的.Kerberos通过第三方的验证服务来验证网络用户提供了一个可取的解决方案.本文给出了Kerberos验证模型的概貌.同时本文也描述了数据库管理和复制需求.最后,介绍了一些Kerberos应用程序的使用.
关键字: Kerberos,TGS,KDBM,认证,时间戳.
第一章 Kerberos简介
第一节 Kerberos的产生背景
伴随着开放式网络系统的飞速发展,比如银行结算系统等关系国计民生的大型网络系统的普遍应用,认证用户身份和保证用户使用时的安全,正日益受到各方面的挑战.
在不与网络连接的个人计算机中,资源和个人信息可以通过物理保护来实现.
在分时计算环境中,操作系统管理所有资源,并保护用户信息不被其他未授权的用户使用.这时操作系统需要认证每一个用户,以保证每个用户的权限,操作系统在用户登录时完成这项工作.
在网络系统中,用户需要从多台计算机得到服务,这时控制访问的方法有以下三种方法:
a.)服务程序不进行认证工作,而由用户登录的计算机来管理用户的认证来保证正确的访问.在封闭式网络中,网络中的所有计算机以及他们之间的通信都在严格的控制之下,方法a在这时是一个合乎情理的方案.
b.)收到服务请求时,对发来请求的主机进行认证,对每台认证过的主机的用户不进行认证.半开放系统可以采用方法b,每个服务选择自己信任的计算机,在认证时检查主机地址来实现认证,这种方法应用于rlogin和rsh程序中.
c.)对每一个服务请求,都要认证用户的身份.在开放式系统中,主机并不能控制登录它的每一个用户,而且还有来自系统外部的假冒等情况发生,以上两种方法都不能保证用户身份的真实性,只有使用方法c.
开放式系统的认证有以下几种需求:
1.) 安全性:认证机制必须足够安全,不致成为攻击的薄弱环节.
2.) 可靠性:认证服务是其他服务的基础,它的可靠性决定整个系统的可靠性.
3.) 透明性:用户应该感受不到认证服务的存在.
4.) 可扩展性:当和不支持认证机制的系统通信时,应该保持一切不受影响.
对开放式系统的认证需求导致了 Kerberos的产生.
第二节 什么是Kerberos
Kerberos一种为网络通信提供可信第三方服务的面向开放系统的认证机制.
每当用户(client)申请得到某服务程序(server)的服务时,用户和服务程序会首先向Kerberos要求认证对方的身份,认证建立在用户(client)和服务程序(server)对Kerberos的信任的基础上. 在申请认证时,client和server都可看成是Kerberos认证服务的用户,为了和其它服务的用户区别,Kerberos用户统称为principle,principle既可以是用户也可以是某项服务.认证双方与Kerberos的关系用下图表示:
当用户登录到工作站时,Kerberos对用户进行初始认证,通过认证的用户可以在整个登录时间得到相应的服务.Kerberos既不依赖用户登录的终端,也不依赖用户所请求的服务的安全机制,它本身提供了认证服务器来完成用户的认证工作.时间戳(代表时间的大数字)技术被应用于后来的Kerberos中来防止重放攻击.
Kerberos保存principle及其密钥的数据库.私有密钥(private key)只被Kerberos和拥有它的principle知道,在用户或服务登记时和Kerberos协议生成.使用私有密钥,Kerberos可以创建消息使一个principle相信另一个principle的真实性,进行认证工作.Kerberos还产生一种临时密钥,称做对话密钥(session key),通信双方用在具体的通信中.
Kerberos提供三种安全等级.
1) 只在网络开始连接时进行认证,认为连接建立起来后的通信是可靠的.认证式网络文件系统(Authenticated network file system) 使用此种安全等级.
2) 安全消息(sage messages)传递:对每次消息都进行认证工作,但是不保证每条消息不被泄露.
3) 私有消息(private messages)传递:不仅对每条消息进行认证,而且对每条消息进行加密.Kerberos在发送密码时就采用私有消息模式.
第二章 Kerberos协议内容和工作原理
第一节 Kerberos的组成
以Athena系统为例,Kerberos由下列模块组成:
Kerberos应用程序库(Kerberos Applicaton library)
加密/解密库(encryption/decryption library)
数据库程序库(database library)
数据库管理程序(database administration programs)
KDBM服务器(KDBM server)
认证服务器(authentication server)
数据库复制软件(db propagation software)
用户程序(user programs)
应用程序(applications)
Kerberos应用程序库给应用程序提供了一系列接口,其中包括创建和读取认证请求,以及创建safe message 和private message的子程序.
Kerberos的加密采用DES(Data Encryption Standard)算法.Kerberos中提供对PCBC(Propagating CBC)的支持,PCBC是对CBC(DES Cypher Block Chaining)的扩展,在CBC中当传输出错时只会影响整个消息中的当前块(current block),
但在PCBC中会将整个消息置为无效,提高了可靠性.
Kerberos数据库的记录中记载了每个Kerberos用户的名字,私有密钥,截止信息(记录的有效时间,通常为几年)等信息.用户的其他信息,如真实姓名,电话号码等次要信息,放在Hesiod nameserver中.database administration programs 对两个数据库进行管理,database library为它进行支持.
KDBM服务器,又称为数据库管理服务器(administration server),运行在存放Kerberos数据库的主机上,接受客户端的请求对数据库进行操作.
认证服务器,又称为Kerberos服务器(Kerberos server),在主机上存放一个Kerberos数据库的只读的副本,用来完成principle的认证,并生成会话密钥.
数据库复制软件用来管理数据库从主机(master machines),即KDBM服务所在的机器,到从机(slave machines),即认证服务器所在的机器的复制工作.为了保持数据库的一致性,每隔一段时间就需要进行复制工作.
用户程序用来完成登录Kerberos,改变Kerberos密码,显示和破坏Kerberos标签(ticket)等工作.
第二节 Kerberos工作原理
首先介绍一些常用术语的简写:
c -> 用户(client)
s -> 服务程序(server)
addr -> 用户的网络地址
ticket -> 令牌,用于声明用户有效性
life -> ticket保持有效的时间
tgs,TGA -> ticket-granting server
Kerberos -> 认证服务程序
KDBM -> KDBM服务程序
Kx -> x的私有密钥
Kx,y -> x和y的会话密钥
{abc}Kx -> 用Kx加密abc
Tx,y -> x请求使用y的ticket
Ax -> x的标识符(authenticator)
WS -> 工作站
RSS订阅






收 藏
推 荐