为了保护网络以及流经网络的信息和访问网络的用户,网络安全变得越来越重要。在入侵检测和预防等应用中,状态封包检查(SPI)和内容过滤将消耗最多的处理带宽。虽然网络处理单元(NPU)在某些情况下能够执行包处理功能,但应用级内容安全和内容检查等任务需要一种独立的包分类系统,它由内容检查引擎(CIE)和网络搜索引擎(NSE)组成。本文探讨可编程状态机(PSM)和分立协处理器等硬件在开发安全应用时越来越重要的作用。
内容安全的传统实现方法都是基于软件的,从性能的角度考虑,最关键的因素是如何实现模式匹配算法。在本文中,字符串搜索代表一种近似的模式匹配,尽管它只是模式匹配的一个更简单的子集。
文本搜索应用可以采用几种算法,包括蛮力(brute-force)算法,它将每个文本字符与每个字符串的字符进行比较;Boyer-Moore算法,它使用一种搜索表,包含机制中所用到的全部符号的“字母表”。这两种方法的缺点在于字符串是按顺序被评估的,从而导致性能直接与进行文本匹配的字符串数量成正比。VSPACE=12 HSPACE=12 ALT="图1:可编程状态机包含结点和边沿,几个边沿的汇合构成一个结点。">
Aho-Corasick是另一种类型的算法,它通过创建一种状态图并采用由软件实现的有限状态机来确定字符串在文本中的位置,消除了搜索性能与字符串数量的相关性。1998年,Solidum系统公司(现为IDT加拿大公司)的Feliks Welfeld采用一种类似方法为模式匹配应用开发了由硬件实现的PSM。
让我们考察一下PSM在网络流量的内容分类方面的应用。在协议数据单元(PDU)分类中,这个过程开始于引起机器状态变化的一个事件,如到达一个比特位或一组比特位。然后,PSM利用一种带有结点和边沿的状态图,其中结点是几个边沿的汇合点,它包含图中下一个结点的地址。分类结果被存储在所谓的页中。
我们可以采用高级编程语言对PSM进行有效编程,如PAX模式描述语言(PDL),这是由IDT公司开发的第4代开放源代码编程语言。因为基于PSM的模式匹配器的性能与模式的数量或机制的规则无关,所以评估机制所需的时间与最长模式的大小成正比。
因此,该器件能够评估包含任意数量规则的机制,而不会造成性能损失。需要折衷的因素变成用来存储机制图的存储器大小。
对于一个全面的内容安全解决方案而言,强大的报头分解和有效载荷模式匹配能力是一个必要而非充分条件。此外,它还需具有协议状态跟踪能力。状态内容检查包含了这两种能力。
通信协议通常有几种状态,包括会话建立状态、已建立状态和结束状态。当协议是分层的时,状态转换变得更加复杂。为了有效跟踪协议状态的转换过程,我们需要采用一些方法来识别触发状态转换的事件(如到达一个数据包),提取状态信息(流密钥)并存储流密钥。这三个步骤必须实时完成。
在每秒几千兆比特的数据率下,这至多允许耗费几微秒。由于软件的延迟时间通常较长而且具有不确定性,所以首选的方法是用硬件来处理所有这三个步骤。应付这些挑战的最有效解决方案是采用一个基于PSM的内容检查引擎(CIE)和一个网络搜索引擎(NSE),其中CIE为字符串匹配器,NSE为表搜索器。VSPACE=12 HSPACE=12 ALT="图2:虽然网络处理单元(NPU)在某些情况下能够执行包处理功能,但应用级内容安全和内容检查等任务需要一种独立的包分类系统。
">
在这种情况下,成帧器接收一个数据包,然后NPU读取它。当数据包沿总线传输时,CIE探测包数据并执行报头分解和匹配。如果CIE识别到一个HTTP GET请求,它便提取以IP地址为形式的密钥和包摘要(digest)形式的TCP端口。CIE将摘要打包成一个密钥,并将此密钥传送给NSE。
当这个数据包被识别时将产生一个标记,如Tag1。NSE将Tag1的一部分解译为一种‘学习’指令。我们可能需要一个现场可编程门阵列(FPGA)来将摘要和Tag1的指令部分传送给NSE。
我们假设下一个数据包属于相同的数据流。当它到达时,CIE识别出它是一个有效的TCP包,然后生成一个相应的Tag1并提取摘要。这时,标记的指令部分将显示为‘匹配’。NSE接收一个密钥并将它与其表中的内容进行匹配。如果正好匹配,NSE将生成密钥存放位置的地址(Tag2)。
FPGA将Tag1与Tag2合并,并将生成的标记发送给NPU。NPU将跟踪数据包及与它们相关的标记,然后利用这些信息来决定对每个数据包作何处理,从而节省了宝贵的处理周期。
随着安全需求不断上升,确定哪些功能应该或不应该被嵌入到设计中的挑战也相应增大。
安全性已经超出加密的范筹,现在需要利用基于PSM的CIE等硬件来充分满足这些需求。结合运用内容规范引擎与网络处理单元可以优化网络处理架构,并使系统安全地传送增强型服务。
作者:Misha Nossik
网络处理部总监
IDT公司