流识别和过滤的制作方法

文档序号:6533171阅读:213来源:国知局
流识别和过滤的制作方法
【专利摘要】一种方法获得第一数据项的第一数据项签名,第一数据项签名包括第一数据项中的多个同步点与对应的多个块签名之间的关联。处理尝试在第二数据项中找到所述多个同步点中的一个;并且,如果找到这样的同步点,则通过将哈希函数应用于第二数据项中对应的比特块来确定第二数据项中的所述对应的比特块的块签名。所述处理查明来自第二数据项的所述同步点和所述对应的块签名是否对应于第一数据项签名中的同步点和块签名。如果预定数量的同步点和对应的块签名匹配,则第一和第二数据项被认为匹配。
【专利说明】流识别和过滤
[0001]版权声明
[0002]本专利文档包含受版权保护的资料。版权所有人不反对美国专利商标局的文件中的本专利文档或任何相关资料的复制,但在其它方面保留任何所有的版权。

【技术领域】
[0003]本发明涉及流识别和过滤。

【专利附图】

【附图说明】
[0004]当参照附图考虑以下描述和所附权利要求时,本发明的其它目的、特征和特性、以及结构的相关元件的功能和操作的方法、以及部件的结合和制造的经济性将变得更清楚,所有的附图形成本说明书的一部分。
[0005]图1 (a)描绘数据流;
[0006]图1 (b)描绘同步点和对应的比特块;
[0007]图1 (c)描绘图1 (A)的数据流的流签名;
[0008]图2 (a) -2 (d)描绘数据流的处理;
[0009]图3 (a) -3 (b)示出用于对多个流进行处理的结构;
[0010]图4 (a) -4 (b)描绘多个流的处理;
[0011]图5示出用于对流进行处理的示例性数据结构;
[0012]图6 (a) -6 (c)示出使用图5的数据结构处理的示例流;
[0013]图7示出典型的分组;
[0014]图8是计算机系统的示意图。

