亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

使用復(fù)制確認(rèn)和重組間隙方法防止網(wǎng)絡(luò)數(shù)據(jù)注入攻擊的制作方法

文檔序號:6654794閱讀:312來源:國知局
專利名稱:使用復(fù)制確認(rèn)和重組間隙方法防止網(wǎng)絡(luò)數(shù)據(jù)注入攻擊的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及計(jì)算機(jī)網(wǎng)絡(luò)。本發(fā)明更具體而言涉及防止網(wǎng)絡(luò)中的數(shù)據(jù)注入攻擊。
背景技術(shù)
這一部分中描述的方法可以被實(shí)行,但并不一定是先前已被設(shè)計(jì)或?qū)嵭辛说姆椒?。因此,除非在這里另行指出,否則這一部分中描述的方法不是本申請的權(quán)利要求的現(xiàn)有技術(shù),并且也并不因?yàn)楸话ㄔ谶@一部分中而被承認(rèn)是現(xiàn)有技術(shù)。
對于商家和顧客等來說,網(wǎng)絡(luò)已經(jīng)成為了一種很重要的工具,他們中的很多人現(xiàn)在都依賴于諸如郵件服務(wù)器、Web站點(diǎn)和內(nèi)容服務(wù)器等網(wǎng)絡(luò)資源的持續(xù)可用性。隨著對網(wǎng)絡(luò)的使用增加,保護(hù)網(wǎng)絡(luò)不受惡意實(shí)體的干擾變得越來越重要。例如,拒絕服務(wù)(“DoS”)攻擊可能使合法用戶不能訪問網(wǎng)絡(luò)服務(wù),并且已經(jīng)被成功地用來干擾對諸如Yahoo!和CNN等因特網(wǎng)站點(diǎn)的合法用戶訪問。
數(shù)據(jù)注入攻擊可能導(dǎo)致DoS或其他負(fù)面影響。一種類型的數(shù)據(jù)注入攻擊利用如在因特網(wǎng)工程任務(wù)組(IETF)請求注解(RFC)793中定義的作為因特網(wǎng)的基本協(xié)議之一的傳輸控制協(xié)議(“TCP”)的基本設(shè)計(jì)。在數(shù)據(jù)注入攻擊中,攻擊者猜測有效TCP連接的參數(shù)值,然后發(fā)送包含惡意或虛假數(shù)據(jù)凈荷的虛假段。如果接收者將這些段傳遞給應(yīng)用,則當(dāng)應(yīng)用處理或執(zhí)行這些數(shù)據(jù)凈荷時(shí)可能會(huì)出現(xiàn)故障。
遵從RFC 793并且充當(dāng)數(shù)據(jù)接收者的一種典型的TCP實(shí)現(xiàn)在接收到任何丟失段之前,在重組緩沖區(qū)中維護(hù)無序數(shù)據(jù)。該接收者針對被無序接收的每個(gè)段發(fā)送確認(rèn)(“ACK”)消息,指示最近的有效順序號。發(fā)送者在重傳緩沖區(qū)中保持未被確認(rèn)的段。這一處理使得發(fā)送者可迅速地重傳在傳送中丟失的段,因?yàn)檫@些段未被確認(rèn)。
一種TCP數(shù)據(jù)注入攻擊利用上述TCP實(shí)現(xiàn)機(jī)制,所述機(jī)制試圖在無序到達(dá)并且需要被重組為正確順序的段被傳遞給TCP以上的邏輯層的應(yīng)用之前管理這些段。邊界網(wǎng)關(guān)協(xié)議(BGP)、超文本傳輸協(xié)議(HTTP)、一些語音協(xié)議、多協(xié)議標(biāo)簽交換(MPLS)和使用TCP連接的其他協(xié)議是這些攻擊的目標(biāo)。后果可能是很嚴(yán)重的。例如,當(dāng)路由器的BGP會(huì)話被關(guān)閉相關(guān)的TCP連接干擾時(shí),路由器將丟棄其創(chuàng)建的所有BGP路由,基本上導(dǎo)致BGP處理的故障。因此,BGP處理必須將自身與網(wǎng)絡(luò)中的對等路由器重新同步,在重新同步期間,故障路由器不能轉(zhuǎn)發(fā)任何流量。
此外,數(shù)據(jù)注入攻擊可能導(dǎo)致向上游處理提供惡意命令、不必要地填充重組緩沖區(qū)、其他高層應(yīng)用的誤操作、發(fā)起“ACK戰(zhàn)爭”,等等。因此,本領(lǐng)域的研究人員正致力于研究在不從根本上改變?nèi)鏡FC 793中規(guī)定的TCP的操作的情況下挫敗TCP數(shù)據(jù)注入攻擊的方法。
成功的攻擊必須注入攜帶用于源端口、目的地端口的正確值的TCP段;對于順序號和ACK號來說,一個(gè)范圍內(nèi)的值是允許的。這些值的允許范圍很大,因此發(fā)動(dòng)涉及順序地檢查每個(gè)參數(shù)的所有可能值的強(qiáng)力攻擊似乎是不可能的。但是,在大多數(shù)TCP實(shí)現(xiàn)中,選擇有效值的任務(wù)較為簡單,因?yàn)樵赗FC 793中存在某些漏洞。這些漏洞在遵從RFC 793的實(shí)現(xiàn)中產(chǎn)生了安全弱點(diǎn)。例如,將偽隨機(jī)32位值指定為新TCP連接的初始順序號(ISN)似乎防止了攻擊者以任何可行的方式猜測正確的順序號,因?yàn)闈撛诘恼_值的數(shù)量是232或約40億個(gè)值。但是,即使段的順序號不與下一預(yù)期順序號嚴(yán)格匹配,如果段的順序號落在可接受值的一個(gè)窗口或范圍內(nèi),則遵從RFC 793的傳統(tǒng)TCP實(shí)現(xiàn)也將接受這個(gè)段。所述窗口或范圍的大小一般與重組緩沖區(qū)的字節(jié)數(shù)相同,并且被用來補(bǔ)償段可能丟失的可能性。在一些TCP實(shí)現(xiàn)中,允許的順序值的范圍可以是16,384、65,535,或更大。
一個(gè)后果是即使當(dāng)真隨機(jī)或偽隨機(jī)ISN被使用時(shí),攻擊者也不需要正確地生成順序號的所有32位以提供接收節(jié)點(diǎn)將接受的號碼。如果允許的順序值的范圍足夠大,則攻擊者在可行的時(shí)間中通過隨機(jī)或強(qiáng)力選擇而猜到正確的順序值的機(jī)會(huì)就大大增加。接收節(jié)點(diǎn)建立的窗口越大,黑客就越容易實(shí)施攻擊。
此外,大多數(shù)實(shí)現(xiàn)將較小范圍的值用于初始端口號,并簡單地對每個(gè)新連接增加端口號。因此,攻擊者較容易使用普通的計(jì)算資源猜到被兩個(gè)端點(diǎn)用于合法TCP連接的端口值。
還出現(xiàn)了另一個(gè)弱點(diǎn),因?yàn)榇蠖鄶?shù)TCP實(shí)現(xiàn)不測試ACK值是否等于預(yù)期的ACK值,甚至也不測試ACK值是否落在允許的ACK值的范圍內(nèi)。相反,大多數(shù)實(shí)現(xiàn)將接受攜帶大于先前接收的ACK值的ACK值的任何段,只要順序號在允許范圍內(nèi)。RFC 793將ACK值定義為在從1到232這個(gè)范圍內(nèi)的無符號整數(shù)。因此,猜到允許的順序號的攻擊者可通過僅嘗試兩個(gè)ACK值(1或232-1,其中一個(gè)必定被接受)就能成功地進(jìn)行數(shù)據(jù)注入攻擊。
上述危害的結(jié)果是在大多數(shù)實(shí)現(xiàn)中,攻擊者可在理論上在(232/窗口大小/2)個(gè)段或大約30,000個(gè)段中將數(shù)據(jù)注入連接。因此,即使使用傳統(tǒng)的計(jì)算設(shè)備也能較快地進(jìn)行強(qiáng)力攻擊。
Mitesh Dalal等人于2004年1月9日提交的題為“Preventing NetworkReset Denial of Service Attacks”的共同未決申請No.10/755,146(律師卷號50325-0868)中描述了用于防止網(wǎng)絡(luò)DoS復(fù)位攻擊的方法。Pritam Shah等人于2003年8月14日提交的題為“Detecting network denial of serviceattacks”并被轉(zhuǎn)讓給本受讓人的共同未決申請No.10/641,494中提供了用于處理被稱為SYN-RST攻擊的類似攻擊的方法。Shah等人的方法適合于中間路由器而不是TCP端點(diǎn)設(shè)備,但是并沒有完全解決本公開中描述的所有問題。


