專利名稱:通過路由器簽名提高ip網(wǎng)絡(luò)安全性的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)絡(luò)和通信領(lǐng)域,主要是一種通過路由器簽名提高IP網(wǎng)絡(luò)安全性的方法。這種在互聯(lián)網(wǎng)中使路由器在所轉(zhuǎn)發(fā)的IP包上加上簽名的方法,目的是在發(fā)生問題時(shí)可以追尋IP包的來源,從而提高IP網(wǎng)絡(luò)的安全性。
背景技術(shù):
IP網(wǎng)絡(luò)的安全問題是個(gè)很復(fù)雜的問題,其不安全性有著多方面的原因。其中的一個(gè)重要原因就是即使對于已知屬于黑客攻擊、由黑客發(fā)來的IP包,也幾乎不可能查明其真實(shí)的來源,因而只能把有關(guān)的IP包丟棄或阻擋在外了事。這樣,對攻擊者就既沒有反制的措施,也沒有嚇阻的作用。
當(dāng)然,在IP包中有發(fā)送者的IP地址、即“源地址”,但這是可以假冒的。黑客發(fā)往被攻擊目標(biāo)的IP包可以假冒別人的IP地址,而對于被攻擊目標(biāo)按此地址回復(fù)的IP包則可以設(shè)法加以攔截。于是,即使被攻擊目標(biāo)察覺了,按有關(guān)IP包中的源地址找到的也只是被假冒的無辜者。
之所以會(huì)如此有兩方面的原因。第一個(gè)原因是IP包中不帶有與其傳輸蹤跡有關(guān)、而又難以偽造的信息。第二個(gè)原因是沿途各路由器并不記錄(那怕是暫時(shí)記錄)屬于同一個(gè)“流”、即同一對節(jié)點(diǎn)間的流量的走向。這里的第一個(gè)原因源自IP包的格式(從而IP規(guī)程)。而第二個(gè)原因則來自IP網(wǎng)的基本特性,即IP網(wǎng)在網(wǎng)絡(luò)層是“無連接”的,并且網(wǎng)絡(luò)設(shè)備(路由器)是“無狀態(tài)”的。
顯然,由于涉及IP網(wǎng)的基本特性,對于上述的第二個(gè)原因是很難作什么改變的。而對于上述的第一個(gè)原因,則還存在改變的余地,只是這種改變必須是在現(xiàn)有IP規(guī)程的框架內(nèi)進(jìn)行并與之兼容。
其實(shí)在現(xiàn)有的IP規(guī)程中有兩個(gè)可選項(xiàng)是與包的傳輸蹤跡有關(guān)的。一個(gè)是“記錄路徑(Record Route)”可選項(xiàng)。這個(gè)可選項(xiàng)要求沿途的路由器在所轉(zhuǎn)發(fā)的IP包的包頭中記錄下它的IP地址(由于包頭大小的限制,最多只能記錄前9個(gè)路由器的IP地址)。另一個(gè)是“時(shí)戳(Timestamp)”可選項(xiàng)。這個(gè)可選項(xiàng)可以要求沿途的路由器在所轉(zhuǎn)發(fā)IP包的包頭中記錄下它的IP地址和當(dāng)時(shí)的時(shí)間。然而,這兩個(gè)可選項(xiàng)都無助于上述問題的解決。這是因?yàn)槭紫龋F(xiàn)有IP規(guī)程中可選項(xiàng)的使用與否是由IP包的源節(jié)點(diǎn)決定的,而不是由途中的路由器強(qiáng)制加入,攻擊者當(dāng)然不會(huì)主動(dòng)要求使用這些可選項(xiàng)。第二,實(shí)際上更為重要的是,攻擊者滿可以偽造出一串IP地址,而受攻擊的一方無從查驗(yàn)。
所以,解決這個(gè)問題的方案必須滿足幾個(gè)條件1.允許路由器強(qiáng)行在IP包頭中插入與其傳輸蹤跡有關(guān)的信息。
2.所插入的信息要難以偽造。
3.受攻擊方可以根據(jù)所插入的信息進(jìn)行查驗(yàn),以判明其真?zhèn)巍?br>
4.與現(xiàn)有IP規(guī)程兼容。
本發(fā)明所提供的正是這樣一種方法。
當(dāng)然,IP網(wǎng)絡(luò)的安全問題是個(gè)很復(fù)雜的問題,其不安全性有著許多方面的原因,所以不能指望找到一種單一的手段來一勞永逸地從總體上解決這個(gè)問題,任何能在一定程度上提高IP網(wǎng)絡(luò)安全性的方法都是值得考慮采用的。
發(fā)明內(nèi)容
針對上述的特定問題,即在受到攻擊時(shí)找到攻擊來源的問題,以及解決這個(gè)問題的方案必須滿足的幾個(gè)條件,本發(fā)明提供了一種通過路由器簽名提高IP網(wǎng)絡(luò)安全性的方法,帶有路由功能的網(wǎng)絡(luò)設(shè)備在所轉(zhuǎn)發(fā)的IP包中依次留下與包的內(nèi)容掛鉤、難以偽造、并且可以查驗(yàn)的“簽名”信息。具體方法如下(一)在現(xiàn)有IPv4規(guī)程中增添一個(gè)“簽名”可選項(xiàng),要求IP包沿途的路由器(或網(wǎng)關(guān))在(包頭中)該可選項(xiàng)中記錄其IP地址和經(jīng)過加密的附加校驗(yàn)信息。
(二)定義一組單向校驗(yàn)/加密算法。最簡單的是“驗(yàn)和(checksum)”,也可以是雜湊、CRC,等等。
(三)每個(gè)路由器(或網(wǎng)關(guān))的管理員都可以為其設(shè)置一組參數(shù)(稱為“鍵值”),用于上述單向校驗(yàn)/加密算法。
(四)“簽名”可選項(xiàng)的使用可以由源節(jié)點(diǎn)主動(dòng)要求,也可以由路由器(或網(wǎng)關(guān))強(qiáng)行插入。只要(包頭)空間允許,每個(gè)路由器(或網(wǎng)關(guān))就順次插入/填寫一個(gè)“簽名”可選項(xiàng)。
(五)“簽名”可選項(xiàng)中經(jīng)過加密的附加信息由兩個(gè)部分構(gòu)成●一個(gè)校驗(yàn)碼。校驗(yàn)碼與包的內(nèi)容掛鉤,由具體的路由器(或網(wǎng)關(guān))隨機(jī)選擇一個(gè)校驗(yàn)算法和鍵值的組合,對包的內(nèi)容校驗(yàn)碼(TCP報(bào)頭或UDP報(bào)頭中的校驗(yàn)碼)或內(nèi)容的前N個(gè)字節(jié)進(jìn)行計(jì)算而得。包的源地址和目標(biāo)地址也可以計(jì)算在內(nèi)。進(jìn)一步,簽名者的地址也可以計(jì)算在內(nèi)。
●一個(gè)算法與參數(shù)的索引值。表明校驗(yàn)碼是由哪一種算法和鍵值的組合計(jì)算所得。
(六)接收方平時(shí)無需檢查各“簽名”可選項(xiàng)的內(nèi)容,只是對可疑的包記錄下其包頭、包括各個(gè)“簽名”可選項(xiàng),包頭后面的若干字節(jié)以及包的到達(dá)時(shí)間作為內(nèi)容依據(jù)。
(七)確認(rèn)受到攻擊后,可以就懷疑屬于攻擊行為的包所記錄下的信息,由人工輔助或通過相應(yīng)規(guī)程向留下了簽名的各路由器(或網(wǎng)關(guān))查驗(yàn)。各路由器(或網(wǎng)關(guān))根據(jù)這些信息、以及簽名中的索引值所表明的當(dāng)時(shí)所用的校驗(yàn)算法和鍵值的組合,重新計(jì)算出一個(gè)校驗(yàn)碼,并與簽名中的校驗(yàn)碼比對,以判定簽名的真?zhèn)?。這樣,就可以大大縮小查找攻擊者的范圍。
這里校驗(yàn)碼的長度、校驗(yàn)算法的個(gè)數(shù)、具體的算法、參數(shù)的個(gè)數(shù)、以及作為內(nèi)容依據(jù)的字節(jié)個(gè)數(shù)或具體的哪幾個(gè)字節(jié)、以及可選項(xiàng)的具體格式等等均屬實(shí)現(xiàn)細(xì)節(jié),這些細(xì)節(jié)上的變化并不影響本發(fā)明可以在包頭中強(qiáng)制加入與其傳輸蹤跡有關(guān)、而又難以偽造的信息的實(shí)質(zhì)。
在實(shí)際使用中,并不要求所有路由器都實(shí)現(xiàn)對“簽名”可選項(xiàng)的支持,例如骨干路由器就大可不必為此而進(jìn)行升級,因?yàn)楣粽邘缀醪豢赡苤苯舆M(jìn)入骨干網(wǎng)。但是網(wǎng)絡(luò)服務(wù)提供商(ISP)的路由器以及各單位的網(wǎng)關(guān)則都需要支持“簽名”可選項(xiàng)。只要ISP的路由器和各單位的網(wǎng)關(guān)都支持“簽名”可選項(xiàng),對攻擊者的查找就容易多了,對攻擊者的嚇阻作用也就不小了。至于不支持“簽名”可選項(xiàng)的路由器,則視之為“未知可選項(xiàng)”,其正常的路由/轉(zhuǎn)發(fā)功能并不受到影響。
還應(yīng)指出,作為一種方法,這不僅是針對IPv4的,同樣也適用于IPv6,只是具體的實(shí)現(xiàn)略有不同。
圖1是用來說明采用本發(fā)明的方法以后受到攻擊者怎樣根據(jù)簽名信息調(diào)查攻擊來源的示意圖。
具體實(shí)施例方式
下面通過針對IPv4的實(shí)施例對本發(fā)明的實(shí)施作進(jìn)一步介紹IPv4包的頭部至少由5個(gè)32位“長字”構(gòu)成,即20字節(jié)。這5個(gè)長字劃分成許多位段,其中“頭部長度”HLEN位段的值一般是5,表示5個(gè)長字(20個(gè)字節(jié))。如果大于5就表示在頭部和所載運(yùn)的數(shù)據(jù)之間還有可選項(xiàng)。頭部長度是一個(gè)4位的位段,其最大值為15、即頭部的最大長度為60字節(jié),所以最多有40字節(jié)可以用于可選項(xiàng)(或者,按本人的另一項(xiàng)發(fā)明專利申請所述,如果IPv4包頭中的一個(gè)擴(kuò)展標(biāo)志位為1,就表示帶有用于可選項(xiàng)的擴(kuò)展部,擴(kuò)展部的長度不計(jì)入包頭,但計(jì)入包的總長度,所以是“外掛”的可選項(xiàng),其長度不受40字節(jié)的限制)。
這里要介紹兩種現(xiàn)有的IPv4可選項(xiàng)。
一種是“無操作(NOP)”可選項(xiàng),其格式如下
無操作可選項(xiàng)只有一個(gè)字節(jié)的操作代碼,其數(shù)值為1。顧名思義,路由器對無操作可選項(xiàng)不進(jìn)行任何操作。無操作可選項(xiàng)的用途只是占據(jù)空間。其余IPv4可選項(xiàng)的長短不一,而有些可選項(xiàng)又要求與長字或短字邊界對齊,此時(shí)就需要用無操作可選項(xiàng)填補(bǔ)空間。
另一種是“時(shí)戳(Timestamp)”可選項(xiàng),其格式如下
時(shí)戳可選項(xiàng)的操作代碼是68,然后是一個(gè)字節(jié)的可選項(xiàng)長度。接著是一個(gè)字節(jié)的指針,它總是指向可選項(xiàng)中第一個(gè)尚未填寫的位置??蛇x項(xiàng)的第一個(gè)長字的最低4位都是標(biāo)志位,其中的最低位為1表示要求每個(gè)節(jié)點(diǎn)既填寫IP地址又填寫時(shí)間標(biāo)記(均為32位),為0則表示可選項(xiàng)中不含IP地址,因而只需填寫時(shí)間標(biāo)記(可選項(xiàng)的長度也就隨之減小)。
現(xiàn)將本發(fā)明針對IPv4的實(shí)施具體說明如下1.在IPv4規(guī)程的包頭可選項(xiàng)中增加一個(gè)新的可選項(xiàng)“簽名”,其格式如下所示。
每個(gè)簽名可選項(xiàng)的大小為8個(gè)字節(jié),即64位,由4個(gè)位段構(gòu)成●操作代碼,8位,建議采用數(shù)值164。
●校驗(yàn)計(jì)算索引號(hào),8位。校驗(yàn)計(jì)算索引號(hào)分成兩截,表示計(jì)算中使用了哪兩個(gè)具體參數(shù)(也可以分成更多截以使用更多參數(shù);也可以不分截而只用一個(gè)參數(shù))。這個(gè)位段的具體用法不屬于本發(fā)明的內(nèi)容,可以由路由器制造商自行定義,附錄中是一個(gè)可行的實(shí)例。
●校驗(yàn)碼,16位,這就是“簽名”。校驗(yàn)碼的生成見下面的說明及附錄。
●IP地址32位,簽名者的IP地址,即其用來發(fā)送該IP包的網(wǎng)絡(luò)接口上的IP地址。
2.簽名可選項(xiàng)的插入。為減輕路由器的負(fù)擔(dān),包的源端應(yīng)為簽名可選項(xiàng)的插入在包頭中或擴(kuò)展部中預(yù)留一定的空間,并暫時(shí)把每個(gè)字節(jié)都設(shè)置成“無操作”可選項(xiàng)。為提高處理效率,也可以再定義一個(gè)“預(yù)留空間”可選項(xiàng),其格式如下
●操作碼位段,8位,建議采用數(shù)值166。
●長度位段,8位,其數(shù)值以32位長字為單位。
●保留,16位。
●空白,與32位長字邊界對齊。
3.路由器應(yīng)在所轉(zhuǎn)發(fā)的包中插入自己的簽名可選項(xiàng)。預(yù)留空間不夠時(shí)可以在允許的大小范圍內(nèi)自行插入或擴(kuò)充預(yù)留空間,然后插入自己的簽名可選項(xiàng)。如有必要還須對預(yù)留空間可選項(xiàng)作出調(diào)整。
4.包的源節(jié)點(diǎn)也可以插入其自己的簽名可選項(xiàng)。
5.簽名可選項(xiàng)中校驗(yàn)碼的生成規(guī)則。
5.1以包的內(nèi)容、即其載荷部分為依據(jù)●如果是個(gè)UDP報(bào)文,就采用UDP報(bào)頭中的16位校驗(yàn)碼(checksum)位段為依據(jù)。
●如果是個(gè)TCP報(bào)文,就采用TCP報(bào)頭中的16位校驗(yàn)碼(checksum)位段為依據(jù)。
●如果既非UDP報(bào)文也非TCP報(bào)文,就以其前10個(gè)16位字的和為依據(jù)。
●包的源/目標(biāo)地址也可以計(jì)算在內(nèi)。
5.2計(jì)算方法由各路由器制造商自定,不屬于本發(fā)明的內(nèi)容,附錄中是一個(gè)可行的實(shí)例。
6.接收者或者所配備的入侵檢測裝置對接收到的所有包進(jìn)行登記(Log),或?qū)ζ渲邪茨撤N入侵檢測方法(不在本發(fā)明范圍內(nèi))判定為可疑的包進(jìn)行登記。每項(xiàng)登記包含下列內(nèi)容,但不限于下列內(nèi)容
●包頭中的源地址和目標(biāo)地址。
●所有的簽名可選項(xiàng)(按次序)。
●UDP或TCP報(bào)文頭部的校驗(yàn)碼,或載荷的前20個(gè)字節(jié)。
●包的到達(dá)日期和時(shí)間。
7.查驗(yàn)。受攻擊者可以就有疑的IP包向留下了簽名的節(jié)點(diǎn)查詢,求證簽名的真實(shí)性。這種查詢、求證可以是人工的,也可以是通過計(jì)算機(jī)網(wǎng)絡(luò)輔助的,還可以是通過計(jì)算機(jī)網(wǎng)絡(luò)實(shí)時(shí)進(jìn)行的,具體的查驗(yàn)手段不屬于本發(fā)明內(nèi)容。請求查驗(yàn)者應(yīng)按第6條所列提供所記錄的信息和數(shù)據(jù)。受到查驗(yàn)的節(jié)點(diǎn)根據(jù)其校驗(yàn)碼的生成規(guī)則重作計(jì)算并加以比對,以判定真?zhèn)巍>唧w的算法不屬于本發(fā)明的內(nèi)容,可以參考附錄中的說明。
上面的第一項(xiàng)、第三項(xiàng)和第七項(xiàng)是本發(fā)明的核心所在。
需要特別指出的是作為一種具體的實(shí)現(xiàn),這里的一些細(xì)節(jié)并不是唯一的,而可以有所變化,但是細(xì)節(jié)的不同并不影響本發(fā)明的實(shí)質(zhì)。
圖1中“IP骨干網(wǎng)云狀”中的路由器均視“簽名”可選項(xiàng)為未知可選項(xiàng)而不予支持。但是,地處“邊沿”的路由器R1、R2、R3都支持“簽名”可選項(xiàng),這些路由器可以是某個(gè)ISP的路由器,也可以是某個(gè)“內(nèi)網(wǎng)”的網(wǎng)關(guān)。圖中的V為受到攻擊的節(jié)點(diǎn)。作為入侵檢測的手段,V記錄(Log)下每個(gè)可疑IP包的頭部及其載荷的校驗(yàn)碼或前20個(gè)字節(jié)。發(fā)現(xiàn)受到攻擊并找出一些可疑IP包的記錄之后,V的管理者可以就可疑IP包中各個(gè)路由器的簽名向具體路由器的管理者查詢求證。具體路由器的管理者根據(jù)查詢者提供的數(shù)據(jù)以及本路由器采用的算法和參數(shù)進(jìn)行驗(yàn)算,以確定簽名的真?zhèn)?參看附錄)。
假定某個(gè)IP包肯定屬于某次攻擊,而R1、R2、R3的簽名全真,則攻擊者一定在路由器(或網(wǎng)關(guān))R1的覆蓋范圍內(nèi),即R1下面的子網(wǎng)內(nèi)??墒侨鬜2(的簽名)為真但R1為偽,則攻擊者在R2和R1之間的某處。而若R3也為偽,那攻擊者就在本地了。
只要合理安排整個(gè)網(wǎng)絡(luò)的拓?fù)?,?yán)格骨干網(wǎng)的接入管理,就可以比較有效地查獲攻擊者。另一方面,由于這樣一來被查獲的可能大大增加了,對于攻擊者也是一種心理上的嚇阻。
為幫助理解,下面進(jìn)一步以圖1中的路由器R1為例說明簽名的生成。
假定R1面向公網(wǎng)(與R2相連)的端口的IP地址是140.252.13.34,這是個(gè)公網(wǎng)地址?,F(xiàn)在R1從局網(wǎng)一側(cè)接收到了一個(gè)IP包P,并且已經(jīng)確定應(yīng)該將P從面向公網(wǎng)的端口轉(zhuǎn)發(fā)出去,這就到了要在P中留下簽名的時(shí)候。
絕大部分IP包都是載運(yùn)著TCP或UDP報(bào)文的,這樣的IP包在其UDP報(bào)頭或TCP報(bào)頭中都有一個(gè)16位的校驗(yàn)碼。這報(bào)文校驗(yàn)碼是源節(jié)點(diǎn)根據(jù)報(bào)文的內(nèi)容計(jì)算出來的,目標(biāo)節(jié)點(diǎn)在接收到包文以后要重新計(jì)算一遍加以校驗(yàn)(計(jì)算方法是公開的),以確定報(bào)文的內(nèi)容在傳輸?shù)倪^程中并未改變。而如果所載運(yùn)的既非TCP報(bào)文又非UDP報(bào)文,那么一般都是些用于網(wǎng)絡(luò)控制的報(bào)文,這樣的報(bào)文一般不帶報(bào)文校驗(yàn)碼。但是這種報(bào)文一般都很小,其開頭20字節(jié)就足以涵蓋其關(guān)鍵信息,所以拿開頭20字節(jié)按16位“驗(yàn)和(checksum)”方法計(jì)算出一個(gè)校驗(yàn)碼就可以反映這報(bào)文的關(guān)鍵信息?,F(xiàn)在假定P是個(gè)載運(yùn)著TCP報(bào)文的包,并假定其16位報(bào)文校驗(yàn)碼的值如果用十進(jìn)制表示就是60123(16位無符號(hào)整數(shù)的數(shù)值范圍為0-65535)。這就是上述的第一個(gè)操作數(shù)A,它是與報(bào)文內(nèi)容密切相關(guān)的。注意這里為簡單起見并沒有把包頭中的源/目標(biāo)地址以及R1的地址計(jì)算進(jìn)去,實(shí)際上這些地址也可以納入驗(yàn)和計(jì)算。
為進(jìn)行簽名所需的加密/校驗(yàn)計(jì)算,R1首先要生成兩個(gè)隨機(jī)數(shù)p和r,p的范圍為0-7,r的范圍為0-31。暫且假定生成出來的p=3而r=27。如前所述,R1中有兩個(gè)數(shù)組PM[8]和RM[32]。數(shù)組PM[8]的8個(gè)元素都是16位質(zhì)數(shù),是從質(zhì)數(shù)表P[857]中隨機(jī)抽取(不重復(fù))的,并且每過一定時(shí)間(例如15分鐘)就換一下。數(shù)組RM[32]中的32個(gè)元素都是16位隨機(jī)數(shù)(不重復(fù)),也是每過一定時(shí)間就換一下。同時(shí),還要把這兩個(gè)數(shù)組的內(nèi)容和使用時(shí)段存入數(shù)據(jù)庫。由于此時(shí)生成的p=3和r=27,用于計(jì)算的兩個(gè)參數(shù)就是PM[3]和RM[27],假定PM[3]=11,RM[27]=31002。
第一步計(jì)算是將A與PM[3]相乘并以65536取模,實(shí)際上就是取乘積的低16位。所以第一步計(jì)算是X=60123×11(mod 65536)=661353(mod 65536)=5993然后,第二步計(jì)算是將X與RM[27]相加并以65536取模,實(shí)際上就是取和的低16位C=5993+31002(mod 65536)=36995(mod 65536)=36995于是,簽名中的IP地址為140.252.13.34,(簽名)校驗(yàn)碼為36995。至于索引編號(hào)則為123,它的高3位為3而低5位為27,即((3×32)+27)。最后生成的簽名可選項(xiàng)如下
現(xiàn)在假定黑客要偽造R1的簽名。他可以假冒路由器R1的IP地址,并且自己根據(jù)TCP報(bào)文的內(nèi)容計(jì)算出一個(gè)正確的報(bào)文校驗(yàn)碼A,但是無法偽造出相應(yīng)的簽名校驗(yàn)碼,因?yàn)樗麩o法知道此刻R1中兩個(gè)數(shù)組PM[8]和RM[32]的內(nèi)容。從理論上說,如果黑客收集大量帶有R1簽名的IP包樣本,知道所用的算法,并且進(jìn)行大量的分析計(jì)算,是有可能推算出這兩個(gè)數(shù)組的內(nèi)容的(但是很困難。由于采用了取模計(jì)算,很難根據(jù)結(jié)果推算出原始的數(shù)據(jù),更何況進(jìn)行了兩次取模計(jì)算)??墒?,不等他計(jì)算出來,那兩個(gè)數(shù)組的內(nèi)容就已經(jīng)變了(但是R1將這兩個(gè)數(shù)組在每個(gè)時(shí)段的內(nèi)容記錄存檔,以備查驗(yàn))。
在這個(gè)過程里,索引號(hào)是個(gè)8位整數(shù),可以取256種不同的值,所以平均每256個(gè)包中才有一個(gè)包具有相同的索引號(hào),即采用相同的參數(shù),這增加了黑客收集大量樣本進(jìn)行分析計(jì)算的難度。采用質(zhì)數(shù)相乘(并取模)的目的是使計(jì)算結(jié)果即索引號(hào)分布得更加均勻,再用隨機(jī)數(shù)相加并取模則使得黑客難以破譯,而每過一段時(shí)間就更換可供選用的參數(shù)(PM[8]和RM[32]的內(nèi)容)則使得即使破譯了也沒用。
理解了上述的計(jì)算過程,對于如何查驗(yàn)也就可以明白了。
附錄1一種雜湊校驗(yàn)算法作為一個(gè)實(shí)例,下面是一種雜湊校驗(yàn)算法1.準(zhǔn)備一個(gè)大小合適的(16位)質(zhì)數(shù)表,并為之建立一個(gè)相應(yīng)的質(zhì)數(shù)數(shù)組P[]。例如從1024到8192區(qū)間內(nèi)有857個(gè)質(zhì)數(shù),就可以為之建立一個(gè)數(shù)組P[857]。
2.準(zhǔn)備一個(gè)大小合適的16位隨機(jī)數(shù)數(shù)組R[],例如R ,并相應(yīng)生成1024個(gè)隨機(jī)數(shù)(不重復(fù))。將P[857]和R 的內(nèi)容記錄在數(shù)據(jù)庫中。
3.建立一個(gè)質(zhì)數(shù)引用(映射)數(shù)組PM[8]。
4.建立一個(gè)隨機(jī)數(shù)引用(映射)數(shù)組RM[32]。
5.從質(zhì)數(shù)數(shù)組P[857]中隨機(jī)(不重復(fù))選取8個(gè)元素,將他們填入PM[8]。
6.從隨機(jī)數(shù)數(shù)組R 中隨機(jī)(不重復(fù))選取32個(gè)元素,將他們填入RM[32]。
7.將當(dāng)前的質(zhì)數(shù)引用(映射)數(shù)組PM[8]和隨機(jī)數(shù)引用(映射)數(shù)組RM[32]的內(nèi)容,連同啟用的日期和時(shí)間記錄在數(shù)據(jù)庫中,以備查詢。
8.對于特定的IP包,以其所載運(yùn)UDP或TCP報(bào)文頭部的16位校驗(yàn)碼A為第一個(gè)操作數(shù)。如果所載運(yùn)的既非UDP報(bào)文也非TCP報(bào)文,就按驗(yàn)和方法計(jì)算其前10個(gè)16位短整數(shù)(20字節(jié))的16位校驗(yàn)碼A。
●也可以按驗(yàn)和方法把報(bào)頭中的源/目標(biāo)IP地址納入校驗(yàn)碼A。
●也可以按驗(yàn)和方法把簽名者的IP地址納入校驗(yàn)碼A。
9.隨機(jī)生成一個(gè)質(zhì)數(shù)引用數(shù)組PM[8]的下標(biāo)p,其數(shù)值范圍為0至7。
10.將A與PM[p]相乘,取其低16位為X,即X=(A*PM[p])mode 65536。
11.隨機(jī)生成一個(gè)隨機(jī)數(shù)引用數(shù)組RM[32]的下標(biāo)r,其數(shù)值范圍為0至31。
12.將X與RM[r]相加,取其低16位為C,即C=(X+RM[r])mode 65536。
13.C就是可選項(xiàng)中的校驗(yàn)碼,而p和r拼合成校驗(yàn)計(jì)算索引編號(hào),p為其高3位,r為其低5位。
14.每過一段預(yù)定的時(shí)間長度,例如15分鐘,就回到上面的第5步,改變PM[8]和RM[32]的映射并把新的數(shù)組內(nèi)容和啟用的日期/時(shí)間記錄在數(shù)據(jù)庫中。
15.數(shù)據(jù)庫中滾動(dòng)保留最近一星期(或其它預(yù)定的歷史記錄長度)的記錄,以備查詢。以一星期為例,如果每15分鐘改變一次映射,從而產(chǎn)生一條記錄,則每天96條記錄,7天共672條記錄。此后每加入一條新的記錄就刪除(或轉(zhuǎn)儲(chǔ))最老的已有記錄。
就某個(gè)IP包向某個(gè)路由器查詢時(shí),查詢者應(yīng)提供以下信息(除路由器的IP地址外)●UDP或TCP報(bào)文頭部的16位校驗(yàn)碼A,或報(bào)文的前20個(gè)字節(jié)。
●如果包頭中的源/目標(biāo)地址納入簽名計(jì)算,則須提供這兩個(gè)IP地址。
●相應(yīng)可選項(xiàng)中的校驗(yàn)碼和校驗(yàn)計(jì)算索引值。
●接收到該IP包的大致時(shí)間,以及接收者所處的時(shí)區(qū)(考慮到時(shí)差)。
路由器的管理系統(tǒng)(可以在路由器外面)根據(jù)該IP包的接收時(shí)間可以大致推算出它的發(fā)送時(shí)段(或兩個(gè)時(shí)段,如果接收時(shí)間接近其時(shí)段變更邊界的話),并從其數(shù)據(jù)庫中恢復(fù)該時(shí)段的質(zhì)數(shù)引用數(shù)組PM[8]和隨機(jī)數(shù)引用數(shù)組RM[32]的內(nèi)容,然后根據(jù)查詢者提供的數(shù)據(jù)和計(jì)算索引值進(jìn)行同樣的計(jì)算并加以比對,就可以判定簽名是否偽造了。
攻擊者如果知道所用的算法,又進(jìn)行長時(shí)間的偷聽,收集大量樣本加以分析,還是有可能推算出PM[8]和RM[32]的內(nèi)容的。但是,由于計(jì)算中采用了帶有取模運(yùn)算的雜湊算法,那已經(jīng)很困難。而這兩個(gè)數(shù)組的內(nèi)容隨時(shí)間而變,則進(jìn)一步使之難上加難了。當(dāng)然,為簡單起見也可以保持這兩個(gè)數(shù)組的內(nèi)容不變,但那樣會(huì)降低安全性。
此外,也可以定義一組算法、而不是一個(gè)算法,再把校驗(yàn)計(jì)算索引分成三截(如2位+3位+3位),使得具體的雜湊算法也是隨機(jī)選取。但是那樣并沒有本質(zhì)上的區(qū)別,因?yàn)橐话愣?位的校驗(yàn)計(jì)算索引總是提供256種不同組合。
附錄2簽名的查詢與驗(yàn)證最簡單的查詢/驗(yàn)證是人工查詢,例如通過郵件或電話將有關(guān)信息告知目標(biāo)路由器的管理人員,并要求其幫助驗(yàn)證。但是那樣效率太低。
一個(gè)比較好一些的辦法是讓各有關(guān)路由器的管理者都開設(shè)一個(gè)查詢網(wǎng)站,查詢者可以通過瀏覽器訪問這樣的網(wǎng)站,提供數(shù)據(jù)并請求驗(yàn)證,并立即看到驗(yàn)證結(jié)果。
也可以讓各有關(guān)路由器提供實(shí)時(shí)的在線驗(yàn)證服務(wù),使查詢者可以通過某種規(guī)程,例如SNMP或LDAP之類的規(guī)程進(jìn)行實(shí)時(shí)的查詢/驗(yàn)證。這樣,當(dāng)包的接收方發(fā)現(xiàn)可疑時(shí)甚至立即就可以加以查詢/驗(yàn)證,看其傳輸蹤跡是否偽造。
進(jìn)一步,還可以像DNS服務(wù)網(wǎng)站那樣,在互聯(lián)網(wǎng)中設(shè)置若干用于查詢/驗(yàn)證的代理網(wǎng)站,所有的查詢/驗(yàn)證都通過這些代理網(wǎng)站間接地進(jìn)行,而代理網(wǎng)站與目標(biāo)路由器之間的通信則可以通過加密來提高安全性。
權(quán)利要求
1.一種在互聯(lián)網(wǎng)中通過路由器簽名提高網(wǎng)絡(luò)安全性的方法,其特征是帶有路由功能的網(wǎng)絡(luò)設(shè)備在所轉(zhuǎn)發(fā)的IP包中依次留下與包的內(nèi)容掛鉤、難以偽造、并且可以查驗(yàn)的“簽名”信息。
2.根據(jù)權(quán)利要求1所述的在互聯(lián)網(wǎng)中通過路由器簽名提高網(wǎng)絡(luò)安全性的方法,其特征是1)、在IPv4規(guī)程的包頭可選項(xiàng)中增加一個(gè)新的可選項(xiàng)“簽名”,要求IP包沿途的路由器或網(wǎng)關(guān)在IP包頭的可選項(xiàng)中記錄簽名者的IP地址和經(jīng)過加密的附加校驗(yàn)信息;2)、帶有路由功能的網(wǎng)絡(luò)設(shè)備在轉(zhuǎn)發(fā)IP包時(shí)根據(jù)包的內(nèi)容計(jì)算生成簽名,并將簽名可選項(xiàng)插入IP包頭或包的擴(kuò)充部;3)、包的接收者通過入侵檢測軟件或設(shè)備對可疑的包記錄下其包頭、包括各個(gè)“簽名”可選項(xiàng),以及包頭后面的若干字節(jié)作為內(nèi)容依據(jù),同時(shí)紀(jì)錄下包的到達(dá)時(shí)間;4)、對于高度可疑的IP包,可以通過所記錄的簽名可選項(xiàng)、與包的內(nèi)容有關(guān)的數(shù)據(jù)、以及包的到達(dá)時(shí)間向留有簽名的網(wǎng)絡(luò)設(shè)備查詢求證具體簽名的真?zhèn)危?)、帶有路由功能的網(wǎng)絡(luò)設(shè)備在受到查詢時(shí)根據(jù)與包的內(nèi)容有關(guān)的數(shù)據(jù)、簽名可選項(xiàng)中的算法與參數(shù)的索引值以及時(shí)間重新計(jì)算出一個(gè)校驗(yàn)碼,并將計(jì)算結(jié)果與簽名可選項(xiàng)中的校驗(yàn)碼比對,以判定簽名的真?zhèn)巍?br>
3.根據(jù)權(quán)利要求2所述的在互聯(lián)網(wǎng)中通過路由器簽名提高網(wǎng)絡(luò)安全性的方法,其特征在于所述的“簽名”可選項(xiàng)中含有簽名者的IP地址和經(jīng)過加密的附加校驗(yàn)信息,其中經(jīng)過加密的附加信息由兩個(gè)部分構(gòu)成1)、一個(gè)根據(jù)包的內(nèi)容計(jì)算所得的校驗(yàn)碼,校驗(yàn)碼與包的內(nèi)容掛鉤,由具體的路由器或網(wǎng)關(guān)隨機(jī)選擇一個(gè)校驗(yàn)算法和鍵值的組合,對包的內(nèi)容校驗(yàn)碼或內(nèi)容的前N個(gè)字節(jié)進(jìn)行計(jì)算而得;2)、一個(gè)算法與參數(shù)的索引值,表明校驗(yàn)碼是由哪一種算法和鍵值的組合計(jì)算所得。
4.根據(jù)權(quán)利要求2或3所述的在互聯(lián)網(wǎng)中通過路由器簽名提高網(wǎng)絡(luò)安全性的方法,其特征在于所述的“簽名”可選項(xiàng)的使用可以由路由器或網(wǎng)關(guān)強(qiáng)行插入。
5.根據(jù)權(quán)利要求3所述的在互聯(lián)網(wǎng)中通過路由器簽名提高網(wǎng)絡(luò)安全性的方法,其特征在于將包的源地址和目標(biāo)地址納入簽名的計(jì)算。
6.根據(jù)權(quán)利要求2或3所述的在互聯(lián)網(wǎng)中通過路由器簽名提高網(wǎng)絡(luò)安全性的方法,其特征在于所述的算法是一組單向校驗(yàn)/加密算法,每個(gè)路由器或網(wǎng)關(guān)的管理員都可以為路由器設(shè)置一組參數(shù),用于上述單向校驗(yàn)/加密算法。
全文摘要
本發(fā)明涉及一種通過路由器簽名提高IP網(wǎng)絡(luò)安全性的方法,1)在IPv4規(guī)程的包頭可選項(xiàng)中增加一個(gè)新的可選項(xiàng)“簽名”,要求IP包沿途的路由器在IP包頭的可選項(xiàng)中記錄簽名者的IP地址和經(jīng)過加密的附加校驗(yàn)信息;2)帶有路由功能的網(wǎng)絡(luò)設(shè)備在轉(zhuǎn)發(fā)IP包時(shí)根據(jù)包的內(nèi)容計(jì)算生成簽名,并將簽名可選項(xiàng)插入IP包頭或包的擴(kuò)充部;3)包的接收者對可疑的包記錄下其包頭、包括各個(gè)“簽名”可選項(xiàng),以及包頭后面的若干字節(jié)作為內(nèi)容依據(jù),同時(shí)紀(jì)錄下包的到達(dá)時(shí)間。本發(fā)明的優(yōu)點(diǎn)是在受到查詢時(shí)根據(jù)與包的內(nèi)容有關(guān)的數(shù)據(jù)、算法與參數(shù)的索引值以及時(shí)間重新計(jì)算出一個(gè)校驗(yàn)碼,并將計(jì)算結(jié)果與校驗(yàn)碼比對,以判定簽名的真?zhèn)危梢源蟠罂s小查找攻擊者的范圍。
文檔編號(hào)H04L9/28GK1610334SQ20041008445
公開日2005年4月27日 申請日期2004年11月23日 優(yōu)先權(quán)日2004年11月23日
發(fā)明者毛德操 申請人:毛德操