网络安全手册<四>
3)远程过程调用(RPC)鉴别RPC是网络安全的核心,要明白这一点就必须清楚在RPC中鉴别机制是怎样工作的.RPC的鉴别机制是端口开放式的,即各种鉴别系统都可插入其中并与之共存.当前SUN OS有两个鉴别系统:UNIX和DES,前者是老的,功能也弱.后者是在本节要介绍的新系统.对于RPC鉴别机制有两个词是很重要的:证书和核对器(credentials和verify).这好比身份证一样,证书是识别一个人的姓名,地址,出生日期等;而核对器就是身份证的照片,通过这张照片就能对持有者进行核对.在RPC机制中也是这样:客户进程在RPC请求时要发出证书和核对器信息.而服务器收到后只返回核对器信息,因为客户是已知道服务的证书的.
(4)UNIX鉴别机制
SUN早期的各种网络服务都建立在UNIX鉴别机制之上,证书部分包含站名,用户号,组号和同组存取序列,而核对器是空白.这个系统存在两个问题:首先,最突出的问题是核对器是空的,这就使得伪造一份证书是非常容易的.如果网络中所有的系统管理员都是可以信赖的,那不会有什么问题.但是在许多网络 (特别是在大学)中,这样是不安全的.而NFS对通过查寻发出mount请求的工作站的INTERNET地址作为hostname域的核对器来弥补UNIX鉴别系统的不足,并且使它只按受来自特权INTERNET口的请求.但这样来确保系统安全仍然是不够的,因为NFS仍然无法识别用户号ID.
另一个问题是UNIX鉴别系统只适用于UNIX系统,但需要在一个网络中所有的站都使用UNIX系统是不现实的.因为NFS可运行于MS-DOS和VMS系统的机器上,但在这些操作系统中UNIX鉴别系统是不能运行的,例如:MS-DOS系统甚至就没有用户号的概念.
由此可知,应该有这样的鉴别系统:它具有独立于操作系统证书并使用核对器.这就如像DES鉴别系统.
(5)DES鉴别系统
DES鉴别系统的安全性建立在发送者对当前时间的编码能力上,它使接收者能解码并对照自己的时钟来进行检验.时钟标记也使用DES编码.这样的机制要工作有两件事是必须的:
. 发送者和接收者双方必须对什么是当前时间进行约定.
. 发送者和接收者必须使用同样的编码关键字.
如果网络有时间同步机制,那么客户机服务器之间的时间同步将自己执行.如果没有这样的机制,时间标记将按服务器的时间来计算.为计算时间,客户机在开始RPC调用之前必须向服务器询问时间,然后计算自己和服务器之间的时间差,当计算时间标记时,这个差值将校正客户方面的时钟.一旦客户机和服务器时钟不同步,服务器就开始拒绝客户机的请求,并且DES鉴别系统将使它们的时间同步.
客户和服务器是怎样来获得相同的编码关键字的呢?当客户希望与服务器交谈时,它生成一个随机关键字来对时间标记进行编码;这个关键字称为会话关键字CK,客户对CK按公用关键字模式进行编码,并在第一次会话时发送给服务器.这个CK是唯一使用公用关键字编码的关键字.这时只有这一客户与服务器两者才知道它们的DES关键字,这个关键字称为共有关键字.
第一次请求时,客户的证书包括三项:名字,用共有关键字编码的会话关键字和用会话关键字编码的时窗,时窗告诉服务器:以后即将给你发送许多证书;也许会有人用伪造的时间标记冒充新的会话向你发送证书.当你收到时间标志时,请查看你的当前时间是否在时间标记和时间标记加时窗之间,如果不对请拒绝.
为创建安全的NFS文件,时窗缺省值为30分钟.在发出首次请求时,客户的核对器中包含被编码的时间标记和特定时窗(WIN+1)的编码核对器.这样做的原因是:如果某人想写一个程序并且在证书和核对器的编码域中填充一些任意的二进制值,服务器将CK解码成DES关键字,并且用它来对时窗和时间标记解码,最后产生随机值.在经过上千次的努力后,这些随机的时窗/时间标记对才有可能通过鉴别系统,因此时窗核对器将使要猜测出正确的证书变得更困难,以提高安全性.
在对客户进行鉴别后,服务器将在证书表中存放四项值:客户名A,会话关键字CK,时窗,时间标记.在服务器中保留前三项的目的是以备将来使用.保留时间标记的目的是为防止再次执行,服务器只接收比以前的时间标记晚的时间标记.服务器将向客户返回的核对器包括一个序号ID和负的时间标记(该标记是被CK编码后的).客户机知道,只有服务器能返送回这样的核对器,因为只有服务器知道时间标记.
第一次会话过程是很复杂的,以后就容易多了,客户每次向服务器发送它的ID和编码后的时间标记,而服务器则返送回编码后的时间标记.