内网数据链路层安全通信组件设计与实现

时间:2022-05-26 07:28:01

内网数据链路层安全通信组件设计与实现

摘 要:针对内网嗅探、网络途径主动泄密等威胁,为提高内网通信过程中数据的保密性,设计并实现了一种安全通信组件。组件在Windows系统内核层以网络过滤驱动的形式实现,可嵌入NDIS体系。在终端通信过程中,该组件自动协商会话密钥,对数据链路层数据包执行加解密操作,实现过程对终端用户透明。试验结果显示,该组件能够实现终端保密通信,抵御内网嗅探和防止主动泄密,提高Windows系统的通信安全性,达到预期目的。

关键词:内网安全;数据链路层;密钥管理;Windows内核驱动;NDIS

中图分类号:TN918 文献标识码:B 文章编号:1004373X(2008)1707604

Design and Implementation of Secure Communication Component

on Data Link Layer in Intranet

DUAN Xiaoliang,ZHANG Quan,TANG Chaojing

(Electronic Science and Engineering College,National University of Defense Technology,Changsha,410073,China)

[JP2〗Abstract:To avoid such threats as sniff attack or divulging secrets on purpose through network,and improve the data security in the process of communication in Intranet,the paper designs and implements a kind of component.The component is designed as the form of network filter driver in the kernel level of windows,which can be well embedded in NDIS architecture.In the process of communication between the terminals in Intranet,the components negotiate the session key automatically and use it to encrypt or decrypt the data link layer packets and the entire procedure is transparent to the user.The result of experiment show that the terminals which have loaded the component can communicate each other secretly and prevent the network sniff attack or the inside from divulging secrets on purpose through network,which improves the security of windows as expected.

Keywords:Intranet security;data link layer;key management;Windows kernel driver;NDIS

1 引 言

近几年来,内网的信息安全问题成为各方热点。在内网的管理过程中,传统开放式的针对局域网已经不能满足日益增长的安全需要。在这种情况下,为了保障内网的信息安全,就需要更新内网的信息安全内涵及其管理手段。

当前内网系统面临的安全威胁主要有内网嗅探、内部人员利用网络途径主动泄密、拒绝服务(Dos)攻击、发送广播包攻击、超越权限访问以及病毒木马等。这些攻击手段主要源于网络内部,恶意攻击者首先控制内网中的一台主机,然后通过此主机向内网中的其他主机进行恶意攻击,通过内网传输的数据包就有可能被侦听并被转发到外部世界。虽然防火墙等防范手段在一定程度上提高了内网的安全性,但防火墙不能抵御未知类型的攻击,而且很可能被攻击者绕过,所以有必要对在内网中传播的数据进行监控以及对敏感信息采取传输范围和传输前密码授权控制,防止敏感信息的外泄。

从网络层次结构上看,可以在各种层次对内网的敏感信息提供安全保护,如IPSec安全协议是针对网际层数据包,而本文所设计的安全通信组件是在数据链路层对网络数据包进行保护。

2 组件设计

2.1 组件设计目标

组件的主要设计目标是为数据链路层数据包提供安全保护,并且对用户和上层应用透明,主要防止内网嗅探攻击和内部人员通过网络途径主动泄密。

组件通过对终端间发送与接收的链路层数据包进行动态加解密,保证内网中传输的数据为密文,并且自动协商共享会话密钥和对数据包进行加解密。组件在内网中的结构如图1所示。

组件核心由密钥管理模块、安全访问列表服务模块组成。密钥管理模块分为证书信息库和密钥协商模块,安全访问列表服务模块由建立安全访问列表模块、更新安全访问列表模块和安全访问列表组成。组件发送端拦截此终端网际层向下传递的MAC层数据包,并且在组件处理后,向外进行发送;组件接收端拦截此终端接收到的MAC层数据包,并且在组件处理后,向终端的网际层进行传递。组件内部结构如图2所示。

2.2 密钥管理模块

2.2.1 证书信息库

证书信息库包括内网其他终端的证书信息,而证书信息由终端的MAC地址和其公钥信息组成,记为Certi=(MACi,Pi),其中 MACi表示终端i的MAC地址,Pi表示终端i的公钥参数。

(1) 建立证书信息库

当新终端接入内网时,此终端向内网广播发送请求建立安全访问列表类型的数据包,收到此请求数据包的终端组件发送端则向新终端发送包括本机证书(MAC地址和公钥参数)的数据包,新终端根据收到的数据包在本地建立安全访问列表,过程如图3所示。其他终端则对本地的安全访问列表进行更新。

(2) 更新证书信息库

当终端需要进行密钥对更新时,内网中其他终端就会更新其证书信息库。需要更换密钥对的终端首先计算出新的公共密钥和秘密密钥对,将公共密钥与本机的MAC地址一起构成新的证书,接着通过组件发送端向内网广播发送包括本机新证书的请求更新密钥的数据包,收到更新密钥请求的终端从数据包的特定字段取出终端的新公钥证书,并更新本地的证书信息库,然后通过组件发送端向提出更新证书请求的终端发送更新确认包,请求更新密钥对的过程如图4所示。

2.2.2 会话密钥协商

当终端A需要与终端B进行通信,终端A会向终端B发起会话密钥协商。会话密钥的协商过程会经历以下几个步骤,其中设置密钥生成算法ID对应的对称加密算法为ε。

(1) 在终端A中的随机计算出某个大整数x,并发送包括以下数据信息的数据包给终端B

x,CertA,MACA和密钥生成算法ID

(2) 终端B随机选取某个大整数y,并发送包括以下数据信息的数据包给终端A

y,CertB,εK(sigB(MACB,MACA,y))

(3) 终端A发送包括以下数据信息的数据包给终端B

CertA,εK(sigA(x,y))

其中K=xy=yx,sigi(*)表示用i的秘密密钥对数据*进行加密操作,εK(*)表示以K为参数,使用对称加密算法ε对*进行加密操作。

在以上步骤完全结束后,终端A,B双方就可以通过共享密钥K加密MAC层数据包来进行安全通信。为方便以后的通信,终端A,B的组件分别将对方的公钥和MAC地址信息保存到本机的证书信息库,而将共享密钥K保存到本机的安全访问列表中。

2.3 安全访问列表服务模块

[JP2〗安全访问列表服务模块主要工作包括建立和更新安全访问列表,且与会话密钥协商密切相关。当终端之间会话密钥协商结束后,终端双方会在各自本机建立安全访问列表用于保存此次密钥协商的信息,包括协商的共享会话密钥以及密钥被使用的次数。当密钥使用次数超过预定值时,如果终端双方需要继续通信,则必须再次进行会话密钥的协商,即更新安全访问列表的信息。

3 组件实现

在Windows系统下,组件采用NDIS中间层过滤驱动的形式实现。组件初始化时,通过NDIS函数NdisIMRegisterLayeredMiniport和NdisRegisterProtocol将组件注册为NDIS中间层驱动接口。注册之后,组件就可以在数据链路层上拦截所有的数据包。

组件的实现主要分为接收端和发送端两部分,接收端拦截其他终端向本机发送的MAC层数据包,然后根据收到的数据包类型,通过组件发送端向其他终端发送相关类型的数据包进行回应。另外,组件发送端还应根据终端通信需要向外发送指定格式的数据包。

3.1 数据包类型定义

内网在数据链路层以IEEE802.3协议为基础,终端在数据链路层进行通信的数据包帧头是以明文的形式,如图5所示,这符合内部网络共享传输信道的特性,但同时也带来了安全隐患,如数据帧的源或目标地址被篡改或者敏感信息被截获、修改和转发。

通过设置MAC层数据包的Type字段,组件定义了5种类型的数据包,定义见表1。

其中类型为0x05的数据包属于组件定义的安全类型,具体帧格式如图6所示,阴影部分表示组件发送端或接收端使用对称加密算法ε以密钥K为参数对其原始SDU进行加解密后的数据。当终端之间协商好共享会话密钥K后,发送数据包终端的组件发送端使用会[LL〗话密钥K对原SDU进行加密操作,而接收数据包终端的组件接收端使用会话密钥K对SDU进行解密,这样终端双方就可以实现安全通信。

3.2 组件接收端实现

组件接收端主要任务是截获由其他终端发送给本机的链路层数据包并判断其类型,如果为类型0x01,0x03或0x05数据包,则需通过组件发送端向源终端发送相应类型的数据包;如果为其他类型的数据包,接收端将数据包进行相关处理后完成。整个组件接收端处理数据包的具体流程如图7所示。

3.3 组件发送端实现

组件发送端的主要任务是根据具体需要向目标终端发送预定格式的数据包。当本机需要与其他终端进行通信或者组件接收端接收到类型为0x01,0x03或0x05数据包时,组件会通过发送端向目标终端发送相应类型的数据包。整个发送端具体处理流程如图8所示。

4 试验及结果说明

试验环境:用交换机将3台终端组成网络,3个终端具体系统信息和网络配置如表2所示。设定终端之间协商的共享会话密钥K为0x99,对称加密算法ε为对数据包的SDU字段(数据包的第14字节开始)与K进行逐字节异或操作。

试验过程:终端B,C加载安全组件,终端A不加载。终端C利用ping命令向终端B发送ICMP数据包,与此同时,终端A和终端B利用工具Sniffer Pro截获此ICMP数据包,试验结果记录如下。

试验结果:

(1) 终端B收到的数据包数据如图9所示。

图9结果表明终端B可以正确的解析终端C发送过来的数据包,且不影响正常的ping命令。

(2) 终端A截获的数据包数据如图10所示。

图10结果表明终端A截获到数据包的SDU字段是原数据包与密钥0x99经过逐字节异操作后的数据。

实验结果说明:在内网环境中,终端A可以嗅探到终端C发送给终端B的数据包,但只能得到B、C双方通过共享会话密钥K对SDU字段进行加密后的数据包,如果没有共享密钥K,终端A不能对加密后的数据包进行解密,说明组件可以有效地防止内网嗅探攻击;另一方面,如果网络内部人员想要将敏感信息通过网络方式传到外网,外网终端得到的也是密文,说明组件可以防止网络方式的主动泄密。

5 结 语

内网安全问题日趋严重,内网管理人员也逐渐重视。本文设计实现的安全通信组件,在一定程度上可以解决内网面临的安全威胁。从实际运行效果看,加载组件的终端运行良好,性能稳定。当然,安全是相对的,针对内网的安全研究也将继续。

参 考 文 献

[1]IEEE802.3.IEEE Std 802.3,2000 Edition[S].

[2]Systems Network Architecture Formats[DB/OL].IBM document#GA27-3136-12.

[3] Russinovich M E,Solomon D A.深入解析Windows操作系统――Microsoft Windows Server 2003/Windows XP/Windows 2000技术内幕.4版.潘爱民,译.北京:电子工业出版社,2007.

[4]武安河.Windows 2000/XP WDM设备驱动程序开发.2版.北京:电子工业出版社,2005.

[5] 毛文波.现代密码学理论与实践[M].王继林,译.北京:电子工业出版社,2004.

[6]Andrew G Mason,Mark J Newcomb.网络安全Cisco解决方案[M].詹文军,译.北京:电子工业出版社,2002.

[7]朱雁辉.Windows防火墙与网络封包截获技术[M].北京:电子工业出版社,2002.

作者简介 段小亮 男,1984年出生,硕士研究生。主要研究方向为信息安全与网络攻防技术。

上一篇:基于nRF24E1与网络、火线的教室照明射频遥控设... 下一篇:VFP字段加/解密算法的实践