專(zhuān)利名稱(chēng):一種開(kāi)放式真實(shí)IPv6源地址過(guò)濾與驗(yàn)證方法
技術(shù)領(lǐng)域:
該方法屬于互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及真實(shí)IPv6源地址過(guò)濾驗(yàn)證技術(shù)。
背景技術(shù):
當(dāng)前互聯(lián)網(wǎng)上最為常見(jiàn)的攻擊類(lèi)型是拒絕服務(wù)式攻擊(DoS),而拒絕服務(wù)式攻擊的一種主要方式,是通過(guò)向被攻擊方發(fā)送大量偽造源地址的報(bào)文。
互聯(lián)網(wǎng)的設(shè)計(jì)固有地缺乏對(duì)于報(bào)文源網(wǎng)絡(luò)地址的認(rèn)證和安全性保證,這意味著,任何人都可以隨意修改需要發(fā)送報(bào)文的源地址。而在當(dāng)前的TCP/IP協(xié)議中,報(bào)文的源地址,除了用來(lái)在回復(fù)報(bào)文時(shí)尋址之外,同時(shí)也被作為報(bào)文發(fā)送方的身分標(biāo)志。一個(gè)攻擊者可以隨意地使用不同的“身分”向被攻擊方發(fā)送大量報(bào)文,使攻擊方陷于不斷處理這些偽造報(bào)文的局面。即便被攻擊方意識(shí)到自己在遭受攻擊,它也缺乏手段去區(qū)分正常報(bào)文和偽造報(bào)文,或者獲取攻擊者的“身分”。這樣,簡(jiǎn)便易行和難以被追查兩大特點(diǎn),使得通過(guò)偽造源地址來(lái)發(fā)動(dòng)攻擊成為一種相當(dāng)常見(jiàn)的攻擊行為。據(jù)統(tǒng)計(jì),目前每周會(huì)發(fā)生4000起此類(lèi)攻擊。
盡管目前還沒(méi)有被廣泛部署的真實(shí)源地址方案來(lái)應(yīng)付這種攻擊行為,但是已經(jīng)有很多策略被提出來(lái)希望能控制這類(lèi)攻擊。它們可以分為兩類(lèi)●過(guò)濾類(lèi)(Filtering)這一類(lèi)策略主要是希望通過(guò)掌握的與源地址相關(guān)的信息來(lái)過(guò)濾掉一部分偽造源地址的報(bào)文。典型的例子如入口過(guò)濾(Ingress filtering),就是通過(guò)檢查網(wǎng)關(guān)上接收到的報(bào)文其源地址是否在接入子網(wǎng)的地址空間范圍內(nèi),從而判斷報(bào)文是否合法。入口過(guò)濾所使用的過(guò)濾信息是事先已經(jīng)知道的。其他如SPM、SAVE這一類(lèi)策略,則通過(guò)網(wǎng)關(guān)之間動(dòng)態(tài)地交換報(bào)文過(guò)濾信息。過(guò)濾類(lèi)方法是一種事先控制的方法,具有較好的防御作用。
●追蹤類(lèi)(Traceback)追蹤類(lèi)策略是一種被動(dòng)的策略。它希望獲取報(bào)文在互聯(lián)網(wǎng)上所經(jīng)過(guò)的路徑,在攻擊發(fā)生時(shí),通過(guò)分析報(bào)文路徑來(lái)獲取攻擊源的地址。獲取報(bào)文的路徑主要有兩種方法。一是在路由器上對(duì)報(bào)文添加路由器的簽名。另一種方法是希望路由器將報(bào)文的抽樣信息發(fā)送到一個(gè)收集器,在收集器上對(duì)這些信息分析得到報(bào)文路徑。目前大多數(shù)路由器都不支持這兩種方案,而且追蹤類(lèi)方法沒(méi)有防御作用,只能用于攻擊發(fā)生之后的追查。
SPM(Spoofing Prevention Method)是一種較新的過(guò)濾偽造源網(wǎng)絡(luò)地址報(bào)文的策略。通過(guò)使用這個(gè)策略,報(bào)文目的自治域能夠確認(rèn)報(bào)文源地址的真實(shí)性。這種方法與標(biāo)準(zhǔn)的入口過(guò)濾方法形成鮮明對(duì)比,由于后者只有配置在離報(bào)文的源頭最近的路由器上才會(huì)起作用,而在其他路由器上作用很微小。在這個(gè)方法中,。一個(gè)離開(kāi)源自治域的報(bào)文被一個(gè)密鑰標(biāo)記,密鑰的生成函數(shù)是K(S,D),其中S是源自治域編號(hào),D是目的自治域編號(hào)。這個(gè)密鑰是被源、目的自治域共同知道的。當(dāng)報(bào)文到達(dá)目的自治域的時(shí)候,這個(gè)密鑰被目的自治域檢查其正確性并且抽取出來(lái)。這樣,這種方法就確認(rèn)了報(bào)文的源地址來(lái)自于S。
這個(gè)策略的主要特點(diǎn)有兩個(gè),第一是由于良好的過(guò)濾效果,使得網(wǎng)絡(luò)的運(yùn)營(yíng)商有很大的動(dòng)力去配置它,其次它支持增量布署,因?yàn)榧幢銉H僅在一部分網(wǎng)絡(luò)上部署了這種方法,這部分網(wǎng)絡(luò)也會(huì)因此而受益。它的這兩個(gè)獨(dú)有的特性,使它成為一個(gè)優(yōu)秀的偽造源地址問(wèn)題的解決方案。
同時(shí),SPM所使用的認(rèn)證密鑰是隨機(jī)生成的,密鑰的散發(fā)是在邊界路由器之間,采用特殊的協(xié)議機(jī)制。密鑰生成,發(fā)布和在報(bào)文中增加密鑰的代價(jià)都不會(huì)太大,所以SPM的計(jì)算代價(jià)小,性能高,不會(huì)因?yàn)樘幚硇实拖露蔀榫芙^服務(wù)式攻擊的對(duì)象。
除了SPM以外,還有其他一些優(yōu)秀的過(guò)濾策略,它們大多基于某種方法來(lái)生成過(guò)濾規(guī)則,并按照這些規(guī)則對(duì)報(bào)文的源地址進(jìn)行考查,判斷報(bào)文所聲稱(chēng)的源地址的真?zhèn)巍@缛肟谶^(guò)濾,過(guò)濾系統(tǒng)直接根據(jù)報(bào)文的源地址信息是否在它自身的地址空間來(lái)判斷報(bào)文源地址的合法性;而源地址強(qiáng)制認(rèn)證協(xié)議,即SAVE(source Address Validity Enforcement)協(xié)議則是根據(jù)報(bào)文是否來(lái)自其源地址所應(yīng)該對(duì)應(yīng)的網(wǎng)絡(luò)接口來(lái)判斷報(bào)文源地址的真實(shí)性。
采用端到端簽名和使用基于路徑的邊界標(biāo)記是許多真實(shí)源地址過(guò)濾策略的基礎(chǔ)。在端到端簽名簽名方法中,報(bào)文發(fā)送方在報(bào)文中標(biāo)記自己特有的簽名信息,這樣報(bào)文的接收方可以通過(guò)辨別這個(gè)簽名信息正確性來(lái)確定報(bào)文源地址的真實(shí)性?;诼窂降倪吔鐦?biāo)記是一種常用的追蹤報(bào)文真實(shí)來(lái)源的手段,它被許多追蹤類(lèi)策略用于輔助。
由于過(guò)濾策略的共同點(diǎn)和相似之處,如果可以實(shí)現(xiàn)一個(gè)統(tǒng)一的過(guò)濾方法來(lái)集成這些過(guò)濾策略,同時(shí)為新策略的嵌入提供方便的操作接口,不僅方便在已有基礎(chǔ)上部署和配置過(guò)濾策略,而且節(jié)省了開(kāi)發(fā)新策略的工作量和成本,是一項(xiàng)很有意義的工作。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種可以動(dòng)態(tài)嵌入過(guò)濾規(guī)則的、對(duì)網(wǎng)絡(luò)層透明的報(bào)文源地址過(guò)濾方法。
本發(fā)明的特征在于,依次含有以下步驟
步驟(1),在位于自治域邊界路由器向外的接口處,且與該路由器協(xié)同工作的一個(gè)過(guò)濾設(shè)備上配置以下模塊過(guò)濾規(guī)則生成引擎,根據(jù)自治域控制服務(wù)器基于TCP協(xié)議發(fā)送的通訊報(bào)文動(dòng)態(tài)生成過(guò)濾規(guī)則表并且切換過(guò)濾規(guī)則;所述過(guò)濾規(guī)則表由前綴映射表、自治域發(fā)送端簽名表和自治域接收端簽名表共三個(gè)部分組成,其中前綴映射表是把地址前綴映射到對(duì)應(yīng)策略所需的數(shù)據(jù)的映射表,采用基于最長(zhǎng)前綴匹配來(lái)進(jìn)行搜索的一種Trie樹(shù),每個(gè)節(jié)點(diǎn)保存對(duì)應(yīng)策略所需要的數(shù)據(jù);自治域發(fā)送端簽名表保存有自治域發(fā)送報(bào)文到其他自治域所應(yīng)該給報(bào)文添加的簽名;自治域接收端簽名表保存有自治域接收到來(lái)自其他自治域的報(bào)文時(shí),這些報(bào)文所應(yīng)該具有的正確簽名,簽名表由一個(gè)數(shù)組實(shí)現(xiàn),數(shù)組的索引是自治域的編號(hào),數(shù)組的內(nèi)容是相應(yīng)的簽名;所述通訊報(bào)文含有IPv6報(bào)頭、TCP報(bào)頭、策略類(lèi)型號(hào)、報(bào)文類(lèi)型號(hào)以及信息更新字段,其中策略是指過(guò)濾策略,多種過(guò)濾策略可以被選擇,以下5種是已經(jīng)被實(shí)現(xiàn)并驗(yàn)證的SPM、源地址強(qiáng)制認(rèn)證協(xié)議SAVE、入口過(guò)濾、基于端到端簽名的策略、以及基于路徑標(biāo)記的策略,其中SPM是Spoofing Prevention Method的縮寫(xiě);策略類(lèi)型號(hào)是各個(gè)策略的編號(hào);報(bào)文類(lèi)型指定了當(dāng)前報(bào)文是策略切換報(bào)文還是還是規(guī)則信息更新報(bào)文;信息更新報(bào)文是一個(gè)可變長(zhǎng)字段,更新的是前綴映射字段或者發(fā)送端簽名表、接收端簽名表;過(guò)濾引擎,根據(jù)所選過(guò)濾規(guī)則表的表項(xiàng)來(lái)判斷是否對(duì)IPv6報(bào)文進(jìn)行過(guò)濾,并且有選擇地基于簽名的過(guò)濾規(guī)則表的內(nèi)容決定是否對(duì)報(bào)文進(jìn)行添加、刪除和檢查簽名,或者對(duì)報(bào)文進(jìn)行邊界標(biāo)記操作,或者進(jìn)行互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文的處理,因此,過(guò)濾引擎還含有簽名模塊、邊界標(biāo)記模塊和互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文處理模塊;步驟(2),所述過(guò)濾與驗(yàn)證方法依次按以下步驟實(shí)現(xiàn)步驟(2.1),過(guò)濾規(guī)則生成引擎從控制鏈路接收到所述控制服務(wù)器送達(dá)的過(guò)濾策略更改報(bào)文,解析報(bào)文后,更新過(guò)濾策略,并把過(guò)濾規(guī)則表切換到與當(dāng)前策略相應(yīng)的過(guò)濾規(guī)則表;步驟(2.2),過(guò)濾規(guī)則生成引擎另一控制鏈路接收所述控制服務(wù)器送達(dá)的過(guò)濾規(guī)則表信息更新報(bào)文,解析該報(bào)文后,更新相應(yīng)過(guò)濾規(guī)則表的相應(yīng)表項(xiàng)中的信息;
步驟(2.3),過(guò)濾引擎從朝向自治域內(nèi)部的網(wǎng)絡(luò)接口中接收到出自治域方向的普通數(shù)據(jù)報(bào)文,判斷當(dāng)前策略是否需要對(duì)接收的報(bào)文進(jìn)行簽名處理,如果需要,則根據(jù)報(bào)文的源、目的地址信息在發(fā)送端簽名表中查找相應(yīng)的簽名信息,并在報(bào)文的逐跳可選項(xiàng)中添加簽名,若不存在逐跳可選項(xiàng),則增加逐跳可選項(xiàng)之后再添加簽名;若不需要簽名處理,則把該報(bào)文交給所述邊界路由器的轉(zhuǎn)發(fā)引擎處理;步驟(2.4),過(guò)濾引擎從所述轉(zhuǎn)發(fā)引擎接收到進(jìn)自治域方向的普通數(shù)據(jù)報(bào)文后,若判斷獲取的是互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文,且當(dāng)前策略對(duì)報(bào)文又添加簽名處理,則按以下步驟處理步驟(2.4.1),若互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文的類(lèi)型是報(bào)文過(guò)長(zhǎng)Packer-Too-Big,則判斷報(bào)文的目的地址是否屬于本地自治域,如果是,執(zhí)行下一步驟步驟(2.4.2),判斷報(bào)文內(nèi)部攜帶的原報(bào)文摘要信息中目的地址是否在整個(gè)端到端真實(shí)源地址聯(lián)盟中,如果是,把該報(bào)文建議的最大傳輸分組長(zhǎng)度信息減少一個(gè)簽名長(zhǎng)度,并重新計(jì)算互聯(lián)網(wǎng)控制信息協(xié)議的報(bào)文校驗(yàn)和;步驟(2.5),過(guò)濾引擎從轉(zhuǎn)發(fā)引擎接收到的進(jìn)自治域方向的普通數(shù)據(jù)報(bào)文為非互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文,則按以下步驟處理步驟(2.5.1),過(guò)濾引擎從所獲取的來(lái)自自治域外的報(bào)文中,解析出源、目的地址信息;步驟(2.5.2),根據(jù)步驟(2.5.1)得到的源、目的地址查當(dāng)前過(guò)濾規(guī)則表中的前綴映射表,根據(jù)查表得到的數(shù)據(jù)和當(dāng)前策略的要求判斷是否對(duì)報(bào)文進(jìn)行過(guò)濾,若需要過(guò)濾,則直接過(guò)濾報(bào)文;否則執(zhí)行下一步驟;步驟(2.5.3),若當(dāng)前的策略要求對(duì)報(bào)文中的簽名進(jìn)行檢查,則簽名處理模塊便獲取報(bào)文源地址前綴對(duì)應(yīng)的自治域編號(hào),再根據(jù)接收端簽名表的該自治域的相應(yīng)表項(xiàng)檢查報(bào)文中逐跳可選項(xiàng)位置的簽名是否與接收端簽名表中的一致,若不一致,或報(bào)文中不含有簽名,則過(guò)濾報(bào)文;否則去掉簽名,執(zhí)行下一步驟;步驟(2.5.4),判斷當(dāng)前的策略是否要求對(duì)步驟(2.5.3)得到的報(bào)文進(jìn)行邊界標(biāo)記,如果不需要,則把該報(bào)文交給朝向自治域內(nèi)部的網(wǎng)絡(luò)接口轉(zhuǎn)發(fā);如果需要,則在報(bào)文中標(biāo)記指定內(nèi)容,再轉(zhuǎn)發(fā)報(bào)文。
本發(fā)明是一種可以動(dòng)態(tài)嵌入過(guò)濾規(guī)則的、對(duì)網(wǎng)絡(luò)層透明的報(bào)文IPv6源地址過(guò)濾與驗(yàn)證方法。本方法中包含了對(duì)基于路徑信息的和基于端到端簽名兩種真實(shí)源地址過(guò)濾策略的支持,并且對(duì)其它過(guò)濾策略的嵌入提供了開(kāi)放支持。相比于普通的路由器,它具有對(duì)網(wǎng)絡(luò)層透明,根據(jù)真實(shí)源地址過(guò)濾規(guī)則對(duì)IPv6源地址高效的報(bào)文過(guò)濾功能。同時(shí)它不同于常規(guī)的防火墻,因?yàn)槠溥^(guò)濾規(guī)則表是通過(guò)與過(guò)濾策略控制服務(wù)器的協(xié)議交互動(dòng)態(tài)變化的,而且過(guò)濾方法可以動(dòng)態(tài)嵌入和切換。此外,還具有一般網(wǎng)絡(luò)系統(tǒng)不具有的簽名添加、檢查和刪除,互聯(lián)網(wǎng)控制協(xié)議報(bào)文處理等功能。它可以作為獨(dú)立的專(zhuān)用網(wǎng)絡(luò)設(shè)備實(shí)現(xiàn),也可以嵌入路由器作為擴(kuò)展部件。
圖1.真實(shí)源地址過(guò)濾方法功能結(jié)構(gòu)圖;圖2.過(guò)濾規(guī)則生成引擎工作流程圖;圖3.過(guò)濾引擎工作流程圖;圖4.互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文處理流程圖;圖5.方法總體工作流程圖;圖6.方法部署實(shí)例示意圖。
具體實(shí)施例方式
如圖1所示,本發(fā)明包含有兩個(gè)功能引擎過(guò)濾規(guī)則生成引擎根據(jù)通訊報(bào)文動(dòng)態(tài)生成過(guò)濾規(guī)則表并且切換過(guò)濾規(guī)則;過(guò)濾引擎根據(jù)過(guò)濾規(guī)則表中的表項(xiàng)來(lái)判斷是否對(duì)數(shù)據(jù)報(bào)文進(jìn)行過(guò)濾,并且可以有選擇地基于簽名的過(guò)濾規(guī)則表的內(nèi)容決定對(duì)是否對(duì)報(bào)文進(jìn)行添加、刪除和檢查簽名等操作,或者對(duì)報(bào)文進(jìn)行邊界標(biāo)記操作,或者進(jìn)行互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文處理。如圖1所示,本方法需要和傳統(tǒng)路由器的路由引擎和轉(zhuǎn)發(fā)引擎協(xié)同工作。過(guò)濾模塊還包含簽名處理模塊,報(bào)文標(biāo)記模塊和互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文處理模塊。
本發(fā)明中最重要的數(shù)據(jù)表是過(guò)濾規(guī)則表。過(guò)濾規(guī)則表由前綴映射表、自治域發(fā)送端簽名表和自治域接收端簽名表三部分組成。每一個(gè)被嵌入的過(guò)濾策略擁有自己?jiǎn)为?dú)的過(guò)濾規(guī)則表。
前綴映射表對(duì)于大多數(shù)過(guò)濾策略是必要的,它用于將地址前綴映射到過(guò)濾標(biāo)記,或者根據(jù)過(guò)濾策略不同,映射到不同的數(shù)據(jù),它是由Trie樹(shù)來(lái)實(shí)現(xiàn)的。Trie樹(shù)是一種采用最長(zhǎng)前綴匹配法來(lái)進(jìn)行搜索的數(shù)據(jù)結(jié)構(gòu),它可以用于將地址前綴映射到需要的數(shù)據(jù),一般的路由器使用Trie樹(shù)來(lái)實(shí)現(xiàn)路由表。
前綴映射表Trie樹(shù)的結(jié)構(gòu)和普通路由表所使用的Trie樹(shù)一致,唯一的區(qū)別是每個(gè)節(jié)點(diǎn)所包含的數(shù)據(jù)不是接口號(hào),而是對(duì)應(yīng)策略所需要的數(shù)據(jù)。不同策略使用不同的前綴映射表。各個(gè)策略所需要的前綴和數(shù)據(jù)映射表如下
這些前綴的映射信息直接或者間接地指示了是否對(duì)報(bào)文進(jìn)行過(guò)濾。方法在Trie樹(shù)的節(jié)點(diǎn)中預(yù)留了足夠大的空間,使得每個(gè)節(jié)點(diǎn)能夠保存策略所需要存放的信息。
自治域發(fā)送端簽名表和自治域接收端簽名表為基于端到端簽名的過(guò)濾策略,如SPM,提供了必要基礎(chǔ),并不是所有的策略都要使用這兩個(gè)表。自治域發(fā)送端簽名表保存自治域發(fā)送報(bào)文到其他自治域時(shí)應(yīng)該給報(bào)文添加的簽名,自治域接收端簽名表保存自治域接收到來(lái)自其他自治域的報(bào)文時(shí),這些報(bào)文所應(yīng)該具有的正確簽名。它們是由數(shù)組來(lái)實(shí)現(xiàn)的。數(shù)組的索引是自治域的編號(hào),而每一項(xiàng)內(nèi)容是去往和來(lái)自相應(yīng)自治域的報(bào)文所應(yīng)該具有的簽名。示例如下的表格,表示自治域編號(hào)和簽名的對(duì)應(yīng)關(guān)系
對(duì)于該方法功能的配置是由一臺(tái)額外的控制服務(wù)器直接控制的??刂品?wù)器通過(guò)與該方法的過(guò)濾規(guī)則生成引擎進(jìn)行通訊來(lái)更新過(guò)濾規(guī)則表內(nèi)容,控制服務(wù)器和過(guò)濾規(guī)則生成引擎采用TCP協(xié)議進(jìn)行通訊??刂品?wù)器的功能與策略的選擇有關(guān)。通訊報(bào)文的內(nèi)容如下
策略類(lèi)型號(hào)是每個(gè)策略的編號(hào),例如SPM的策略類(lèi)型號(hào)是0x00。報(bào)文類(lèi)型指定了當(dāng)前報(bào)文是策略切換報(bào)文還是規(guī)則信息更新報(bào)文,如果是規(guī)則信息更新報(bào)文,還說(shuō)明了修改過(guò)濾規(guī)則表的哪一部分,例如這個(gè)字段為0x00是更新前綴映射表,0xff是更改策略類(lèi)型,0xfe是更改當(dāng)前的報(bào)文標(biāo)記字段,0x01是更新發(fā)送端簽名表,等等。其中報(bào)文的信息更新字段是一個(gè)可變長(zhǎng)的字段。如果是修改前綴映射表內(nèi)容,這個(gè)字段包含一個(gè)或幾個(gè)如下的結(jié)構(gòu)
其中前綴映射字段包含的是策略所需要將前綴映射到的數(shù)據(jù),8字節(jié)的空間可以保證容納下所有策略對(duì)各自數(shù)據(jù)的需求,并為可能擴(kuò)展的策略留下空間。
如果通訊報(bào)文要求修改發(fā)送端簽名表或者接收端簽名表,規(guī)則信息更新字段包含一個(gè)或者幾個(gè)如下的結(jié)構(gòu)
過(guò)濾規(guī)則生成引擎將根據(jù)報(bào)文內(nèi)容修改對(duì)應(yīng)的簽名表內(nèi)容。例如報(bào)文類(lèi)型指示的是修改發(fā)送端簽名表,則過(guò)濾規(guī)則生成引擎修改發(fā)送端簽名表中報(bào)文中自治域編號(hào)指定的自治域的簽名為報(bào)文中的自治域?qū)?yīng)簽名。
如果通訊報(bào)文要求更改報(bào)文標(biāo)記字段,信息更新字段包含以下的結(jié)構(gòu)
通訊報(bào)文中的報(bào)文標(biāo)記字段設(shè)計(jì)為8字節(jié),為各類(lèi)標(biāo)記方法留出了擴(kuò)展空間。報(bào)文標(biāo)記長(zhǎng)度說(shuō)明了報(bào)文標(biāo)記字段有意義的字節(jié)數(shù)。各個(gè)策略的報(bào)文標(biāo)記字段放在策略嵌入時(shí)的另外分配的空間。由于基于標(biāo)記的過(guò)濾策略不多,所以并沒(méi)有為所有策略預(yù)留這個(gè)字段的空間,因此在嵌入策略時(shí)需要另外分配這個(gè)字段空間。
如果報(bào)文是策略更改報(bào)文,則過(guò)濾規(guī)則生成引擎將方法的原策略編號(hào)更改為報(bào)文中的策略編號(hào),這樣過(guò)濾引擎將按照更改后的策略進(jìn)行報(bào)文處理。
在數(shù)據(jù)處理中,本方法會(huì)修改到達(dá)本地自治域的互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文(ICMP)中的內(nèi)容來(lái)解決添加簽名后報(bào)文大小大于路徑上最大傳輸單位長(zhǎng)度(MTU)的問(wèn)題。由于一些策略會(huì)在報(bào)文中添加簽名,從而增加了報(bào)文長(zhǎng)度,這將可能導(dǎo)致添加簽名后的報(bào)文長(zhǎng)度大于傳輸路徑上的最大允許報(bào)文長(zhǎng)度,進(jìn)而報(bào)文會(huì)傳播失敗。為了處理這種情況,本方法需要對(duì)報(bào)文傳播失敗的節(jié)點(diǎn)處回送的互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文進(jìn)行處理,由于這個(gè)報(bào)文會(huì)對(duì)發(fā)送計(jì)算機(jī)建議一個(gè)報(bào)文發(fā)送的最大長(zhǎng)度,本方法將這個(gè)長(zhǎng)度減少一個(gè)簽名的長(zhǎng)度,這就使得發(fā)送計(jì)算機(jī)對(duì)發(fā)送的報(bào)文添加簽名后不會(huì)大于整個(gè)路徑上的最大報(bào)文長(zhǎng)度。
為了使得該方法對(duì)于路由器透明,兼容現(xiàn)有的路由器實(shí)現(xiàn),本方法不會(huì)修改數(shù)據(jù)鏈路層的報(bào)頭。使得任何基于數(shù)據(jù)鏈路層的機(jī)制,都不會(huì)受到該方法的影響。
方法總體結(jié)構(gòu)如圖1所示。其中過(guò)濾規(guī)則生成引擎接收來(lái)自控制路徑的通訊報(bào)文,并且更新過(guò)濾規(guī)則表。數(shù)據(jù)報(bào)文只被過(guò)濾引擎處理。過(guò)濾引擎處理與過(guò)濾報(bào)文有關(guān)的工作,例如直接根據(jù)過(guò)濾規(guī)則表過(guò)濾報(bào)文,也有可能進(jìn)行簽名的添加、刪除和檢查工作。過(guò)濾引擎的工作是和過(guò)濾策略緊密相關(guān)的。
過(guò)濾規(guī)則生成引擎按照如下的步驟工作步驟1過(guò)濾規(guī)則生成引擎的工作流程如圖2所示,由兩個(gè)并行的流程組成。過(guò)濾規(guī)則生成引擎接收兩種控制報(bào)文,并根據(jù)內(nèi)容來(lái)切換過(guò)濾規(guī)則表和更新規(guī)則表內(nèi)容。
步驟1.1過(guò)濾規(guī)則生成引擎從控制路徑接收過(guò)濾策略更改報(bào)文,將整個(gè)方法的過(guò)濾策略更改為由過(guò)濾策略更改報(bào)文指示的策略,并且將整個(gè)方法所使用的過(guò)濾規(guī)則表切換到當(dāng)前策略相應(yīng)的過(guò)濾規(guī)則表,以方便過(guò)濾引擎在相應(yīng)過(guò)濾規(guī)則表中進(jìn)行查找。
步驟1.2過(guò)濾規(guī)則生成引擎從控制路徑接收過(guò)濾規(guī)則表信息更新報(bào)文,根據(jù)報(bào)文內(nèi)容獲知需要更新的過(guò)濾規(guī)則表和表項(xiàng),并更新對(duì)應(yīng)的過(guò)濾規(guī)則表相應(yīng)表項(xiàng)上的信息。
過(guò)濾引擎按照如下的步驟工作步驟2過(guò)濾引擎的工作流程如圖3所示。過(guò)濾引擎需要處理進(jìn)出自治域兩個(gè)方向的報(bào)文,這兩種報(bào)文的區(qū)別在于過(guò)濾引擎獲取這個(gè)報(bào)文的來(lái)源不同。過(guò)濾引擎對(duì)這兩種報(bào)文的處理方法不同,各自處理流程如下步驟2.1通過(guò)轉(zhuǎn)發(fā)引擎到達(dá)過(guò)濾引擎的報(bào)文是來(lái)自自治域以外的報(bào)文,過(guò)濾引擎對(duì)這種報(bào)文的處理步驟如下步驟2.1.1過(guò)濾引擎從轉(zhuǎn)發(fā)引擎獲取報(bào)文,解析出報(bào)文中的源、目的地址信息。
步驟2.1.2使用步驟2.1.1中報(bào)文的源、目的地址前綴查當(dāng)前的過(guò)濾規(guī)則表中的前綴映射表,根據(jù)查表結(jié)果是否滿(mǎn)足當(dāng)前策略的要求判斷是否對(duì)報(bào)文進(jìn)行過(guò)濾。如果需要過(guò)濾,則直接過(guò)濾掉報(bào)文;如果不需要,則進(jìn)入下一步處理。這個(gè)步驟根據(jù)各個(gè)策略所需要檢查內(nèi)容的不同而有所區(qū)別。
步驟2.1.3*可選步驟,簽名處理模塊檢查和刪除簽名。如果當(dāng)前的策略要求對(duì)2.1.2中報(bào)文中所含的簽名進(jìn)行檢查,則獲取報(bào)文地址前綴對(duì)應(yīng)的自治域編號(hào),然后根據(jù)接收端簽名表的該自治域的相應(yīng)表項(xiàng)檢查報(bào)文中逐跳可選項(xiàng)(Hop-by-Hop option)位置的簽名的正確性,如果簽名不正確或者該報(bào)文未含有簽名,則過(guò)濾報(bào)文,否則去掉此報(bào)文中的簽名,進(jìn)入下一步處理。
步驟2.1.4*可選步驟,報(bào)文邊界標(biāo)記模塊。如果當(dāng)前的過(guò)濾策略要求對(duì)步驟2.1.2中報(bào)文進(jìn)行邊界標(biāo)記,則在此報(bào)文中標(biāo)記指定內(nèi)容。該內(nèi)容來(lái)自于過(guò)濾規(guī)則生成引擎的指定的策略報(bào)文標(biāo)記字段。
步驟2.1.5將步驟2.1.4中報(bào)文交給朝向自治域內(nèi)部的網(wǎng)絡(luò)接口轉(zhuǎn)發(fā)。
步驟2.2從朝向自治域內(nèi)部的網(wǎng)絡(luò)接口中接收到的報(bào)文是出自治域方向的報(bào)文,過(guò)濾引擎對(duì)這種報(bào)文的處理如下步驟2.2.1過(guò)濾引擎從朝向自治域內(nèi)部的網(wǎng)絡(luò)接口中接收?qǐng)?bào)文。
步驟2.2.2*可選步驟,簽名處理模塊添加簽名。判斷當(dāng)前的過(guò)濾策略是否要求對(duì)步驟2.2.1中報(bào)文進(jìn)行添加簽名處理,如果需要,則根據(jù)報(bào)文的源、目的地址信息在發(fā)送端簽名表中查找相應(yīng)的簽名信息,并在此報(bào)文的逐跳可選項(xiàng)中添加簽名,如果報(bào)文不存在逐跳可選項(xiàng),則增加逐跳可選項(xiàng)后再在報(bào)文添加簽名。
步驟2.2.3將步驟2.2.2中的報(bào)文交給轉(zhuǎn)發(fā)引擎處理。
方法中加入了對(duì)互聯(lián)網(wǎng)控制信息協(xié)議(ICMP)報(bào)文的處理模塊,此模塊作為過(guò)濾引擎的子模塊,處理流程如圖6所示。
步驟3本方法對(duì)于來(lái)自自治域外部接口的互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文(ICMP)處理如下。
步驟3.1判斷報(bào)文是否為互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文,且報(bào)文類(lèi)型是報(bào)文過(guò)長(zhǎng)(Packet-Too-Big)信息,如果是,進(jìn)入下一步,如果不是,則退出模塊,將報(bào)文交還給過(guò)濾引擎。
步驟3.2判斷報(bào)文的目的地址是否屬于本地自治域。如果是,進(jìn)入下一步處理。如果不是,則退出此模塊,將報(bào)文交還給過(guò)濾引擎。
步驟3.3判斷報(bào)文內(nèi)部攜帶的原報(bào)文摘要信息中的目的地址是否在整個(gè)端到端真實(shí)源地址聯(lián)盟中,如果是,將其中所建議的最大傳輸分組長(zhǎng)度信息減少一個(gè)簽名長(zhǎng)度,并重新計(jì)算互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文校驗(yàn)和,并在報(bào)文相應(yīng)位置填充該校驗(yàn)和。如果不是,退出此模塊,將報(bào)文交還給過(guò)濾引擎。
整個(gè)方法的工作步驟如下,如圖5所示,其中步驟二、三是并行的步驟一過(guò)濾規(guī)則生成引擎按照步驟1的說(shuō)明,從控制鏈路獲取過(guò)濾規(guī)則更新報(bào)文和過(guò)濾策略更改報(bào)文,并生成過(guò)濾規(guī)則表和切換過(guò)濾策略。此后過(guò)濾規(guī)則生成引擎不斷監(jiān)聽(tīng)控制路徑,獲取報(bào)文策略更改報(bào)文和規(guī)則更新報(bào)文。
步驟二過(guò)濾引擎從內(nèi)部接口獲取到普通數(shù)據(jù)報(bào)文,這類(lèi)報(bào)文是出自治域方向的報(bào)文。過(guò)濾引擎按照步驟2.2的說(shuō)明處理報(bào)文。
步驟三過(guò)濾引擎從轉(zhuǎn)發(fā)引擎獲取普通數(shù)據(jù)報(bào)文,這類(lèi)報(bào)文是進(jìn)自治域方向的報(bào)文。如果獲取的是互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文,并且當(dāng)前策略對(duì)報(bào)文有添加簽名處理,則根據(jù)步驟3的說(shuō)明,過(guò)濾引擎對(duì)互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文進(jìn)行處理。如果不是互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文,則過(guò)濾引擎按照步驟2.1的說(shuō)明處理報(bào)文。
具體應(yīng)用實(shí)例如圖6所示。搭載了本IPv6真實(shí)源地址過(guò)濾方法的過(guò)濾設(shè)備被配置在自治域邊界路由器向外的接口處。以該方法嵌入了SPM策略為例說(shuō)明應(yīng)用情況。
首先,SPM策略的控制服務(wù)器之間會(huì)交換簽名信息和各個(gè)自治域的前綴信息??刂品?wù)器對(duì)過(guò)濾設(shè)備的過(guò)濾規(guī)則生成引擎發(fā)送各個(gè)自治域的前綴信息和簽名信息報(bào)文。過(guò)濾設(shè)備的過(guò)濾規(guī)則生成引擎接收到報(bào)文,解析報(bào)文信息,并將自治域的前綴信息添加到前綴映射表,相應(yīng)的簽名信息添加到發(fā)送端簽名表和接收端簽名表。這樣就完成了對(duì)過(guò)濾方法過(guò)濾規(guī)則表的初始配置。需要注意的是,SPM方法的過(guò)濾規(guī)則是動(dòng)態(tài)更新的,在初始化配置之后,每隔一定時(shí)間,過(guò)濾規(guī)則生成引擎會(huì)收到控制服務(wù)器發(fā)送過(guò)來(lái)的過(guò)濾信息更新報(bào)文,過(guò)濾規(guī)則生成引擎將根據(jù)這些報(bào)文不斷更新過(guò)濾規(guī)則表信息。經(jīng)過(guò)控制服務(wù)器的配置操作,過(guò)濾規(guī)則表的自治域前綴映射表中保留的是真實(shí)源地址聯(lián)盟中所有自治域的前綴和自治域編號(hào)的映射關(guān)系,發(fā)送端簽名表中保存的是報(bào)文向聯(lián)盟內(nèi)自治域發(fā)送時(shí)所需要附帶的簽名列表,接收端簽名表中保存的是接收到的來(lái)自聯(lián)盟的報(bào)文所應(yīng)該附帶的簽名列表。在實(shí)例中,過(guò)濾規(guī)則表的前綴映射表中保存的是自治域1001的前綴ff01::/16和自治域1002的前綴ff02::/16,發(fā)送方簽名表和接受方簽名表中保存的是自治域1001和1002對(duì)應(yīng)的簽名ffff1001和ffff1002。
在完成對(duì)過(guò)濾規(guī)則表初始配置之后,SPM的控制服務(wù)器通過(guò)發(fā)送過(guò)濾策略更改報(bào)文將過(guò)濾設(shè)備的過(guò)濾策略切換到SPM。完成切換之后,過(guò)濾設(shè)備開(kāi)始按照SPM方法對(duì)經(jīng)過(guò)的報(bào)文進(jìn)行過(guò)濾。
過(guò)濾設(shè)備的過(guò)濾引擎對(duì)于出自治域的報(bào)文,會(huì)首先檢查報(bào)文的源地址是否屬于本地自治域,如果不屬于,則直接將報(bào)文交給路由引擎處理。如果屬于,則檢查報(bào)文的目的地址是否在真實(shí)源地址聯(lián)盟內(nèi),即目的地址前綴是否在過(guò)濾規(guī)則表的前綴映射表中,如果在,則在發(fā)送端簽名表中查找到相應(yīng)的簽名,在報(bào)文逐跳可選項(xiàng)位置添加簽名,然后將報(bào)文交給路由引擎轉(zhuǎn)發(fā)。實(shí)例中,過(guò)濾設(shè)備在報(bào)文中添加了簽名ffff1001,正是報(bào)文要發(fā)送給自治域1002所應(yīng)該具有的簽名。
過(guò)濾設(shè)備的過(guò)濾引擎對(duì)于到達(dá)自治域的報(bào)文,會(huì)首先檢查報(bào)文的目的地址是否屬于本地自治域,如果不屬于,則直接轉(zhuǎn)發(fā)報(bào)文,否則檢查報(bào)文的源地址是否在真實(shí)源地址聯(lián)盟中,即源地址是否在當(dāng)前的前綴映射表中。如果在,則檢查報(bào)文的簽名和接收端簽名表中的相應(yīng)表項(xiàng)是否一致。如果簽名不一致,則過(guò)濾報(bào)文,如果簽名一致,則去掉簽名后轉(zhuǎn)發(fā)報(bào)文。實(shí)例中自治域1002的過(guò)濾設(shè)備檢查到報(bào)文中的簽名ffff1001是正確的簽名,便去掉簽名后將報(bào)文交給路由器。
同時(shí),由于SPM策略是采用了添加簽名的認(rèn)證機(jī)制,所以本方法需要對(duì)互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文進(jìn)行截獲和修改。SPM在報(bào)文中添加的簽名字段長(zhǎng)度是16個(gè)字節(jié)長(zhǎng)。對(duì)于到達(dá)本地的互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文,如果是報(bào)文過(guò)長(zhǎng)類(lèi)型的,則將其中建議的最大傳輸單位長(zhǎng)度減少16,并重新計(jì)算校驗(yàn)和,填充到報(bào)文。
權(quán)利要求
1一種開(kāi)放式真實(shí)IPv6源地址過(guò)濾與驗(yàn)證方法,其特征在于,依次含有以下步驟步驟(1),在位于自治域邊界路由器向外的接口處,且與該路由器協(xié)同工作的一個(gè)過(guò)濾設(shè)備上配置以下模塊過(guò)濾規(guī)則生成引擎,根據(jù)自治域控制服務(wù)器基于TCP協(xié)議發(fā)送的通訊報(bào)文動(dòng)態(tài)生成過(guò)濾規(guī)則表并且切換過(guò)濾規(guī)則;所述過(guò)濾規(guī)則表由前綴映射表、自治域發(fā)送端簽名表和自治域接收端簽名表共三個(gè)部分組成,其中前綴映射表是把地址前綴映射到對(duì)應(yīng)策略所需的數(shù)據(jù)的映射表,采用基于最長(zhǎng)前綴匹配來(lái)進(jìn)行搜索的一種Trie樹(shù),每個(gè)節(jié)點(diǎn)保存對(duì)應(yīng)策略所需要的數(shù)據(jù);自治域發(fā)送端簽名表保存有自治域發(fā)送報(bào)文到其他自治域所應(yīng)該給報(bào)文添加的簽名;自治域接收端簽名表保存有自治域接收到來(lái)自其他自治域的報(bào)文時(shí),這些報(bào)文所應(yīng)該具有的正確簽名,簽名表由一個(gè)數(shù)組實(shí)現(xiàn),數(shù)組的索引是自治域的編號(hào),數(shù)組的內(nèi)容是相應(yīng)的簽名;所述通訊報(bào)文含有IPv6報(bào)頭、TCP報(bào)頭、策略類(lèi)型號(hào)、報(bào)文類(lèi)型號(hào)以及信息更新字段,其中策略是指過(guò)濾策略,多種過(guò)濾策略可以被選擇,以下5種是已經(jīng)被實(shí)現(xiàn)并驗(yàn)證的SPM、源地址強(qiáng)制認(rèn)證協(xié)議SAVE、入口過(guò)濾、基于端到端簽名的策略、以及基于路徑標(biāo)記的策略,其中SPM是Spoofing Prevention Method的縮寫(xiě);策略類(lèi)型號(hào)是各個(gè)策略的編號(hào);報(bào)文類(lèi)型指定了當(dāng)前報(bào)文是策略切換報(bào)文還是還是規(guī)則信息更新報(bào)文;信息更新報(bào)文是一個(gè)可變長(zhǎng)字段,更新的是前綴映射字段或者發(fā)送端簽名表、接收端簽名表;過(guò)濾引擎,根據(jù)所選過(guò)濾規(guī)則表的表項(xiàng)來(lái)判斷是否對(duì)IPv6報(bào)文進(jìn)行過(guò)濾,并且有選擇地基于簽名的過(guò)濾規(guī)則表的內(nèi)容決定是否對(duì)報(bào)文進(jìn)行添加、刪除和檢查簽名,或者對(duì)報(bào)文進(jìn)行邊界標(biāo)記操作,或者進(jìn)行互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文的處理,因此,過(guò)濾引擎還含有簽名模塊、邊界標(biāo)記模塊和互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文處理模塊;步驟(2),所述過(guò)濾與驗(yàn)證方法依次按以下步驟實(shí)現(xiàn)步驟(2.1),過(guò)濾規(guī)則生成引擎從控制鏈路接收到所述控制服務(wù)器送達(dá)的過(guò)濾策略更改報(bào)文,解析報(bào)文后,更新過(guò)濾策略,并把過(guò)濾規(guī)則表切換到與當(dāng)前策略相應(yīng)的過(guò)濾規(guī)則表;步驟(2.2),過(guò)濾規(guī)則生成引擎從另一控制鏈路接收所述控制服務(wù)器送達(dá)的過(guò)濾規(guī)則表信息更新報(bào)文,解析該報(bào)文后,更新相應(yīng)過(guò)濾規(guī)則表的相應(yīng)表項(xiàng)中的信息;步驟(2.3),過(guò)濾引擎從朝向自治域內(nèi)部的網(wǎng)絡(luò)接口中接收到出自治域方向的普通數(shù)據(jù)報(bào)文,判斷當(dāng)前策略是否需要對(duì)接收的報(bào)文進(jìn)行簽名處理,如果需要,則根據(jù)報(bào)文的源、目的地址信息在發(fā)送端簽名表中查找相應(yīng)的簽名信息,并在報(bào)文的逐跳可選項(xiàng)中添加簽名,若不存在逐跳可選項(xiàng),則增加逐跳可選項(xiàng)之后再添加簽名;若不需要簽名處理,則把該報(bào)文交給所述邊界路由器的轉(zhuǎn)發(fā)引擎處理;步驟(2.4),過(guò)濾引擎從所述轉(zhuǎn)發(fā)引擎接收到進(jìn)自治域方向的普通數(shù)據(jù)報(bào)文后,若判斷獲取的是互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文,且當(dāng)前策略對(duì)報(bào)文又添加簽名處理,則按以下步驟處理步驟(2.4.1),若互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文的類(lèi)型是報(bào)文過(guò)長(zhǎng)Packer-Too-Big,則判斷報(bào)文的目的地址是否屬于本地自治域,如果是,執(zhí)行下一步驟步驟(2.4.2),判斷報(bào)文內(nèi)部攜帶的原報(bào)文摘要信息中目的地址是否在整個(gè)端到端真實(shí)源地址聯(lián)盟中,如果是,把該報(bào)文建議的最大傳輸分組長(zhǎng)度信息減少一個(gè)簽名長(zhǎng)度,并重新計(jì)算互聯(lián)網(wǎng)控制信息協(xié)議的報(bào)文校驗(yàn)和;步驟(2.5),過(guò)濾引擎從轉(zhuǎn)發(fā)引擎接收到的進(jìn)自治域方向的普通數(shù)據(jù)報(bào)文為非互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文,則按以下步驟處理步驟(2.5.1),過(guò)濾引擎從所獲取的來(lái)自自治域外的報(bào)文中,解析出源、目的地址信息;步驟(2.5.2),根據(jù)步驟(2.5.1)得到的源、目的地址查當(dāng)前過(guò)濾規(guī)則表中的前綴映射表,根據(jù)查表結(jié)果是否滿(mǎn)足當(dāng)前策略的要求判斷是否對(duì)報(bào)文進(jìn)行過(guò)濾,若需要過(guò)濾,則直接過(guò)濾報(bào)文;否則執(zhí)行下一步驟;步驟(2.5.3),若當(dāng)前的策略要求對(duì)報(bào)文中的簽名進(jìn)行檢查,則簽名處理模塊便獲取報(bào)文源地址前綴對(duì)應(yīng)的自治域編號(hào),再根據(jù)接收端簽名表的該自治域的相應(yīng)表項(xiàng)檢查報(bào)文中逐跳可選項(xiàng)位置的簽名是否與接收端簽名表中的一致,若不一致,或報(bào)文中不含有簽名,則過(guò)濾報(bào)文;否則去掉簽名,執(zhí)行下一步驟;步驟(2.5.4),判斷當(dāng)前的策略是否要求對(duì)步驟(2.5.3)得到的報(bào)文進(jìn)行邊界標(biāo)記,如果不需要,則把該報(bào)文交給朝向自治域內(nèi)部的網(wǎng)絡(luò)接口轉(zhuǎn)發(fā);如果需要,則在報(bào)文中標(biāo)記指定內(nèi)容,再轉(zhuǎn)發(fā)報(bào)文。
全文摘要
本發(fā)明屬于真實(shí)IPv6源地址過(guò)濾認(rèn)證技術(shù)領(lǐng)域,其特征在于,在自治域邊界路由器出口處的一個(gè)過(guò)濾設(shè)備上配置了一個(gè)與該路由器協(xié)同工作的過(guò)濾規(guī)則生成引擎和過(guò)濾引擎,前者根據(jù)自治域控制服務(wù)器的通訊報(bào)文生成某種真實(shí)源地址過(guò)濾策略的過(guò)濾規(guī)則表,并切換過(guò)濾策略,這些策略包括SPM、SAVE、入口過(guò)濾等等,也可以是嵌入的其他策略;后者具有互聯(lián)網(wǎng)控制信息協(xié)議報(bào)文處理模塊、簽名處理模塊和邊界標(biāo)記模塊,可根據(jù)過(guò)濾策略對(duì)來(lái)自?xún)?nèi)部網(wǎng)絡(luò)接口或來(lái)自邊界路由器轉(zhuǎn)發(fā)引擎的報(bào)文進(jìn)行驗(yàn)證和過(guò)濾。本發(fā)明可靈活嵌入過(guò)濾策略,過(guò)濾規(guī)則表為各種過(guò)濾策略的嵌入提供了統(tǒng)一而且高效的數(shù)據(jù)層面支持。
文檔編號(hào)H04L12/66GK1953373SQ200610113188
公開(kāi)日2007年4月25日 申請(qǐng)日期2006年9月19日 優(yōu)先權(quán)日2006年9月19日
發(fā)明者畢軍, 吳建平, 葉明江, 任罡, 姚廣 申請(qǐng)人:清華大學(xué)