在附圖中以示例而非限制的方式示出了本發(fā)明,在附圖中,相似的標(biāo)號指代相似的元件,其中圖1是示出了用于施行TCP數(shù)據(jù)注入攻擊的一種技術(shù)的消息流示意圖;
圖2是示出了用于在數(shù)據(jù)段到達(dá)時(shí)將其丟棄的方法的流程圖;圖3是示出了基于重疊而從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖4是示出了圖3的操作示例的框圖;圖5A是示出了由數(shù)據(jù)發(fā)送者執(zhí)行的用于使用復(fù)制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖5B是示出了在由數(shù)據(jù)接收者執(zhí)行的用于使用復(fù)制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法中的步驟的流程圖;圖5C是示出了圖5A的操作示例的消息流示意圖;圖5D是示出了圖5C的示例中的其他步驟的消息流示意圖;圖6是示出了用于基于對重組間隙的分析來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖7是示出了可在其上實(shí)現(xiàn)實(shí)施例的計(jì)算機(jī)系統(tǒng)的框圖。
具體實(shí)施例方式
描述了用于防止網(wǎng)絡(luò)數(shù)據(jù)注入攻擊的方法和裝置。在以下描述中,為了說明的目的列舉了很多具體細(xì)節(jié),以提供對本發(fā)明的全面理解。但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,本發(fā)明可在沒有這些具體細(xì)節(jié)的情況下實(shí)施。在其他情形下,公知的結(jié)構(gòu)和設(shè)備以框圖的形式示出,以避免不必要地模糊本發(fā)明。
這里根據(jù)以下大綱描述實(shí)施例1.0概述2.0用于防止網(wǎng)絡(luò)數(shù)據(jù)注入攻擊的方法2.1用于在到達(dá)時(shí)丟棄數(shù)據(jù)段的方法2.2用于基于重疊而從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法2.3用于使用復(fù)制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法2.4用于基于對重組間隙的分析來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法
3.0實(shí)現(xiàn)機(jī)制——硬件概述4.0擴(kuò)展和替換1.0概述僅作為簡介,并且不限制所附權(quán)利要求的范圍,本發(fā)明滿足了在背景技術(shù)中提到的需要以及將從以下描述中變得清楚的其他需要和目的,在一個(gè)方面中,本發(fā)明包括一種用于防止對網(wǎng)絡(luò)的攻擊的方法,其中所述攻擊包括將虛假傳輸控制協(xié)議(TCP)段注入發(fā)送者和接收者之間的TCP連接,所述方法包括由計(jì)算機(jī)實(shí)現(xiàn)的以下步驟接收復(fù)制ACK消息并使復(fù)制ACK計(jì)數(shù)器遞增;當(dāng)重傳緩沖區(qū)為空并且復(fù)制ACK計(jì)數(shù)器等于指定的擊發(fā)因子(strike factor)時(shí),發(fā)送提供正確的順序值和ACK值的正確的ACK消息。接收者通過接收正確的ACK消息繼續(xù);確定正確的順序值是否小于重組緩沖區(qū)中所有段的最高順序值;并且當(dāng)正確的順序值小于重組緩沖區(qū)中所有段的最高順序值時(shí)從重組緩沖區(qū)丟棄所有段。
另一方法接收第二TCP段;確定第二TCP段與先前放置在重組緩沖區(qū)中的第一TCP段之間的順序值間隙;根據(jù)指定的拭探值(heuristic)確定順序值間隙是否太大;如果順序值間隙太大則執(zhí)行以下步驟創(chuàng)建并發(fā)送攜帶剛好在最近被正確確認(rèn)的順序值之前的第一順序值的啞段(dummysegment);接收對啞段的確認(rèn);確定在確認(rèn)中攜帶的第二順序值是否小于第一TCP段的第三順序值;當(dāng)在確認(rèn)中攜帶的第二順序值小于第一TCP段的第三順序值時(shí),從重組緩沖區(qū)丟棄第一TCP段。
在其他方面,本發(fā)明包括被配置為執(zhí)行上述步驟的計(jì)算機(jī)裝置和計(jì)算機(jī)可讀介質(zhì)。此外,很多其他特征和方面將從下面的描述和所附權(quán)利要求變得很清楚。
2.0用于防止TCP拒絕服務(wù)攻擊的方法描述了幾種用于防止網(wǎng)絡(luò)數(shù)據(jù)注入攻擊的方法。第一方法丟棄攜帶小于下一未被確認(rèn)的序列減去最大窗口大小的ACK值的接收到的段。術(shù)語“小于”在這里用在其中可能發(fā)生卷繞(wraparound)的無符號整數(shù)值的上下文中。該方法幫助將虛假注入段據(jù)于TCP重組緩沖區(qū)之外。僅需要在充當(dāng)接收者的TCP處理的邏輯中作出一些很小的改變。在第二方法中,拭探值被用來檢驗(yàn)新到達(dá)的段的順序號,當(dāng)順序號是下一預(yù)期順序號時(shí),新到達(dá)的段被使用,并且重組緩沖區(qū)的內(nèi)容不被考慮。此外,如果新到達(dá)的段的數(shù)據(jù)凈荷在序列順序方面與已經(jīng)在重組緩沖區(qū)中的段重疊,則重組緩沖區(qū)中的重疊段被認(rèn)為是虛假的并被丟棄。因此,如果第一方法由于某種原因沒能防止虛假數(shù)據(jù)進(jìn)入重組緩沖區(qū),則該方法幫助從重組緩沖區(qū)刪除虛假數(shù)據(jù)。
在第三和第四方法中,ACK消息或啞段被發(fā)送,以驗(yàn)證重組緩沖區(qū)中的數(shù)據(jù)的真實(shí)性,并且?guī)椭斓貋G棄虛假數(shù)據(jù)。這些方法涉及發(fā)送者對虛假數(shù)據(jù)的檢測,并且改良了對典型TCP實(shí)現(xiàn)固有的用于處理ACK消息的機(jī)制的使用。第四方法可在不修改發(fā)送者的實(shí)現(xiàn)的情況下實(shí)現(xiàn)。此外,這些方法在接收者中的實(shí)現(xiàn)維持了與RFC 793的兼容性。
2.1用于在數(shù)據(jù)段到達(dá)時(shí)將其丟棄的方法現(xiàn)在參考圖1和圖2描述用于防止TCP數(shù)據(jù)注入攻擊的第一方法。圖1是示出了用于施行TCP數(shù)據(jù)注入攻擊的一種技術(shù)的消息流示意圖。圖2是示出了用于在數(shù)據(jù)段到達(dá)時(shí)將其丟棄的方法的流程圖。
圖2的處理導(dǎo)致了圖1中以示例的方式示出的消息流,該處理可在由充當(dāng)TCP連接的端點(diǎn)的網(wǎng)絡(luò)元件執(zhí)行的一個(gè)或多個(gè)計(jì)算機(jī)程序、指令序列或其他軟件元件中實(shí)現(xiàn)。例如,圖2可以被實(shí)現(xiàn)為TCP應(yīng)用的一部分,或者是路由器、交換機(jī)或網(wǎng)絡(luò)基礎(chǔ)設(shè)施的其他元件的操作系統(tǒng)的功能?;蛘撸瑘D2可以被實(shí)現(xiàn)為被個(gè)人計(jì)算機(jī)、工作站或其他網(wǎng)絡(luò)末端站的操作系統(tǒng)容宿或與個(gè)人計(jì)算機(jī)、工作站或其他網(wǎng)絡(luò)末端站的操作系統(tǒng)相關(guān)聯(lián)的TCP進(jìn)程、堆棧、適配器或代理。
在圖1中,發(fā)送者102、攻擊者104和接收者106代表TCP連接中的端點(diǎn)。發(fā)送者102、攻擊者104和接收者106可包括路由器、交換機(jī)、集線器、網(wǎng)關(guān)、個(gè)人計(jì)算機(jī)、工作站、服務(wù)器,或連接到或可以被連接到或與網(wǎng)絡(luò)通信的其他設(shè)備。攻擊者104是將不希望的或虛假的段注入已在發(fā)送者102和接收者106之間建立的TCP流或連接的任何實(shí)體。攻擊者104可包括工作站、個(gè)人計(jì)算機(jī)、路由器、交換機(jī)或其他處理元件。
發(fā)送者102、接收者106和攻擊者104參與一個(gè)或多個(gè)網(wǎng)絡(luò)。此外。發(fā)送者102、接收者106和攻擊者104可以在局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、一個(gè)或多個(gè)因特網(wǎng)或任何其他類型的網(wǎng)絡(luò)或其子網(wǎng)中,或可通過局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、一個(gè)或多個(gè)因特網(wǎng)或任何其他類型的網(wǎng)絡(luò)或其子網(wǎng)而被訪問,在上述網(wǎng)絡(luò)中,傳輸控制協(xié)議(TCP)被用來建立網(wǎng)絡(luò)元件之間的連接。這種網(wǎng)絡(luò)可包含額外的網(wǎng)絡(luò)基礎(chǔ)設(shè)施元件,例如路由器、交換機(jī)等,以及其他末端站設(shè)備,例如工作站、打印機(jī)、服務(wù)器等。在一種實(shí)現(xiàn)中,發(fā)送者102、接收者106和攻擊者104全都可通信地耦合到公共分組交換網(wǎng)絡(luò),例如因特網(wǎng)。
發(fā)送者102、接收者106和攻擊者104可以被連接到額外的網(wǎng)絡(luò)元件。其他實(shí)施例可包括比已示出的更少或更多的網(wǎng)絡(luò)元件。具體而言,在實(shí)際系統(tǒng)中,可以有任意數(shù)量的網(wǎng)絡(luò)元件。
為了描述圖1,假設(shè)發(fā)送者102和接收者106僅如在RFC 793中定義的那樣實(shí)現(xiàn)TCP,并且使用大小為4000的窗口。發(fā)送者102向接收者106發(fā)送順序號(“SeqNo”)為101、ACK值為5005并且具有441字節(jié)數(shù)據(jù)的段110。接收者106發(fā)送SeqNo為5005,ACK為543的確認(rèn)消息112。在此描述中,諸如“SeqNo 543”或“ACK 5005”這樣的標(biāo)號被分別用作為攜帶值為543的順序號和值為5005的確認(rèn)的TCP段的簡化表示。
接下來攻擊者104發(fā)送具有SeqNo 3000、ACK 0x2000000(33,554,432)和256字節(jié)惡意數(shù)據(jù)的段114。攻擊者104在沒有關(guān)于那時(shí)正被發(fā)送者102和接收者106用于TCP連接的順序號的真實(shí)知識(shí)的情況下猜到了SeqNo 3000,并且SeqNo 3000是允許的SeqNo值,因?yàn)?3000<543+4000)。傳統(tǒng)上不對ACK值進(jìn)行窗口大小的比較,因此在2,147,488,649到4,294,967,295和0到5001這個(gè)范圍中的ACK值都是可接受的。攻擊者104還確定出或猜出發(fā)送者102和接收者106的網(wǎng)絡(luò)地址,例如它們的IP地址以及用于當(dāng)前連接的端口號。所述地址和端口值被放置在虛假段114中,但是為了簡明起見而未被示出。由于攻擊者104不確定ACK值0x2000000(33,554,432)是否合適,因此攻擊者104還發(fā)送具有相同的SeqNo 3000但是ACK值為0x82000000(2,181,038,080)的段116。
在步驟118,接收者106接受段116但是丟棄了段114,因?yàn)槠銩CK值是不可接受的。然后接收者通過發(fā)送具有SeqNo 5005和ACK 543的段120來對段116進(jìn)行確認(rèn)。值為5005的SeqNo被使用,因?yàn)槎?12是最近接收到的有序段,并且接收者106需要用信號表明它正在等待緊隨其后的段,雖然已經(jīng)接收到了看上去在流的未來很遠(yuǎn)處的段116。在沒有防范方法的情況下,如步驟122所示,段116最終被轉(zhuǎn)發(fā)到使用、依賴于或執(zhí)行段116中的數(shù)據(jù)的應(yīng)用并可能危害該應(yīng)用。
現(xiàn)在參考圖2,在這里的第一防御方法中,在步驟202,TCP段被接收。在步驟204,執(zhí)行測試來確定接收到的段中攜帶的ACK值是否小于下述差即下一已被發(fā)送但未被確認(rèn)的順序值(以RFC 793的說法是snduna)減去迄今為止發(fā)送的段的總數(shù)和與該TCP連接相關(guān)聯(lián)的最大窗口的大小這二者中的較小者所得到的差。在一個(gè)實(shí)施例中,表達(dá)式min(snduna-isn,最大窗口大小)產(chǎn)生被與未被確認(rèn)的順序值相比較的值。
最大窗口大小值反映了對等體可管理的最大窗口大小。允許的窗口大小可變?yōu)榱硪淮翱诖笮∫杂糜谔囟ǖ亩谓粨Q,但是即使發(fā)生了這樣的調(diào)節(jié),在步驟204的測試中還是使用最大窗口大小。因此,步驟204對照過去的有效ACK值的窗口來測試接收到的段。為了在步驟204產(chǎn)生“真”結(jié)果,有效的ACK值不能大于下一預(yù)期順序值之后的一個(gè)窗口。
相反,現(xiàn)有方法允許具有在包括和早于下一未被確認(rèn)順序值的那一半順序值空間內(nèi)的任意ACK值的段,并且假設(shè)順序值本身在傳入窗口中。在這種環(huán)境下,RFC 739允許接收者忽略ACK。RFC 793僅要求如果接收到的ACK值大于接收者的預(yù)期值,則接收者必須發(fā)送回指定了預(yù)期ACK值的ACK段。RFC 793缺乏用于處理早于預(yù)期的ACK值的嚴(yán)格要求,這向攻擊者提供了提出會(huì)被接受的虛假段的途徑。
如果步驟204的測試為真,則在步驟206,該段被丟掉而不是被轉(zhuǎn)發(fā)到應(yīng)用或被放置在重組緩沖區(qū)中以用于潛在的重新排序和以后的轉(zhuǎn)發(fā)。如果步驟204的測試為假,則在步驟208,對接收到的段執(zhí)行另一TCP段處理。
在一種替換中,步驟204的測試不允許ACK值落在窗口中,而是測試接收到的TCP段的ACK值是否剛好等于預(yù)期的ACK值或者是小于初始窗口的某個(gè)范圍的值。如果未發(fā)現(xiàn)精確匹配,則傳入段被丟掉。這一替換可使得接收者丟棄在其他有效的但是延遲的數(shù)據(jù)之前到達(dá)的數(shù)據(jù),因?yàn)楫?dāng)較早數(shù)據(jù)到達(dá)時(shí),接收者要求發(fā)送者尚未遇到的ACK值。因此,該方法可能強(qiáng)制發(fā)送者執(zhí)行重傳。但是,為了受益于提高已知較易受攻擊的網(wǎng)絡(luò)環(huán)境中的攻擊抵抗力,這一缺點(diǎn)是可以接受的。
使用上述方法,虛假段被據(jù)于重組緩沖區(qū)之外,并且不被轉(zhuǎn)發(fā)到虛假段可能導(dǎo)致問題的較高層應(yīng)用或處理。具體而言,利用本方法,僅當(dāng)段的順序號在可接受的窗口內(nèi)并且其ACK值正確時(shí),該段才被接受。
2.2用于基于重疊從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法圖3是示出了用于基于重疊從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖4是示出了圖3的操作的示例的框圖。一般地,圖3提供了用于通過檢測段是虛假的來從TCP重組緩沖區(qū)刪除不正確的注入段的方法,所述段被檢測為虛假的是因?yàn)樗鼈儾徽_地重疊了與先前接收的被正確地確認(rèn)了的段相關(guān)聯(lián)的數(shù)據(jù)。
首先參考圖3,步驟302-304代表準(zhǔn)備步驟,其被描述為提供用于由后續(xù)步驟所代表的解決方案的上下文。在步驟302,第一TCP段被接收并且是有序的。該段被轉(zhuǎn)發(fā)到應(yīng)用,并且下一預(yù)期順序號值在存儲(chǔ)器中被更新。術(shù)語“第一”在步驟302中被用來說明步驟302的段出現(xiàn)在步驟304和步驟306的段之前,但是步驟302的段可能在TCP連接建立之后的任意時(shí)刻到達(dá),并不需要是在完成TCP握手階段之后實(shí)際接收的第一個(gè)段。在步驟304,第二段被接收并且是無序的,因此第二段被存儲(chǔ)在重組緩沖區(qū)中。
在步驟306,第三段被接收。在步驟308,測試被執(zhí)行以確定第三段攜帶的SeqNo值是否等于下一預(yù)期SeqNo值。步驟308還可涉及驗(yàn)證第三段的SeqNo和其數(shù)據(jù)長度的和是否精確地與重組緩沖區(qū)中的其他段對準(zhǔn)。如果否,則在步驟309,傳統(tǒng)的處理被應(yīng)用于無序段。如果SeqNo值剛好是下一預(yù)期值,則第三段被視為從當(dāng)前連接中的合法發(fā)送者到達(dá)的可信段。第三段被視為可信的,因?yàn)楣粽卟碌讲l(fā)送精確的下一預(yù)期SeqNo值的機(jī)會(huì)是1/232。
因此,在步驟310執(zhí)行測試,以確定第三段是否與已在重組緩沖區(qū)中的任何段重疊。在此上下文中,“重疊”意味著在第三段中攜帶的SeqNo和數(shù)據(jù)長度的和與重組緩沖區(qū)中的任意段的SeqNo重疊。在某些情形下,第三傳入段可能與來自攻擊者的若干段重疊。如果沒有這樣的重疊,則在步驟316,執(zhí)行對緩沖區(qū)和第三段的常規(guī)重組處理。
但是,如果發(fā)現(xiàn)重疊,則先前被接收進(jìn)重組緩沖區(qū)的重疊段被視為虛假段,而第三段被視為真實(shí)段。重疊指示虛假段已被接收進(jìn)重組緩沖區(qū),因?yàn)楫?dāng)連續(xù)的SeqNo值被與流中的在先段的數(shù)據(jù)長度大小相比較時(shí),一組真實(shí)段最終將精確地順次對準(zhǔn)。此外,攻擊者需要猜測SeqNo值,因此重疊的存在強(qiáng)烈建議SeqNo已被猜測并且相關(guān)聯(lián)的段是虛假的。在步驟310發(fā)現(xiàn)的重疊可能是全部重疊也可能是部分重疊。在步驟312,從重組緩沖區(qū)丟棄虛假段。
在步驟313,ACK消息被發(fā)送并且攜帶第三段的SeqNo。在步驟314,正常的TCP處理繼續(xù)。這種處理可能包括重傳,重傳通過要求發(fā)送者重傳在被丟棄的虛假段所覆蓋的范圍內(nèi)的數(shù)據(jù)來幫助確保重組緩沖區(qū)僅包含有效數(shù)據(jù)。
現(xiàn)在結(jié)合圖4示出一個(gè)示例。具有SeqNo 201和100字節(jié)數(shù)據(jù)的無序段404先前已被接收進(jìn)重組緩沖區(qū)402,如數(shù)字1所示。如數(shù)字2所示,下一預(yù)期順序號是101,這就是為什么段404被視為無序的原因。
在數(shù)字3,段406到達(dá),其具有SeqNo 101和150字節(jié)數(shù)據(jù)。SeqNo值101剛好是預(yù)期的下一SeqNo值,因此對于段406,步驟308的測試(圖3)為真。此外,101和150的和是251,其與段404攜帶的值201重疊。因?yàn)槎?06被視為可信的,因?yàn)樗鼣y帶精確的下一預(yù)期順序號,因此段404被視為虛假的并且被丟棄,如數(shù)字4所示。然后,具有SeqNo 251的ACK段被發(fā)送以對段406進(jìn)行確認(rèn)。
因此,上述方法刪除了被無意中接收進(jìn)重組緩沖區(qū)的虛假注入數(shù)據(jù)段。該方法可被單獨(dú)實(shí)施,或者與這里的2.1節(jié)的方法結(jié)合起來實(shí)施。
2.3用于使用復(fù)制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法圖5A是示出了由數(shù)據(jù)發(fā)送者執(zhí)行的用于使用復(fù)制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖;圖5B是示出了由數(shù)據(jù)接收者執(zhí)行的用于使用復(fù)制ACK消息作為觸發(fā)來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的步驟的流程圖;圖5C是示出了圖5A的操作示例的消息流示意圖;圖5D是示出了圖5C的示例中的其他步驟的消息流示意圖。
在描述圖5A到圖5D時(shí),術(shù)語“重傳緩沖區(qū)”指包含一個(gè)或多個(gè)已被發(fā)送但尚未被確認(rèn)的數(shù)據(jù)段的數(shù)據(jù)結(jié)構(gòu),而術(shù)語“重組緩沖區(qū)”指存儲(chǔ)接收到的無序數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
在傳統(tǒng)的TCP處理中,對于被注入重組緩沖區(qū)的每個(gè)段,TCP都生成具有當(dāng)前順序號和確認(rèn)最近的有序數(shù)據(jù)的確認(rèn)號的復(fù)制ACK。在接收三(3)個(gè)復(fù)制ACK之后,如果在重傳緩沖區(qū)中有一個(gè)丟失段的話,則發(fā)送者執(zhí)行丟失段的快速重傳。如果重傳緩沖區(qū)為空,則發(fā)送者什么都不作。
在本方法中,在接收到的ACK的量超過了指定的擊發(fā)因子并且如果重傳緩沖區(qū)為空,則發(fā)送者向接收者發(fā)送攜帶正確的順序號和正確的ACK號的特殊的確認(rèn)消息(被稱為糾正確認(rèn)消息)。在接收到糾正確認(rèn)消息時(shí),接收者確定接收者的重組緩沖區(qū)中的數(shù)據(jù)是假注入數(shù)據(jù)。接收者可基于確定ACK段中的順序號小于重組緩沖區(qū)中的數(shù)據(jù)來進(jìn)行這種確定。因此,重組緩沖區(qū)中的一個(gè)或多個(gè)段被丟棄。該方法提供了丟棄假注入數(shù)據(jù)的快速方法。
在本方法的一個(gè)實(shí)施例中,擊發(fā)因子是三(3)?;蛘?,擊發(fā)因子是1或2;而典型的擊發(fā)因子可以在1到10這個(gè)范圍中,在其他實(shí)施例中可以使用任何其他特定的擊發(fā)因子。利用值為1的擊發(fā)因子,發(fā)送者不用等待3個(gè)復(fù)制ACK,而是在沒有數(shù)據(jù)未被確認(rèn)時(shí),針對在發(fā)送者處接受的每個(gè)復(fù)制ACK發(fā)送糾正確認(rèn)消息。
首先參考圖5A,其示出了當(dāng)攻擊者發(fā)送虛假段時(shí)用于發(fā)送者的復(fù)制ACK方法的步驟。在步驟502,復(fù)制ACK被接收。在步驟504,發(fā)送者測試其重傳緩沖區(qū)是空的還是包含未被確認(rèn)的段。如果緩沖區(qū)不為空,則在步驟506,在需要時(shí)執(zhí)行快速重傳操作。
如果重傳緩沖區(qū)為空,則處理假設(shè)復(fù)制ACK是虛假數(shù)據(jù)段注入所導(dǎo)致的假復(fù)制ACK。因此,在步驟508,假復(fù)制ACK計(jì)數(shù)器的值被遞增。一般地,假復(fù)制ACK計(jì)數(shù)器的初始值為0,并且每次到達(dá)步驟508時(shí)遞增1。
在步驟510,發(fā)送者測試假復(fù)制ACK計(jì)數(shù)器的值是否等于特定的擊發(fā)因子。擊發(fā)因子是根據(jù)察覺到的危險(xiǎn)的級別、所需的安全級別或根據(jù)所需的響應(yīng)級別而預(yù)先設(shè)置的固定值。在各個(gè)實(shí)施例中,典型的擊發(fā)因子值為1,2或3。打擊值可以是可配置的參數(shù),其例如可在配置文件、用戶接口面板中設(shè)置或通過被發(fā)往執(zhí)行實(shí)現(xiàn)的網(wǎng)絡(luò)元件的命令行接口命令來設(shè)置。
如果假復(fù)制ACK計(jì)數(shù)器不等于擊發(fā)因子,則在步驟512,該方法返回控制以便執(zhí)行常規(guī)TCP處理。執(zhí)行對控制的傳送,因?yàn)榧購?fù)制ACK消息的數(shù)量尚未超過由打擊值代表的危險(xiǎn)級別。但是,如果假復(fù)制ACK計(jì)數(shù)器與打擊值匹配,則在步驟514,糾正確認(rèn)消息被發(fā)送到發(fā)送者,該消息攜帶發(fā)送者先前發(fā)送的所有數(shù)據(jù)的最高或正確順序號,還攜帶有效的ACK值。步驟514的效果是重新同步已發(fā)送了太多ACK消息的合法發(fā)送者,同時(shí)防止當(dāng)復(fù)制ACK消息被接收者以傳統(tǒng)方式處理時(shí),響應(yīng)于惡意攻擊者而可能出現(xiàn)的負(fù)面影響。
現(xiàn)在參考圖5B,其示出了由數(shù)據(jù)接收者執(zhí)行的步驟。在步驟530,糾正確認(rèn)消息被接受。其他段可能在接收糾正確認(rèn)消息之前被接收,但是為了簡明起見,糾正確認(rèn)消息被示為下一段。在步驟532,接收者測試糾正確認(rèn)消息的SeqNo是否小于重組緩沖區(qū)中任意段的最高順序號。如果否,則控制在步驟507返回。如果糾正確認(rèn)消息的SeqNo小于重組緩沖區(qū)中任意段的最高順序號,則重組緩沖區(qū)包含至少一些虛假注入數(shù)據(jù),雖然虛假數(shù)據(jù)在重組緩沖區(qū)中的具體位置是未知的。因此,在步驟534,全部重組緩沖區(qū)被丟棄。因此,通過上述測試,接收者可確定它已將假的注入數(shù)據(jù)段放置在重組緩沖區(qū)中,并且可以丟棄它。因此,上游應(yīng)用可免受虛假數(shù)據(jù)的影響。
現(xiàn)在參考圖5C、圖5D描述上述方法的示例性應(yīng)用中的消息流。假設(shè)擊發(fā)因子是二(2),由發(fā)送者102維護(hù)的復(fù)制ACK計(jì)數(shù)器的初始值為0,發(fā)送者102在其重傳緩沖區(qū)中沒有段。
發(fā)送者102發(fā)送具有SeqNo 101、ACK 5001以及50字節(jié)數(shù)據(jù)的段509。該段被有序接收,并且接收者106發(fā)送具有SeqNo 5001和ACK 152的ACK消息511。然后,攻擊者104注入具有SeqNo 4000、ACK 1和256字節(jié)的惡意或虛假數(shù)據(jù)的虛假段513。接收者106發(fā)送ACK消息。然后基于SeqNo值4000,接收者106確定段513是被無序接收的。因此,接收者106發(fā)送具有ACK值152和SeqNo 5001的復(fù)制ACK消息516,以便向發(fā)送者102提供正確的值。在步驟518,發(fā)送者102累積或使其假復(fù)制ACK計(jì)數(shù)器遞增,因?yàn)槠渲貍骶彌_區(qū)是空的,因此計(jì)數(shù)器值為1。
攻擊者104發(fā)送具有SeqNo 5000、ACK 1和256字節(jié)數(shù)據(jù)的虛假段520。段520中的SeqNo值與段513不同,因?yàn)楣粽?04正在猜測SeqNo值,而且不知道允許的窗口或下一預(yù)期SeqNo值。然后基于SeqNo值5000,接收者106確定段520是被無序接收的。因此,接收者106發(fā)送仍具有ACK值152和SeqNo 5001的復(fù)制ACK消息522。發(fā)送者102在步驟524使其假復(fù)制ACK計(jì)數(shù)器遞增,因?yàn)槠渲貍骶彌_區(qū)是空的,因此計(jì)數(shù)器值為2。
在步驟526,發(fā)送者102通過步驟510的測試(圖5A)確定假復(fù)制ACK計(jì)數(shù)器等于擊發(fā)因子。
現(xiàn)在參考圖5D,響應(yīng)于步驟526的確定,發(fā)送者102發(fā)送具有SeqNo152和ACK 5001的糾正ACK消息538。因此,糾正ACK消息538向接收者106宣告正確值。作為響應(yīng),在步驟540,接收者106確定糾正ACK消息538的SeqNo小于重組緩沖區(qū)中的段的SeqNo。因此,接收者106在步驟542從重組緩沖區(qū)丟棄虛假段。
2.4用于基于對重組間隙的分析來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法圖6是示出了基于對重組間隙的分析來從重組緩沖區(qū)刪除虛假數(shù)據(jù)段的方法的流程圖。
在步驟602,查詢閾值(“query_threshld”)被確定和存儲(chǔ)。用于選擇查詢閾值的技術(shù)在本節(jié)末尾描述。
在步驟604,TCP段被接收。在步驟606,確定接收到的段的SeqNo與重組緩沖區(qū)中第一段相比的重組間隙。在本上下文中,重組間隙值指示重組緩沖區(qū)中第一段的開始和接收到的段之間的字節(jié)差別。在一個(gè)實(shí)施例中,重組間隙值被確定為reassm_gap=(重組緩沖區(qū)中第一段的SeqNo)-rcvnxt其中“rcvnxt”指示TCP處理預(yù)期接收的下一段。然后,重組間隙值被用作為觸發(fā),以便確定重組緩沖區(qū)中的數(shù)據(jù)是否為假。具體而言,在步驟608,執(zhí)行測試以確定注入的數(shù)據(jù)是否滿足以下條件query_threshold<=reassm_gap<=rcvwnd其中“rcvwnd”表示接收窗口大小。如果關(guān)系不成立,則控制在步驟607返回。如果關(guān)系成立,則查詢閾值已達(dá)到,意味著重組間隙太大。
因此,在步驟610創(chuàng)建啞ACK段。在本上下文中,“啞ACK段”意味著這樣的TCP消息,其被格式化為傳統(tǒng)ACK消息,但是被創(chuàng)建和發(fā)送以用于確定端點(diǎn)是否合法?;蛘?,啞ACK段可被稱為驗(yàn)證ACK段,或者任何其他功能上等同的術(shù)語都可被用作為段的標(biāo)記。啞ACK段攜帶剛好在最近被正確地確認(rèn)的SeqNo值之前的SeqNo值,還攜帶合法ACK值。在一個(gè)實(shí)施例中,SeqNo值被選擇為SeqNo<=(snduna-1),或者比已經(jīng)被確認(rèn)的SeqNo老的任何SeqNo。ACK值可以是任何可接受的ACK值,例如ACK(rcvnxt)。在TCP段的標(biāo)志部分設(shè)置ACK位。啞ACK段在步驟612被發(fā)送。
啞ACK段的目的是驗(yàn)證重組緩沖區(qū)中數(shù)據(jù)的真實(shí)性。具體而言,如這里所述地發(fā)送啞ACK段將致使遵從RFC 793的發(fā)送者以正確的SeqNo和ACK值進(jìn)行響應(yīng)。在步驟614,從發(fā)送者接收ACK消息。根據(jù)RFC793,ACK消息提供發(fā)送者先前發(fā)送過的最大順序號。
然后,接收者可確定重組緩沖區(qū)中的數(shù)據(jù)是否是虛假的。在一個(gè)實(shí)施例中,在步驟616,接收者測試在步驟614接收的發(fā)送者ACK消息的SeqNo是否小于重組緩沖區(qū)中第一段的SeqNo。如果是,則重組緩沖區(qū)中的段是虛假的并在步驟618被丟棄。
因此,上述方法認(rèn)識(shí)到要不是虛假段,發(fā)送者和接收者之間的連接處于同步狀態(tài)。因?yàn)橹挥邪l(fā)送者和接收者知道精確的下一預(yù)期SeqNo,因此對啞段的使用可被用來致使發(fā)送者通過證明關(guān)于精確的下一預(yù)期SeqNo的知識(shí)來向接收者證實(shí)自己。
在步驟602選擇和在步驟608使用的查詢閾值可以使用幾種方法中的任意一個(gè)來選擇。在一個(gè)實(shí)施例中,步驟608涉及測試reassm_gap是否大于當(dāng)時(shí)的窗口大小的1/2?;蛘?,查詢閾值可以是當(dāng)時(shí)窗口大小的1/3,窗口大小的3/4,等等。選定值可以根據(jù)網(wǎng)絡(luò)中的察覺到的危險(xiǎn)級別而變化。查詢閾值還可以是可配置的參數(shù)值。
在另一實(shí)施例中,最大段大小(“mss”)也被考慮。例如,步驟608可以涉及評估關(guān)系if(reasm_gap>min(rcvwndsize/2,n*maxmss)),其中n是由應(yīng)用選擇的或是由程序控制的。在另一替換中,查詢閾值可以根據(jù)諸如帶寬和延遲的函數(shù)或往返時(shí)間(RTT)估計(jì)、可用帶寬以及窗口大小的組合等值來動(dòng)態(tài)改變。
上述方法不需要改變在接收者處使用的TCP邏輯,因此維持了與現(xiàn)有的TCP實(shí)現(xiàn)的互操作性。本節(jié)和2.3節(jié)的方法可與在現(xiàn)有的RFC中描述的現(xiàn)有的快速重傳和快速恢復(fù)方法一起使用而無需任何修改。
3.0實(shí)現(xiàn)機(jī)制——硬件概述圖7是示出了可在其上實(shí)現(xiàn)實(shí)施例的計(jì)算機(jī)系統(tǒng)700的框圖。優(yōu)選實(shí)施例使用在例如路由器設(shè)備這樣的網(wǎng)絡(luò)元件上運(yùn)行的一個(gè)或多個(gè)計(jì)算機(jī)程序?qū)崿F(xiàn)。因此在本實(shí)施例中,計(jì)算機(jī)系統(tǒng)700是路由器。
計(jì)算機(jī)系統(tǒng)700包括用于傳送信息的總線702或其他通信機(jī)制,以及用于處理信息的耦合到總線702的處理器704。計(jì)算機(jī)系統(tǒng)700還包括主存儲(chǔ)器706,例如隨機(jī)訪問存儲(chǔ)器(RAM)、閃存或其他動(dòng)態(tài)存儲(chǔ)設(shè)備,它們耦合到總線702,以便存儲(chǔ)信息和要被處理器704執(zhí)行的指令。主存儲(chǔ)器706還可用來在要被處理器704執(zhí)行的指令的執(zhí)行期間存儲(chǔ)臨時(shí)變量或其他中間信息。計(jì)算機(jī)系統(tǒng)700還包括耦合到總線702以便存儲(chǔ)處理器704的靜態(tài)信息和指令的只讀存儲(chǔ)器(ROM)708或其他靜態(tài)存儲(chǔ)設(shè)備。諸如磁盤、閃存或光盤等存儲(chǔ)設(shè)備被提供和耦合到總線702以便存儲(chǔ)信息和指令。
通信接口718可耦合到總線702,以便與處理器704交換信息和命令選擇。接口718是傳統(tǒng)的串行接口,例如RS-232或RS-422接口。外部終端712或其他計(jì)算機(jī)系統(tǒng)連接到計(jì)算機(jī)系統(tǒng)700,并使用接口718向它提供命令。在計(jì)算機(jī)系統(tǒng)700中運(yùn)行的固件或軟件提供了終端接口或基于字符命令接口,從而外部命令可被送入計(jì)算機(jī)系統(tǒng)。
交換系統(tǒng)716耦合到總線702,并且具有到一個(gè)或多個(gè)外部網(wǎng)絡(luò)元件的輸入接口714和輸出接口719。外部網(wǎng)絡(luò)元件可包括耦合到一個(gè)或多個(gè)主機(jī)724的本地網(wǎng)絡(luò)722,或者是具有一個(gè)或多個(gè)服務(wù)器730的例如因特網(wǎng)728這樣的全球網(wǎng)絡(luò)。交換系統(tǒng)716根據(jù)公知的預(yù)定協(xié)議和協(xié)定將到達(dá)輸入接口714的信息流量交換到輸出接口719。例如,交換系統(tǒng)716與處理器合作可確定到達(dá)輸入接口714的數(shù)據(jù)分組的目的地,并使用輸出接口719將其發(fā)送到正確的目的地。所述目的地可包括主機(jī)724、服務(wù)器730、其他末端站或本地網(wǎng)絡(luò)722或因特網(wǎng)728中的其他路由和交換設(shè)備。
本發(fā)明涉及使用計(jì)算機(jī)系統(tǒng)700來實(shí)現(xiàn)這里的方法。根據(jù)本發(fā)明的一個(gè)實(shí)施例,響應(yīng)于處理器704執(zhí)行包含在主存儲(chǔ)器706中的一條或多條指令的一個(gè)或多個(gè)序列,計(jì)算機(jī)系統(tǒng)700提供這里的方法的實(shí)現(xiàn)。這些指令可從另一計(jì)算機(jī)可讀介質(zhì)(例如存儲(chǔ)設(shè)備710)被讀入主存儲(chǔ)器706。對包含在主存儲(chǔ)器706中的指令序列的執(zhí)行致使處理器704執(zhí)行這里描述的處理步驟。多處理布置中的一個(gè)或多個(gè)處理器也可被采用以執(zhí)行包含在主存儲(chǔ)器706中的指令序列。在可替換實(shí)施例中,硬連線電路可被用來代替軟件指令或與軟件指令組合以實(shí)現(xiàn)本發(fā)明。因此,本發(fā)明的實(shí)施例并不限于硬件電路和軟件的任何特定組合。
這里使用的術(shù)語“計(jì)算機(jī)可讀”介質(zhì)是指參與向處理器704提供指令以供執(zhí)行的任何介質(zhì)。這種介質(zhì)可采取多種形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。非易失性介質(zhì)包括例如光或磁盤,例如存儲(chǔ)設(shè)備710。易失性介質(zhì)包括動(dòng)態(tài)存儲(chǔ)器,例如主存儲(chǔ)器706。傳輸介質(zhì)包括同軸線纜、銅線和光纖,包括包括總線702在內(nèi)的線路。傳輸介質(zhì)還可采取聲或光波的形式,例如在無線電波和紅外數(shù)據(jù)通信期間生成的那些。
計(jì)算機(jī)可讀介質(zhì)的常見形式包括例如軟盤、柔性盤、硬盤、磁帶或任何其他磁性介質(zhì)、CD-ROM、任何其他光介質(zhì)、打孔卡、紙帶、具有孔圖案的任何物理介質(zhì)、RAM、PROM和EPROM,以及任何其他存儲(chǔ)芯片或光盤匣、如后所述的載波,或計(jì)算機(jī)可從其讀取的任何其他介質(zhì)。
在向處理器704運(yùn)送一條或多條指令的一個(gè)或多個(gè)序列以供執(zhí)行的過程中可能涉及各種形式的計(jì)算機(jī)可讀介質(zhì)。例如,指令最初可能被存儲(chǔ)在遠(yuǎn)程計(jì)算機(jī)的磁盤上。遠(yuǎn)程計(jì)算機(jī)可將指令載入其動(dòng)態(tài)存儲(chǔ)器,并使用調(diào)制解調(diào)器通過電話線發(fā)送這些指令。計(jì)算機(jī)系統(tǒng)700本地的調(diào)制解調(diào)器可接收電話線上的數(shù)據(jù),并使用紅外發(fā)射機(jī)將數(shù)據(jù)轉(zhuǎn)換為紅外信號。耦合到總線702的紅外檢測器可接收在紅外信號中攜帶的數(shù)據(jù),并將數(shù)據(jù)放在總線702上??偩€702將數(shù)據(jù)運(yùn)送到主存儲(chǔ)器706,處理器704從主存儲(chǔ)器706獲取并執(zhí)行指令。被主存儲(chǔ)器706接收的指令可選地在被處理器704執(zhí)行之前或之后被存儲(chǔ)在存儲(chǔ)設(shè)備710上。
通信接口718還提供與連接到本地網(wǎng)絡(luò)722的網(wǎng)絡(luò)鏈路720相耦合的雙向數(shù)據(jù)通信。例如,通信接口718可以是綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)卡或調(diào)制解調(diào)器,用于提供到相應(yīng)類型電話線的數(shù)據(jù)通信連接。作為另一示例,通信接口718可以是局域網(wǎng)(LAN)卡,用于提供到兼容LAN的數(shù)據(jù)通信連接。還可實(shí)現(xiàn)無線鏈路。在任何這種實(shí)現(xiàn)中,通信接口718發(fā)送和接收攜帶代表各種信息的數(shù)字?jǐn)?shù)據(jù)流的電、電磁或光信號。
網(wǎng)絡(luò)鏈路720一般通過一個(gè)或多個(gè)網(wǎng)絡(luò)向其他數(shù)據(jù)設(shè)備提供數(shù)據(jù)通信。例如,網(wǎng)絡(luò)鏈路720可通過本地網(wǎng)絡(luò)722向主計(jì)算機(jī)724或向由因特網(wǎng)服務(wù)提供商(ISP)726操作的數(shù)據(jù)設(shè)備提供連接。ISP 726又通過世界范圍的分組數(shù)據(jù)通信網(wǎng)絡(luò)(現(xiàn)在一般稱為因特網(wǎng)728)來提供數(shù)據(jù)通信服務(wù)。本地網(wǎng)絡(luò)722和因特網(wǎng)728都使用攜帶數(shù)字?jǐn)?shù)據(jù)流的電、電磁或光信息。攜帶去往和來自計(jì)算機(jī)系統(tǒng)700的數(shù)字?jǐn)?shù)據(jù)的通過各個(gè)網(wǎng)絡(luò)的信號和在網(wǎng)絡(luò)鏈路720上并且通過通信接口718的信號是傳輸信息的載波的示例性形式。
計(jì)算機(jī)系統(tǒng)700可通過一個(gè)或多個(gè)網(wǎng)絡(luò)、網(wǎng)絡(luò)鏈路720和通信接口718發(fā)送消息和接收數(shù)據(jù),包括程序代碼。在因特網(wǎng)示例中,服務(wù)器730可通過因特網(wǎng)728、ISP 726、本地網(wǎng)絡(luò)722和通信接口718發(fā)送被請求的應(yīng)用程序代碼。根據(jù)本發(fā)明,一個(gè)被這樣下載的應(yīng)用提供這里描述對網(wǎng)絡(luò)數(shù)據(jù)注入攻擊的檢測。
處理器704可在代碼被接收和/或存儲(chǔ)在存儲(chǔ)設(shè)備710或其他非易失性存儲(chǔ)器中以供后來的執(zhí)行時(shí)執(zhí)行接收到的代碼。以此方式,計(jì)算機(jī)系統(tǒng)700可以載波形式獲得應(yīng)用代碼。
4.0擴(kuò)展和替換在上述說明中,參考本發(fā)明的具體實(shí)施例描述了本發(fā)明。但是很明顯,在不脫離本發(fā)明的更廣的精神和范圍的情況下可作出各種修改和改變。因此,說明書和附圖應(yīng)被理解為說明性而非限制性的。
權(quán)利要求
1.一種用于防止網(wǎng)絡(luò)上的攻擊的方法,其中所述攻擊包括將虛假傳輸控制協(xié)議(TCP)段注入發(fā)送者和接收者之間的TCP連接,所述方法包括由計(jì)算機(jī)實(shí)現(xiàn)的以下步驟接收復(fù)制TCP ACK消息;當(dāng)由接收者維護(hù)的TCP重傳緩沖區(qū)為空時(shí),使假復(fù)制ACK計(jì)數(shù)器遞增;當(dāng)假復(fù)制ACK計(jì)數(shù)器等于指定的擊發(fā)因子時(shí),發(fā)送提供正確的順序值和ACK值的糾正ACK消息。
2.如權(quán)利要求1所述的方法,其中所述指定的擊發(fā)因子是從1到10范圍內(nèi)的值。
3.如權(quán)利要求1所述的方法,其中所述步驟由充當(dāng)所述TCP連接中的數(shù)據(jù)接收者的末端節(jié)點(diǎn)執(zhí)行。
4.如權(quán)利要求1所述的方法,其中所述步驟由網(wǎng)絡(luò)基礎(chǔ)設(shè)施元件的操作系統(tǒng)的TCP應(yīng)用執(zhí)行。
5.如權(quán)利要求1所述的方法,其中所述步驟由被個(gè)人計(jì)算機(jī)、工作站或其他網(wǎng)絡(luò)末端站的操作系統(tǒng)容宿或與個(gè)人計(jì)算機(jī)、工作站或其他網(wǎng)絡(luò)末端站的操作系統(tǒng)相關(guān)聯(lián)的TCP進(jìn)程、堆棧、適配器或代理執(zhí)行。
6.如權(quán)利要求1所述的方法,還包括以下步驟接收所述糾正ACK消息;確定所述正確的順序值是否小于重組緩沖區(qū)中的段的另一順序值;當(dāng)所述正確的順序值小于所述重組緩沖區(qū)中的段的所述另一順序值時(shí),從所述重組緩沖區(qū)丟棄所述段。
7.如權(quán)利要求6所述的方法,其中所述丟棄步驟包括丟棄所述重組緩沖區(qū)中的所有段。
8.一種用于防止網(wǎng)絡(luò)上的攻擊的方法,其中所述攻擊包括將虛假傳輸控制協(xié)議(TCP)段注入發(fā)送者和接收者之間的TCP連接,所述方法包括由計(jì)算機(jī)實(shí)現(xiàn)的以下步驟接收特定的TCP段;確定所述特定的TCP段和先前被放置在由接收者維護(hù)的重組緩沖區(qū)中的在先TCP段之間的順序值間隙;根據(jù)指定的拭探值,確定所述順序值間隙是否太大;如果所述順序值間隙太大,則執(zhí)行以下步驟創(chuàng)建和發(fā)送攜帶剛好在最近被正確地確認(rèn)的順序值之前的特定順序值的啞段;接收對所述啞段的確認(rèn);確定所述確認(rèn)中攜帶的第二順序值是否小于所述第一TCP段的第三順序值;以及當(dāng)所述確認(rèn)中攜帶的所述第二順序值小于所述特定TCP段的所述第三順序值時(shí),從所述重組緩沖區(qū)丟棄所述特定TCP段。
9.如權(quán)利要求8所述的方法,其中當(dāng)重組間隙值大于當(dāng)時(shí)的窗口大小的一半時(shí),所述指定的拭探值成立。
10.如權(quán)利要求8所述的方法,其中當(dāng)重組間隙值大于(a)當(dāng)時(shí)的窗口大小的一半和(b)多個(gè)最大允許段大小二者中的較小者時(shí),所述指定的拭探值成立。
11.如權(quán)利要求8所述的方法,其中當(dāng)查詢閾值大于當(dāng)時(shí)的帶寬和當(dāng)時(shí)的延遲的函數(shù)時(shí),所述指定的拭探值成立。
12.如權(quán)利要求8所述的方法,其中當(dāng)查詢閾值大于往返時(shí)間(RTT)估計(jì)、當(dāng)時(shí)的可用帶寬值和窗口大小的函數(shù)時(shí),所述指定的拭探值成立。
13.如權(quán)利要求8所述的方法,其中當(dāng)查詢閾值小于等于重組間隙值并且所述重組間隙值小于等于接收窗口值時(shí),所述指定的拭探值成立。
14.如權(quán)利要求13所述的方法,其中所述重組間隙值包括所述重組緩沖區(qū)中的第一段的順序值減去下一預(yù)期段值。
15.一種用于防止網(wǎng)絡(luò)上的攻擊的裝置,其中所述攻擊包括發(fā)送具有虛假或不希望的數(shù)據(jù)段的虛假傳輸控制協(xié)議(TCP)段,所述裝置包括用于接收復(fù)制TCP ACK消息的裝置;用于當(dāng)由接收者維護(hù)的TCP重傳緩沖區(qū)為空時(shí),使假復(fù)制ACK計(jì)數(shù)器遞增的裝置;用于當(dāng)假復(fù)制ACK計(jì)數(shù)器等于指定的擊發(fā)因子時(shí),發(fā)送提供正確的順序值和ACK值的糾正ACK消息的裝置。
16.如權(quán)利要求15所述的裝置,還包括用于執(zhí)行權(quán)利要求2、3、4、5、6、7、8、9、10、11、12、13或14中任何步驟的裝置。
17.一種用于防止網(wǎng)絡(luò)上的攻擊的裝置,其中所述攻擊包括發(fā)送具有虛假或不希望的數(shù)據(jù)段的虛假傳輸控制協(xié)議(TCP)段,所述裝置包括處理器;一個(gè)或多個(gè)存儲(chǔ)的指令序列,所述指令序列可被所述處理器訪問,并且當(dāng)被所述處理器執(zhí)行時(shí)使得所述處理器執(zhí)行接收復(fù)制TCP ACK消息;當(dāng)由接收者維護(hù)的TCP重傳緩沖區(qū)為空時(shí),使假復(fù)制ACK計(jì)數(shù)器遞增;當(dāng)假復(fù)制ACK計(jì)數(shù)器等于指定的擊發(fā)因子時(shí),發(fā)送提供正確的順序值和ACK值的糾正ACK消息。
18.如權(quán)利要求17所述的裝置,還包括存儲(chǔ)的指令序列,所述指令序列可被所述處理器訪問,并且當(dāng)被所述處理器執(zhí)行時(shí),使得所述處理器執(zhí)行權(quán)利要求2、3、4、5、6、7、8、9、10、11、12、13或14中的任何步驟。
19.一種攜帶用于防止網(wǎng)絡(luò)上的攻擊的一個(gè)或多個(gè)指令序列的計(jì)算機(jī)可讀介質(zhì),其中攻擊包括發(fā)送具有虛假或不希望的數(shù)據(jù)段的虛假傳輸控制協(xié)議(TCP)段,其中一個(gè)或多個(gè)處理器對所述一個(gè)或多個(gè)指令序列的執(zhí)行使得所述一個(gè)或多個(gè)處理器執(zhí)行接收復(fù)制TCP ACK消息;當(dāng)由接收者維護(hù)的TCP重傳緩沖區(qū)為空時(shí),使假復(fù)制ACK計(jì)數(shù)器遞增;當(dāng)假復(fù)制ACK計(jì)數(shù)器等于指定的擊發(fā)因子時(shí),發(fā)送提供正確的順序值和ACK值的糾正ACK消息。
20.如權(quán)利要求19所述的計(jì)算機(jī)可讀介質(zhì),還包括存儲(chǔ)的指令序列,所述指令序列可被所述處理器訪問,并且當(dāng)被所述處理器執(zhí)行時(shí),使得所述處理器執(zhí)行權(quán)利要求2、3、4、5、6、7、8、9、10、11、12、13或14中的任何步驟。
全文摘要
本發(fā)明公開了一種用于防止分組交換網(wǎng)絡(luò)中的TCP數(shù)據(jù)注入攻擊的方法。ACK消息或啞段被發(fā)送,以驗(yàn)證重組緩沖區(qū)中數(shù)據(jù)的真實(shí)性,并且?guī)椭斓貋G棄虛假數(shù)據(jù)。這些方法涉及發(fā)送者檢測虛假數(shù)據(jù),并增強(qiáng)了對典型TCP實(shí)現(xiàn)所固有的用于處理ACK消息的機(jī)制的使用。后一方法可在不修改發(fā)送者的TCP實(shí)現(xiàn)的情況下實(shí)現(xiàn)。此外,接收者的TCP實(shí)現(xiàn)維持與RFC 793的兼容性。
文檔編號G06F11/22GK1906591SQ200580001579
公開日2007年1月31日 申請日期2005年1月11日 優(yōu)先權(quán)日2004年1月16日
發(fā)明者阿納恩薩·拉邁阿, 蘭德爾·斯圖爾特, 彼得·李, 帕特里克·梅翰 申請人:思科技術(shù)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1