主权项 |
基于索引分簇的网络协议特征匹配方法,其特征在于包含以下步骤:第一步,预处理,流程如下:步骤1.1建立深度报文检查索引分簇;输入协议识别规则集合R,从协议识别规则的载荷特征中提取深度报文检查字符串集合D,针对每条规则按照长度优先原则筛选深度报文检查字符串作为索引要素,建立深度报文检查索引分簇表A,记录规则处理状态B[N]及未处理规则数Y,Y为整数;其中变量定义如下:<img file="FDA0000898549730000011.GIF" wi="53" he="55" />协议识别规则集合R,R中包含N条协议规则,N为整数;记R<sub>i</sub>表示第i条协议规则,R<sub>i</sub>包含M<sub>i</sub>个载荷特征,r<sub>i,j</sub>为R<sub>i</sub>第j个载荷特征,1≤i≤N,1≤j≤M<sub>i</sub>,i、j、M<sub>i</sub>均为整数;载荷特征包含字符串和固定位置两个元素,记r<sub>i,j</sub>=<string[K],offset>,其中,string[K]表示长度为K的字符串,令string<sub>k</sub>表示r<sub>i,j</sub>中第k个字符,1≤k≤K,k、K均为整数;令offset表示固定位置要求,若offset等于‑1,则r<sub>i,j</sub>为浮动位置串;通过r<sub>i,j</sub>.string[K]访问r<sub>i,j</sub>中的string[K],通过r<sub>i,j</sub>.offset访问r<sub>i,j</sub>中的offset;<img file="FDA0000898549730000012.GIF" wi="53" he="54" />深度报文检查字符串集合D初始值为空,D中不包含重复字符串;<img file="FDA0000898549730000013.GIF" wi="53" he="55" />载荷特征映射表S[N][M]为N行M列矩阵,S[N][M]初始值为全0,S<sub>i,j</sub>表示协议规则R<sub>i</sub>的载荷特征r<sub>i,j</sub>在集合D中的编号,若S<sub>i,j</sub>等于0,说明r<sub>i,j</sub>的字符串r<sub>i,j</sub>.string[K]不属于集合D;<img file="FDA0000898549730000014.GIF" wi="53" he="55" />深度报文检查索引分簇表A,A<sub>d</sub>表示D中第d个字符串的描述信息,d为整数,A<sub>d</sub>包含4部分信息,记A<sub>d</sub>=<float,location[P],index,rule[L]>,其中:●float为浮动位置标记,若float等于1,表示A<sub>d</sub>字符串属于浮动位置载荷特征,通过A<sub>d</sub>.float访问A<sub>d</sub>的float元素;●location[P]表示长度为P的固定位置向量,若location<sub>p</sub>等于1,说明A<sub>d</sub>来自某个固定位置载荷特征,且该特征载荷的offset等于p,1≤p≤P,p、P均为整数,通过A<sub>d</sub>.location<sub>p</sub>访问A<sub>d</sub>的location<sub>p</sub>元素;●index为索引标记,若index等于1,表示A<sub>d</sub>为某协议规则的索引要素,通过A<sub>d</sub>.index访问A<sub>d</sub>的index元素;●rule[L]为长度为L的向量,其中存储A<sub>d</sub>作为索引要素的协议规则的编号,通过A<sub>d</sub>.rule[L]访问A<sub>d</sub>的rule[L]元素,通过A<sub>d</sub>.rule<sub>l</sub>访问A<sub>d</sub>的rule<sub>l</sub>元素,1≤l≤L,l为整数;<img file="FDA0000898549730000021.GIF" wi="52" he="55" />固定位置索引分簇表F,F<sub>f</sub>表示第f个固定位置索引,包含2部分信息,记F<sub>f</sub>=<offset,rule[ROW][L]>,f为整数,其中:●offset表示F<sub>f</sub>所在的偏移位置,采用索引偏移位置为offset的字节为索引,通过F<sub>f</sub>.offset访问F<sub>f</sub>的offset元素;●rule[Row][L]为ROW行L列矩阵,存储对应该字节的ROW种取值的协议识别规则编号,其中rule<sub>r,s</sub>表示编号等于rule<sub>r,s</sub>的协议规则包含某个固定位置特征,该固定位置特征要求偏移位置为offset的字节取值等于r,1≤r≤256,1≤s≤L,r、s均为整数,通过F<sub>f</sub>.rule[ROW][L]访问F<sub>f</sub>的rule[ROW][L]元素,ROW≥256;<img file="FDA0000898549730000022.GIF" wi="47" he="55" />协议识别规则处理状态向量B[N],初始值为全0,B<sub>i</sub>标记第i条协议识别规则R<sub>i</sub>的处理状态,若B<sub>i</sub>等于0,表明该规则尚未处理,若B<sub>i</sub>等于1,表明该规则已完成索引分簇;<img file="FDA0000898549730000023.GIF" wi="52" he="55" />一条规则最多包含M个载荷特征,一个索引要素最多关联L条规则,报文数据载荷的最大长度为P字节,M、L、P均为整数;步骤1.2建立固定位置索引分簇;输入协议识别规则集合R,针对未处理的协议识别规则,按照信息熵评估结果选择固定位置载荷作为索引要素,建立固定位置索引分簇表F,规则处理状态B[N]及未处理规则数Y;第二步,深度报文检查,流程如下:向深度报文检查引擎输入字符串集合D、网络报文;深度报文检查引擎遍历检查网络报文的报文载荷DATA中是否包含D中字符串,输出命中结果Result,Result中包含rnum个命中结果,其中第ci个命中结果Result<sub>ci</sub>=<offset,id>,分别通过Result<sub>ci</sub>.offset、Result<sub>ci</sub>.id访问offset和id元素,其中Result<sub>ci</sub>.offset表示命中位置,Result<sub>ci</sub>.id表示命中的字符串编号;Result按照offset从小到大排序,ci、rnum均为正整数,1≤ci≤rnum;第三步,规则匹配,流程如下:步骤3.1深度报文检查结果重构;根据深度报文检查索引分簇表A,将命中结果Result筛选和重构,提取命中结果中包含的深度报文检查索引要素编号,构成索引要素命中队列HIT,及字符串命中明细表C,其中HIT<sub>hi</sub>表示第hi个索引要素编号,C<sub>ck</sub>表示集合D中第ck个字符串的命中位置列表,采用链表结构存储,C<sub>ck,cz</sub>表示链表C<sub>ck</sub>中存储的第cz个命中位置,hi、ck、cz均为正整数;步骤3.2深度报文检查索引类规则匹配;根据索引要素命中队列HIT中记录的字符串编号遍历相关规则;步骤3.3固定位置类索引规则匹配;根据固定位置索引分簇表F遍历相关规则,输出命中的协议规则编号,结束。 |