发明内容
本发明要解决的技术问题是,针对现有技术的不足,提供一种安全通信方法、装置、系统以及安全主板,实现网络通信主体确认,能够防止网络传输的信息泄密。
根据本发明一个方面,提供一种安全通信方法,包括:
发送端的第一驱动层对待发送的数据包进行协议类型检查,确定待发送的数据包的协议类型,并根据协议类型对数据包的首部的一个或多个字段和/或数据包的数据部进行加密;
发送端将加密后的数据包发送给接收端;
接收端的第一驱动层对接收到的数据包进行协议类型检查,确定接收到的数据包的协议类型,并根据协议类型,与发送端相应地,对数据包的首部的一个或多个字段和/或数据包的数据部进行解密,如果解密失败,丢弃数据包;
接收端的第二驱动层对解密成功后的数据包进行验证,如果验证失败,丢弃数据包。
可选的,所述第一驱动层为IM层,所述第二驱动层为协议层;或者所述第一驱动层为Miniport层,所述第二驱动层为协议层;或者所述第一驱动层和第二驱动层都为协议层。
可选的,所述加密方法为等长度加密,所述验证方法为奇偶验证。
可选的,所述协议类型为UDP协议,发送端的第一驱动层对数据包的UDP首部中的、源端口、目标端口、数据长度字段和/或实际数据区进行加密。
可选的,所述协议类型为ICMP协议,发送端的第一驱动层对数据包的ICMP首部中的类型字段、代码字段和/或数据区进行加密。
根据本发明另一个方面,提供一种安全发送端,包括:
数据包截获单元,适于截获来自应用层软件的待发送数据包;
判断单元,适于对待发送的数据包进行协议类型检查,确定待发送数据包的协议类型;和
发送方加密单元,适于根据协议类型对数据包的首部的一个或多个字段和/或数据包的数据部进行加密,并将加密后的数据包发送给网卡。
根据本发明另一个方面,提供一种安全接收端,包括:
数据包截获单元,适于截获来自网卡的数据包;
判断单元,适于对截获的数据包进行协议类型检查,确定接收到的数据包的协议类型;
接收方解密单元,适于根据协议类型,对数据包的首部的一个或多个字段和/或数据包的数据部进行解密;和
校验单元,适于对解密后的数据包进行验证,如果验证失败,丢弃数据包,如果验证成功,将数据包发送给应用层软件。
根据本发明另一个方面,提供一种安全通信系统,包括:
发送方计算设备,包括依次耦接的应用层软件、安全发送端以及网卡;以及接收方计算设备,通过网络与发送方计算设备连接,包括依次耦接的应用层软件、安全接收端以及网卡。
根据本发明另一个方面,提供一种安全通信主板,包括:
一个或多个内存条插槽,用于插置一个或多个内存条;
一个或多个闪存,用来存储BIOS程序代码,其中,BIOS程序代码至少包括安全配置代码和安全配置数据,安全配置数据的内容是驱动程序,驱动程序包括发送端安全传输程序代码和接收端安全传输程序代码;和
一个或多个CPU插槽,用于插置CPU,其中,CPU至少用于执行安全配置代码,把驱动程序写入内存,并在操作系统初始化过程中,把驱动启动起来;
其中,发送端安全传输程序代码包括:对待发送的数据包进行协议类型检查,确定待发送的数据包的协议类型,根据协议类型,对数据包的首部的一个或多个字段和/或数据包的数据部进行加密,将加密后的数据包发送给接收端;
其中,接收端安全传输程序代码包括:对接收到的数据包进行协议类型检查,确定接收到的数据包的协议类型,根据协议类型,与发送端相应地,对数据包的首部的一个或多个字段和/或数据包的数据部进行解密,对解密后的数据包进行验证,如果验证失败,丢弃数据包。
可选的,所述安全配置数据的内容为IM驱动程序、Miniport驱动程序或协议驱动程序。
与现有技术相比,本发明公开的实施例的优点包括:
(1)通过对每一个数据包的加密解密,实现了对发送的每一个数据包的实时的防护;
(2)在通信主体受到恶意程序攻击后,保护通信主体的信息不被泄密;
(3)对于匿名分析者,增加了分析数据包的难度;
(4)再对数据包的真实数据区进行加密,可以在不改变数据包大小的前提下,实现了对数据包的多层保护。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
术语定义:
(1)计算设备(Computing Device):是指包括台式计算机(PC)、服务器、智能手机、笔记本电脑、平板电脑(Pad)等在内的能够进行数据处理和计算的设备。
(2)数据包:包(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”;其中,包括首部和数据部(即数据区),首部是根据各传输协议用于对数据部进行封装的数据,数据部一般指用户数据。
计算设备网络通信分析
如图1所示,发明人经研究发现:
计算设备如果需要进行网络通信,一般支持TCP/IP五层模型,包括:
应用层101、传输层102、网络层103、数据链路层104(图中显示为“链路层”)以及物理层105。
计算设备本身的体系结构一般包括:
应用软件层111(图中显示为应用软件);
操作系统层112(图中显示为操作系统,其包含硬件抽象层HAL,HAL位于操作系统最底层);以及
硬件设备层113(图中显示为硬件设备,其包括网卡、显卡等)。
对于上述两种层次结构,一般地,应用软件111与应用层101对应,操作系统112与传输层102、网络层103以及链路层104对应,硬件设备113(的网卡)与物理层105对应。
并且,操作系统112中自下而上包括:
(1)Miniport驱动123,Miniport驱动为微端口驱动(或小端口驱动),Miniport驱动程序可以通过NDIS接口来完成对网卡的操作,同时开放Miniport接口供上层驱动程序调用,也可以用Miniport驱动程序来实现网卡驱动;
(2)IM驱动122,IM驱动为中间媒介层驱动(或中间层驱动),IM位于Miniport和协议驱动程序之间,中间层驱动或中间层驱动程序同时具有Miniport和协议两种驱动程序接口;
(3)协议驱动121,协议驱动或协议驱动程序供操作系统其他部分调用封装,并以操作系统API的形式供应用程序调用。
另外,协议驱动121、IM驱动122和Miniport驱动123也可以称为协议驱动单元121、IM驱动单元122和Miniport驱动单元123。
另外,协议驱动121、IM驱动122和Miniport驱动123也可以称为协议层驱动121(简称协议层)、IM层驱动122(简称IM层)和Miniport层驱动123(简称Miniport层)。
对于上述两种层次结构,一般地,网络层103对应协议驱动121和IM驱动122,链路层33对应Miniport驱动123。
基于图1中的三种层次结构,对于一个数据包的传输过程,下面以Windows操作系统平台、UDP传输为例进行说明。
UDP的传输过程包括:
应用层软件→调用WS2_32.DLL的API→数据下发给SPI→数据给UDP的驱动(一种协议驱动)→IM驱动→Miniport驱动→网卡。
具体的:
(1)应用层:获取待发送的数据和端口号信息,转由WS2_32.dll的相关API处理,而WS2_32.dll处理后,交给SPI(服务提供者接口)处理;
(2)传输层:SPI处理完毕,交由TDI(传输驱动接口)处理,TDI适于对TCP和UDP数据包进行监控;
(3)网络层:TDI处理完毕,交由NDIS(网络驱动接口规范)处理;
(4)链路层:NDIS处理完毕,交由网卡发送;
(5)物理层:网卡将数据发送出去。
发明人经研究还发现:
以UDP传输为例,如图2所示,在按照网络层次模型进行数据传输的过程中,用户数据201被逐级封装,封装过程包括:
(1)在传输层102,用户数据201被添加UDP首部(首部数据的组织结构将在下面详细说明);
(2)在网络层103,用户数据201以及UDP首部211组成的数据包被添加IP首部221;
(3)在链路层104,用户数据201、UDP首部211以及IP首部221组成的数据包被添加以太网首部231和以太网尾部232,成为以太网帧。
另外,对于不同的协议,其封装的数据包的首部的数据是不同的,表1显示了在TCP/IP五层网络模型中,各个协议与网络层次的对应关系,其中,各个协议(以及名称的英文缩写)均为本领域技术人员的公知常识,不再赘述。
而且,数据包的首部相对于数据部来说非常小,以UDP为例,其首部如图3所示,包括8个字节,其中有16位UDP源端口号301、16位UDP目的端口号302、16位UDP长度303以及16位UDP校验和304。UDP首部之后是数据部305。
表1
网络层次 |
网络协议 |
应用层 |
HTTP/Telnet/FTP/SMTP/SNMP |
传输层 |
TCP/UDP |
网络层 |
IP/ICMP/IGMP |
链路层 |
ARP/RARP/SLIP/PPP/IEEE802.x |
针对上述发现,发明人提出:对于数据包网络传输,针对数据包的首部进行等长度加解密处理,能够确认通信主体,既不影响现有计算机网络通信处理过程,也不会对性能造成明显影响,还能极大的提高计算机网络通信的安全性。
安全通信过程
为了对上述表1列举的协议进行统一的处理,根据本发明一个实施例,发明人提出基本的安全通信过程P10如下:
其中,将进行通信的双方分别称为数据发送端和数据接收端;
P11、发送端对数据包的首部中的一个或多个字段进行等长度加密;也可以同时对数据区进行相同或不同方法的等长度加密;
P12、发送端将加密后的数据包发送给接收端;
P13、接收端接收到数据包后,对数据包的首部中的一个或多个字段进行等长度解密;
P14、接收端对接收的数据包进行验证,如果验证失败,将数据包丢弃。
这样,背景技术中所描述的问题(对于TCP和UDP协议通信,恶意程序通过挂钩SPI)可以解决。具体的,假设接收端有SPI hook对数据包进行伪装转发,由于数据包向下发送时会经过NDIS层,过程P10会对数据包部首和/或数据区进行加密处理,这样,即使数据被转发到了其他的非目的客户端,由于非目的客户端没有部署NDIS解密方法(即过程P10),因此,非目的客户端接收到的数据是被加密的。这样就保证了数据包被恶意转发的情况下,数据区的内容也是安全的,实现了防泄密的目的。
根据本发明另一个实施例,如果对数据区也进行加解密处理,则在P14中验证失败的情况,举例描述如下:
假设原始的数据区内容为:12345678,原始数据包的奇偶校验值假设为0x12dc,数据区进行了加密后的内容为87654321;
接收端收到数据包(数据内容是加密过的)后,进行解密,数据区还原为了12345678,当数据包继续发送给协议驱动时,协议驱动会对数据包进行奇偶校验,如果不一致,验证就失败了,数据包随即丢弃。
从而本领域的技术人员可以理解,分别对数据包的首部和数据部进行加解密处理,能够实现多层次防护。
具体的,下面以UDP和ICMP数据通信过程为例,描述安全通信过程如下:
UDP数据传输过程
1、发送端,例如在NDIS的IM层,对UDP首部中的、源端口、目标端口、数据长度字段和/或实际数据区进行等长度加密;
2、发送端将加密后的数据包发送给接收端;
3、接收端接收到数据包后,例如在NDIS的IM层,对UDP首部中的、源端口、目标端口、数据长度字段和/或实际数据区进行解密,并向上层例如协议层继续发送;
4、接收端,例如协议层,对接收的数据包进行验证,如果验证失败,将数据包丢弃;这样就实现了对UDP数据包传送完全管控。
ICMP数据传输过程
1、发送端,例如在NDIS的IM层,对ICMP首部中的类型字段、代码字段和/或数据区进行等长度加密;
2、发送端将加密后的数据包发送给接收端;
3、接收端接收到数据包后,例如在NDIS的IM层,对ICMP首部的类型字段、代码字段和/或数据区进行解密,并向上层例如协议层继续发送;
4、接收端,例如协议层,对接收的数据包进行验证,如果验证失败,将数据包丢弃;这样就实现了对ICMP数据包传送完全管控。
安全通信方法
基于上述安全通信过程,根据本发明一个实施例,提供一种安全通信方法。如图4所示,安全通信方法S10包括:
S11、发送端的IM层对待发送的数据包进行协议类型检查,确定待发送的数据包的协议类型,并根据协议类型对数据包的首部的一个或多个字段和/或数据包的数据部进行等长度加密;其中,对数据部进行加密可以对数据包实现多层保护;
S12、将加密后的数据包发送给接收端;
S13、接收端的IM层对接收到的数据包进行协议类型检查,确定接收到的数据包的协议类型,并根据协议类型,与发送端相应地,对数据包的首部的一个或多个字段和/或数据包的数据部进行等长度解密;
S14、接收端的协议层对解密后的数据包进行验证,如果验证失败,丢弃数据包。
根据本发明一个实施例,步骤S16中对数据包进行验证的方法为奇偶校验。
根据本发明另一个实施例,一种安全通信方法。如图5所示,安全通信方法S20包括:
S21、在发送端的Miniport层对待发送的数据包进行协议类型检查,确定待发送的数据包的协议类型,并根据协议类型对数据包的首部的一个或多个字段和/或数据包的数据部进行等长度加密;其中,对数据部进行加密可以对数据包实现多层保护;
S22、将加密后的数据包发送给接收端;
S23、在接收端的Miniport层对接收到的数据包进行协议类型检查,确定接收到的数据包的协议类型,并根据协议类型,与发送端相应地,对数据包的首部的一个或多个字段和/或数据包的数据部进行等长度解密;
S24、在接收端的协议层对解密后的数据包进行验证,如果验证失败,丢弃数据包。
根据本发明另一个实施例,上述步骤S11和S21可以在发送端的协议层进行,相应地,上述步骤S13和S23在接收端的协议层进行。
本领域技术人员可以理解,上述方法中的协议类型检查和数据包验证操作也可以在计算机操作系统或驱动的其他层次中完成,只要能够实现本发明的目的即可。
本领域技术人员可以理解,上述方法中的加密方法为等长度加密,也可以为其他类型的加密算法,例如,根据本发明另一个实施例,对数据部的加解密方法可以采用非等长度加密解密算法,同时修改数据包中的首部中的校验字段。
安全通信装置及系统
与上面方法相应地,根据本发明一个实施例,提供一种安全通信系统,如图6所示,安全通信系统包括:
发送方计算设备40,包括:依次耦接的应用层软件41、安全发送端42以及网卡43;以及
接收方计算设备50,通过网络60与发送方计算设备40连接,包括:依次耦接的应用层软件51、安全接收端52以及网卡53。
其中,安全发送端42(即发送端安全通信装置)进一步包括:
数据包截获单元421,适于截获来自应用层软件41的待发送数据包;
判断单元422,适于对待发送的数据包进行协议类型检查,确定待发送数据包的协议类型;和
发送方加密单元422,适于根据协议类型对数据包的首部的一个或多个字段和/或数据包的数据部进行加密,例如等长度加密,并将加密后的数据包发送给网卡43。
其中,安全接收端52(即接收端安全通信装置)进一步包括:
数据包截获单元521,适于截获来自网卡53的数据包;
判断单元522,适于对截获的数据包进行协议类型检查,确定接收到的数据包的协议类型;
接收方解密单元523,适于根据协议类型,对数据包的首部的一个或多个字段和/或数据包的数据部进行解密,例如等长度加密;和
校验单元524,适于对解密后的数据包进行验证,如果验证失败,丢弃数据包,如果验证成功,将数据包发送给应用层软件51。
安全通信主板
与上述安全通信方法和装置相应地,为了在现有的计算机硬件结构中完成本发明,根据本发明一个实施例,提供一种安全通信主板。
如图7a-7b所示,安全通信主板70包括:
一个或多个内存条插槽,用于插置一个或多个内存条;
一个或多个闪存,用来存储BIOS程序代码,其中,BIOS程序代码至少包括安全配置代码和安全配置数据,安全配置数据的内容是IM驱动程序,IM驱动程序包括发送端安全传输程序代码和接收端安全传输程序代码;和
一个或多个CPU插槽,用于插置CPU,其中,CPU至少用于执行安全配置代码,把IM驱动程序写入内存,并在操作系统初始化过程中,把IM驱动启动起来;
其中,发送端安全传输程序代码包括:对待发送的数据包进行协议类型检查,确定待发送的数据包的协议类型,根据协议类型,对数据包的首部的一个或多个字段和/或数据包的数据部进行加密,将加密后的数据包发送给接收端;
其中,接收端安全传输程序代码包括:对接收到的数据包进行协议类型检查,确定接收到的数据包的协议类型,根据协议类型,与发送端相应地,对数据包的首部的一个或多个字段和/或数据包的数据部进行解密,对解密后的数据包进行验证,如果验证失败,丢弃数据包。
本领域技术人员可以理解,因为IM驱动程序直接写入了内存,在硬盘上不存在,因此对驱动程序本身不被静态逆向分析提供了保障。
本领域技术人员可以理解,将发送端安全传输程序代码和接收端安全传输程序代码放置在Miniport层、协议层或其他NDIS驱动层次也是可以的。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。