【具体实施方式】
[0015]背景和概述
[0016]检查存储在设备上或者在设备之间传输的数据以便试图确定该数据是否对应于其它已知的数据通常是有用的且期望的。例如,确定存储在设备上的数据是否对应于或者是其它数据的整个或部分副本可能是有用的或期望的。作为另一个示例,确定在两个设备之间发送的数据流是否对应于(或者是)其它数据(的整个或部分副本)可能是有用的或期望的。
[0017]描述
[0018]数据流(或流)包括比特序列。流中的比特序列可以表示某一类型的数据项(例如,电影或图像或音乐、数据库等)或者对某一类型的数据项进行编码。可以对流中的比特序列进行加密和/或压缩。本领域技术人员在阅读本描述时将认识并理解到,本发明不受底层比特序列所表示的内容限制。
[0019]如本文中所使用的,数据指的是任何任意的数据,而不管底层数据表示什么,也不管如何对底层数据进行格式化、编码或存储。
[0020]参照图1 (a)_l (b),流100包括多个同步点(在图中该流被示出具有i个同步点,这些同步点被表示为SP1, SP2, SP3,…,SPi,其统称为SPp。在该流中跟在每个同步点后面的是比特块(在图中第j个块被表示为Bj)。
[0021]如图1(b)中所示,第i个同步点(SPi)由k个比特(Kb1-K)组成,并且第i个比特块(Bi)由j个比特(Ctl(VCj)组成。
[0022]尽管第j个比特块在图中被示为紧跟在第j个同步点的后面,但是应当明白,第j个比特块可以与第j个同步点间隔某个已知量。
[0023]在目前优选的实现中,存在十六(16)个同步点,每个同步点由32个比特组成,并且每个比特块由256个字节组成。在另一实现中,存在十(10)个同步点,每个同步点由64个比特组成,并且每个比特块由256个字节组成。如本文中所使用的,流中的比特的数量被称为流的大小,同步点中的比特的数量被称为同步点的大小,并且比特块中的比特的数量被称为比特块的大小。本领域技术人员在阅读本描述时将认识并理解到,可以使用除以上示出的数量之外的不同的和/或其它的数量的同步点,同步点可以具有与以上示出的数量不同的大小,比特块可以具有与以上示出的数量不同的大小。
[0024]本领域技术人员在阅读本描述时将认识并理解到,同步点的数量在某些情况下可以被确定为比特流的大小的函数。
[0025]与每个比特块Bj对应的是通过将函数(h)应用于该比特块而确定的值H」,以使得:
[0026]Hj = h (Bj)
[0027]值%在本文中也被称为第j个比特块的块签名。
[0028]函数h应当具有以下性质:对于任何两个任意的比特块Ba和Bb,如果Ba等于Bb,贝丨J h (Ba) = h (Bb) ο
[0029]函数h的其它可期望性质包括:
[0030](a)Bi中的小变化有可能导致Ii(Bi)的不同值;
[0031](b)函数h相对简单并且快速地计算。
[0032]函数h可以是任何哈希函数。在一些实现中,可以使用诸如MD5或SHA-1等的消息摘要函数,尽管优选地可以使用更简单并且更轻量的函数。优选地,哈希函数生成32比特值。
[0033]本领域技术人员在阅读本描述时将认识并理解到,函数h不需要(并且可能将不会)对于每一个比特块生成唯一值。
[0034]每个流具有对应的流签名。现在参照图l(a)-l(c),具有i个同步点(SP1, SP2,SP3,…,SPi)的流的签名由i对〈SPj,h(Bj)>组成,j = 1-1o图1(c)中的示图示出了图1(a)的流100的签名102的逻辑表示。
[0035]参照图2(a)和图2(b)描述数据流的流签名的创建。如图2(a)中所示,初始设定200对流S进行处理以生成流签名202。参照图2(b)中的流程图更详细地描述初始设定200的处理。初始设定处理200将创建由一定数量(k)的对〈SPj,h (Bj) >组成的流签名202,j = I…k,k为某个值。k的值优选地被预设(例如,10、15、20等),但是,如以上所提到的,还可以将k的值确定为流S的大小的函数。
[0036]在对流200进行处理中,初始设定202可以首先确定流S的大小(在204处)。该大小信息可以被用于例如确定该流所需的同步点的数量(k)和/或该流内的同步点的间隔。如当阅读本描述时将变得清楚的,对于任何给定的流(S),优选的是使同步点分布在整个流⑶上。
[0037]处理202然后(在206处)确定流S中的下一个(第i个)同步点(SPi)以及对应的比特块(Bi)15对于比特块Bi确定值H (Bi)(在208处),并且将对<SPj,H (Bj) >存储在流S的签名中(在210处)。在208处计算的函数“H”对应于以上所描述的函数h,并且优选为诸如MD5或SHA等的哈希函数的消息摘要。
[0038]处理202然后确定对于该流S是否已经确定了充分的〈同步点,值〉对(在212处)。如果是,则存储该流的签名(SS)(在214处),否则确定另一个同步点(在206处)。在对流(S)处理的结束时,生成(例如,图1(c)中所示的形式的)流签名,并且将该流签名与流S)相关联地存储。
[0039]如在阅读本描述时对于本领域技术人员将清楚的,两个流具有同样的流签名(使用本文中所描述的处理而确定)的事实不一定暗示这两个流是同样的。例如,第一个流可以由数百万个比特组成,而流签名可以仅由十个或二十个〈同步点,比特块值〉对组成,其中,同步点随机地分布在该流上,并且其中,每个同步点仅使用128个比特,并且每个比特块仅使用512个比特。在这种情况下,如果第二个流具有完全相同的〈同步点,比特块值〉对,则它可能对应于第一个流,但是它可能不对应于第一个流。然而,如果第二个流不具有与第一个流相同的〈同步点,比特块值 > 对,则它不对应于第一个流。
[0040]发明人认识到,对于一些应用,确定数据流是否充分地对应于另一个已知数据流可能是足够的。他们认识到,在一些应用中,以某种程度的确定性确定两个流可能相等可能是足够的。这样的信息可以被用于触发流的更广泛的(而且可能更昂贵的)处理以确定对应或相等。
[0041]现在参照图2(c),在已确定并存储流S的签名(SS)之后,可以对任意的流进行处理以确定它是否充分地对应于流S。流S’被提供给比较处理216 (以下参照图2(d)进行描述),比较处理216使用先前存储的流签名(SS)来确定输入流S’是否对应于流S。
[0042]比较处理216确定是否存在任何更多的流要处理(在218处)。如果不是,则没有找到匹配,因此这些流不匹配。如果存在更多的输入流要处理,则所述处理查找同步点(在220处)。应当意识到,所述处理将查找流签名SS中的同步点的任何一个(SP),并且不需要按顺序查找它们。如在阅读本描述时对于本领域技术人员将清楚的,这允许输入流以片(piece)或分组(packet)被处理,这些片或分组可以不按顺序到达比较处理216。
[0043]在已找到同步点(SP)之后,比较处理216然后寻找与该同步点相关联的对应的比特块(B)(在220处),并且确定该比特块B的签名H(B)。本领域技术人员在阅读本描述时将认识并理解到,比较处理216中所使用的函数H必须与用于产生流签名的函数相同。
[0044]接着(在226处),将对<SP,H(B)>与流签名SS中的同步点SP的对应的对进行比较。如果该对不匹配(在228处),则对流的其余部分(如果有的话)进行处理(在218处,…)。另一方面,如果(在228处)对〈SP,H (B)〉与流签名SS中的同步点SP的对应的对匹配,则(在230处)比较处理216确定是否已存在认为流匹配的充分的对匹配。对于“充分匹配”的测试(在230处)可以使用到目前为止流中匹配的数量的计数,并且可以使用该计数值来确定流签名的〈同步点,块签名〉对的百分比匹配。在一些优选的实现中,认为70%匹配(例如,十分之七匹配)是认为流匹配的充分匹配(在232处)。本领域技术人员在阅读本描述时将认识并理解到,所需的百分比匹配(高达并且包括100%)是比较处理所需的精度的函数。因为,如以上所解释的,当找到匹配(在232处)时,可以使用比较处理216来触发附加的(而且代价更高的)比较,所以本领域技术人员将知道并且理解如何权衡错误的肯定匹配(在232处)与充分匹配流的随后处理的代价。
[0045]到目前为止,我们已经描述了将输入流(S’ )与单个先前处理的流(S)进行比较,并且与其进行可能匹配。在一些实施例中,可以将输入流与多于一个的先前处理的流进行比较。
[0046]图3 (a)中的示图示出了多个(k个)流签名的逻辑组织300,k个流SI,…Sk中的每一个有一个流签名。可以如以上参照图2(a)_2(b)所描述的那样确定流签名中的每一个。
[0047]现在参照图3 (a) -3 (b)和图4 (a) _4 (b)描述将任意的输入流(S)与这k个流中的每一个进行比较的处理。与多个可能的流进行比较的一个流的比较处理可以在输入流中寻找多个流签名的同步点,并且它还可以寻找多于一个的签名的匹配〈同步点,哈希值〉对。总之,所述处理优选地跟踪它对于k个流(Sl-Sk)中的每一个找到的匹配〈同步点,哈希值 > 对的数量,并且宣告输入流S与这k个流中的第一个流之间的匹配为充分匹配(如以上所讨论的,基于对于充分性的某一预定阈值)。
[0048]参照图4(a)_4(b)中的流程图,如果存在更多的流S要处理(在400处),则处理继续(在402处)查找S中与流SP"Sk中的一个的同步点中的至少一个对应的同步点(SP)。在该流程图中,流Sb-Sk被称为流集合,其被表示为S’。如果没有找到同步点(在402处),则处理继续(在400处)对输入流S的任何其余部分进行处理。如果(在402处)在S中找到与流SP"Sk( S卩,流集合S’)中的任何一个对应的同步点(SP),则处理继续(在404处)确定与所找到的同步点(SP)相关联的比特块B的对应的签名H(B)。
[0049]接着(在406处),将签名对〈SP,H (B)〉与S’中的所有流的与同步点SP相关联的签名进行比较(其中,SP是在S中找到的与流SP-Sk中的至少一个中的同步点中的至少一个对应的同步点);并且H(B)是与该同步点(SP)对应的比特块B的签名。再次参照图3(a),流SP-Sk中的每一个的流签名被存储并且对于所述处理是可用的,以使得可以检查<同步点,签名〉对。
[0050]如果对于S’中的流的任何一个对于对<SP,H(B) >没有找到匹配签名对(在408处),则处理继续(在400处)对输入流S的任何其余部分进行处理。如果找到一个或多个匹配对<SP,H(B)>(在408处),则处理继续(在410处),对于S’中的所有匹配流的〈SP,H (B)〉对的计数。
[0051]一旦计数被更新(在410中),所述处理就确定(在412处)S’中的任何一个流(Sm)是否具有充分的匹配对。如果确定(在412处)S’中没有流具有充分的匹配对,则处理继续(在400处)对输入流S的任何其余部分进行处理。如果任何流Sm具有充分的匹配对,则所述处理完成(在414处),并且认为输入流S与具有充分的匹配对的流匹配。
[0052]应当意识到,以上所描述的处理可以导致输入流S与集合S’中的多于一个的流匹配。
[0053]在一些实现中,数据结构302(图3(b))为每个流签名维护一个检查列表(checklist),以使得每次〈同步点,签名 > 对对于该流匹配时,所述处理可以划掉(或打勾)。该列表允许系统确定(例如,计数)对于该流的匹配对的数量。本领域技术人员在阅读本描述时将认识并理解到,检查列表可以以任何数量的方式实现,包括,例如,被实现为其中对应的〈同步点,签名 > 对中的每一个为一个比特的位图。在处理输入流的开始时,检查列表中的所有比特都被设置为O,并且当找到匹配时,对应的比特值被设置为I。用于流Sj的位图检查列表中的比特的和于是将给出对于该流Sj的输入流中的匹配对的数量。如将意识到的,可以使用不同的和/或其它的方案来跟踪匹配数量。
[0054]本领域技术人员在阅读本描述时将认识并理解到,相对于两个流的术语“匹配”(或“不匹配”)的使用这里不一定暗示它们是同样的。如果对于两个流的充分数量的<同步点,签名 > 对相同,则这两个流匹配。
[0055]如先前所讨论的,本领域技术人员在阅读本描述时将认识并理解到,可以使用充分性的不同度量来确定两个流是否具有充分匹配。在一些实施例中,70%匹配将被认为是充分的,而在其它实施例中,可能需要更高的匹配(高达100%)。本领域技术人员在阅读本描述时将认识并理解到,如何基于例如处理的应用以及对于错误的肯定匹配的容限来选择匹配充分性的度量。如早先所提到的,在一些应用中,一旦通过这里所描述的处理找到两个流匹配,就可以使用进一步的测试来确定这些流是否匹配。
[0056]数据结构和实现
[0057]本领域技术人员在阅读本描述时将认识并理解到,可以应用各种优化来实现匹配处理。数据结构优选地应当是:
[0058].可扩展的:应当初始处理数百个到数百万个条目,如果需要,具有增长的选择。
[0059].存储器高效的:应当使用尽可能少的存储器。
[0060].搜索高效的:对于给定模式的搜索应当不超过O (η)。
[0061]参照图5描述用于流匹配处理的实现的示例性数据结构。对于该示例,假定每个同步点是六至八个字节的序列,并且每个指纹是两字节长的值。附加的(可选的)数据也可以被存储在所述数据结构中。参照图5,所述数据结构(被称为同步指纹数据结构(SFDS))包括一组数组:
[0062]rowl—256比特长的数组,其中,每个比特对应于ASCII代码(可以出现在同步点中的代码)
[0063]row2一2562比特长的数组,其中,256个比特与rowl中的比特的每一个相关
[0064]row3—2563比特长的数组,其中,256个比特与row3中的比特的每一个相关
[0065]row4一与row3中的特定条目对应的树的列表
[0066]在初始化处理中,将同步点¢-8个字节的序列)和指纹(2字节长的哈希值,其具有附加的可选数据集)的对如下存储在数据结构中:
[0067]1.同步的第I个字节将设置rowl中的相关比特(如果它还未被设置)。
[0068]2.同步的第2个字节将设置与在rowl中设置的比特相关的row2的256个比特中的相关比特(如果它还未被设置)。
[0069]3.同步的第3个字节将设置与在row2中设置的比特相关的row3的256个比特中的相关比特(如果它还未被设置)。
[0070]4.将同步字节的剩余部分存储在与在步骤3处设置的比特对应的树中。(如果树尚不存在,则将创建该树。)
[0071]5.将指纹和任何附加的数据连接到来自以上步骤4的树的相关叶子。
[0072]示例
[0073]以下示例示出以上(在图5中)所描述的示例性数据结构的使用。现在参照图6 (a) -6 (c)中的图,考虑具有同步点SPl =“2,254,1,A,A,C” (该模式在这里以ASCII示出)、具与对应的指纹值0x23a9的流。将意识到,这意味着与同步点SPl相关联的比特块的哈希为0x23a9。为了该示例,假定该流具有流id 1000和同步索引5。
[0074]可以如下将该对< “2,254,I, A, A, C,,,0x23a9>添加到数据结构:
[0075]1.同步点中的第I个字符是“2”,所以将rowl中的比特2设置为I。
[0076]2.同步点中的第2个字符为254,所以将与rowl的比特2对应的row2的256个比特中的比特254设置为I。也就是说,将row2[2] [254]设置为I。
[0077]3.同步点中的第3个字符为1,所以设置与在步骤2中设置的比特对应的ι.ο?3的256个比特中的第I比特。也就是说,将row3[2,254] [I]设置为I。
[0078]4.假定在步骤3中设置的比特已经具有与它对应的树,并且该树已经具有’ A’作为第I个字符,则不对’A’(同步点中的第4个字符)进行处理。
[0079]5.同步点中的第5个字符也为’ A’ 一将它添加到树作为第2个字母。
[0080]6.同步点中的第6个字符为“C”,所以将它添加到树作为第3个字母,并且在它下面创建新的空的叶子。
[0081]7.将指纹值(0x23a9)和附加的数据(流id 1000和同步索引5)存储在记录中,并且将它与在步骤6中创建的叶子相关联。
[0082]一旦数据结构被设定(如上所述),就可以例如如这里参照图6 (a)-6 (C)描述的那样处理输入流。匹配处理使用两个辅助的数据结构,即,匹配同步列表(MSL)数据结构(图6(b))和匹配签名矢量列表(MSLoV)数据结构(图6(c))。
[0083]匹配同步列表(MSL)结构是具有多达η个条目的列表(其中,η是同步的长度)。在该示例中,同步长度为8,并且MSL具有8个条目。该列表保存正被处理的同步的地址(SFDS,图5)。矢量的条目i保存头i个字节与SFDS中的同步匹配且其第(i+Ι)个字节还未被比较的同步的地址。值-1代表在该长度中“没有匹配”。
[0084]匹配签名矢量列表(MSLoV)结构是矢量列表。MSLoV列表中的每个矢量保存与给定流的同步匹配的同步和该流的流id的列表。矢量的第j个条目保存找到的与该流的同步匹配的第j个同步的同步索引(从SFDS获取)。
[0085]使用这些数据结构的搜索流程如下:
[0086]1.每次新的分组被读取时,逐个字节地扫描该分组中的所有字节。每个字节与SFDS的rowl中的字节进行比较。如果存在匹配,则将MSL的条目I设置为与SFDS的rowl中的相关条目相关的SFDS的row2的部分。
[0087]2.对跟在具有匹配的字节后面的字节进行数次比较。假定前一字节是匹配中的第i个,则将对当前的字节检查i次(检查按以下描述的逆序进行。也就是说,首先,进行步骤e中的检查,然后进行d中的检查,然后…,最后一次是在步骤a中描述的检查):
[0088]a.作为匹配中的第I (如步骤I中所描述的)
[0089]b.作为以MSL的条目I指向的部分同步开始的匹配中的第2字节一对照MSL的条目I指向的SFDS的1.0?2的相关部分对该匹配进行检查。如果找到匹配,则将条目I设置为“-1”,并且利用到目前为止找到的部分匹配的地址(其是SFDS的ι.ο?2中的相关条目)来更新条目2。
[0090]c.作为以MSL的条目2指向的部分同步开始的匹配中的第3字节一对照MSL的条目I指向的SFDS的ι.ο?3的相关部分对该匹配进行检查。如果找到匹配,则将条目2设置为“-1”,并且利用到目前为止找到的部分匹配的地址(其是SFDS的ι.ο?2中的相关条目)来更新条目3。
[0091]d____
[0092]e.作为以MSL的条目i_l指向的部分同步开始的匹配中的第i字节一对照MSL的条目i_l指向的SFDS的相关部分对该匹配进行检查。如果找到匹配,则将条目i_l设置为“-1”,并且利用到目前为止找到的部分匹配的地址(其是SFDS中的相关条目)来更新条目
1
[0093]3.每次找到完整同步(也就是说,步骤2中的i等于完整同步的长度,并且步骤
2.e成功)时,计算指纹。计算的指纹与MSL的最后一个条目中的SFDF部分指向的SFDF的树叶所指向的指纹进行比较。如果找到匹配指纹,则获取其流Id和同步索引,并且更新MSLoV:
[0094]a.如果MSLoV对于该流Id不具有矢量,则创建一个新矢量,并将该新矢量添加到MSLoV的开头。该新矢量的流Id被设置为从SFDS获取的流Id。该新矢量的条目I被设置为从SFDS获取的同步索引。
[0095]b.如果MSLoV对于该流Id已经具有矢量,则将其第I个空条目设置为从SFDS获取的同步索引。
[0096]c.注意,如果匹配同步具有MSLoV中的数个叶子,则分别对这些叶子中的每一个进行以上步骤a/b。
[0097]4.一旦MSLoV矢量中的索引的数量超过给定的量(例如,十分之八),则定义输入流与其id根据该矢量的流Id而存储的流之间的匹配。
[0098]5.注意,对于同步,仅搜索具有预定义长度的流的部分。如果搜索超过识别匹配流的该部分,则假定为未知流,并且对MSL和MSLoV 二者进行清除。
[0099]结束示例
[0100]本领域技术人员在阅读本描述时将认识并理解到,可以使用不同的和/或其它的数据结构来实现这里描述的处理。应当意识到,对于所使用的数据结构,一些效率是优选的。作为目标,数据结构应当存储多达I百万个同步点(每个6-8个字节)与和同步模式中的每一个相关的指纹。如所指出的,数据结构优选地提前离线创建(它将被准备用于初始数据集,并且然后每当需要时被递增地更新),而搜索本身将实时地进行。
[0101]通过使用以上示例(图6(a)-6(C))中描述的数据结构,对于一百万个同步条目:
[0102].头3个字节将被添加到3行,每行256个条目(28的3次等于224,等于1600万个条目)。后面的字节将被唯一地添加到每个前缀的最后一行(小于1%将具有相同的前缀,并且列表结构将是足够高效的,如果不是,则可以对新添加的流考虑不同的同步模式)。
[0103].添加新同步被离线进行,并且它为同步长度的阶(order)。
[0104]?搜索数据结构中的同步可以实时地进行,并且为同步长度的阶0(1)。
[0105]分组化(packetize)的数据流
[0106]在一些情况下,输入数据流可以是以分组化的数据的形式。例如,如果比较处理在诸如路由器的设备中发生,则这可以出现。在这样的情况下,执行处理的设备可能需要缓冲来自多于一个的分组的有效载荷数据,以便执行处理。
[0107]众所周知,在基于分组的网络(诸如TCP/IP网络,例如,因特网)中,要从一个位置发送到另一个位置的数据被分组化(分割成多个分组)。参照图7,典型的分组包括地址信息和有效载荷。有效载荷包括要被传输的数据,地址信息包括允许网络将分组路由到其目的地的信息。本领域技术人员在阅读本描述时将认识并理解到,可以使用许多形式的分组化,并且分组的形式和类型不限于本发明。另外,应当意识到,一些网络可以使用协议的多个层级,以使得有效载荷本身可以是包括其它地址信息的分组。不管所使用的协议如何,本领域技术人员都将知道如何从特定的分组提取与数据项对应的数据。
[0108]如果预先知道分组化的类型,则优选的是选择同步点,以使得每个同步点适合放入单个分组的有效载荷内。然而,由于这也许是不可能的,所以可能有必要获得并且缓冲多个顺序分组的有效载荷,以便执行上述处理(查找同步点,并然后对其对应的比特块进行处理)。
[0109]本领域技术人员在阅读本描述时将认识并理解到,与当前使用的方法相比,所描述的处理和系统支持两个内容流之间的快得多的并且更高效方式的比较。另外,本文中所描述的方法可以处理加密内容。
[0110]计算
[0111]实现这样的方法的程序(以及其它类型的数据)可以以许多方式使用各种介质(例如,计算机可读介质)传输和存储。可以使用硬连线电路或定制硬件代替可以实现各种实施例的处理的软件指令中的一些或全部、或者与这些软件指令中的一些或全部结合。因此,可以使用硬件和软件的各种结合,而不是仅使用软件。
[0112]图8是其上可以实现并且执行本公开的实施例的计算机系统800的示意图。
[0113]根据本示例,计算机系统800包括总线801 (即,互连)、至少一个处理器802、至少一个通信端口 803、主存储器804、可移动存储介质805、只读存储器806、以及大容量储存器807。
[0114]处理器802可以是任何已知的处理器,诸如,但不限于,Intel? Itanium?或 Itanium 2? 处理器、AMD? Opteron? 或 Athlon MP? 处理器、或Motorola?处理器线(lines)等。通信端口 903可以是以下端口中的任何一个:与基于调制解调器的拨号连接一起使用的RS-232端口、10/100以太网端口、使用铜或光纤的吉比特端口、或USB端口等。通信端口 803可以根据网络(诸如局域网(LAN)、广域网(WAN)、⑶N、或计算机系统800连接的任何网络)而选择。计算机系统800可以经由输入/输出(1/0)端口 809与外围设备(例如,显示屏幕830、输入设备816)通信。
[0115]主存储器804可以是随机存取存储器(RAM)、或本领域中公知的其它动态存储设备。只读存储器806可以是用于存储静态信息(诸如用于处理器802的指令)的任何静态存储设备(诸如可编程只读存储器(PROM)芯片)。大容量储存器807可以被用于存储信息和指令。例如,可以使用硬盘(诸如Adaptec?小型计算机串行接口(scsi)驱动器族)、光盘、磁盘阵列(诸如独立磁盘冗余阵列(RAID),诸如Adaptec? RAID驱动器族)、或任何其它大容量存储设备。
[0116]总线801将处理器802与其它存储器、储存器和通信块通信地耦合。根据所使用的存储设备等,总线801可以是PCI/PC1-X、SCS1、基于通用串行总线(USB)的系统总线(或其它)。可移动存储介质805可以是任何类型的外部硬盘驱动器、软盘驱动器、1MEGA? Zip驱动器、紧凑盘-只读存储器(CD-ROM)、紧凑盘-可重写(CD-RW)、数字视频盘-只读存储器(DVD-ROM)等。
[0117]本文中的实施例可以被提供作为计算机程序产品,该计算机程序产品可以包括其上存储指令的机器可读介质,所述指令可以被用于对计算机(或其它电子设备)编程以执行处理。如本文中所使用的,术语“机器可读介质”指的是任何介质、多个相同介质、或不同介质的结合,这些介质参与提供可以被计算机、处理器或类似设备读取的数据(例如,指令、数据结构)。这样的介质可以采取许多形式,包括但不限于,非易失性介质、易失性介质、以及传输介质。非易失性介质包括,例如,光盘或磁盘以及其它持久存储器。易失性介质包括通常构成计算机的主存储器的动态随机存取存储器。传输介质包括同轴电缆、铜线和光纤,其包括包含耦合到处理器的系统总线的线。传输介质可以包括或传送声波、光波以及电磁发射,诸如射频(RF)和红外(IR)数据通信期间产生的那些。
[0118]机器可读介质可以包括,但不限于,软盘、光盘、⑶-ROM、磁光盘、ROM、RAM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光学卡、闪存、或适合于存储电指令的其它类型的介质/机器可读介质。而且,本文中的实施例还可以被作为计算机程序产品下载,其中,所述程序可以经由通信链路(例如,调制解调器或网络连接)通过载波或其它传播介质中所包含的数据信号从远程计算机传递到请求计算机。
[0119]在将数据(例如,指令序列)传载到处理器中可以涉及各种形式的计算机可读介质。例如,数据可以⑴从RAM递送到处理器;(ii)通过无线传输介质传载;(iii)根据大量的格式、标准或协议进行格式化和/或传输;和/或(iv)以本领域中众所周知的各种方式中的任何一种进行加密。
[0120]计算机可读介质可以(以任何适当的格式)存储适于执行方法的那些程序元素。
[0121]如所示的,主存储器804被编码有支持本文中所讨论的功能性的应用850-1 (应用850-1可以是例如初始设定200或比较应用216)。应用850-1 (和/或本文中描述的其它资源)可以体现为支持根据本文中描述的不同实施例的处理功能性的软件代码,诸如数据和/或逻辑指令(例如,存储在存储器中或另一计算机可读存储介质(诸如盘)上的代码)。
[0122]在一个实施例的操作期间,处理器802经由总线801的使用访问主存储器804,以便启动、运行、执行、解释或以其它方式执行应用850-1的逻辑指令。应用850-1的执行生成处理850-2中的处理功能性。换句话讲,处理950-2表示在计算机系统800中的处理器802内或上执行的应用850-1的一个或多个部分。
[0123]应当注意,除了执行本文中所讨论的操作的处理850-2之外,本文中的其它实施例包括应用850-1本身(即,未执行的或非执行的逻辑指令和/或数据)。应用850-1可以被存储在计算机可读介质(例如,储存库)(诸如盘、硬盘)上或光学介质中。根据其它实施例,应用850-1还可以被存储在存储器类型系统中,诸如固件、只读存储器(ROM)中,或者如该示例中那样,作为主存储器804内的(例如,随机存取存储器或RAM内的)可执行代码。例如,应用850-1还可以被存储在可移动存储介质805、只读存储器806、和/或大容量存储设备807中。
[0124]以上参照图2(a)_2(d)和图4(a)_4(b)讨论了计算机系统800支持的示例功能性,更具体地,与应用850-1相关联的功能性。
[0125]本领域技术人员将理解,计算机系统800可以包括其它处理和/或软件和硬件组件,诸如控制硬件资源的分配和使用的操作系统。
[0126]如本文中所讨论的,本发明的实施例包括各种步骤或操作。各个这些步骤可以由硬件组件执行,或者可以包含在机器可执行指令中,这些指令可以被用于使通用或专用处理器被编程有执行操作的指令。可替代地,步骤可以由硬件、软件和/或固件的结合执行。术语“模块”指的是自包含功能组件,其可以包括硬件、软件、固件或它们的任何结合。
[0127]本领域普通技术人员在阅读本描述时将容易意识并理解到,装置的实施例可以包括可操作为执行所描述的处理中的一些(而不必是全部)的计算机/计算设备。
[0128]存储程序或数据结构的计算机可读介质的实施例包括存储程序的计算机可读介质,该程序在被执行时可以使处理器执行所描述的处理中的一些(而不必是全部)。
[0129]在本文中描述处理的情况下,本领域技术人员将意识到,该处理可以在没有任何用户干预的情况下进行操作。在另一实施例中,该处理包括一些人类干预(例如,步骤由人执行或者通过人的帮助执行)。
[0130]应当意识到,权利要求中的词“第一”和“第二”被用于区分或识别,而非表示顺序或数字限制。类似地,字母或数字标记(诸如“(a)”、“(b)”等)的使用被用于帮助区分和/或识别,而非表示任何顺序或数字限制或排序。
[0131]尽管已经结合目前认为是最实用且优选的实施例的实施例对本发明进行了描述,但要理解,本发明不限于所公开的实施例,而是相反,旨在涵盖包括在所附权利要求的精神和范围内的各种修改和等同布置。
【权利要求】
1.一种由硬件结合软件实现的计算机实现的方法,所述方法包括: 确定数据项中的多个同步点,所述数据项由任意的比特序列组成,并且每个同步点由所述数据项中的比特序列组成; 对于所述多个同步点中的每一个,确定所述数据项中对应的比特块; 对于每个比特块,通过将哈希函数或消息摘要函数应用于所述比特块来确定对应的块签名; 通过将所述多个同步点中的每一个与所述对应的比特块的对应的块签名相关联来形成数据项签名。
2.根据权利要求1所述的方法,其中,每个特定的同步点的对应的比特块与所述特定的同步点直接相邻。
3.根据权利要求1或2所述的方法,其中,所述哈希函数从包括以下函数的函数中选择:SHA 和 MD5。
4.根据权利要求1、2和3中的任何一项所述的方法,其中,每个同步点由32个比特组成。
5.根据权利要求1、2、3和4中的任何一项所述的方法,其中,每个比特块由256个字节组成。
6.一种设备,所述设备包括用于实现权利要求1-5中的任何一项的方法的硬件和软件。
7.一种由硬件结合软件实现的计算机实现的方法,所述方法包括: (A)获得第一数据项的第一数据项签名,所述第一数据项签名包括所述第一数据项中的多个同步点与对应的多个块签名之间的关联; (B)尝试在第二数据项中寻找所述多个同步点中的同步点;以及 (C)如果在所述第二数据项中找到所述多个同步点中的同步点,则: (C) (I)确定所述第二数据项中对应的比特块的块签名,其中,所述块签名通过将哈希函数或消息摘要函数应用于所述第二数据项中所述对应的比特块来确定;和 (C) (2)查明来自所述第二数据项的所述同步点和所述对应的块签名是否对应于所述第一数据项签名中的同步点和块签名;以及 (C)(3)当来自所述第二数据项的所述同步点和所述对应的块签名对应于所述第一数据项签名中的同步点和块签名时,维护指示该对应的信息; (D)在所述第二数据项中的至少一些仍未被处理时,重复步骤(B)和(C),直到来自所述第二数据项的预定数量的同步点和对应的块签名与所述第一数据项签名中的同步点和对应的块签名匹配为止; (E)当来自所述第二数据项的所述预定数量的同步点和对应的块签名与所述第一数据项签名中的同步点和对应的块签名匹配时,指示所述第一数据项与所述第二数据项之间匹配。
8.根据权利要求7所述的方法,其中,对于所述第二数据项的多个不同部分,并行地重复步骤⑶和(C)。
9.根据权利要求7或8所述的方法,还包括: (F)在(E)中所确定的第一数据项与第二数据项之间匹配的情况下,选择性地拒绝对所述第二数据项的访问。
10.根据权利要求7、8和9中的任何一项所述的方法,还包括: (G)在(E)中所确定的第一数据项与第二数据项之间匹配的情况下,维护关于第二数据项的信息。
11.根据权利要求10所述的方法,其中,处理的至少一些在特定的设备中发生,并且其中,所维护的信息包括关于所述特定的设备的信息。
12.根据权利要求11所述的方法,其中,所述设备是网络中的路由器。
13.根据权利要求7-12中的任何一项所述的方法,还包括: 获得多个分组;和 从所述多个分组提取有效载荷信息,以获得所述第二数据项中的至少一些。
14.根据权利要求7-13中的任何一项所述的方法,还包括: (H)在(E)中所确定的第一数据项与第二数据项之间匹配的情况下,使所述第二数据项经受附加的检查以确定它是否与所述第一数据项相同。
15.根据权利要求7-14中的任何一项所述的方法,其中,每个特定的同步点的对应的比特块与所述特定的同步点直接相邻。
16.根据权利要求7-15中的任何一项所述的方法,其中,所述哈希函数从包括以下函数的函数中选择:SHA和MD5。
17.根据权利要求7-16中的任何一项所述的方法,其中,每个同步点由32个比特组成。
18.根据权利要求7-17中的任何一项所述的方法,其中,每个比特块由256个字节组成。
19.一种由硬件结合软件实现的计算机实现的方法,所述方法包括: (A)获得多个数据项签名,多个数据项中的每一个具有至少一个签名,所述多个数据项中的每一个特定的数据项的数据项签名包括所述特定的数据项中的多个同步点与所述特定的数据项的对应的多个块签名之间的关联; (B)尝试在第二数据项中寻找所述多个数据项签名的同步点;以及 (C)如果在所述第二数据项中找到所述多个数据项签名的同步点,则: (C) (I)确定所述第二数据项中对应的比特块的块签名,其中,所述块签名通过将哈希函数或消息摘要函数应用于所述第二数据项中所述对应的比特块来确定;和 (C) (2)查明所述第二数据项的所述同步点和所述对应的块签名是否对应于所述多个数据项签名的任何一个中的同步点和块签名;以及 (C)(3)当所述第二数据项的所述同步点和所述对应的块签名对应于所述多个数据项签名的一个或多个中的同步点和块签名时,维护指示该对应的信息; (D)在所述第二数据项中的至少一些仍未被处理时,重复步骤(B)和(C),直到来自所述第二数据项的预定数量的同步点和对应的块签名与所述多个数据项签名的至少一个中的同步点和对应的块签名匹配为止; (E)当来自所述第二数据项的预定数量的同步点和对应的块签名与所述多个数据项的第一数据项签名中的所述预定数量的同步点和块签名匹配时,指示第一数据项与第二数据项之间匹配。
【文档编号】G06F17/00GK104205089SQ201380011606
【公开日】2014年12月10日 申请日期:2013年2月15日 优先权日:2012年2月29日
【发明者】R·萨吉, N·梅约米 申请人:阿尔特耐特股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1