胡巧玲
(中國艦船研究設計中心 武漢 430064)
某局域網是一個信息點較為密集的千兆局域網絡系統,大致可以劃分為三個主要的區域:Internet區域、內部網絡、公開服務器區域。內部網絡又可按照所屬的部門、職能、安全的重要程度分為若干子網,包括:財務子網、領導子網、辦公子網、中心服務器子網等。所聯接的現有上千個信息點為在整個企業內辦公的各部門提供了一個快速、方便的信息交流平臺。通過專線與Internet的連接,各個部門可以直接與互聯網用戶進行交流、查詢資料等。通過公開服務器,企業可以直接對外發布信息或者發送電子郵件。高速交換技術的采用、靈活的網絡互連方案設計為用戶提供快速、方便、靈活通信平臺的同時,也為網絡的安全帶來了更大的風險。因此,在原有網絡上實施一套完整、可操作的安全解決方案不僅是可行的,而且是必需的。
身份認證是網絡安全技術的一個重要方面,身份認證[1~4]機制限制非法用戶訪問網絡資源,是其他安全機制的基礎。本文研究的目的是在不影響局域網當前業務的前提下,實現對局域網全面的安全管理。從而保證無論是在本單位的內網或是公網的合法用戶在與單位內資源服務器進行信息交互時,都能確保系統與數據的安全保密,亦即建立所謂的網絡安全系統。本文所采用的身份認證技術是實現網絡安全管理的一種重要手段,對于網絡應用的安全起著非常重要的作用。通過對身份認證技術的理論分析和系統設計等方面的研究,可以增強現有認證系統的安全性、可用性和易管理性,提高系統的效率,為網絡安全系統應用提供高效實用的解決方案。
基于PKI[5~7]的網絡安全系統,可實現內部網絡用戶和公共網絡用戶訪問內部網絡資源服務器的身份認證功能。它主要由四部分組成:認證服務器、認證客戶端、資源服務器及控制服務器。
圖1是一個實際的應用環境中,網絡安全系統的拓撲結構。其中:
控制服務器主要完成截獲用戶發向資源服務器認證的請求連接,將其轉發到認證服務器進行用戶的身份認證,它是實現客戶端和認證服務器認證連接轉發的中間環節,當用戶認證成功后為用戶建立訪問資源服務器的透明代理。認證服務器主要完成與客戶端的認證工作,它存放各種用戶的身份認證信息和本地的一些安全參數信息。同時,為保護用戶與認證服務器之間的通信,以及實現用戶對服務器的身份認證,認證服務器擁有RSA公私密鑰對。認證服務器和控制服務器在實際使用環境中將放置于企事業單位網絡的內部網絡,受到防火墻的訪問控制保護。
認證客戶端位于內部網絡和公共網絡任何待認證的用戶主機。認證客戶端主要包括一個USB KEY[8~10]作為用戶資源訪問認證的物理設備,還包括讀取和操作USB KEY的驅動程序。在用戶入網認證之前首先在認證服務器端進行注冊,管理員在用戶的 USB KEY中寫入標識KEY的唯一ID號、用戶客戶端認證信息,以及認證服務器的公鑰,同時認證服務器在本地的數據庫中為用戶生成注冊信息,這樣用戶就成為了網絡資源服務器的合法用戶。

