流識別和過濾的制作方法
【專利摘要】一種方法獲得第一數據項的第一數據項簽名,第一數據項簽名包括第一數據項中的多個同步點與對應的多個塊簽名之間的關聯(lián)。處理嘗試在第二數據項中找到所述多個同步點中的一個;并且,如果找到這樣的同步點,則通過將哈希函數應用于第二數據項中對應的比特塊來確定第二數據項中的所述對應的比特塊的塊簽名。所述處理查明來自第二數據項的所述同步點和所述對應的塊簽名是否對應于第一數據項簽名中的同步點和塊簽名。如果預定數量的同步點和對應的塊簽名匹配,則第一和第二數據項被認為匹配。
【專利說明】流識別和過濾
[0001]版權聲明
[0002]本專利文檔包含受版權保護的資料。版權所有人不反對美國專利商標局的文件中的本專利文檔或任何相關資料的復制,但在其它方面保留任何所有的版權。
【技術領域】
[0003]本發(fā)明涉及流識別和過濾。
【專利附圖】
【附圖說明】
[0004]當參照附圖考慮以下描述和所附權利要求時,本發(fā)明的其它目的、特征和特性、以及結構的相關元件的功能和操作的方法、以及部件的結合和制造的經濟性將變得更清楚,所有的附圖形成本說明書的一部分。
[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是計算機系統(tǒng)的示意圖。
【具體實施方式】
[0015]背景和概述
[0016]檢查存儲在設備上或者在設備之間傳輸的數據以便試圖確定該數據是否對應于其它已知的數據通常是有用的且期望的。例如,確定存儲在設備上的數據是否對應于或者是其它數據的整個或部分副本可能是有用的或期望的。作為另一個示例,確定在兩個設備之間發(fā)送的數據流是否對應于(或者是)其它數據(的整個或部分副本)可能是有用的或期望的。
[0017]描述
[0018]數據流(或流)包括比特序列。流中的比特序列可以表示某一類型的數據項(例如,電影或圖像或音樂、數據庫等)或者對某一類型的數據項進行編碼??梢詫α髦械谋忍匦蛄羞M行加密和/或壓縮。本領域技術人員在閱讀本描述時將認識并理解到,本發(fā)明不受底層比特序列所表示的內容限制。
[0019]如本文中所使用的,數據指的是任何任意的數據,而不管底層數據表示什么,也不管如何對底層數據進行格式化、編碼或存儲。
[0020]參照圖1 (a)_l (b),流100包括多個同步點(在圖中該流被示出具有i個同步點,這些同步點被表示為SP1, SP2, SP3,…,SPi,其統(tǒng)稱為SPp。在該流中跟在每個同步點后面的是比特塊(在圖中第j個塊被表示為Bj)。
[0021]如圖1(b)中所示,第i個同步點(SPi)由k個比特(Kb1-K)組成,并且第i個比特塊(Bi)由j個比特(Ctl(VCj)組成。
[0022]盡管第j個比特塊在圖中被示為緊跟在第j個同步點的后面,但是應當明白,第j個比特塊可以與第j個同步點間隔某個已知量。
[0023]在目前優(yōu)選的實現(xiàn)中,存在十六(16)個同步點,每個同步點由32個比特組成,并且每個比特塊由256個字節(jié)組成。在另一實現(xiàn)中,存在十(10)個同步點,每個同步點由64個比特組成,并且每個比特塊由256個字節(jié)組成。如本文中所使用的,流中的比特的數量被稱為流的大小,同步點中的比特的數量被稱為同步點的大小,并且比特塊中的比特的數量被稱為比特塊的大小。本領域技術人員在閱讀本描述時將認識并理解到,可以使用除以上示出的數量之外的不同的和/或其它的數量的同步點,同步點可以具有與以上示出的數量不同的大小,比特塊可以具有與以上示出的數量不同的大小。
[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可以是任何哈希函數。在一些實現(xiàn)中,可以使用諸如MD5或SHA-1等的消息摘要函數,盡管優(yōu)選地可以使用更簡單并且更輕量的函數。優(yōu)選地,哈希函數生成32比特值。
[0033]本領域技術人員在閱讀本描述時將認識并理解到,函數h不需要(并且可能將不會)對于每一個比特塊生成唯一值。
[0034]每個流具有對應的流簽名?,F(xiàn)在參照圖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)描述數據流的流簽名的創(chuàng)建。如圖2(a)中所示,初始設定200對流S進行處理以生成流簽名202。參照圖2(b)中的流程圖更詳細地描述初始設定200的處理。初始設定處理200將創(chuàng)建由一定數量(k)的對〈SPj,h (Bj) >組成的流簽名202,j = I…k,k為某個值。k的值優(yōu)選地被預設(例如,10、15、20等),但是,如以上所提到的,還可以將k的值確定為流S的大小的函數。
[0036]在對流200進行處理中,初始設定202可以首先確定流S的大小(在204處)。該大小信息可以被用于例如確定該流所需的同步點的數量(k)和/或該流內的同步點的間隔。如當閱讀本描述時將變得清楚的,對于任何給定的流(S),優(yōu)選的是使同步點分布在整個流⑶上。
[0037]處理202然后(在206處)確定流S中的下一個(第i個)同步點(SPi)以及對應的比特塊(Bi)15對于比特塊Bi確定值H (Bi)(在208處),并且將對<SPj,H (Bj) >存儲在流S的簽名中(在210處)。在208處計算的函數“H”對應于以上所描述的函數h,并且優(yōu)選為諸如MD5或SHA等的哈希函數的消息摘要。
[0038]處理202然后確定對于該流S是否已經確定了充分的〈同步點,值〉對(在212處)。如果是,則存儲該流的簽名(SS)(在214處),否則確定另一個同步點(在206處)。在對流(S)處理的結束時,生成(例如,圖1(c)中所示的形式的)流簽名,并且將該流簽名與流S)相關聯(lián)地存儲。
[0039]如在閱讀本描述時對于本領域技術人員將清楚的,兩個流具有同樣的流簽名(使用本文中所描述的處理而確定)的事實不一定暗示這兩個流是同樣的。例如,第一個流可以由數百萬個比特組成,而流簽名可以僅由十個或二十個〈同步點,比特塊值〉對組成,其中,同步點隨機地分布在該流上,并且其中,每個同步點僅使用128個比特,并且每個比特塊僅使用512個比特。在這種情況下,如果第二個流具有完全相同的〈同步點,比特塊值〉對,則它可能對應于第一個流,但是它可能不對應于第一個流。然而,如果第二個流不具有與第一個流相同的〈同步點,比特塊值 > 對,則它不對應于第一個流。
[0040]發(fā)明人認識到,對于一些應用,確定數據流是否充分地對應于另一個已知數據流可能是足夠的。他們認識到,在一些應用中,以某種程度的確定性確定兩個流可能相等可能是足夠的。這樣的信息可以被用于觸發(fā)流的更廣泛的(而且可能更昂貴的)處理以確定對應或相等。
[0041]現(xiàn)在參照圖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然后尋找與該同步點相關聯(lián)的對應的比特塊(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處)可以使用到目前為止流中匹配的數量的計數,并且可以使用該計數值來確定流簽名的〈同步點,塊簽名〉對的百分比匹配。在一些優(yōu)選的實現(xiàn)中,認為70%匹配(例如,十分之七匹配)是認為流匹配的充分匹配(在232處)。本領域技術人員在閱讀本描述時將認識并理解到,所需的百分比匹配(高達并且包括100%)是比較處理所需的精度的函數。因為,如以上所解釋的,當找到匹配(在232處)時,可以使用比較處理216來觸發(fā)附加的(而且代價更高的)比較,所以本領域技術人員將知道并且理解如何權衡錯誤的肯定匹配(在232處)與充分匹配流的隨后處理的代價。
[0045]到目前為止,我們已經描述了將輸入流(S’ )與單個先前處理的流(S)進行比較,并且與其進行可能匹配。在一些實施例中,可以將輸入流與多于一個的先前處理的流進行比較。
[0046]圖3 (a)中的示圖示出了多個(k個)流簽名的邏輯組織300,k個流SI,…Sk中的每一個有一個流簽名??梢匀缫陨蠀⒄請D2(a)_2(b)所描述的那樣確定流簽名中的每一個。
[0047]現(xiàn)在參照圖3 (a) -3 (b)和圖4 (a) _4 (b)描述將任意的輸入流(S)與這k個流中的每一個進行比較的處理。與多個可能的流進行比較的一個流的比較處理可以在輸入流中尋找多個流簽名的同步點,并且它還可以尋找多于一個的簽名的匹配〈同步點,哈希值〉對??傊?,所述處理優(yōu)選地跟蹤它對于k個流(Sl-Sk)中的每一個找到的匹配〈同步點,哈希值 > 對的數量,并且宣告輸入流S與這k個流中的第一個流之間的匹配為充分匹配(如以上所討論的,基于對于充分性的某一預定閾值)。
[0048]參照圖4(a)_4(b)中的流程圖,如果存在更多的流S要處理(在400處),則處理繼續(xù)(在402處)查找S中與流SP"Sk中的一個的同步點中的至少一個對應的同步點(SP)。在該流程圖中,流Sb-Sk被稱為流集合,其被表示為S’。如果沒有找到同步點(在402處),則處理繼續(xù)(在400處)對輸入流S的任何其余部分進行處理。如果(在402處)在S中找到與流SP"Sk( S卩,流集合S’)中的任何一個對應的同步點(SP),則處理繼續(xù)(在404處)確定與所找到的同步點(SP)相關聯(lián)的比特塊B的對應的簽名H(B)。
[0049]接著(在406處),將簽名對〈SP,H (B)〉與S’中的所有流的與同步點SP相關聯(lián)的簽名進行比較(其中,SP是在S中找到的與流SP-Sk中的至少一個中的同步點中的至少一個對應的同步點);并且H(B)是與該同步點(SP)對應的比特塊B的簽名。再次參照圖3(a),流SP-Sk中的每一個的流簽名被存儲并且對于所述處理是可用的,以使得可以檢查<同步點,簽名〉對。
[0050]如果對于S’中的流的任何一個對于對<SP,H(B) >沒有找到匹配簽名對(在408處),則處理繼續(xù)(在400處)對輸入流S的任何其余部分進行處理。如果找到一個或多個匹配對<SP,H(B)>(在408處),則處理繼續(xù)(在410處),對于S’中的所有匹配流的〈SP,H (B)〉對的計數。
[0051]一旦計數被更新(在410中),所述處理就確定(在412處)S’中的任何一個流(Sm)是否具有充分的匹配對。如果確定(在412處)S’中沒有流具有充分的匹配對,則處理繼續(xù)(在400處)對輸入流S的任何其余部分進行處理。如果任何流Sm具有充分的匹配對,則所述處理完成(在414處),并且認為輸入流S與具有充分的匹配對的流匹配。
[0052]應當意識到,以上所描述的處理可以導致輸入流S與集合S’中的多于一個的流匹配。
[0053]在一些實現(xiàn)中,數據結構302(圖3(b))為每個流簽名維護一個檢查列表(checklist),以使得每次〈同步點,簽名 > 對對于該流匹配時,所述處理可以劃掉(或打勾)。該列表允許系統(tǒng)確定(例如,計數)對于該流的匹配對的數量。本領域技術人員在閱讀本描述時將認識并理解到,檢查列表可以以任何數量的方式實現(xiàn),包括,例如,被實現(xiàn)為其中對應的〈同步點,簽名 > 對中的每一個為一個比特的位圖。在處理輸入流的開始時,檢查列表中的所有比特都被設置為O,并且當找到匹配時,對應的比特值被設置為I。用于流Sj的位圖檢查列表中的比特的和于是將給出對于該流Sj的輸入流中的匹配對的數量。如將意識到的,可以使用不同的和/或其它的方案來跟蹤匹配數量。
[0054]本領域技術人員在閱讀本描述時將認識并理解到,相對于兩個流的術語“匹配”(或“不匹配”)的使用這里不一定暗示它們是同樣的。如果對于兩個流的充分數量的<同步點,簽名 > 對相同,則這兩個流匹配。
[0055]如先前所討論的,本領域技術人員在閱讀本描述時將認識并理解到,可以使用充分性的不同度量來確定兩個流是否具有充分匹配。在一些實施例中,70%匹配將被認為是充分的,而在其它實施例中,可能需要更高的匹配(高達100%)。本領域技術人員在閱讀本描述時將認識并理解到,如何基于例如處理的應用以及對于錯誤的肯定匹配的容限來選擇匹配充分性的度量。如早先所提到的,在一些應用中,一旦通過這里所描述的處理找到兩個流匹配,就可以使用進一步的測試來確定這些流是否匹配。
[0056]數據結構和實現(xiàn)
[0057]本領域技術人員在閱讀本描述時將認識并理解到,可以應用各種優(yōu)化來實現(xiàn)匹配處理。數據結構優(yōu)選地應當是:
[0058].可擴展的:應當初始處理數百個到數百萬個條目,如果需要,具有增長的選擇。
[0059].存儲器高效的:應當使用盡可能少的存儲器。
[0060].搜索高效的:對于給定模式的搜索應當不超過O (η)。
[0061]參照圖5描述用于流匹配處理的實現(xiàn)的示例性數據結構。對于該示例,假定每個同步點是六至八個字節(jié)的序列,并且每個指紋是兩字節(jié)長的值。附加的(可選的)數據也可以被存儲在所述數據結構中。參照圖5,所述數據結構(被稱為同步指紋數據結構(SFDS))包括一組數組:
[0062]rowl—256比特長的數組,其中,每個比特對應于ASCII代碼(可以出現(xiàn)在同步點中的代碼)
[0063]row2一2562比特長的數組,其中,256個比特與rowl中的比特的每一個相關
[0064]row3—2563比特長的數組,其中,256個比特與row3中的比特的每一個相關
[0065]row4一與row3中的特定條目對應的樹的列表
[0066]在初始化處理中,將同步點¢-8個字節(jié)的序列)和指紋(2字節(jié)長的哈希值,其具有附加的可選數據集)的對如下存儲在數據結構中:
[0067]1.同步的第I個字節(jié)將設置rowl中的相關比特(如果它還未被設置)。
[0068]2.同步的第2個字節(jié)將設置與在rowl中設置的比特相關的row2的256個比特中的相關比特(如果它還未被設置)。
[0069]3.同步的第3個字節(jié)將設置與在row2中設置的比特相關的row3的256個比特中的相關比特(如果它還未被設置)。
[0070]4.將同步字節(jié)的剩余部分存儲在與在步驟3處設置的比特對應的樹中。(如果樹尚不存在,則將創(chuàng)建該樹。)
[0071]5.將指紋和任何附加的數據連接到來自以上步驟4的樹的相關葉子。
[0072]示例
[0073]以下示例示出以上(在圖5中)所描述的示例性數據結構的使用。現(xiàn)在參照圖6 (a) -6 (c)中的圖,考慮具有同步點SPl =“2,254,1,A,A,C” (該模式在這里以ASCII示出)、具與對應的指紋值0x23a9的流。將意識到,這意味著與同步點SPl相關聯(lián)的比特塊的哈希為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個字母,并且在它下面創(chuàng)建新的空的葉子。
[0081]7.將指紋值(0x23a9)和附加的數據(流id 1000和同步索引5)存儲在記錄中,并且將它與在步驟6中創(chuàng)建的葉子相關聯(lián)。
[0082]一旦數據結構被設定(如上所述),就可以例如如這里參照圖6 (a)-6 (C)描述的那樣處理輸入流。匹配處理使用兩個輔助的數據結構,即,匹配同步列表(MSL)數據結構(圖6(b))和匹配簽名矢量列表(MSLoV)數據結構(圖6(c))。
[0083]匹配同步列表(MSL)結構是具有多達η個條目的列表(其中,η是同步的長度)。在該示例中,同步長度為8,并且MSL具有8個條目。該列表保存正被處理的同步的地址(SFDS,圖5)。矢量的條目i保存頭i個字節(jié)與SFDS中的同步匹配且其第(i+Ι)個字節(jié)還未被比較的同步的地址。值-1代表在該長度中“沒有匹配”。
[0084]匹配簽名矢量列表(MSLoV)結構是矢量列表。MSLoV列表中的每個矢量保存與給定流的同步匹配的同步和該流的流id的列表。矢量的第j個條目保存找到的與該流的同步匹配的第j個同步的同步索引(從SFDS獲取)。
[0085]使用這些數據結構的搜索流程如下:
[0086]1.每次新的分組被讀取時,逐個字節(jié)地掃描該分組中的所有字節(jié)。每個字節(jié)與SFDS的rowl中的字節(jié)進行比較。如果存在匹配,則將MSL的條目I設置為與SFDS的rowl中的相關條目相關的SFDS的row2的部分。
[0087]2.對跟在具有匹配的字節(jié)后面的字節(jié)進行數次比較。假定前一字節(jié)是匹配中的第i個,則將對當前的字節(jié)檢查i次(檢查按以下描述的逆序進行。也就是說,首先,進行步驟e中的檢查,然后進行d中的檢查,然后…,最后一次是在步驟a中描述的檢查):
[0088]a.作為匹配中的第I (如步驟I中所描述的)
[0089]b.作為以MSL的條目I指向的部分同步開始的匹配中的第2字節(jié)一對照MSL的條目I指向的SFDS的1.0?2的相關部分對該匹配進行檢查。如果找到匹配,則將條目I設置為“-1”,并且利用到目前為止找到的部分匹配的地址(其是SFDS的ι.ο?2中的相關條目)來更新條目2。
[0090]c.作為以MSL的條目2指向的部分同步開始的匹配中的第3字節(jié)一對照MSL的條目I指向的SFDS的ι.ο?3的相關部分對該匹配進行檢查。如果找到匹配,則將條目2設置為“-1”,并且利用到目前為止找到的部分匹配的地址(其是SFDS的ι.ο?2中的相關條目)來更新條目3。
[0091]d____
[0092]e.作為以MSL的條目i_l指向的部分同步開始的匹配中的第i字節(jié)一對照MSL的條目i_l指向的SFDS的相關部分對該匹配進行檢查。如果找到匹配,則將條目i_l設置為“-1”,并且利用到目前為止找到的部分匹配的地址(其是SFDS中的相關條目)來更新條目
1
[0093]3.每次找到完整同步(也就是說,步驟2中的i等于完整同步的長度,并且步驟
2.e成功)時,計算指紋。計算的指紋與MSL的最后一個條目中的SFDF部分指向的SFDF的樹葉所指向的指紋進行比較。如果找到匹配指紋,則獲取其流Id和同步索引,并且更新MSLoV:
[0094]a.如果MSLoV對于該流Id不具有矢量,則創(chuàng)建一個新矢量,并將該新矢量添加到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]本領域技術人員在閱讀本描述時將認識并理解到,可以使用不同的和/或其它的數據結構來實現(xiàn)這里描述的處理。應當意識到,對于所使用的數據結構,一些效率是優(yōu)選的。作為目標,數據結構應當存儲多達I百萬個同步點(每個6-8個字節(jié))與和同步模式中的每一個相關的指紋。如所指出的,數據結構優(yōu)選地提前離線創(chuàng)建(它將被準備用于初始數據集,并且然后每當需要時被遞增地更新),而搜索本身將實時地進行。
[0101]通過使用以上示例(圖6(a)-6(C))中描述的數據結構,對于一百萬個同步條目:
[0102].頭3個字節(jié)將被添加到3行,每行256個條目(28的3次等于224,等于1600萬個條目)。后面的字節(jié)將被唯一地添加到每個前綴的最后一行(小于1%將具有相同的前綴,并且列表結構將是足夠高效的,如果不是,則可以對新添加的流考慮不同的同步模式)。
[0103].添加新同步被離線進行,并且它為同步長度的階(order)。
[0104]?搜索數據結構中的同步可以實時地進行,并且為同步長度的階0(1)。
[0105]分組化(packetize)的數據流
[0106]在一些情況下,輸入數據流可以是以分組化的數據的形式。例如,如果比較處理在諸如路由器的設備中發(fā)生,則這可以出現(xiàn)。在這樣的情況下,執(zhí)行處理的設備可能需要緩沖來自多于一個的分組的有效載荷數據,以便執(zhí)行處理。
[0107]眾所周知,在基于分組的網絡(諸如TCP/IP網絡,例如,因特網)中,要從一個位置發(fā)送到另一個位置的數據被分組化(分割成多個分組)。參照圖7,典型的分組包括地址信息和有效載荷。有效載荷包括要被傳輸的數據,地址信息包括允許網絡將分組路由到其目的地的信息。本領域技術人員在閱讀本描述時將認識并理解到,可以使用許多形式的分組化,并且分組的形式和類型不限于本發(fā)明。另外,應當意識到,一些網絡可以使用協(xié)議的多個層級,以使得有效載荷本身可以是包括其它地址信息的分組。不管所使用的協(xié)議如何,本領域技術人員都將知道如何從特定的分組提取與數據項對應的數據。
[0108]如果預先知道分組化的類型,則優(yōu)選的是選擇同步點,以使得每個同步點適合放入單個分組的有效載荷內。然而,由于這也許是不可能的,所以可能有必要獲得并且緩沖多個順序分組的有效載荷,以便執(zhí)行上述處理(查找同步點,并然后對其對應的比特塊進行處理)。
[0109]本領域技術人員在閱讀本描述時將認識并理解到,與當前使用的方法相比,所描述的處理和系統(tǒng)支持兩個內容流之間的快得多的并且更高效方式的比較。另外,本文中所描述的方法可以處理加密內容。
[0110]計算
[0111]實現(xiàn)這樣的方法的程序(以及其它類型的數據)可以以許多方式使用各種介質(例如,計算機可讀介質)傳輸和存儲??梢允褂糜策B線電路或定制硬件代替可以實現(xiàn)各種實施例的處理的軟件指令中的一些或全部、或者與這些軟件指令中的一些或全部結合。因此,可以使用硬件和軟件的各種結合,而不是僅使用軟件。
[0112]圖8是其上可以實現(xiàn)并且執(zhí)行本公開的實施例的計算機系統(tǒng)800的示意圖。
[0113]根據本示例,計算機系統(tǒng)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、或計算機系統(tǒng)800連接的任何網絡)而選擇。計算機系統(tǒng)800可以經由輸入/輸出(1/0)端口 809與外圍設備(例如,顯示屏幕830、輸入設備816)通信。
[0115]主存儲器804可以是隨機存取存儲器(RAM)、或本領域中公知的其它動態(tài)存儲設備。只讀存儲器806可以是用于存儲靜態(tài)信息(諸如用于處理器802的指令)的任何靜態(tài)存儲設備(諸如可編程只讀存儲器(PROM)芯片)。大容量儲存器807可以被用于存儲信息和指令。例如,可以使用硬盤(諸如Adaptec?小型計算機串行接口(scsi)驅動器族)、光盤、磁盤陣列(諸如獨立磁盤冗余陣列(RAID),諸如Adaptec? RAID驅動器族)、或任何其它大容量存儲設備。
[0116]總線801將處理器802與其它存儲器、儲存器和通信塊通信地耦合。根據所使用的存儲設備等,總線801可以是PCI/PC1-X、SCS1、基于通用串行總線(USB)的系統(tǒng)總線(或其它)??梢苿哟鎯橘|805可以是任何類型的外部硬盤驅動器、軟盤驅動器、1MEGA? Zip驅動器、緊湊盤-只讀存儲器(CD-ROM)、緊湊盤-可重寫(CD-RW)、數字視頻盤-只讀存儲器(DVD-ROM)等。
[0117]本文中的實施例可以被提供作為計算機程序產品,該計算機程序產品可以包括其上存儲指令的機器可讀介質,所述指令可以被用于對計算機(或其它電子設備)編程以執(zhí)行處理。如本文中所使用的,術語“機器可讀介質”指的是任何介質、多個相同介質、或不同介質的結合,這些介質參與提供可以被計算機、處理器或類似設備讀取的數據(例如,指令、數據結構)。這樣的介質可以采取許多形式,包括但不限于,非易失性介質、易失性介質、以及傳輸介質。非易失性介質包括,例如,光盤或磁盤以及其它持久存儲器。易失性介質包括通常構成計算機的主存儲器的動態(tài)隨機存取存儲器。傳輸介質包括同軸電纜、銅線和光纖,其包括包含耦合到處理器的系統(tǒng)總線的線。傳輸介質可以包括或傳送聲波、光波以及電磁發(fā)射,諸如射頻(RF)和紅外(IR)數據通信期間產生的那些。
[0118]機器可讀介質可以包括,但不限于,軟盤、光盤、⑶-ROM、磁光盤、ROM、RAM、可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)、磁卡或光學卡、閃存、或適合于存儲電指令的其它類型的介質/機器可讀介質。而且,本文中的實施例還可以被作為計算機程序產品下載,其中,所述程序可以經由通信鏈路(例如,調制解調器或網絡連接)通過載波或其它傳播介質中所包含的數據信號從遠程計算機傳遞到請求計算機。
[0119]在將數據(例如,指令序列)傳載到處理器中可以涉及各種形式的計算機可讀介質。例如,數據可以⑴從RAM遞送到處理器;(ii)通過無線傳輸介質傳載;(iii)根據大量的格式、標準或協(xié)議進行格式化和/或傳輸;和/或(iv)以本領域中眾所周知的各種方式中的任何一種進行加密。
[0120]計算機可讀介質可以(以任何適當的格式)存儲適于執(zhí)行方法的那些程序元素。
[0121]如所示的,主存儲器804被編碼有支持本文中所討論的功能性的應用850-1 (應用850-1可以是例如初始設定200或比較應用216)。應用850-1 (和/或本文中描述的其它資源)可以體現(xiàn)為支持根據本文中描述的不同實施例的處理功能性的軟件代碼,諸如數據和/或邏輯指令(例如,存儲在存儲器中或另一計算機可讀存儲介質(諸如盤)上的代碼)。
[0122]在一個實施例的操作期間,處理器802經由總線801的使用訪問主存儲器804,以便啟動、運行、執(zhí)行、解釋或以其它方式執(zhí)行應用850-1的邏輯指令。應用850-1的執(zhí)行生成處理850-2中的處理功能性。換句話講,處理950-2表示在計算機系統(tǒng)800中的處理器802內或上執(zhí)行的應用850-1的一個或多個部分。
[0123]應當注意,除了執(zhí)行本文中所討論的操作的處理850-2之外,本文中的其它實施例包括應用850-1本身(即,未執(zhí)行的或非執(zhí)行的邏輯指令和/或數據)。應用850-1可以被存儲在計算機可讀介質(例如,儲存庫)(諸如盤、硬盤)上或光學介質中。根據其它實施例,應用850-1還可以被存儲在存儲器類型系統(tǒng)中,諸如固件、只讀存儲器(ROM)中,或者如該示例中那樣,作為主存儲器804內的(例如,隨機存取存儲器或RAM內的)可執(zhí)行代碼。例如,應用850-1還可以被存儲在可移動存儲介質805、只讀存儲器806、和/或大容量存儲設備807中。
[0124]以上參照圖2(a)_2(d)和圖4(a)_4(b)討論了計算機系統(tǒng)800支持的示例功能性,更具體地,與應用850-1相關聯(lián)的功能性。
[0125]本領域技術人員將理解,計算機系統(tǒng)800可以包括其它處理和/或軟件和硬件組件,諸如控制硬件資源的分配和使用的操作系統(tǒng)。
[0126]如本文中所討論的,本發(fā)明的實施例包括各種步驟或操作。各個這些步驟可以由硬件組件執(zhí)行,或者可以包含在機器可執(zhí)行指令中,這些指令可以被用于使通用或專用處理器被編程有執(zhí)行操作的指令。可替代地,步驟可以由硬件、軟件和/或固件的結合執(zhí)行。術語“模塊”指的是自包含功能組件,其可以包括硬件、軟件、固件或它們的任何結合。
[0127]本領域普通技術人員在閱讀本描述時將容易意識并理解到,裝置的實施例可以包括可操作為執(zhí)行所描述的處理中的一些(而不必是全部)的計算機/計算設備。
[0128]存儲程序或數據結構的計算機可讀介質的實施例包括存儲程序的計算機可讀介質,該程序在被執(zhí)行時可以使處理器執(zhí)行所描述的處理中的一些(而不必是全部)。
[0129]在本文中描述處理的情況下,本領域技術人員將意識到,該處理可以在沒有任何用戶干預的情況下進行操作。在另一實施例中,該處理包括一些人類干預(例如,步驟由人執(zhí)行或者通過人的幫助執(zhí)行)。
[0130]應當意識到,權利要求中的詞“第一”和“第二”被用于區(qū)分或識別,而非表示順序或數字限制。類似地,字母或數字標記(諸如“(a)”、“(b)”等)的使用被用于幫助區(qū)分和/或識別,而非表示任何順序或數字限制或排序。
[0131]盡管已經結合目前認為是最實用且優(yōu)選的實施例的實施例對本發(fā)明進行了描述,但要理解,本發(fā)明不限于所公開的實施例,而是相反,旨在涵蓋包括在所附權利要求的精神和范圍內的各種修改和等同布置。
【權利要求】
1.一種由硬件結合軟件實現(xiàn)的計算機實現(xiàn)的方法,所述方法包括: 確定數據項中的多個同步點,所述數據項由任意的比特序列組成,并且每個同步點由所述數據項中的比特序列組成; 對于所述多個同步點中的每一個,確定所述數據項中對應的比特塊; 對于每個比特塊,通過將哈希函數或消息摘要函數應用于所述比特塊來確定對應的塊簽名; 通過將所述多個同步點中的每一個與所述對應的比特塊的對應的塊簽名相關聯(lián)來形成數據項簽名。
2.根據權利要求1所述的方法,其中,每個特定的同步點的對應的比特塊與所述特定的同步點直接相鄰。
3.根據權利要求1或2所述的方法,其中,所述哈希函數從包括以下函數的函數中選擇:SHA 和 MD5。
4.根據權利要求1、2和3中的任何一項所述的方法,其中,每個同步點由32個比特組成。
5.根據權利要求1、2、3和4中的任何一項所述的方法,其中,每個比特塊由256個字節(jié)組成。
6.一種設備,所述設備包括用于實現(xiàn)權利要求1-5中的任何一項的方法的硬件和軟件。
7.一種由硬件結合軟件實現(xiàn)的計算機實現(xiàn)的方法,所述方法包括: (A)獲得第一數據項的第一數據項簽名,所述第一數據項簽名包括所述第一數據項中的多個同步點與對應的多個塊簽名之間的關聯(lián); (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所述的方法,其中,處理的至少一些在特定的設備中發(fā)生,并且其中,所維護的信息包括關于所述特定的設備的信息。
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個字節(jié)組成。
19.一種由硬件結合軟件實現(xiàn)的計算機實現(xiàn)的方法,所述方法包括: (A)獲得多個數據項簽名,多個數據項中的每一個具有至少一個簽名,所述多個數據項中的每一個特定的數據項的數據項簽名包括所述特定的數據項中的多個同步點與所述特定的數據項的對應的多個塊簽名之間的關聯(lián); (B)嘗試在第二數據項中尋找所述多個數據項簽名的同步點;以及 (C)如果在所述第二數據項中找到所述多個數據項簽名的同步點,則: (C) (I)確定所述第二數據項中對應的比特塊的塊簽名,其中,所述塊簽名通過將哈希函數或消息摘要函數應用于所述第二數據項中所述對應的比特塊來確定;和 (C) (2)查明所述第二數據項的所述同步點和所述對應的塊簽名是否對應于所述多個數據項簽名的任何一個中的同步點和塊簽名;以及 (C)(3)當所述第二數據項的所述同步點和所述對應的塊簽名對應于所述多個數據項簽名的一個或多個中的同步點和塊簽名時,維護指示該對應的信息; (D)在所述第二數據項中的至少一些仍未被處理時,重復步驟(B)和(C),直到來自所述第二數據項的預定數量的同步點和對應的塊簽名與所述多個數據項簽名的至少一個中的同步點和對應的塊簽名匹配為止; (E)當來自所述第二數據項的預定數量的同步點和對應的塊簽名與所述多個數據項的第一數據項簽名中的所述預定數量的同步點和塊簽名匹配時,指示第一數據項與第二數據項之間匹配。
【文檔編號】G06F17/00GK104205089SQ201380011606
【公開日】2014年12月10日 申請日期:2013年2月15日 優(yōu)先權日:2012年2月29日
【發(fā)明者】R·薩吉, N·梅約米 申請人:阿爾特耐特股份有限公司