大家都知道,內網使用者非法獲得敏感信息,也是網絡安全的主要威脅之一。局域網環境不適合使用應用于互聯網絡的高層安全體系,在局域網環境中保證線路傳輸的安全及用戶的有效控制是主要工作,在鏈路層進行數據的保護可以有效提高整個安全系統的性能。
一、網絡驅動程序接口規范與加密以太網卡
1、網絡驅動程序接口規范
網絡驅動程序接口規范(Network Driver InterfaccSpecification,NDIS)是Windows2000系統網絡協議結構在核心層的主要結構,定義了鏈路層與網絡高層協議之間的網絡驅動程序接口規范,提供了網絡協議中的網絡層接口和鏈路層接口,NDIS支持以下3種基本內核模式網絡驅動程序:
(1)協議驅動程序;(2)中間層驅動程序;(3)微端口驅動程序。
協議驅動程序即高層協議棧,使一個物理網卡可以支持多種協議的運行。中間層驅動程序完成在不同網絡介質間進行轉換,過濾數據包和在多個NIC之間平衡數據包的負載。
最底層的是微端口驅動程序,它管理網絡接口卡(NIC),與網絡設備緊密結合,完成數據發送和接收。微端口驅動程序與它管理的NIC -起完成鏈路層通信功能,并且通過NDIS庫與高層驅動程序通信實現了邏輯鏈路控制。
2、加密以太用卡
加密以太網卡(簡稱加密網卡)的工作原理是在網卡上嵌入加密模塊來實現對鏈路上的數據進行加密保護,其結構框架如圖1所示。
加密網卡使用了硬件加密措施提高了安全性,同時減少了對CPU資源的占用,提高了系統的處理效率。加密以太網卡采用PCI總線,網卡提供10M/100 Mb/s的通信速率,加密和解密模塊采用FPGA實現分組加密算法。加密以太網卡在Windows操作系統微端口驅動程序的控制下完成數據的安全通信。以太網卡加密主要有以下4個模塊:
(1)總線接口模塊
采用PLX的PCI9054芯片,與PCI總線進行數據交換來完成與微端口驅動程序的通信。
(2)密碼運算模塊
片在控制模塊的控制下完成對數據文件加密和解密。Flash完成一定的密鑰存儲和管理功能。
(3)控制模塊
對數據在各模塊間的傳輸進行控制,保證數據正常的流向。
(4)網絡通信模塊
使用嵌入式以太網控制器LAN91CIII,在接口控制器和控制模塊的聯合控制下傳輸加密的數據幀。
二、加密以太同卡鏈路通信協議設計
1、置信協議設計
NDIS的層次性為用戶進行網絡功能的開發提供了良好的接口。由于加密以太網卡自身硬件結構的特點,其邏輯鏈路傳輸協議中需要包涵與加密和解密以及密鑰管理相關的功能。
NDIS中的徼端口驅動程序直接控制加密網卡來完成邏輯鏈路控制功能。本文的鏈路傳輸方案可以使加密以太網卡的硬件功能在驅動程序的控制下達到加密傳輸的效果。加密以太網卡鏈路通信協議主要包括:
加密鏈路幀設計,加密和解密控制模塊,數據包拆分/重組模塊,中斷服務模塊,密鑰管理模塊等。其結構如圖2所示。
2、加密鏈路幀設計
為了達到對數據文件加密保護功能,要對鏈路數據幀進行重新設計。設計是在以太網數據幀的基礎上,對數據幀的結構進行增加和改進,對數據幀中的重要信息進行加密保護。
數據幀結構的各部分字段如圖3所示,其中,陰影部分表示數據已經加密保護。
數據幀的各部分內容如下:
(1)前導碼和幀開始定界符;
(2)目的保密以太網卡的MAC地址;
(3)源保密以太網卡的MAC地址; ’
(4)報文加密信息;
(5)密鑰信息,是會話密鑰的密文;
(6)幀長度或類型;
(7)數據單元;
(8)幀校驗序列。
數據幀的前3部分與標準MAC幀相同,第(4)部分中保存收發雙方用戶標識、數據報文類型、原始數據長度等內容。
加密模塊對數據加密時需要進行分組長度填充,加密信息部分中的原始數據長度可以保證接收方在解密后獲得有用的數據字段長度。第(4)部分使用局域網內用戶共享的網絡密鑰加密保護。第(5)、第(7)部分都是由卡上密碼算法加密過的密文,其中,密鑰信息是由與目的節點共享的工作密鑰加密的會話密鑰密文,而第(6)、第(7)部分則是用會話密鑰加密的密文。
這種幀格式需要硬件與微端口配合才能完成所有的操作和控制。微端口對加密數據幀的地址信息進行處理后以命令形式通知硬件設備來讀取密文,完成解密操作后再將明文讀取剄系統內存進行包的操作。
3、數據包拆分,重組設計
由于設計的加密鏈路幀在原有MAC幀的基礎上增加了用戶標識、報文類型、密鑰信息等字段以及對數據字段加密時的分組填充,因此,幀長度會大于以太網MTU,需要對原有MAC幀進行拆分和重組。拆分和重組有2種方法:
(1)在原MAC幀的基礎上直接增加報文加密信息,形成長MAC幀。因為方案中使用的加密網卡的LAN91C11I以太網控制器最大支持2 048 B的鏈路幀,這種方法簡便、易于實現。
(2)對原MAC幀中的IP數據包進行拆分,利用IP協議提供的分包機制將原MAC幀中封裝的IP數據包經過解析后拆分成2個800 B的IP數據包,然后分別封裝成加密鏈路幀。這種方式相對復雜,但利用IP協議的分包機制可靠性高,分包后形成的鏈路幀對鏈路傳輸的兼容性強。
為了使系統的兼容性更好,本方案采用第2種方法,在加密以太網卡的鏈路協議中設計數據包拆分和重組機制,保證鏈路傳輸的穩定性。
4、密鑰管理方式
在由加密以太網卡構成的局域網絡,密鑰采用分級保護的管理方式,每一個用戶配置有主密鑰、網絡密鑰和會話密鑰三級密鑰,主密鑰保護卡內所有密鑰信息資源;網絡密鑰保護加密MAC幀中的加密信息部分和密鑰信息部分,包括用戶ID和數據報文類型等信息;會話密鑰保護數據字段。
網絡密鑰受主密鑰保護,其密文預先配置在加密卡中,會話密鑰由加密網卡在加密每個數據包時產生。本系統給用戶配置USBKey來存儲用戶的主密鑰,通過口令的方式才能打開USBKey,取出用戶主密鑰,并將主密鑰通過程序注入到加密以太網卡,由此實現密鑰與數據的分割,并保證了用戶信息存儲在key 中的安全性。這種三級密鑰保護方式能夠較好地保護系統內的密碼信息資源,形成安全的局域網鏈路通信
系統。
三、加密以太網卡鏈路通信協議實現
1、基于微端口的以太同卡驅動程序加密設計
加密網卡微端口驅動程序(Security Miniport Drver, SMD)將加密網卡以唯一的網絡設備Device對象提交給NDIS,使其能夠加載到NDIS層次結構中。數據進出加密以太網卡必須經過SMD,才能對鏈路數據進行操作和控制,形成本方案設計的加密鏈路通信協議。加密網卡微端口驅動程序應具備以下基本功能:
(1)向NDIS注冊加密以太網卡,使加密網卡接入到操作系統中,構成完整的網絡通信層次結構。
(2)SMD向上層協議提供符合NDIS規范的網絡數據接口,使加密功能對上層網絡協議保持透明,不影響網絡數據傳輸。
(3)組織數據包隊列,在發送和接收數據包的流程中以隊列形式組織數據包,提高數據處理和傳輸效率。
(4)SMD的Dispatch例程中設置對上層管理程序的通信接口,用于管理程序對SMD進行配置和對密鑰等密碼信息的管理。
(5)中斷服務功能,支持加密網卡的中斷方式,中斷處理模塊完成接收數據包的排隊和處理功能。
微端口驅動程序的結構與上層協議驅動程序以及管理程序的接口關系如圖4所示。
2、微端口驅動程序實現
加密網卡微端口驅動程序位于NDIS層次結構的最底層,直接與硬件設備進行數據交換并進行設備控制,具有標準驅動程序的DriverEntry() 和CreateDevice0,Miniportlnitialize(),DeleteDe’vice0,Unload0.Dispatch0等入口函數。與其他驅動程序不同的是,網絡設備驅動程序還要有與網絡數據包處理以及中斷服務相關的函數和操作,如 MiniportSendPackets0,NdisMlndicateReceivePacket(), MiniportHandlelnterrup),Min-iportISRO等入口函數。
加密以太網卡徼端口驅動程序的實現包括以下5個主要模塊:
(1)初始化模塊
主要由Miniportlnitializc0函數完成網絡設備初始化和密碼模塊初始化。網絡設備初始化包括讀取設備配置信息,向系統注冊NIC、分配網絡數據包隊列內存、加密網卡DMA設備初始化配置、注冊中斷等。密碼模塊初始化包括密碼算法模式配置、密鑰注入以及加密網卡內部總線初始化。
(2)數據包發送模塊
該模塊主要完成無連接微端口驅動的多包發送。其支持數據包隊列的形成與維護,上層協議需要發送數據包時會調用微端口的 MiniportSendPackcts()函數,將數據包指針傳入驅動程序,發送模塊將數據包排隊依次準備發送。該模塊與數據拆分/重組模塊一起完成加密數據包的發送。
(3)數據拆分,重組模塊
由于對數據包進行加密和重新封裝需要對數據包進行拆分,因此地址信息可直接送入加密網卡的通信控制器,數據信息送入加/解密模塊進行加密或解密處理。處理完的數據與用戶標識以及密鑰