大家都知道,内网使用者非法获得敏感信息,也是网络安全的主要威胁之一。局域网环境不适合使用应用于互联网络的高层安全体系,在局域网环境中保证线路传输的安全及用户的有效控制是主要工作,在链路层进行数据的保护可以有效提高整个安全系统的性能。

一、网络驱动程序接口规范与加密以太网卡

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)数据拆分,重组模块

由于对数据包进行加密和重新封装需要对数据包进行拆分,因此地址信息可直接送入加密网卡的通信控制器,数据信息送入加/解密模块进行加密或解密处理。处理完的数据与用户标识以及密钥等信息重新封装后再由发送模块进行发送。

(4)中断处理模块

函数MiniportISRO和MiniportHandle Interrupt0完成设备的中断响应和中断服务。微端口驱动采用中断排队处理的方式,包括加密数据包的拆分、解密和重新封装以太网帧等操作。数据包解密重新封装成帧后调用NdisMlndicateReceivePacket()指示给上层协议要接收的数据包指针。

(5)上层通信模块

微端口向NDIS注册Dispatch()函数来实现与管理程序的通信以及与加密模块的通信。管理程序对网络通信的控制通过IRP包的形式发送到SMD的Dispatch例程。SMD解析IRP包后得到控制命令,从而进行相应的密码密钥等配置操作。

四、系统性能

本文设计的基于NDIS的加密以太网卡链路通信方案在Windows2000操作系统上进行了实验,微端口驱动程序中的加密链路通信协议能够较好地完成对数据的加密保护以及网络传输;对加密数据包的传输速度进行了测试,使用三重DES或AES两种分组算法进行传输时,速度可达到65 Mb/So虽然本系统与100 Mb/s的以太网相比数据传输速度有损失,但可以满足正常的网络访问和文件传输需求,透明的传输加密对于用户操作使用也较方便直观,有良好的可用性。在使用三级密钥管理方式下,加密的强度也有较高的保障。

小知识之协议栈

协议栈(Protocol Stack)是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。使用最广泛的是英特网协议栈,由上到下的协议分别是:应用层(HTTP,FTP,TFTP,TELNET,DNS,EMAIL等),运输层(TCP,UDP),网络层(IP),链路层(WI-FI,以太网,令牌环,FDDI,MAC等),物理层。