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和編碼後的時間標記,而服務器則返送回編碼後的時間標記.