圖1 網絡安全系統拓撲結構
認證系統的客戶端主要包括兩部分:一部分是客戶端認證服務程序,除對USB的驅動程序應用接口進行訪問,讀取客戶端的用戶認證信息外,還提供客戶端上層認證代理;另一部分是底層的客戶端網絡驅動程序的設計,主要完成根據規則定義對客戶端所發數據包的截獲、分析、記錄和過濾,并把認證服務器發送過來的隨機數認證數據包轉發到客戶端上層認證代理。
客戶端系統認證結構模式的設計可以采用代理模式和監聽模式。客戶端的認證服務程序主要包括兩部分:一部分是對USB的驅動程序應用接口的訪問,包括USB KEY的打開,用戶數據和認證信息的讀出和寫入;另一部分是提供客戶應用程序的認證代理程序。認證代理主要負責接收客戶端底層網絡驅動程序轉發上來的認證通知包(隨機數Random);采用RSA算法對生成的認證消息包(EKUas(ID,M1,N2,Random))進行加密和發送;接收認證結果(N3)并且更新USB KEY的用戶認證信息。認證代理還包括客戶端認證結果信息界面顯示。客戶端認證代理程序是采用并發若干個認證線程來處理接收到的多個認證服務連接,這樣可以實現客戶端并發訪問多個資源服務時的認證需要。客戶端認證代理程序支持常用的Windows系列操作系統。
客戶端網絡驅動程序主要完成根據規則定義對客戶端所發送的數據包的截獲、分析和過濾,記錄需要認證的資源服務器的請求連接端口地址。這樣當認證請求返回時,可以查找客戶端的訪問連接請求記錄,防止客戶偽造。為了接收認證通知數據包,系統底層首先截獲網絡數據包,然后判斷其標識。若為認證通知包Random,則將此數據包交給上層的認證代理進程,由認證代理進程和服務器進行后續的交互認證。因此,這就需要用到現有的一些網絡數據包攔截技術,我們分別針對Win98和Win2000各設計了一套流程。
認證服務器主要包括兩部分:控制服務器和認證服務器。其中,控制服務器主要對客戶的請求進行訪問控制和數據包的轉發;認證服務器主要完成與客戶端認證代理的認證交互過程。
控制服務器主要完成對客戶的請求進行訪問控制。接受客戶端的請求,判斷此請求是否需要認證。如果需要則激活該認證過程,并且轉發符合要求的數據包到目的地,這樣可以減輕認證服務器的認證壓力,提高認證效率。控制服務器的功能模塊有:資源定義、接收和轉發數據包、激活認證過程、獲取認證結果。控制服務器的轉發機制采用的是iptables(也可以使用netfilter編程實現)。控制服務器轉發包括客戶端和認證服務器的消息。其轉發過程如下:
1)客戶端和資源服務器的所有連接通過控制服務器轉發。對于每一資源(RIP:RPORT),控制服務器通過資源規則文件取出此定義,使用iptables設置轉發規則:(XIP:XPORT)和(RIP:RPORT)之間互相轉發,即把客戶端發向資源服務器的連接請求都轉發到控制服務器啟動的監聽線程,這樣起到控制客戶端資源訪問的作用。同時設置當客戶端認證成功后,把控制服務器發向客戶端的資源代理連接的源地址和端口改為資源服務的地址和端口,以保證客戶端開始發起的資源請求連接,能夠接受到控制服務器返回的資源請求。
2)客戶端認證代理和認證服務器的連接與上述過程相似。對于客戶端的認證請求,控制服務器向認證服務器轉發認證請求,認證服務器回送自己的外部地址(AS_ADDR:AS_PORT)給客戶端,客戶端向(AS_ADDR:AS_PORT)發起認證過程。網關把(AS_ADDR:AS_PORT)轉換成認證服務器的內部地址(XIP:IMPORT),控制服務器再轉換成子網地址(AIP:APORT)。因此控制服務器在這里也起到了NAT的功能,這樣可以實現對外隱藏認證服務器的內部網絡真實地址,防止攻擊者攻擊,提高認證服務器的安全性。返回的數據包進行相反的過程。
認證服務器需要實現的功能包括:接收認證請求、認證用戶身份、發送認證結果、存取數據庫、生成連接標識、產生隨機數、參與初始化客戶端、使用硬件的加密模塊或軟加密算法。認證服務器采用后臺進程方式啟動若干認證請求服務線程,等待控制服務器發送的待認證的數據報,經過認證處理后將認證結果發送給客戶端。系統管理程序完成的主要功能包括:
1)向用戶分發USB KEY,完成對USB KEY的初始化。包括將生成初始化的認證信息M1寫入USB KEY,并將用戶的初始認證信息散列值M2以及用戶輸入的基本信息寫入數據庫服務器的用戶信息列表中。
2)通過對數據庫服務器的訪問,完成對 USB KEY的管理工作,包括用戶信息的查詢、刪除、注銷。完成對認證服務器的添加和設置。
3)完成對認證服務器和控制服務器的后臺程序的啟動和關閉。
4)完成對服務器端配置文件的生成和修改。包括認證服務器的IP地址和端口;控制服務器的IP地址和端口;內網網絡地址和端口(受保護的資源服務器網段);外網的網段地址和掩碼(客戶端所在網段);認證服務器的對外端口和地址;認證服務器啟動的最大監聽線程數目;數據庫服務器的端口和地址;資源服務器的資源服務定義(包括資源服務器的IP地址和提供資源服務的端口)。
5)通過對數據庫服務器的訪問,完成對生成認證日志的查詢。
USB KEY的功能之一是使用DES和RSA算法實現文件加解密[11~15]。加解密的命令、數據的傳輸采用USB通道實現。USB KEY提供了加解密外部命令專供主機來調用,借助于USB總線來實現對數據的加解密操作。如果需要加解密的數據量很大,超過64KB,那么主機需要把該數據分塊,每塊大小為64KB,最后一個塊除外。然后主機分多次通過USB總線向USB KEY發起加解密命令的處理,每次加解密一個數據塊,直到最后一個數據塊加解密完畢。加解密每個數據塊的具體過程如下:
1)主機首先向USB KEY的RX1發送一個信息包,該信息包的頭兩個字節是需要加解密的這個數據塊的長度(以字節為單位),緊接著的字節是實現加解密的外部命令。RX1接收到這個信息包后,把兩個字節的長度信息和加解密命令轉存到約定的一片內存區,以備后用。有了這個長度信息,ESM就能知道什么時候數據全部接收完了。
2)然后主機把需要加解密的數據(一般是文件)發送到USB KEY的RX3,在中斷處理程序中,接收到的數據包將按順序挨個存放到一片指定緩沖區內。每接收到一個數據包,USB KEY將把保存下來的那兩個字節的長度信息減去64,直到長度信息小于64為止,這表明所有的數據已經接收完了,于是將設置一個標志,表示數據全部接收完。USB KEY在主流程中將反復檢測這個標志,一旦發現數據全部接收完了,就跳轉去執行命令分析程序,USB KEY將分析RX1先前接收到的命令,然后調轉到相應的命令處理程序。如果發現RX1先前接收到的是加解密命令,USB KEY將利用內部的密碼協處理器對該數據執行相應的加解密操作。
3)主機在發送完需要加解密的命令和數據之后就周期性地讀USB KEY中的TX3,直到有有效的數據返回。USB KEY利用密碼協處理器執行加解密完畢之后,將把加解密的結果分成包依次填入TX3的發送緩沖區,并且使能發送,主機每次從TX3讀取一個數據包,直到加解密的結果全部返回主機。
網絡安全管理系統是由硬件USB KEY和軟件管理程序共同組成的信息保密應用系統,硬件部分的 USB KEY用于產生和存儲用戶的公/私鑰對,其中私鑰以只讀形式存儲,公鑰則保存在符合PKI標準的證書中,USB KEY將作為局域網用戶唯一合法標識的安全載體。
系統管理模塊實現整個管理端的配置和運行時管理。具體地說,它通過配置系統參數指定運行時策略、備份系統數據、管理日志、分析各類系統數據形成統計報表,為證書管理模塊和安全策略設定模塊提供運行支撐。
證書管理模塊負責根據設計的證書管理體系管理系統內所有的公鑰證書,實現局域網內用戶身份信息、USB KEY和公鑰證書的唯一關聯,該模塊將作為系統身份鑒別服務的基礎。
系統數據庫負責存儲管理端的系統數據,包括用戶信息、用戶私鑰、配置信息及管理端日志。同時,利用數據庫提供的數據備份等管理功能可有效地保障網絡安全管理系統的可用性。
客戶端軟件的功能是結合USB KEY的使用,完成用戶身份的鑒別和登錄操作系統,執行管理端制定的保密策略,加密客戶端的機密信息,控制客戶端主機上操作系統及各類設備和接口的使用并記錄日志。軟件管理程序是主要由管理端和客戶端兩部分組成的C/S架構的應用程序。管理端軟件統一管理的內容包括,軟件自身的運行時配置文件,局域網內所有的用戶和證書,以及制定局域網安全策略。其主程序流程如圖2所示。

