CN102571494B - 一种基于fpga的入侵检测系统及方法 - Google Patents
一种基于fpga的入侵检测系统及方法 Download PDFInfo
- Publication number
- CN102571494B CN102571494B CN201210008978.3A CN201210008978A CN102571494B CN 102571494 B CN102571494 B CN 102571494B CN 201210008978 A CN201210008978 A CN 201210008978A CN 102571494 B CN102571494 B CN 102571494B
- Authority
- CN
- China
- Prior art keywords
- pin
- data
- rule
- snort
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Abstract
一种基于FPGA的入侵检测系统及方法,属于网络安全技术领域,本发明设计并实现了基于FPGA的入侵检测系统,以硬件电路的实现方式提升处理性能,选择二叉树结构包分类算法实现包分类,采用了适合于FPGA处理的XOR Hash算法实现字符匹配,通过在原有入侵规则实现逻辑基础上进行添加或修正实现规则的更新,通过对哈希冲突进行单独匹配的方法,解决了哈希冲突。
Description
技术领域
本发明属于网络安全技术领域,特别涉及一种基于FPGA的入侵检测系统及方法。
背景技术
随着网络安全越来越受重视,入侵检测系统作为实现网络安全的核心技术与实现难点也越来越受人们关注,入侵检测系统包括字符匹配与包分类两部分。
目前,国内外对于入侵安全中的字符匹配与包分类两部分主要采用硬件与软件方法。其中基于软件的匹配算法有BM算法、Aho-Corasick算法、AC-BM改进算法等,其处理速度较慢,很难满足现在网络发展的要求。基于硬件中较流行的是基于FPGA的处理方法。使用CAM(即内容可寻址存储器)是一种最为普遍的字符串匹配与包分类方法。CAM是一种特殊的存储阵列,它具有将输入数据与CAM中存储的所有数据项同时进行比较,迅速判断输入数据是否与CAM中存储的数据项相匹配,并给出数据项对应地址和匹配信息的特点。使用大量FPGA的查找表和控制逻辑可以拼接成CAM,不同的拼接方法实现CAM可以得到不同的性能和资源利用率。离散比较器是使用FPGA的查找表来实现的。由于可以实现字符串的并行匹配,所以这种方法的匹配性能是非常好的。但是其资源利用率却比较差,必须使用一些特殊的方法来达到资源共享的目的。基于CAM,TCAM实现的字符串匹配算法匹配速度较快,但其价格相当昂贵且容量小,耗电量大,只适用于小规模的规则库。
发明内容
针对现有方法存在的不足,本发明提出一种基于FPGA的入侵检测系统及方法,以达到提高处理能力的目的。
本发明的技术方案是这样实现的:一种基于FPGA的入侵检测系统,包括以太网驱动电路、FPGA、数据缓存器、哈希存储器、串口驱动电路和上位机,其连接关系为:以太网驱动电路的输出端连接FPGA的输入端,数据缓存器的数据输入输出端连接FPGA的第一数据输入输出端,哈希存储器的数据输入输出端连接FPGA的第二数据输入输出端,FPGA的输出端连接串口驱动电路的输入端,串口驱动电路的输出端连接上位机;
其中,所述的FPGA,其内部模块包括:用于接收网络数据包的以太网接口、用于对接收的网络数据进行包分类的包分类IP核(是一种外设)、用于对接收的网络数据进行字符匹配的字符匹配IP核(是一种外设)、作为哈希存储器的同步动态随机存储器SDRAM及作为树节点存储器的片上只读存储器ROM、用于存储检测出的入侵数据的片上随机存储存储器RAM、用于将网络数据包存入双口随机存储存储器(双口RAM)的以太网接口及两个Nios II处理器,所述的两个Nios II处理器一个用于控制以太网数据的接收,另一个用于控制包分类IP核、字符匹配IP核及控制检测出的入侵数据到上位机的发送;
所述的FPGA的内部模块之间通过Avalon总线进行通讯;
以太网接口将接收到的网络数据发送给双口随机存储存储器,Nios II处理器调用双口随机存储存储器中的数据,并控制字符匹配IP核及包分类IP核检测入侵数据,通过串口通讯将检测到的入侵数据传递给上位机,由上位机进行显示;
采用基于FPGA的入侵检测系统的入侵检测方法,包括以下步骤:
步骤1:将Snort规则通过基于异或操作的哈希函数(XOR Hash)产生对应的地址,将Snort规则存放入哈希存储器相应的地址中,所述的哈希存储器是指:通过哈希映射后存储Snort规则的存储器;其中,所述的Sonrt是一个多平台、实时流量分析,网络IP数据包记录等特性的强大的网络入侵检测/防御系统,其基于一个实时维护的入侵数据Snort规则库,基于异或操作的哈希函数(XOR Hash)产生对应的地址具体方法为:
步骤1-1:将Sonrt规则中的每一条规则分解成32位位串,某一条Sonrt规则的分解方法为:从所述规则的高位到低位按顺序依次截取32位,不足32位的部分在高位用0补足,所述规则被分解成若干条待处理的32位位串;
步骤1-2:输入待处理的32位位串X=<x0,x1,x2,x3,...,x31>,采用哈希函数计算X在哈希存储器中的地址h(X),公式为:
式中,“·”为与运算符,是异或运算符,D=<d0,d1,d2,d3,...,d31>为哈希函数中的随机数,其具有32位,分别为d0,d1,......,d31,且通过如下公式计算:
di=(α·di-1+c)mod N,i=1,2,3,...,31 (2)
式中,di是所求随机数,其初始值d0为任一随机正整数,N是使di归一化的正整数,且当N=231-1,α=16034时,获得的随机数di具有较好的随机性,α是小于N的正整数,c是非负的整数;
步骤1-3:在进行Hash计算时,会产生哈希冲突(即不同的数据进行Hash运算后得出相同的地址数据):对于不同长度的Snort规则选择不同随机数的Hash函数,同时给不同长度的Snort规则分配不同的存储区域,对个数较多的长度的Snort规则分配更多的存储区域,经过以上处理后,若仍有个别冲突,则对Snort规则进行进一步处理,方法为:对步骤1-1到步骤1-2产生的哈希地址冲突的Snort规则进行单独保存,然后反复进行步骤1-1到步骤1-2,选取冲突小于4个的哈希函数;
步骤1-4:将Snort规则存放入哈希存储器相应的地址中;
步骤1-5:利用二叉树结构包分类算法对Snort包头规则进行包分类,其中每条包头规则包含两个域,第1个域是IP源地址,第2个域是IP目的地址,均为32位数值;
所述的二叉树结构包分类算法为:
(1)生成树的根节点,根节点包含全部包头数据,其中,包头数据的范围是:目的IP地址与源IP地址均为:0.0.0.0~255.255.255.255;
(2)将根节点分成两个子节点,所述两个子节点的包头数据的源IP地址范围分别为:0.0.0.0~127.127.127.127和127.127.127.128~255.255.255.255,目的IP地址的范围均为0.0.0.0~255.255.255.255,即将源IP地址范围进行对半分割;
(3)若所述两个子节点所包含的Snort包头规则的数目超过所设定的阈值,则对子节点的源IP地址范围进行对半分割,再生成子节点的两个子节点,直至新生成的子节点的Snort包头规则个数不超过设定的阈值,停止分割过程,其中,所述的阈值的取值范围为5~7;
(4)将步骤(1)(2)(3)建立的二叉树结构保存在一个存储器中,称此存储器为“树节点存储器”,所述的“树节点存储器”中的每个节点(包括树根节点、树枝节点和树叶子节点)均占用32位,同一个父节点的所有子节点保存在一个连续内存区域,同一层节点的子节点从左到右保存在连续的内存块内;每个节点的32位数据提供的信息可以遍历到它的所有子节点,二叉树叶子节点对应的Snort包头规则保存在“上界域值存储器”和“下界域值存储器”中,“上界域值存储器”存放Snort包头规则的目的IP地址与源IP地址的上界,“下界域值存储器”分别存放了Snort包头规则的目的IP地址与源IP地址的下界,同一规则的域值上界保存在“上界域值存储器”的地址与域值下界保存在“下界域值存储器”的地址保持一致,所述二叉树叶子节点的32位数据中包含了规则在“上界域值存储器”和“下界域值存储器″中的起始位置;
步骤2:通过以太网控制器接收网络数据包;
步骤3:采用步骤1-4的(1)(2)(3)步,对接收到的网络中的数据包进行包分类,然后采用线性搜索方法进行数据包的包头匹配,方法为:
步骤3-1:根据节点的划分域,取出网络数据包包头的数据,其中划分域为节点数据中的第1位至第3位;
步骤3-2:利用划分位置计算下一个节点偏移地址,其中划分位置为节点数据中的第4位至第14位;
步骤3-3:将偏移地址与子节点起始地址相加,即可得到线性搜索的下一个节点(子节点)地址,其中子节点起始地址为节点数据中的第17位至第31位;
步骤3-4:将地址送给“树节点存储器″;
步骤3-5:从“树节点存储器”读取下一个节点的32位数据;
步骤3-6:判断节点32位数据中的最高位是否为0,若是,则为中间节点,进行新一轮查找;否则为叶子节点,查找结束;
步骤3-7:根据叶子节点的32位数据,判断其Snort包头规则数目是否为0,若为0,则叶子节点是空节点,则匹配结束,网络数据包头不符合Snort包头规则的描述;若Snort包头规则数目大于0,则网络数据包头和叶子节点指向的Snort包头规则逐一匹配,若网络数据包头和某个Snort包头规则匹配,则匹配结束,存储匹配的Snort包头规则,否则,匹配完叶子节点的Snort包头规则数目,仍没有找到匹配的Snort包头规则,表示网络数据包头不和任何Snort包头规则匹配,则匹配结束;
步骤4:将采集到网络中的数据包的数据信息与Snort规则利用XOR Hash算法进行字符匹配,得到匹配信息,方法为:
步骤4-1:采用步骤1-1和步骤1-2中的方法,计算接收的网络数据的哈希地址,然后根据此地址从哈希存储器中取出相应的数据,与网络中的数据进行匹配,若相同,则确定其为入侵数据,并存储;
步骤4-2:对于长度与冲突的Snort规则相同的网络数据再进行单独的匹配,即使长度与冲突的Snort规则相同的网络数据在采用步骤4-1方法匹配的同时,又直接与冲突的Snort规则进行比较,若相同,则直接判定当前匹配的网络数据为非法数据;若不相同,则采用步骤4-1方法的匹配信息。
步骤5:将步骤3和步骤4检测出的入侵数据发送给上位机;
本发明的优点:本发明设计并实现了基于FPGA的入侵检测系统,以硬件电路的实现方式提升处理性能,选择二叉树结构包分类算法实现包分类,采用了适合于FPGA处理的XORHash算法实现字符匹配,通过在原有入侵规则实现逻辑基础上进行添加或修正实现规则的更新,通过对哈希冲突进行单独匹配的方法,解决了哈希冲突,实验结果显示,系统的包分类平均处理能力达到了10Gbps以上;字符匹配能力达到了1.01Gbps,为软件方法的30倍以上;Snort入侵检测系统的规则头的分类平均处理能力达到了8Gbps以上,当处理的Snort规则数增多时,系统资源消耗增加很少,吞吐量不受影响。
附图说明
图1为本发明基于FPGA的入侵检测系统结构框图;
图2为本发明基于FPGA的入侵检测系统中FPGA的结构框图;
图3为本发明基于FPGA的入侵检测系统哈希存储器SDRAM0的电路原理图;
图4为本发明基于FPGA的入侵检测系统哈希存储器SDRAM1的电路原理图;
图5为本发明基于FPGA的入侵检测系统哈希存储器电源电路原理图;
图6为本发明基于FPGA的入侵检测系统哈希存储器控制引脚电路原理图;
图7为本发明基于FPGA的入侵检测系统数据缓存器电路原理图;
图8为本发明基于FPGA的入侵检测系统数据缓存器电源电路原理图;
图9为本发明基于FPGA的入侵检测系统数据缓存器控制引脚电路原理图;
图10为本发明基于FPGA的入侵检测系统以太网控制器电路原理图;
图11为本发明基于FPGA的入侵检测系统以太网控制器电源电路原理图;
图12为本发明基于FPGA的入侵检测系统以太网串口驱动电路电路原理图;
图13为本发明基于FPGA的入侵检测系统FPGA块1电路原理图;
图14为本发明基于FPGA的入侵检测系统FPGA块2电路原理图;
图15为本发明基于FPGA的入侵检测系统FPGA块4电路原理图;
图16为本发明基于FPGA的入侵检测系统FPGA块7电路原理图;
图17为本发明基于FPGA的入侵检测系统FPGA块8电路原理图;
图18为本发明基于FPGA入侵检测系统的检测方法总流程图;
图19为本发明基于FPGA入侵检测系统的检测方法原理图;
图20为本发明基于FPGA入侵检测系统的检测方法二叉树搜索过程示意图;
图21为本发明基于FPGA入侵检测系统的检测方法哈希算法匹配示意图;
图22为本发明基于FPGA入侵检测系统的检测方法字符串匹配IP核经过第一轮匹配后的示意图
图23为本发明基于FPGA入侵检测系统的检测方法XOR Hash算法匹配计算示意图;
图24为本发明基于FPGA入侵检测系统的检测方法冲突处理示意图;
图25为本发明基于FPGA入侵检测系统的检测方法字符串匹配IP核经过第二轮匹配后的示意图;
图26为本发明基于FPGA入侵检测系统的检测方法字符串匹配IP核Slave接口的读传输时序图;
图27为本发明基于FPGA入侵检测系统的检测方法字符串匹配IP核Slave接口的写传输时序图;
图28为本发明基于FPGA入侵检测系统的检测方法字符串匹配IP核Master接口的读传输时序图;
图29为本发明基于FPGA入侵检测系统的检测方法字符串匹配IP核定制IP的irq中断时序图;
图30为本发明基于FPGA入侵检测系统的检测方法二叉树算法规则预处理时间与规则数目的关系图;
图31为本发明基于FPGA入侵检测系统的检测方法中规则数目为6000-50000时与包分类速度关系图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细说明。
本实施例采用基于Cyclone II系列FPGA芯片的开发板,且系统采用Quartus II9.0作为软件的开发工具。
图1为本发明的系统框图,包括以太网驱动电路、FPGA、数据缓存器、哈希存储器、串口驱动电路和上位机,其中,FPGA框图如图2所示,所述FPGA芯片的型号为Cyclone II系列EP2C70F896C6N,其为系统的控制器,控制系统运行;所用以太网驱动芯片为DM9000A,其控制系统以太网数据的收发;所述数据缓存器为容量为512K*38的SSRAM芯片IS61LPS51236A-200TQL,其存储系统运行的中间数据;所述哈希存储器由两片16M*16的SDRAM存储器组成,其存储经过哈希映射后的Snort规则,FPGA芯片控制系统运行,程序运行于SSRAM芯片IS61LPS51236A-200TQL中,系统首先将Snort规则通过哈希函数映射存入哈希存储器的两片SDRAM,其次通过以太网控制芯片DM9000A接收网络数据,然后从哈希存储器读取Snort规则进行入侵数据匹配,最后通过串口将检测出的入侵数据发送给上位机。
FPGA内部结构图如图2所示。FPGA通过SOPC(可编程偏上系统)生成SSRAM接口、SDRAM接口、串口接口、以太网接口,分别控制SSRAM、SDRAM、串口、以太网通信。
本实施例中采用的包分类IP核要符合Avalon总线规范,所述的Avalon总线是一种相对简单的总线结构,主要用于连接Nios II处理器与FPGA内部其他模块,以构成片上可编程系统(SOPC),因为SOPC Builder系统都与Quartus II9.0软件的工程相关联,因此,首先在Quartus II9.0下建立一个工程,然后在SOPC Builder中添加各种需要的已提供的和自己设计的IP核,搭建本实施例的系统,包括:Nios II软核处理器,片上存储器、片外存储器、串口调试模块、定时器、以太网控制器以及用户自定义的字符匹配与包分类IP核。
由于包分类IP核处理过程中需读取FPGA内部的片上只读存储器ROM,所以将其设计为主外设,为了使Nios II及时响应包分类IP核的请求,包分类IP核采用了中断机制。
由于字符匹配IP核处理过程中是需读取SDRAM,所以将其设计为主外设,为了使NiosII及时响应字符匹配IP核的请求,字符匹配IP核采用了中断机制。
Avalon总线拥有多种传输模式,以适应不同外设的要求,Avalon总线的基本传输模式是在一个主外设和一个从外设之间进行单字节、半字或字(8、16或32位)传输,由于本实施例的处理数据为32位,所以包分类IP核与字符匹配IP核均采用32位的传输方式;
其中,以太网控制模块DM9000A实现与FPGA的10/100M以太网接入,在SOPC Builder中设计用户接口电路与DM9000A连接,在Nios II中编写以太网接口驱动程序,以实现以太网通讯,接收到的网络数据缓存入双口RAM(即随机存取存储器)中,供Nios II与字符匹配定制IP核(知识产权核)同时读取,实现并行效果;本发明的基于FPGA的入侵检测系统中的以太网接收模块是通过以太网控制芯片DM9000A实现10/100M以太网接入的。在SOPC Builder中设计用户接口电路与DM9000A连接,在Nios II中编写以太网接口驱动程序,即可实现以太网通讯。DM9000A正常工作需要在上电后对内部寄存器进行初始化,该过程通过FPGA对DM9000A外部控制总线和数据总线的读写操作完成。
在DM9000A中有3KB的静态RAM作为发送缓冲区,其中可同时保存2个完整的以太网帧。以下是发送一个数据包的具体步骤:首先,利用写操作寄存器MWCMD向DM9000A的发送缓存区中写入发送数据帧;其次,把数据帧的长度写入寄存器FCH和FDH;然后,发送数据发送请求,设置TXREQ为“1”;最后,检查TSR,判断此帧数据是否发送完。
本实施例中采用片上RAM实现双口RAM,所述的双口RAM具有两个读写端口,可同时被两个设备读写,但不能同时对同一个地址操作,这会引起冲突,本实施例的双口RAM用于存储接收到的数据,其中一个端口供Nios II将接收到的网络数据数据存入RAM,另一个端口供自定义外设读取接收到的数据,如此Nios II的接收网络数据与自定义外设读取待处理数据能并行进行,提高系统处理速度,本实施例中SOPC Builder中双口RAM内核的参数设置为:Memory type为RAM,双端口访问格式,数据宽度为32位,总的存储器大小为28KB,读延时Slave s1与s2都为1。
本实施例中采用的2个Nios II处理器分别为cpu_1和cpu_2,两者通过邮箱(mailbox)实现相互通信,系统开始时进行初始化,然后cpu_1负责接收处理网络数据,将其存入双口RAM中,当接收完一个数据包,则通过邮箱传递给cpu_2数据包的存储地址与包长度,接收的下个网络包存储于双口RAM中另一块区域,其中在所述的双口RAM中开辟了多块存储区域,cpu_2接收到cpu_1传递的网络包信息后启动包分类IP核,将包头数据传入包分类IP核,进行包分类;然后启动字符匹配IP核,定制IP核检测到入侵数据则会触发中断,引起cpu_2读取匹配信息;最后等待自定义IP核处理结果,当一个网络包处理完成后,cpu_2将检测出的入侵数据通过串口发送给上位机;
本实施例中的串口通信方式,采用SOPC Builder中的串口内核实现串口通信协议,发送匹配信息给上位机,串口通过两个外部引脚发送和接收串口数据,通过五个16位寄存器对串口进行控制,以完成串行口通信。本实施例中将串口外设连接到DMA控制器上,这种方式下,串口与存储器之间进行流模式数据传输,无需CPU的干预即能传输数据,解脱出CPU来处理其他命令;本实施例中串口内核参数设置为:波特率为115200bps,无奇偶校验,8位数据宽度,1位停止位,同步状态为2;本实施例中SOPC Builder中DMA内核的参数设置为:DMA长度寄存器为13位,支持字节、半字长度、字长度传输。
本实施例中,具体的电路连接如下:
本发明的哈希存储器(Hash)实现数据的Hash映射:首先将Snort中规则通过哈希函数(XOR Hash)计算出其Hash地址,然后将其存入SDRAM相应地址中,供匹配时读取,如图3与图4所示,所述作为哈希存储器的两片SDRAM存储器的1脚、14脚、27脚、3脚、9脚、43脚、49脚均接到SDRAM供电电源3.3V电源脚DR_VCC33上,两片的28脚、41脚、54脚、6脚、12脚、46脚、52脚均接地;
图5为哈希存储器电源电路原理图,为了使电源稳定,达到滤波效果,3.3V电源VCC33脚通过电阻R6后并联9个电容后接地,9个电容中C1、C2电容值均为10u,BC1到BC7值均为0.1u,SDRAM供电电源DR_VCC33是从电容并联端接出;
图6为哈希存储器控制引脚电路原理图,两片SDRAM的控制引脚38脚、37脚、15脚、39脚、39脚、16脚、17脚、18脚、19脚均通过4.7K的电阻连接到3.3V电源DR_VCC33上;
图7为数据缓存器电路原理图,作为数据缓存器的SSRAM的15脚、41脚、65脚、91脚、4脚、11脚、20脚、27脚、54脚、61脚、70脚、77脚均接到SSRAM的3.3V供电电源SR_VCC33上,17脚、40脚、67脚、90脚、5脚、10脚、21脚、26脚、55脚、60脚、71脚、76脚均直接接地;
图8为数据缓存器电源电路原理图,为了使电源稳定,达到滤波效果,3.3V电源VCC33脚通过电阻R12后并联13个电容后接地,13个电容中C3电容值为10u,电容BC15到BC26值均为0.1u,SSRAM供电电源SR_VCC33是从电容并联端接出;
图9为数据缓存器控制引脚电路原理图,SSRAM的OE_n、CE1_n通过5.1K电阻接到电源SR_VCC33上,CE2与电阻R23并联后经过电阻R18接到电源SR_VCC33上,CE3_n与电阻R24并联后经过电阻R15接到电源SR_VCC33上,GW_n与电阻R25并联后经过电阻R20接到电源SR_VCC33上,ZZ与电阻R26并联后经过电阻R21接到电源SR_VCC33上,MODE与电阻R27并联后经过电阻R22接到电源SR_VCC33上;
本发明的以太网控制模块采用DM9000A实现FPGA的10/100M以太网接入,在SOPCBuilder中设计用户接口电路与DM9000A连接,在Nios II处理器中编写以太网接口驱动程序,实现以太网通讯;图10为以太网控制器电路原理图,作为以太网控制芯片的DM9000A的RXGND、TXGND、GND、TEST脚直接接地,42脚、24脚、30脚直接接到以太网控制器的3.3V供电电源N_VCC33上,34脚、37脚经过4.7K电阻连接到3.3V电源N_VCC33上,2脚经过电阻L2接到2.5V电源N_VCC25上,3脚通过与电阻R76、电容C19并联后接到芯片RJ45INTLED的3脚上,DM9000A的4脚通过与电阻R75、电容C19并联后接到芯片RJ45INTLED的6脚上,DM9000A的7脚通过与电阻R73、电容C18并联后接到芯片RJ45INTLED的1脚上,DM9000A的8脚通过与电阻R74、电容C18并联后接到芯片RJ45INTLED的2脚上,RJ45INTLED的13脚、14脚、8脚接地,RJ45INTLED的12脚、9脚接到3.3V供电电源N_VCC33上;
图11为以太网控制器电源电路原理图,为了使电源稳定,达到滤波效果,3.3V电源VCC33脚通过电阻R69后并联6个电容后接地,6个电容中C20电容值为10u,电容BC38到BC42值均为0.1u,以太网控制器供电电源N_VCC33是从电容并联端接出。
本发明的串口模块通过SOPC中的UART IP核实现RS232协议通信,将FPGA检测出的入侵数据传送给上位机进行进一步处理,因为网络中的入侵数据较少,用串口传输入侵数据并不影响系统总体性能,图12为以太网串口驱动电路电路原理图,作为串口控制芯片的ADM302的12脚经过发光二级管LEDR与电阻R44后与3.3V电源VCC33相连,11脚经过发光二级管LEDG与电阻R45后与3.3V电源VCC33相连,1脚经过1u电容C9后与3脚相连,4脚经过1u电容C10后与5脚相连,2脚经过电容C11接地,6脚经过电容C12接地,15脚直接接地,16脚经过电容BC33接地,ADM302的13脚接到RS232插头的3脚,ADM302的8脚接到RS232插头的7脚,ADM302的14脚接到RS232插头的2脚,ADM302的7脚接到RS232插头的8脚,RS232插头的10脚、11脚并联后经过电容BC32接地,RS232插头的5脚直接接地,串口通过RS232插头与电脑相连,进行串口协议通信。
所用FPGA芯片EP2C70F896C6N内部含有8个块(BANK),引脚分布在8个块中。
FPGA与SDRAM0的电路连接如图13所示,控制SDRAM0和SDRAM1的FAPG引脚分布在块1中,SDRAM0的23脚、24脚、25脚、26脚、29脚、30脚、31脚、32脚、33脚、34脚、22脚、35脚和36脚分别连接SDRAM0的AA4脚、AA5脚、AA6脚、AB5脚、AB7脚、AC4脚、AC5脚、AC6脚、AD4脚、AC7脚、Y8脚、AF4脚和AF4脚,用于地址的传输;SDRAM0的2脚、4脚、5脚、7脚、8脚、10脚、11脚、13脚、42脚、44脚、45脚、47脚、48脚、50脚、51脚和53脚分别连接SDRAM0的AC1脚、AC2脚、AC3脚、AD1脚、AD2脚、AD3脚、AE1和AE2脚、AE3脚、AF1脚、AF2脚、AF3脚、AG2脚、AG3脚、AH1脚和AH2脚,用于数据的传输;
FPGA与SDRAM1的电路连接如图13所示,SDRAM1的23脚、24脚、25脚、26脚、29脚、30脚、31脚、32脚、33脚、34脚、22脚、35脚和36脚分别连接SDRAM1的T5脚、T6脚、U4脚、U6脚、U7脚、V7脚、V8脚、W4脚、W7脚、W8脚、T4脚、Y4脚和Y7脚,用于地址的传输;SDRAM1的2脚、4脚、5脚、7脚、8脚、10脚、11脚、13脚、42脚、44脚、45脚、47脚、48脚、50脚、51脚和53脚分别连接SDRAM1的U1脚、U2脚、U3脚、V2脚、V3脚、W1脚、W2脚、W3脚、Y1脚、Y2脚、Y3脚、AA1脚、AA2脚、AA3脚、AB1和AB2脚,用于数据的传输;
控制SDRAM1的时钟信号、外部存储器写控制的FPGA引脚分布在块2中,SDRAM1的38脚、37脚和16脚分别连接FPGA的G5脚、L10脚和M9脚,如图14所示;
FPGA与DM9000A的电路连接如图15所示。控制DM9000A的FPGA引脚分布在块4中。DM9000A的19脚、18脚、17脚、14脚、13脚、12脚、11脚、10脚、31脚、29脚、28脚、27脚、26脚、25脚、34脚、32脚、36脚、35脚、37脚、40脚分别接到FPGA块4的A23脚、C22脚、B22脚、A22脚、B21脚、A21脚、B20脚、A20脚、B26脚、A26脚、B25脚、A25脚、C24脚、B24脚、A24脚、B23脚、C27脚、B27脚、B28脚、A28脚、C28脚、B28脚,FPGA通过以上引脚与DM9000A进行通信,控制以太网数据的接收。
FPGA与串口控制芯片ADM3202的电路连接如图15所示。控制ADM3202的FPGA引脚分布在块4中。ADM3202的9脚、10脚分别与FPGA块4中的F23脚、G22脚相连,FPGA通过以上引脚与ADM3202进行通信,实现与上位机的串口通信。
FPGA与SSRAM的电路连接如图13、图16、图17所示。控制SSRAM的FPGA引脚分布在块1、块7、块8中。SSRAM的89脚与FPGA块1的AD7脚相连,SSRAM的45脚、46脚、47脚、48脚、49脚、50脚、81脚、82脚、99脚、100脚、43脚、42脚、7脚、8脚、13脚、93脚、95脚、94脚、80脚、84脚、86脚、88脚、87脚、97脚、98脚、1脚、85脚、83脚、92脚、96脚、82脚、99脚、100脚分别与FPGA块7中的AH16脚、AK17脚、AJ17脚、AH17脚、AJ18脚、AH18脚、AK19脚、AJ19脚、AK23脚、AJ20脚、AK21脚、AJ21脚、AJ16脚、AC21脚、AD20脚、AC20脚、AJ23脚、AK23脚、AC18脚、AD18脚、AG18脚、AF18脚、AG19脚、AH19脚、AK20脚、AG17脚、AD16脚、AD22脚、AH20脚、AC16脚、AF20脚、AG20脚相连,SSRAM的52脚、53脚、56脚、57脚、58脚、59脚、62脚、9脚、12脚、18脚、19脚、22脚、23脚、24脚、25脚、28脚、29脚、37脚、36脚、35脚、34脚、33脚、32脚、44脚、45脚、46脚、47脚、48脚、49脚、50脚、81脚、43脚、42脚、30脚、51脚分别与FPGA块8中的AH10分别与FPGA块7中的AJ10脚、AK10脚、AJ11脚、AK11脚、AH12脚、AJ12脚、AH15脚、AJ15脚、AK14脚、AJ14脚、AJ13脚、AH13脚、AK12脚、AK7脚、AJ8脚、AK8脚、AG8脚、AF8脚、AH7脚、AG7脚、AG6脚、AG5脚、AE12脚、AG12脚、AD13脚、AE13脚、AF14脚、AG14脚、AE15脚、AF15脚、AE11脚、AF11脚、AJ9脚、AK9脚相连。FPGA通过以上引脚对SSRAM进行数据访问。
本实施例采用基于FPGA的入侵检测方法,其流程如图18和图19所示,包括以下步骤:
步骤1:将Snort规则通过基于异或操作的哈希函数(XOR Hash)产生对应的地址,将Snort规则存放入哈希存储器相应的地址中,本实施例中,Snort规则中的一个规则如下:alert tcp$HOME_NET any->$EXTERNAL_NET 8888(msg:″P2P napster login″;flow:to_server,established;content:″ec|00 02 00|″;offset:1;depth:3;classtype:policy-violation;sid:549;rev:6;)
该规则是识别所有从内部网络到外部网络8888端口中包含有字符串“ec|00 02 00|”的TCP数据包,当检测到此类型数产生报警,其中“ec”用ASCII表示,|00 02 00|用16进制数表示;
Snort规则的更新速度很快,从2003年到2008年Snort共发布了8个版本的入侵检测规则,模式串从1,942增长到了3,563个;
步骤1-1:将Sonrt规则中的每一条规则分解成32位位串,某一条Sonrt规则的分解方法为:从所述规则的高位到低位按顺序依次截取32位,不足32位的部分在高位用0补足,所述规则被分解成若干条待处理的32位位串;
步骤1-2:输入待处理的32位位串X=<x0,x1,x2,x3,...,x31>,采用哈希函数计算X在哈希存储器中的地址h(X),公式为:
式中,“·”为与运算符,是异或运算符,D=<d0,d1,d2,d3,...,d31>为哈希函数中的随机数,其具有32位,分别为d0,d1,......,d31,且通过如下公式计算:
di=(α·di-1+c)mod N,i=1,2,3,...,31 (2)
式中,di是所求随机数,其初始值d0为任一随机正整数,N是使di归一化的正整数,且当N=231-1,α=16034时,获得的随机数di具有较好的随机性,α是小于N的正整数,c是非负的整数;
步骤1-3:在进行Hash映射时,会产生Hash冲突(即不同的数据进行Hash运算后得出相同的地址数据):对于不同长度的Snort规则选择不同随机数的Hash函数,同时给不同长度的Snort规则分配不同的存储区域,对个数较多的长度的Snort规则分配更多的存储区域,经过以上处理后,若仍有个别冲突,则对Snort规则进行进一步处理,方法为:对步骤1-1到步骤1-2产生的哈希地址冲突的Snort规则进行单独保存,然后反复进行步骤1-1到步骤1-2,选取冲突小于4个的哈希函数;
步骤1-4:将Snort规则存放入哈希存储器相应的地址中;
步骤1-5:利用二叉树结构包分类算法对Snort包头规则进行包分类,如图20所示,其中每条包头规则包含两个域,第1个域是IP源地址,第2个域是IP目的地址,均为32位数值;
所述的二叉树结构包分类算法为:
(1)生成树的根节点,根节点包含全部包头数据,其中,包头数据的范围是:目的IP地址与源IP地址均为:0.0.0.0~255.255.255.255;
(2)将根节点分成两个子节点,所述两个子节点的包头数据的目的IP地址范围分别为:0.0.0.0~127.127.127.127和127.127.127.128~255.255.255.255,源IP地址的范围均为0.0.0.0~255.255.255.255;
(3)若所述两个子节点所包含的Snort包头规则的数目超过所设定的阈值,则对子节点进行分割,再生成子节点的两个子节点,直至新生成的子节点的Snort包头规则个数不超过设定的阈值,停止分割过程,其中,所述的阈值的取值范围为5~7;
(4)将步骤(1)(2)(3)建立的二叉树结构保存在一个存储器中,称此存储器为“树节点存储器”,所述的“树节点存储器”中的每个节点(包括树根节点、树枝节点和树叶子节点)均占用32位,同一个父节点的所有子节点保存在同一个连续内存区域,同一层节点的子节点从左到右保存在连续的内存块内;每个节点的32位数据提供的信息可以遍历到它的所有子节点,二叉树叶子节点对应的Snort包头规则保存在“上界域值存储器”和“下界域值存储器”中,“上界域值存储器”存放Snort包头规则的目的IP地址与源IP地址的上界,“下界域值存储器”分别存放Snort包头规则的目的IP地址与源IP地址的下界,同一规则的域值上界保存在“上界域值存储器”的地址与域值下界保存在“下界域值存储器”的地址保持一致,所述二叉树叶子节点的32位数据中包含了规则在“上界域值存储器”和“下界域值存储器″中的起始位置;
步骤2:通过以太网控制器接收网络数据包;
步骤3:采用步骤1-4的(1)(2)(3)步,对接收到的网络中的数据包进行包分类,然后采用线性搜索方法进行数据包的包头匹配,方法为:
步骤3-1:根据节点的划分域,取出网络数据包包头的数据,其中划分域为节点数据中的第1位至第3位;
步骤3-2:利用划分位置计算下一个节点偏移地址,其中划分位置为节点数据中的第4位至第14位;
步骤3-3:将偏移地址与子节点起始地址相加,即可得到线性搜索的下一个节点(子节点)地址,其中子节点起始地址为节点数据中的第17位至第31位;
步骤3-4:将地址送给“树节点存储器″;
步骤3-5:从“树节点存储器”读取下一个节点的32位数据;
步骤3-6:判断节点32位数据中的最高位判断标志位是否为0,若是,则为中间节点,进行新一轮查找;否则为叶子节点,查找结束;
步骤3-7:根据叶子节点的32位数据,判断其Snort包头规则数目是否为0,若为0,则叶子节点是空节点,则匹配结束,网络数据包头不符合Snort包头规则的描述;若Snort包头规则数目大于0,则网络数据包头和叶子节点指向的Snort包头规则逐一匹配,若网络数据包头和某个Snort包头规则匹配,则匹配结束,存储匹配的Snort包头规则,否则,匹配完叶子节点的Snort包头规则数目,仍没有找到匹配的Snort包头规则,表示网络数据包头不和任何Snort包头规则匹配,则匹配结束;
步骤4:将采集到网络中的数据包的数据信息与Snort规则利用XOR Hash算法进行字符匹配,得到匹配信息,方法为:
步骤4-1:采用步骤1-1和步骤1-2中的方法,计算网络中数据的哈希地址,然后根据此地址从哈希存储器中取出相应的数据,与网络中的数据进行匹配,若相同,则确定其为入侵数据,并将其存储;
实现XOR Hash算法匹配功能逻辑内部结构示意图如图21所示,缓冲寄存器存储当前匹配处理字符串,缓冲寄存器存储从双口RAM中新读取的待处理数据,其流水式移位更新计算寄存器,使新接收的数据被处理,计算寄存器中数据经过哈希计算模块得出哈希地址,然后从Sonrt规则存储器相应的哈希地址中取出Sonrt规则,通过XOR Hash函数对计算寄存器中数据进行计算得出哈希地址,计算寄存器中数据经过三个时钟与刚从模式串存储器中取出的模式串进行比较,得出匹配信息,存储于结果寄存器中;
步骤4-2:对于长度与冲突的Snort规则相同的网络数据再进行单独的匹配,即使长度与冲突的Snort规则相同的网络数据在采用步骤4-1方法匹配的同时,又直接与冲突的Snort规则进行比较,若相同,则直接判定当前匹配的网络数据为非法数据;若不相同,则采用步骤4-1方法的匹配信息,本实施例中,所述的冲突是指以下三种:只有4字节、14字节、16字节长度模式匹配时存在冲突,且每个长度冲突只有一个,分别为“EXEC”、“SolarWinds.Net”、“forum_details.php”,由于冲突很少,所以对冲突的数据再进行单独的匹配,即使4字节、14字节、16字节三个长度的当前匹配数据在参加XOR Hash算法匹配同时,又与冲突数据“EXEC”、“SolarWinds.Net”、“forum_details.php”进行匹配,若匹配,则直接判定为非法数据;若不匹配,则采用XOR Hash算法匹配信息。
在进行XOR Hash匹配同时对长度为4、14、16字节的数据进行冲突匹配,得到当前匹配数据的冲突结果,然后与XOR Hash匹配模块处理结果经过相或得出匹配信息。当检测到入侵数据则触发中断,引起cpu_2处理器读取结果。cpu_2将读取的匹配信息存储于片上RAM存储器中,当匹配完一个数据包,cpu_2则将片上RAM中的匹配信息通过串口发送给上位机,由上位机进行进一步处理。
图22中,字符串匹配IP核匹配过程为:若匹配模式串“mycomfghijklmnopinve”,则开始寄存器计算寄存器内存储“mycomfghijklmno”,缓冲寄存器内存储“inve”,然后对“m”、“my”、“myc”、“myco”直到“mycomfghijklmno”共16个模式串同时并行进行XOR Hash算法匹配,计算Hash地址,从Hash散列表相应地址中取出模式串与当前匹配数据进行匹配(图23中T1即为Hash散列表,每个地址存储4字节数据),得出匹配信息,与此同时,4字节、14字节、16字节长度的字符串“myco”、“mycomfghijklm”、“mycomfghijklmno”分别与冲突模式串“EXEC”、“SolarWinds.Net”、“forum_details.php”进行匹配,此次不匹配,结果采用XOR Hash算法匹配信息,如图24所示,接着缓冲寄存器更新计算寄存器为“ycomfghijklmnopq”,进行新一轮匹配,如图25所示,如此直到计算寄存器为“efghijklmnopinve”得到全部匹配信息;
在SOPC系统中,每个IP都应基于Avalon总线规范实现传输时序,本实施例中,字符串匹配定制IP为主IP,其含有从接口与主接口,每个接口有各自的读写传输时序:
字符串匹配IP核的从接口同时具有读写功能,所以具有读写时序,具体传输时序如图26、27所示;
字符串匹配IP核的主接口只是读取存储器中的数据,所以只具有读功能,其读传输时序如图28所示。
字符串匹配IP核具有irq中断信号,在IP中只需指定中断接口,将其相应位置1即能产生中断时序引起Nios II响应中断,其时序如图29所示;
步骤5:将步骤3和步骤4检测出的入侵数据发送给上位机;
上位机以太网测试文件发送模块是用来在上位机通过以太网发送指定文件给FPGA,以测试系统性能。在发送测试数据网络包中,我们在包头部加入特殊字符:FPGA开发板的MAC地址{0x04,0x60,0x6E,0x23,0x43,0x6F},以区别普通的以太网帧,在测试文件中,每次都会加入一些Snort规则,测试系统能否全部正确检测出。在测试系统功能时,通过上位机以太网测试文件发送模块发送测试文件,FPGA根据测试文件特定包头只对测试文件进行处理,得出匹配结果。
上位机结果显示模块是用VC图形化窗口实现检测出的数据的显示处理,以测试检测出的数据是否正确。程序运行环境是VC++6.0,主要功能是:
(1)打开串口,接收由FPGA通过串口发送过来的检测出的入侵数据。
(2)获取发送的源文件并根据所接收的数据,在源文件中以不同颜色显示FPGA检测到的非法数据。
模块在对检测结果显示时,为了加强显示效果运用了红绿蓝三种颜色交替显示。
本发明的硬件测试平台是Altera的Cyclone II EP2C70F896C6N FPGA芯片,其含有68,416个逻辑单元,支持双端口RAM,主频130Mhz,2M SSRAM,32*2M SDRAM。
包分类单元测试:图30列出在PC机测试平台上,二叉树算法规则预处理时间和规则数目的对应关系,其中,规则预处理时间只计算从随机产生规则集到建立二叉树结构的时间,当规则数目是1000时,PC机的预处理时间约为0.000563s;PC机的预处理时间约为0.050331s(规则数日50,000),所以,当规则数日是50,000,预处理时间不超过0.05s。
网络上传输的平均包长度是342字节,包分类处理器的读存储器的为每次读内存的32位数据。
图31是规则数目和最低、平均包分类速度的关系,当规则数目为50000的时候,最低速度是5.03Gbps,平均速度是9.92Gbps。
选择Snort2.0的规则头部的IP头分类的速度测试结果如下;
最大线性搜索规则数目=8,树深度=10,树结构时间=0.000095s,树节点约35个,线性搜索规则总数约94个,包分类最低速度是11.204Gbps,IP包头分类平均速度是21.708Gbps。
实验结果表明:当规则数目为50,000时,树结构的时间不超过0.05s,本实施例系统的包分类处理器的平均速度超过了约15Gbps;当处理IDS Snort 2.0的规则头时,IP包头分类平均速度超过了约21Gbps,与传统软件方法相比更具优势,能应用各种各样的网络业务与网络安全系统。
字符匹配单元测试:在Intel(R)Pentium(R)4CPU 1.70GHz,内存256MB,操作系统为Microsoft Windows XP Professional的电脑上对Snort 2.0进行多种软件模式匹配算法吞吐量测试,对文中实现的XOR Hash系统进行测试,结果如表1所示。
由表1可知,当规则数增多时,软件算法的吞吐量会不断下降,而XOR Hash的基本不变。当规则数达到2000时,本发明的吞吐量为1.01Gbps,远远大于软件方法的0.035到0.063Gbps。
表1算法吞吐量测试(Gbps)
基于FPGA的字符匹配XOR Hash算法的详细测试结果如表2所示:
表2基于FPGA的字符匹配XOR Hash算法测试结果
当实现字符数量增加时,其他算法使用的逻辑资源会不断增加,布线的长度、复杂度增加导致了布线延时增加,从而导致吞吐量与最高频率不断下降;而由表2可知,当字符数量增加时,XOR Hash算法的匹配与模式串数量相关不大,所以系统延时未增加,当匹配字符数量从15,451增加到60,864时,系统吞吐量为1.01Gbps、最高频率为130MHz不变,使用逻辑单元从7,967LEs增到8,935LEs,增加很少;
实验结果表明:本系统字符匹配吞吐量为软件方法的30倍以上,当字符数量增加时,如从15,451增加到60,864时,吞吐量为1.01Gbps、最高频率为130MHz不变,消耗的逻辑单元仅增加15%,与传统系统随着规则数增加性能下降相比更具优势。
Claims (4)
1.一种基于FPGA的入侵检测方法,该方法采用的系统包括以太网驱动电路、FPGA、数据缓存器、哈希存储器、串口驱动电路和上位机,其连接关系为:以太网驱动电路的输出端连接FPGA的输入端,数据缓存器的数据输入输出端连接FPGA的第一数据输入输出端,哈希存储器的数据输入输出端连接FPGA的第二数据输入输出端,FPGA的输出端连接串口驱动电路的输入端,串口驱动电路的输出端连接上位机;
所述的FPGA,其内部模块包括:用于接收网络数据包的以太网接口、用于对接收的网络数据进行包分类的包分类IP核、用于对接收的网络数据进行字符匹配的字符匹配IP核、作为哈希存储器的同步动态随机存储器及作为树节点存储器的片上只读存储器、用于存储检测出的入侵数据的片上随机存储存储器、用于将网络数据包存入双口随机存储存储器的以太网接口及两个Nios II处理器,所述的两个Nios II处理器一个用于控制以太网数据的接收,另一个用于控制包分类IP核、字符匹配IP核及控制检测出的入侵数据到上位机的发送;
所述的FPGA的内部模块之间通过Avalon总线进行通讯;
以太网接口将接收到的网络数据发送给双口随机存储存储器,Nios II处理器调用双口随机存储存储器中的数据,并控制字符匹配IP核及包分类IP核检测入侵数据,通过串口通讯将检测到的入侵数据传递给上位机,由上位机进行显示;
其特征在于:包括以下步骤:
步骤1:将Snort规则通过基于异或操作的哈希函数产生对应的地址,将Snort规则存放入哈希存储器相应的地址中;
步骤1-1:将Sonrt规则中的每一条规则分解成32位串,某一条Sonrt规则的分解方法为:从所述规则的高位到低位按顺序依次截取32位,不足32位的部分在高位用0补足,所述规则被分解成若干条待处理的32位串;
步骤1-2:输入待处理的32位串X=<x0,x1,x2,x3,…,x31>,采用哈希函数计算X在哈希存储器中的地址h(X),公式为:
h(X)=d0·x0⊕d1·x1⊕d2·x2⊕...⊕di·xi⊕…⊕d31·x31 (1)
式中,d0,d1,d2,d3,…,d31为哈希函数中的随机数,且通过如下公式计算:
di=(α·di-1+c)mod N,i=1,2,3,…,31 (2)
式中,di是所求随机数,其初始值d0为任一随机正整数,N是使di归一化的正整数,且当N=231-1,α=16034时,获得的随机数di具有较好的随机性,α是小于N的正整数,c是非负的整数;
步骤1-3:在进行Hash计算时,会产生哈希冲突,即不同的数据进行Hash运算后得出相同的地址数据,需对上述哈希冲突进行处理,方法为:对于不同长度的Snort规则选择不同随机数的Hash函数,同时给不同长度的Snort规则分配不同的存储区域,对个数较多的长度的Snort规则分配更多的存储区域,经过以上处理后,若仍有个别冲突,则对Snort规则进行进一步处理,方法为:对步骤1-1至步骤1-2产生的哈希地址冲突的Snort规则进行单独保存,然后反复进行步骤1-1至步骤1-2,选取冲突小于4个的哈希函数;
步骤1-4:将Snort规则存放入哈希存储器相应的地址中;
步骤1-5:利用二叉树结构包分类算法对Snort包头规则进行包分类,其中每条包头规则包含两个域,第1个域是IP源地址,第2个域是IP目的地址,均为32位数值;
步骤2:通过以太网控制器接收网络数据包;
步骤3:对接收到的网络中的数据包进行包分类,然后采用线性搜索方法进行数据包的包头匹配;
步骤4:将采集到网络中的数据包的数据信息与Snort规则利用哈希算法进行字符匹配,得到匹配信息;
步骤5:将步骤3和步骤4检测出的入侵数据发送给上位机。
2.根据权利要求1所述的基于FPGA的入侵检测方法,其特征在于:步骤1-5所述的二叉树结构包分类算法,过程如下:
(1)生成树的根节点,根节点包含全部包头数据,其中,包头数据的范围是:目的IP地址与源IP地址均为:0.0.0.0~255.255.255.255;
(2)将根节点分成两个子节点,所述两个子节点的包头数据的目的IP地址范围分别为:0.0.0.0~127.127.127.127和127.127.127.128~255.255.255.255,源IP地址的范围均为0.0.0.0~255.255.255.255;
(3)若所述两个子节点所包含的Snort包头规则的数目超过所设定的阈值,则对子节点进行分割,再生成子节点的两个子节点,直至新生成的子节点的Snort包头规则个数不超过设定的阈值,停止分割过程,其中,所述的阈值的取值范围为5~7;
(4)将步骤(1)(2)(3)建立的二叉树结构保存在一个存储器中,称此存储器为树节点存储器,所述的树节点存储器中的每个节点均占用32位,同一个父节点的所有子节点保存在一个连续内存区域,同一层节点的子节点从左到右保存在连续的内存块内;每个节点的32位数据提供的信息可以遍历到它的所有子节点,二叉树叶子节点对应的Snort包头规则保存在上界域值存储器和下界域值存储器中,上界域值存储器存放Snort包头规则的目的IP地址与源IP地址的上界,下界域值存储器分别存放Snort包头规则的目的IP地址与源IP地址的下界,同一规则的域值上界保存在上界域值存储器的地址与域值下界保存在下界域值存储器的地址保持一致,所述二叉树叶子节点的32位数据中包含了规则在上界域值存储器和下界域值存储器中的起始位置。
3.根据权利要求1所述的基于FPGA的入侵检测方法,其特征在于:步骤3所述的包头匹配,方法为:
步骤3-1:根据节点的分割域,取出网络数据包包头的数据,其中分割域为节点数据中的第一比特位至第三比特位;
步骤3-2:利用分割位置计算下一个节点偏移地址,其中分割位置为节点数据中的第四比特位至第十四比特位;
步骤3-3:将偏移地址与子节点起始地址相加,即可得到线性搜索的下一个节点地址,其中子节点起始地址为节点数据中的第十七比特位至第三十一比特位;
步骤3-4:将地址送给树节点存储器;
步骤3-5:从树节点存储器读取下一个节点的32位数据;
步骤3-6:判断节点32位数据中的最高位是否为0,若是,则为中间节点,进行新一轮查找;否则为叶子节点,查找结束;
步骤3-7:根据叶子节点的32位数据,判断其Snort包头规则数目是否为0,若为0,则叶子节点是空节点,则匹配结束,网络数据包头不符合Snort包头规则的描述;若Snort包头规则数目大于0,则网络数据包头和叶子节点指向的Snort包头规则逐一匹配,若网络数据包头和某个Snort包头规则匹配,则匹配结束,存储匹配的Snort包头规则,否则,匹配完叶子节点的Snort包头规则数目,仍没有找到匹配的Snort包头规则,表示网络数据包头不和任何Snort包头规则匹配,则匹配结束。
4.根据权利要求1所述的基于FPGA的入侵检测方法,其特征在于:步骤4所述的字符匹配,方法为:
步骤4-1:采用步骤1-1和步骤1-2中的方法,计算网络中数据的哈希地址,然后根据此地址从哈希存储器中取出相应的数据,与网络中的数据进行匹配,若相同,则确定其为入侵数据,并将其存储;
步骤4-2:对于长度与冲突的Snort规则相同的网络数据再进行单独的匹配,即使长度与冲突的Snort规则相同的网络数据在采用步骤3-1方法匹配的同时,又直接与冲突的Snort规则进行比较,若相同,则直接判定当前匹配的网络数据为非法数据;若不相同,则采用步骤3-1方法的匹配信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210008978.3A CN102571494B (zh) | 2012-01-12 | 2012-01-12 | 一种基于fpga的入侵检测系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210008978.3A CN102571494B (zh) | 2012-01-12 | 2012-01-12 | 一种基于fpga的入侵检测系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102571494A CN102571494A (zh) | 2012-07-11 |
CN102571494B true CN102571494B (zh) | 2014-11-05 |
Family
ID=46416014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210008978.3A Expired - Fee Related CN102571494B (zh) | 2012-01-12 | 2012-01-12 | 一种基于fpga的入侵检测系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102571494B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866502B (zh) | 2014-02-25 | 2020-10-13 | 深圳市中兴微电子技术有限公司 | 数据匹配的方法及装置 |
CN104142993B (zh) * | 2014-07-30 | 2017-08-29 | 东软集团股份有限公司 | 基于深度特征的复杂snort规则分类方法及系统 |
CN104394150B (zh) * | 2014-11-26 | 2018-09-25 | 大连梯耐德网络技术有限公司 | 一种基于硬件重构的拟态安全网络架构的实现系统及方法 |
CN105095100B (zh) * | 2015-07-24 | 2018-01-02 | 东南大学 | 一种硬件实现hash链表的装置 |
CN105320041B (zh) * | 2015-11-26 | 2018-06-19 | 上海循道新能源科技有限公司 | 一种电动汽车交流充电桩的控制引导模块 |
CN105827394A (zh) * | 2016-03-10 | 2016-08-03 | 浙江亿邦通信科技股份有限公司 | 一种基于FPGA的Hash算法硬件实现装置 |
CN106448380A (zh) * | 2016-10-20 | 2017-02-22 | 华东师范大学 | 一种基于fpga的网络安全教学系统 |
CN107018078B (zh) * | 2017-01-25 | 2020-08-07 | 华为技术有限公司 | 多分支跳转协处理方法及装置 |
CN106878185B (zh) * | 2017-04-13 | 2020-04-07 | 浪潮集团有限公司 | 一种报文ip地址匹配电路及方法 |
CN110474929B (zh) * | 2019-09-27 | 2021-06-22 | 新华三信息安全技术有限公司 | 一种冗余规则检测方法及装置 |
CN110958259A (zh) * | 2019-12-12 | 2020-04-03 | 浙江军盾信息科技有限公司 | 一种snort规则的检测方法、装置、设备及存储介质 |
CN114125081B (zh) * | 2021-10-27 | 2023-09-22 | 桂林长海发展有限责任公司 | 一种接收数据的处理方法、装置及存储介质 |
CN115225327B (zh) * | 2022-06-17 | 2023-10-27 | 北京启明星辰信息安全技术有限公司 | 一种基于fpga网卡的具有预匹配规则的入侵检测方法 |
CN116055191B (zh) * | 2023-02-02 | 2023-09-29 | 成都卓讯智安科技有限公司 | 一种网络入侵检测方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101022407A (zh) * | 2007-03-13 | 2007-08-22 | 中兴通讯股份有限公司 | 一种基于二叉树的流分类查找方法 |
US7805392B1 (en) * | 2005-11-29 | 2010-09-28 | Tilera Corporation | Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table |
CN202495953U (zh) * | 2012-01-12 | 2012-10-17 | 东北大学 | 一种基于fpga的入侵检测系统 |
-
2012
- 2012-01-12 CN CN201210008978.3A patent/CN102571494B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805392B1 (en) * | 2005-11-29 | 2010-09-28 | Tilera Corporation | Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table |
CN101022407A (zh) * | 2007-03-13 | 2007-08-22 | 中兴通讯股份有限公司 | 一种基于二叉树的流分类查找方法 |
CN202495953U (zh) * | 2012-01-12 | 2012-10-17 | 东北大学 | 一种基于fpga的入侵检测系统 |
Non-Patent Citations (4)
Title |
---|
入侵检测系统中字符串匹配算法与实现;黄建;《中国博士学位论文全文数据库 信息科技辑》;20091215(第12期);I139-12,正文第12-80页 * |
基于SoPC的网络入侵检测中模式匹配系统设计;陈勇等;《电子应用技术》;20111130;第37卷(第11期);13-16 * |
陈勇等.基于SoPC的网络入侵检测中模式匹配系统设计.《电子应用技术》.2011,第37卷(第11期),13-16. * |
黄建.入侵检测系统中字符串匹配算法与实现.《中国博士学位论文全文数据库 信息科技辑》.2009,(第12期),I139-12 正文第12-80页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102571494A (zh) | 2012-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102571494B (zh) | 一种基于fpga的入侵检测系统及方法 | |
CN104572574B (zh) | 基于千兆以太网视觉协议的以太网控制器ip核及方法 | |
CN110933146B (zh) | 一种数据转换方法、装置和服务器 | |
CN103559156B (zh) | 一种fpga与计算机之间的通信系统 | |
CN102904729A (zh) | 根据协议、端口分流支持多应用的智能加速网卡 | |
CN103631878B (zh) | 一种大规模图结构数据处理方法、装置和系统 | |
CN205608814U (zh) | 一种基于Zynq软硬件协同处理的增强现实系统 | |
CN109858621A (zh) | 一种卷积神经网络加速器的调试装置、方法及存储介质 | |
CN108419336A (zh) | 一种led灯光屏幕控制系统及其实现方法 | |
Cao et al. | Remote wireless automatic meter reading system based on wireless mesh networks and embedded technology | |
CN103731364B (zh) | 基于x86平台实现万兆大流量快速收包的方法 | |
CN106533621A (zh) | 基于简化的modbus协议的永磁同步电机实时监控的通讯方法 | |
CN104408146A (zh) | 一种知识产权服务平台及其实现方法 | |
CN202495953U (zh) | 一种基于fpga的入侵检测系统 | |
CN103441952A (zh) | 基于多核或众核嵌入式处理器的网络数据包处理方法 | |
CN103093446A (zh) | 基于多处理器片上系统的多源图像融合装置和方法 | |
CN105279136B (zh) | 基于多核dsp多路信号的实时并行频域分析方法与系统 | |
CN204790999U (zh) | 一种工业大数据收集和处理系统 | |
CN100435514C (zh) | 以太网驱动级底层过滤方法和系统 | |
CN109741237A (zh) | 大规模图像数据处理系统及方法 | |
CN109246331A (zh) | 一种视频处理方法和系统 | |
CN103795686B (zh) | 物联网服务系统及实现虚拟信息的交互方法 | |
CN102984084B (zh) | 计算机集群中节点间数据传输方法和系统 | |
CN109951820A (zh) | 一种数据传输方法及相关装置 | |
CN104702622A (zh) | 多对一型内外网大数据单向传输通信系统及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141105 Termination date: 20220112 |
|
CF01 | Termination of patent right due to non-payment of annual fee |