本发明涉及一种安全化处理系统,特别是涉及一种基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的TCPIP协议栈安全化处理系统。
背景技术:
当前,越来越多的传统设备搭载了网络通信功能,特别是近几年智能家居的逐渐普及,使得几乎所有的家用电器都能通过互联网连在一起,实现自动化和智能化。但是传统的网络通信通过操作系统软件处理TCP/IP协议,给CPU带来庞大开销,且TCP/IP协议没有内在的控制机制来支持源地址的鉴别,给网络安全埋下了隐患。物联网技术和大数据技术的不断发展都给网络通信提出了快速且安全的高要求。
目前正在发展的TOE(TCP Offload Engine,TCP减负引擎)技术减轻CPU压力,提高网络数据包的处理速度,但是这个技术目前依然不是十分成熟,已公开的文献大多比较类似,可操作性低且无法解决安全问题。具体对比详见本文第九部分,其中检索结果3中的TOE网卡结构如图1所示。可以看出,利用硬件实现完整的TCP/IP协议栈有其技术困难性。然而目前很多设备不是主干服务器,甚至连计算机都不是,它们仅是比较简单的网络设备,仅需要利用现有网络交互小规模数据即可,无需实现完整的协议栈。它们要求网络通信模块能利用的硬件资源越少越好,它们中的一些还会对数据安全有很高的要求,例如门禁系统。所以如何简化协议栈,方便地用硬件实现它并能兼顾安全通信的要求是本发明要解决的问题。
技术实现要素:
本发明所要解决的技术问题是提供一种基于FPGA的TCPIP协议栈安全化处理系统,其不仅适用于FPGA,也适用于ASIC,让单芯片实现TCP/IP协议栈,降低了一些不需要大规模传输数据的网络设备的硬件成本;增加了一层安全协议,弥补了TCP协议的安全隐患,并且借助于内部的安全控制单元,保证了安全控制的灵活性;对外接口简单,方便扩展成各种类型的总线接口。
本发明是通过下述技术方案来解决上述技术问题的:一种基于FPGA的TCPIP协议栈安全化处理系统,其特征在于,其包括TCP/IP协议栈的改造方案、FPGA的实现方案、系统具体工作流程;
所述TCP/IP协议栈的改造方案包括简化方案和安全方案;
所述FPGA的实现方案包括:
网络协议解析单元:主要功能是解析网络协议,本单元受CPU控制,选择性地提取MAC地址,VLAN号,IP地址,TCP端口号等信息,然后,选择性的进行安全表的查询匹配,最后按特定格式将解析出的结果缓存起来;
超帧处理单元:数据通路分为上传通路和下载通路;上传通路根据接收描述符读取接收帧的数据部分;如果恰好接收到的以太网帧是一个超帧的开头,则该帧的数据部分必然包含了超帧的包头和指令字段,包头字段需要进行水印安全检查,指令字段需要根据具体情况替换成特定指令或流程标记;根据包头信息将若干个以太网帧的数据部分拼接成一个超帧;下载通路中硬件解析指令字段并通知CPU进行相应操作,例如主动发起TCP握手、主动发起一个ARP广播等,并将CPU计算得到的安全码写入水印字段,根据包头信息将超帧分解为若干个以太网帧并生成发送描述符;这个模块与外部的接口十分简单,只有请求、应答、数据三种类型的端口,使得整个系统对外部的表现就像一个存储器,方便扩展为各种类型的总线接口;
安全控制单元:这个模块是水印函数以及安全表的储存和管理单元,留有外部接口,这是为了增加灵活性和安全性,此外此模块也支持外部配置IP和MAC;
帧头生成器:主要功能是储存发送帧的TCP/IP协议的包头,包头由CPU直接组建,配合发送数据缓存得到完整的以太网帧;
接收DMA模块:根据IP地址过滤以太网帧,检验IP协议校验和,生成接收帧描述符,将接收到的以太网帧传输到接收帧缓存,或过滤VLAN号;
发送DMA模块:融合发送数据缓存中的数据和帧头生成器中的帧头,并分别计算ARP协议、IP协议、ICMP协议、TCP协议的校验和,组成正常的以太网帧传递给MAC控制器发送;由于应答帧和某些特殊帧的固定格式,该模块直接根据发送描述符生成所需要的应答帧和特殊帧,不需要软件参与;
上传DMA模块:由CPU给出描述符,选择性地上传以太网帧,长传过程中舍弃掉帧头部分和一些没有意义的帧,方便构造超帧;
下载DMA模块:由CPU给出描述符,选择性地下载超帧,这里将一个超帧分段读取,分解成为多个以太网帧;
嵌入式CPU模块:主要负责各个模块寄存器的配置和管理,按照接收数据通路和发送数据通路经过模块的先后顺序,轮询各个模块,进行相应操作;另外需要组建发送帧帧头,计算水印,维护接收描述符和发送描述符,维护接收帧缓存和发送数据缓存,给出数据传输策略;
总线接口或其他功能模块:用于连接各部件;
发送数据缓存模块:用于存储系统所发送数据;
接收数据缓存模块:用于存储系统所接收数据;
MAC控制器:用于控制媒体访问;
片上程序存储器:用于存储程序数据;
总线管理单元:用于为各功能部件传送信息;
片上数据存储器:用于存储数据;
PHY模块,用于与外部信号连接。
优选地,所述系统具体工作流程包括初始化过程、上行过程、下行过程。
优选地,所述初始化过程包括以下步骤:
步骤一,配置MAC地址、IP地址;
步骤二,检查水印生成函数和安全表的准备状态,初始化各个模块相应的寄存器;
步骤三,CPU生成ARP广播帧描述符和帧头,交由发送DMA发出ARP广播帧。
优选地,所述上行过程包括以下步骤:
步骤十一,以太网帧通过PHY进入MAC控制器,在MAC控制器中对以太网帧进行MAC地址过滤以及数据链路层校验和检查,广播帧不过滤,下同,之后转步骤十二;
步骤十二,经过接收DMA,在这里对以太网帧进行IP地址过滤、VLAN号过滤,并检验IP协议校验和,如果检验不通过转步骤十一,否则由接收DMA生成接收帧描述符,转步骤十三;
步骤十三,由网络协议解析单元进行协议解析,解析结果通知CPU,如果发现是ARP帧或者ICMP帧,则转步骤十四,如果发现是TCP帧,则转步骤十五;
步骤十四,网络协议解析单元判断是否需要应答,如果不需要应答则CPU完成更新ARP表等相关操作后就把帧直接丢弃,否则由CPU生成应答帧描述符并组建应答帧帧头,然后转步骤十六;
步骤十五,CPU根据安全表进行ID号和TCP端口号的过滤,将携带数据的TCP帧的接收描述符修改之后交给上传DMA,进而将若干以太网帧上传到超帧处理单元中构造超帧,转步骤十七,同时组建TCP应答帧及其描述符,转步骤十六;
步骤十六,发送DMA根据描述符来区分协议,构造出不同协议的应答帧或特殊帧,在帧头生成器中读取帧头,然后自动生成不同协议对应的应答数据部分,计算相应协议的校验和,然后转步骤十八;
步骤十七,超帧处理单元分析超帧包头,取出水印字段交由CPU鉴别,对于鉴别不通过的超帧直接丢弃,否则就上传;该步骤也要解析指令字段,如果指令要求结束TCP链接或者收到了TCP的FIN帧,则CPU需要去组建TCP断开过程中相关帧的描述符,之后转步骤十六,否则重复该步骤;
步骤十八,MAC控制器将应答帧或FIN帧通过PHY发出,重复步骤十一至步骤十七。
优选地,所述下行过程包括以下步骤:
步骤二十一,由超帧处理单元读取超帧的指令字段,如果指令字段要求发送ARP广播帧,则转步骤二十二,如果指令字段要求建立TCP链接,则转步骤二十三,如果指令字段要求修改IP地址或MAC地址,则转步骤二十四,其余情况转步骤二十五;
步骤二十二,由CPU构造ARP广播帧的发送描述符以及帧头,交给发送DMA组帧并由MAC控制器发出,之后转步骤二十一;
步骤二十三,由CPU构造TCP请求帧描述符以及帧头,交给发送DMA组帧并发出,之后CPU配合各相关模块进行三次TCP握手操作,如果握手成功则转步骤二十五,否则转步骤二十六;
步骤二十四,CPU分别配置MAC控制器和接收DMA的相关寄存器,以此修改MAC地址,IP地址,之后转步骤二十一;
步骤二十五,超帧处理单元解析超帧的包头,将一个超帧分解成若干个以太网帧,并通过下载DMA传递给发送数据缓存,同时生成发送描述符;CPU根据此描述符在帧头生成器中生成以太网帧的帧头;发送DMA将帧头生成器中的帧头和发送数据缓存中的数据融合成完整的以太网帧,交给MAC控制器发出;每发出一个TCP帧,就要等待一个ACK帧的返回,如果ACK帧在规定时间返回则转步骤二十七,否则转步骤二十八;
步骤二十六,握手失败,重复握手操作三次之后丢弃整个超帧,转步骤二十一;
步骤二十七,对于返回的ACK帧,需要进行ID号和二次水印的鉴别,如果通过则继续重复步骤二十一至步骤二十五,否则转步骤二十八,直到指令字段要求发送FIN帧,CPU配合各相关模块完成TCP断开操作,从而结束本次TCP链接,转步骤二十一;
步骤二十八,经过三次重传操作,如果收到ACK帧,则转步骤二十七,否则主动发起断开TCP链接操作,重复步骤二十一至步骤二十七。
本发明的积极进步效果在于:本发明不仅适用于FPGA,也适用于ASIC,让单芯片实现TCP/IP协议栈,降低了一些不需要大规模传输数据的网络设备的硬件成本;增加了一层安全协议,弥补了TCP协议的安全隐患,并且借助于内部的安全控制单元,保证了安全控制的灵活性;对外接口简单,方便扩展成各种类型的总线接口。
附图说明
图1为现有TOE网卡的整体架构图。
图2为本发明基于FPGA的TCPIP协议栈安全化处理系统的系统的构造安全协议图。
图3为本发明基于FPGA的TCPIP协议栈安全化处理系统的系统的系统总体架构图。
图4为本发明中网络协议解析单元的框架示意图。
图5为本发明中超帧处理单元的框架示意图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
本发明公开了一种基于FPGA(现场可编程门阵列)的TCPIP(传输控制协议/网间协议)协议栈安全化处理系统包括TCP/IP协议栈的改造方案、FPGA的实现方案、系统具体工作流程。
所述TCP/IP协议栈的改造方案包括简化方案、安全方案,其中:
简化方案的具体内容如下:
1.1)协议栈包括的协议仅有ARP(地址解析协议)、ICMP(控制报文协议)、IP(网间协议)、TCP(传输控制协议),以及一个自定义的安全协议,虽然对每种协议都会做出简化,但应用层以下的组帧格式依然严格按照现有TCP/IP协议规定格式;
1.2)不构造复杂的ARP表,ICMP协议仅实现PING(因特网包探索器);
1.3)允许配置IP地址、MAC(媒体访问控制)地址和VLAN(虚拟局域网)号,但不能构造复杂虚拟局域网;
1.4)充分简化TCP协议,具体为不支持过多的TCP链接,舍弃窗口机制,接收方每接收一帧给出一个ACK(确认字符),发送方每发送一帧就要等收到ACK之后才发送下一帧,这样虽然牺牲了传输效率,但却有效地避免了乱序问题且又能保证传输的可靠;TCP链接一旦建立,每帧的重传次数固定为三次,三次之后断开TCP链接;
安全方案的具体内容如下:
2.1)在TCP协议之上,将若干个以太网帧携带的数据拼接成最大尺寸固定的超帧,由此构造一层安全协议,超帧的数据结构如图2所示;同时TCP传输过程中的ACK帧区别于普通ACK帧,该ACK帧将携带安全信息,格式如图2;
2.2)超帧中的指令字段指的是操作指令或流程标记,给出特定的操作指令,建立TCP链接,配置MAC地址和IP地址、重传特定编号的超帧等操作,或一些特定的流程标记,用以识别当前数据传输的流程;
2.3)安全机制是通过ID(身份标识)号和水印实现的,构造安全ID表,对ID号、IP地址、MAC地址和TCP端口号进行安全绑定,限定特定ID间的通信;而水印是基于特定算法计算出的对整个超帧所有数据的一个安全码,接收方必须校验水印正确之后才认为超帧携带的数据是真实可靠的;二次水印是将水印字段经过特定算法得到的又一个安全码,用于鉴别ACK帧的真实性。
如图3所示,所述FPGA的实现方案包括网络协议解析单元、超帧处理单元、安全控制单元、帧头生成器、接收DMA(直接内存存取)模块、发送DMA模块、上传DMA模块、下载DMA模块、嵌入式CPU(中央处理器)模块、总线接口或其他功能模块、发送数据缓存模块、接收数据缓存模块、MAC控制器、片上程序存储器、总线管理单元、片上数据存储器、PHY(物理层)模块,其中:
网络协议解析单元:主要功能是解析网络协议,本单元受CPU控制,选择性地提取MAC地址,VLAN号,IP地址,TCP端口号等信息,然后,选择性的进行安全表的查询匹配,最后按特定格式将解析出的结果缓存起来,内部结构如图4所示;
超帧处理单元:本模块结构如图5所示,数据通路分为上传通路和下载通路;上传通路根据接收描述符读取接收帧的数据部分;如果恰好接收到的以太网帧是一个超帧的开头,则该帧的数据部分必然包含了超帧的包头和指令字段,包头字段需要进行水印安全检查,指令字段需要根据具体情况替换成特定指令或流程标记;根据包头信息将若干个以太网帧的数据部分拼接成一个超帧;下载通路中硬件解析指令字段并通知CPU进行相应操作,例如主动发起TCP握手、主动发起一个ARP广播等,并将CPU计算得到的安全码写入水印字段,根据包头信息将超帧分解为若干个以太网帧并生成发送描述符;这个模块与外部的接口十分简单,只有请求、应答、数据三种类型的端口,使得整个系统对外部的表现就像一个存储器,方便扩展为各种类型的总线接口;
安全控制单元:这个模块是水印函数以及安全表的储存和管理单元,留有外部接口,这是为了增加灵活性和安全性,此外此模块也支持外部配置IP和MAC;
帧头生成器:主要功能是储存发送帧的TCP/IP协议的包头,包头由CPU直接组建,配合发送数据缓存得到完整的以太网帧;
接收DMA模块:根据IP地址过滤以太网帧,检验IP协议校验和,生成接收帧描述符,将接收到的以太网帧传输到接收帧缓存,或过滤VLAN号;
发送DMA模块:融合发送数据缓存中的数据和帧头生成器中的帧头,并分别计算ARP协议、IP协议、ICMP协议、TCP协议的校验和,组成正常的以太网帧传递给MAC控制器发送;由于应答帧和某些特殊帧的固定格式,该模块直接根据发送描述符生成所需要的应答帧和特殊帧,不需要软件参与;
上传DMA模块:由CPU给出描述符,选择性地上传以太网帧,长传过程中舍弃掉帧头部分和一些没有意义的帧,方便构造超帧;
下载DMA模块:由CPU给出描述符,选择性地下载超帧,这里将一个超帧分段读取,分解成为多个以太网帧;
嵌入式CPU模块:主要负责各个模块寄存器的配置和管理,按照接收数据通路和发送数据通路经过模块的先后顺序,轮询各个模块,进行相应操作;另外需要组建发送帧帧头,计算水印,维护接收描述符和发送描述符,维护接收帧缓存和发送数据缓存,给出数据传输策略;
总线接口或其他功能模块:用于连接各部件;
发送数据缓存模块:用于存储系统所发送数据;
接收数据缓存模块:用于存储系统所接收数据;
MAC控制器:用于控制媒体访问;
片上程序存储器:用于存储程序数据;
总线管理单元:用于为各功能部件传送信息;
片上数据存储器:用于存储数据;
PHY模块,用于与外部信号连接。
所述系统具体工作流程包括初始化过程、上行过程、下行过程。
所述初始化过程包括以下步骤:
步骤一,配置MAC地址、IP地址;
步骤二,检查水印生成函数和安全表的准备状态,初始化各个模块相应的寄存器;
步骤三,CPU生成ARP广播帧描述符和帧头,交由发送DMA发出ARP广播帧。
所述上行过程包括以下步骤:
步骤十一,以太网帧通过PHY进入MAC控制器,在MAC控制器中对以太网帧进行MAC地址过滤以及数据链路层校验和检查,广播帧不过滤,下同,之后转步骤十二;
步骤十二,经过接收DMA,在这里对以太网帧进行IP地址过滤、VLAN号过滤,并检验IP协议校验和,如果检验不通过转步骤十一,否则由接收DMA生成接收帧描述符,转步骤十三;
步骤十三,由网络协议解析单元进行协议解析,解析结果通知CPU,如果发现是ARP帧或者ICMP帧,则转步骤十四,如果发现是TCP帧,则转步骤十五;
步骤十四,网络协议解析单元判断是否需要应答,如果不需要应答则CPU完成更新ARP表等相关操作后就把帧直接丢弃,否则由CPU生成应答帧描述符并组建应答帧帧头,然后转步骤十六;
步骤十五,CPU根据安全表进行ID号和TCP端口号的过滤,将携带数据的TCP帧的接收描述符修改之后交给上传DMA,进而将若干以太网帧上传到超帧处理单元中构造超帧,转步骤十七,同时组建TCP应答帧及其描述符,转步骤十六;
步骤十六,发送DMA根据描述符来区分协议,构造出不同协议的应答帧或特殊帧,在帧头生成器中读取帧头,然后自动生成不同协议对应的应答数据部分,计算相应协议的校验和,然后转步骤十八;
步骤十七,超帧处理单元分析超帧包头,取出水印字段交由CPU鉴别,对于鉴别不通过的超帧直接丢弃,否则就上传;该步骤也要解析指令字段,如果指令要求结束TCP链接或者收到了TCP的FIN帧,则CPU需要去组建TCP断开过程中相关帧的描述符,之后转步骤十六,否则重复该步骤;
步骤十八,MAC控制器将应答帧或FIN帧通过PHY发出,重复步骤十一至步骤十七。
所述下行过程包括以下步骤:
步骤二十一,由超帧处理单元读取超帧的指令字段,如果指令字段要求发送ARP广播帧,则转步骤二十二,如果指令字段要求建立TCP链接,则转步骤二十三,如果指令字段要求修改IP地址或MAC地址,则转步骤二十四,其余情况转步骤二十五;
步骤二十二,由CPU构造ARP广播帧的发送描述符以及帧头,交给发送DMA组帧并由MAC控制器发出,之后转步骤二十一;
步骤二十三,由CPU构造TCP请求帧描述符以及帧头,交给发送DMA组帧并发出,之后CPU配合各相关模块进行三次TCP握手操作,如果握手成功则转步骤二十五,否则转步骤二十六;
步骤二十四,CPU分别配置MAC控制器和接收DMA的相关寄存器,以此修改MAC地址,IP地址,之后转步骤二十一;
步骤二十五,超帧处理单元解析超帧的包头,将一个超帧分解成若干个以太网帧,并通过下载DMA传递给发送数据缓存,同时生成发送描述符;CPU根据此描述符在帧头生成器中生成以太网帧的帧头;发送DMA将帧头生成器中的帧头和发送数据缓存中的数据融合成完整的以太网帧,交给MAC控制器发出;每发出一个TCP帧,就要等待一个ACK帧的返回,如果ACK帧在规定时间返回则转步骤二十七,否则转步骤二十八;
步骤二十六,握手失败,重复握手操作三次之后丢弃整个超帧,转步骤二十一;
步骤二十七,对于返回的ACK帧,需要进行ID号和二次水印的鉴别,如果通过则继续重复步骤二十一至步骤二十五,否则转步骤二十八,直到指令字段要求发送FIN帧,CPU配合各相关模块完成TCP断开操作,从而结束本次TCP链接,转步骤二十一;
步骤二十八,经过三次重传操作,如果收到ACK帧,则转步骤二十七,否则主动发起断开TCP链接操作,重复步骤二十一至步骤二十七。
本发明用Xilinx或者Altera的FPGA实现都很方便,或采用开发专用ASIC芯片来实现,同时基于FPGA或ASIC芯片开发相应PCI/PCIE的TOE网卡板。
本发明可应用的实际例子来进一步说明:一种网络型门禁系统,核心部件是门禁控制器,由门禁安全管理单元和网络处理单元构成。一般情况下,门禁控制器通过读卡器或生物识别仪来获取刷卡人员的卡号信息,并将接收到的卡号与控制器中储存的卡号权限进行比对判断,以此决定是否允许该人员该时段的进出。门禁控制器通过TCP/IP网络与管理计算机联网,将事件记录和接收到的刷卡人员的信息传递给管理计算机,并接收来自管理计算机的更新消息。在某些特殊情况下,远端管理计算机全面接管门禁控制器,禁止本地卡号权限比对,实现远程控制人员的进出。这样的网络门禁控制器不需要传输大量的数据,但是需要加密的TCP/IP协议以及花最少的硬件代价处理网络协议栈,其网络处理单元完全利用本发明方案实现。实现本发明方案时,使用Altera的EP2S60/130系列FGPA自带软核NIOS就能完全满足处理要求了,如果利用Xilinx的ZYNQ系列FPGA还能在本发明的基础上进一步的增加协议以满足更广泛的应用。
本发明有以下特点:一,单片FPGA实现TCP/IP协议栈。为此需要合理简化现有TCP/IP协议栈,要求通过简化后的协议栈构造的以太网帧能满足正常帧格式要求,不影响其在现有网络中的传播。二,数据在网络中安全传输。需要对TCP/IP协议栈进行安全化改造,通过在TCP层上增加一个安全层并构造加密超帧的方式来形成安全机制。三,方便广泛应用。本发明无需操作系统软件。利用SOPC实现,直接面向硬件编程,代码简单,无需操作系统参与。另外本发明将控制指令包含在了数据包中的方式使得接口十分简单,可以任意扩展或者直接使用。
除了门禁系统以外,本发明适用于任何需要安全网络通信且通信速率和数据量要求不是特别高的场合。我们已经利用现有的FPGA网卡开发板并基于本发明方案开发出了网络安全通信原型系统,该系统能做到安全地传输一些特殊信息,本发明对于TCP/IP协议栈的硬件加速处理保证了该系统能以较快速度运作。
以上所述的具体实施例,对本发明的解决的技术问题、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。