圖2 認證服務器網絡結構圖
本文將公鑰基礎設施PKI結合USB技術、非對稱密鑰算法和數字簽名等密碼學技術運用于網絡安全系統的研究中。該系統具有如下的特點:
1)建立網內可靠的身份標識和鑒別機制。以硬件USB KEY產生和管理網內用戶的公/私鑰對,以符合PKI標準的數字證書來管理用戶的公鑰及其相關聯的身份信息。使非法用戶無法在局域網中立足,同時為有效地管理合法用戶及他們的行為奠定基礎。
2)提供數字簽名和身份認證。在網絡中,許多重要文件需要確定其真實性,用戶可以通過網絡安全系統提供的功能對文件進行數字簽名,這樣就可以獲得認證,確保了文件的真實性、完整性和不可否認性,同時也對文件傳輸者的身份進行了確認。
3)嚴格管理登錄到客戶端主機的用戶。將USB KEY與客戶端軟件相結合,通過雙因子身份鑒別機制確保只有合法用戶才能登錄客戶端主機,并以自動鎖定操作系統等方法防止客戶端主機被非法使用。同時利用其網絡安全策略,為遠程通信提供了安全保障,使得合法用戶可以安全的通過Internet網訪問內部數據。
4)嚴格管理網絡中主機的硬件設備、接口和軟件程序的使用。上述對象是局域網內信息泄密的直接途徑,系統對此采取了限制使用、自動鎖定及自動加密等措施以防止機密信息從這些途徑泄漏。
[1]張煥國,劉玉珍.密碼學引論[M].武漢:武漢大學出版社,2003:1~6
[2]C.E.Shannon.Communication theory of secrecy system[J].Bell System Technical Journal,1949,27(4):656~715
[3]龐麗萍,李勝利.計算機操作系統[M].武漢:華中科技大學出版社,1997:1~20
[4]齊治昌,譚慶平,寧洪.軟件工程[M].北京:高等教育出版社,2001:99~102
[5]黃淼云,李也白,王福成.智能卡應用系統[M].北京:清華大學出版社,2000:5~13
[6]亢保元,王育民.完善保密密碼體制的條件與設計[J].通信學報,2004,25(2):168~173
[7]謝希仁.計算機網絡[M].大連:大連理工大學出版社,2000:315~320
[8]阮利華,王祥.USB2.0接口IP核的開發與設計[J].復旦學報,2005,44(1):173~177
[9]吳東艷,張禮勇.基于USB總線的數據采集/信號發生器的設計[J].哈爾濱理工大學學報,2005,10(1):125~127
[10]張禮勇,劉思久.虛擬儀器與USB方式的探討和實踐[J].電子測量與儀器,2004,17(2):70~74
[11]劉木蘭,周展飛,陳小明.密鑰共享體制[J].科學通報,2000,45(9):897~898
[12]徐秋亮.改進門限 RSA數字簽名體制[J].計算機學報,2000,23(5):450~452
[13]趙波,劉樹波,唐明,等.基于硬件系統的商用密碼可信計算實現方法[J].武漢大學學報,2004,29(11):1030~1033
[14]陳曉峰,伍前紅,王育民.基于安全雙方計算的密鑰協商方案[J].西安電子科技大學學報,2003,30(4):477~480
[15]劉怡文,李偉琴.密碼協議的分層安全需求及驗證[J].北京航空航天大學學報,2002,28(5):589~592