馬子川,黃小紅,閆 屾,張 沛
(北京郵電大學(xué)網(wǎng)絡(luò)技術(shù)研究院 北京100876)
隨著IPv6應(yīng)用的不斷推廣和普及,其安全性問題也逐漸得到人們的關(guān)注。目前IPv6網(wǎng)絡(luò)普遍使用無狀態(tài)地址配置(stateless address autoconfiguration,SLAAC)機(jī)制實(shí)現(xiàn)IPv6主機(jī)的地址自動(dòng)配置,簡(jiǎn)化了IPv6地址的配置方式。但是這種機(jī)制也給網(wǎng)絡(luò)攻擊者可乘之機(jī),網(wǎng)絡(luò)攻擊者只要對(duì)特定的IPv6地址的流量進(jìn)行監(jiān)聽,就能夠收集到特定主機(jī)的全部IPv6流量[1]。
然而現(xiàn)有的對(duì)網(wǎng)絡(luò)層以上的數(shù)據(jù)安全保護(hù)機(jī)制所采用的手段主要是對(duì)傳輸?shù)臄?shù)據(jù)內(nèi)容進(jìn)行加密處理,無法對(duì)傳輸雙方的“信道”進(jìn)行保護(hù)。攻擊者只要對(duì)特定IPv6地址所對(duì)應(yīng)的“信道”中的完整IPv6流量進(jìn)行分析,就能夠從流量特征中獲知所使用的網(wǎng)絡(luò)協(xié)議、操作系統(tǒng)甚至物理位置等信息,并對(duì)此分析得到用戶身份,達(dá)到竊取用戶隱私數(shù)據(jù)的目的。
為了應(yīng)對(duì)這個(gè)問題,網(wǎng)絡(luò)地址跳變傳輸技術(shù)應(yīng)運(yùn)而生,網(wǎng)絡(luò)地址跳變傳輸技術(shù)通過將數(shù)據(jù)流量分散到多對(duì)IP地址所構(gòu)成的多個(gè)“信道”中進(jìn)行傳輸,達(dá)到隱藏雙方真實(shí)IP地址,對(duì)雙方的傳輸“信道”進(jìn)行隱藏,進(jìn)而保護(hù)傳輸內(nèi)容不被監(jiān)聽的目的。由于IPv6有著巨大地址空間的天然優(yōu)勢(shì),在IPv6網(wǎng)絡(luò)中使用網(wǎng)絡(luò)地址跳變傳輸技術(shù),傳輸雙方可以使用足夠多的動(dòng)態(tài)IPv6地址建立動(dòng)態(tài)地址連接,可以將監(jiān)聽者通過流量分析竊取信息的可能降到最低。
國(guó)內(nèi)外對(duì)IPv6網(wǎng)絡(luò)地址跳變傳輸機(jī)制及其相關(guān)技術(shù)已經(jīng)有過一些研究,并且提出了多種IPv6網(wǎng)絡(luò)地址跳變傳輸方案以及類似的其他方案。參考文獻(xiàn)[2]提出一種基于地址和端口進(jìn)行跳變傳輸?shù)姆桨福摲桨钢С侄鄠€(gè)客戶端間的地址跳變傳輸,并通過使用時(shí)間戳的方式計(jì)算所需的動(dòng)態(tài)地址及端口,但這種方式依賴同一個(gè)跳變同步服務(wù)器對(duì)各個(gè)客戶端設(shè)備進(jìn)行跳變同步。參考文獻(xiàn)[3]通過將主機(jī)的流量分散到不同的鏈路之中來完成地址的跳變傳輸,但同樣依賴中心節(jié)點(diǎn)對(duì)主機(jī)的動(dòng)態(tài)地址進(jìn)行配置和管理。參考文獻(xiàn)[4,5]提出的方案通過對(duì)IPv6地址進(jìn)行動(dòng)態(tài)混淆,從而得到動(dòng)態(tài)IPv6地址進(jìn)而達(dá)到跳變傳輸?shù)哪康?,但依賴精確的時(shí)鐘進(jìn)行同步和更新。參考文獻(xiàn)[6,7]針對(duì)時(shí)鐘同步的需求提出了相應(yīng)分布式時(shí)間戳同步方案。參考文獻(xiàn)[8]中的方案使用共享偽隨機(jī)種子的方式生成多組動(dòng)態(tài)IPv6地址,并另辟蹊徑使用分組計(jì)數(shù)器的方式觸發(fā)動(dòng)態(tài)IPv6地址的更新與切換。
由此可以看出,由于IPv6動(dòng)態(tài)地址跳變傳輸要求通信雙方均使用動(dòng)態(tài)地址,因而對(duì)動(dòng)態(tài)地址的更新進(jìn)行同步是動(dòng)態(tài)地址跳變傳輸機(jī)制中非常重要的組成部分,也是目前相關(guān)研究的重點(diǎn)所在。
本文針對(duì)IPv6網(wǎng)絡(luò)地址跳變傳輸機(jī)制的跳變同步技術(shù)進(jìn)行研究和探索,提出了動(dòng)態(tài)地址鏈(dynamic address chain)的概念,并將滑動(dòng)地址窗口和動(dòng)態(tài)地址鏈應(yīng)用于IPv6網(wǎng)絡(luò)地址跳變傳輸,能夠在保證IPv6網(wǎng)絡(luò)地址高效跳變的同時(shí)降低對(duì)同步時(shí)鐘精度的要求,并在此基礎(chǔ)上提出了基于滑動(dòng)地址窗口的IPv6動(dòng)態(tài)地址隧道(IPv6 dynamic address tunnel,6DAT)模型。
6 DAT模型的基本思路是通過在本地子網(wǎng)的邊界處部署6DAT網(wǎng)關(guān),子網(wǎng)中的所有主機(jī)通過6DAT網(wǎng)關(guān)連接到互聯(lián)網(wǎng)。同時(shí),由6DAT網(wǎng)關(guān)將子網(wǎng)中主機(jī)的IP數(shù)據(jù)分組封裝于使用動(dòng)態(tài)IPv6地址作為源地址和目的地址的隧道數(shù)據(jù)分組中,從而達(dá)到通過動(dòng)態(tài)IPv6地址建立動(dòng)態(tài)地址隧道進(jìn)行跳變傳輸?shù)哪康摹?/p>
6 DAT模型的基本結(jié)構(gòu)如圖1所示,子網(wǎng)中的主機(jī)通過網(wǎng)關(guān)連接到互聯(lián)網(wǎng),當(dāng)需要使用6DAT進(jìn)行傳輸時(shí),主機(jī)的IP數(shù)據(jù)分組在本地網(wǎng)關(guān)處被封裝為隧道數(shù)據(jù)分組然后發(fā)送到目標(biāo)網(wǎng)關(guān),目標(biāo)網(wǎng)關(guān)在接收到隧道數(shù)據(jù)分組之后對(duì)其進(jìn)行解析,然后將原始數(shù)據(jù)分組轉(zhuǎn)發(fā)到目標(biāo)子網(wǎng)中的目標(biāo)主機(jī)上。
圖1 6DAT組成結(jié)構(gòu)
6 DAT網(wǎng)關(guān)是由動(dòng)態(tài)地址鏈所驅(qū)動(dòng)的網(wǎng)絡(luò)設(shè)備,如圖2所示,可分為動(dòng)態(tài)地址層和數(shù)據(jù)轉(zhuǎn)發(fā)層兩個(gè)部分。其中動(dòng)態(tài)地址層又包括本地動(dòng)態(tài)地址鏈和對(duì)端動(dòng)態(tài)地址鏈,分別為數(shù)據(jù)轉(zhuǎn)發(fā)層提供動(dòng)態(tài)源地址和動(dòng)態(tài)目的地址。數(shù)據(jù)轉(zhuǎn)發(fā)層提供了面向主機(jī)的接口和面向互聯(lián)網(wǎng)的接口,對(duì)來自主機(jī)的數(shù)據(jù)分組進(jìn)行封裝,并對(duì)來自互聯(lián)網(wǎng)的數(shù)據(jù)分組進(jìn)行解析。
圖2 6DAT網(wǎng)關(guān)架構(gòu)
動(dòng)態(tài)地址鏈?zhǔn)怯啥鄠€(gè)動(dòng)態(tài)IPv6地址組成的有序的線性動(dòng)態(tài)IPv6地址池。每個(gè)6DAT網(wǎng)關(guān)都包含一個(gè)本地動(dòng)態(tài)地址鏈和至少一個(gè)對(duì)端動(dòng)態(tài)地址鏈,6DAT網(wǎng)關(guān)必須在初始化本地動(dòng)態(tài)地址鏈和對(duì)端動(dòng)態(tài)地址鏈之后才能和對(duì)端網(wǎng)關(guān)建立動(dòng)態(tài)地址隧道。
表1中展示了一個(gè)動(dòng)態(tài)地址鏈的模型,其中每個(gè)動(dòng)態(tài)IPv6地址有各自對(duì)應(yīng)的序號(hào),各個(gè)動(dòng)態(tài)IPv6地址在動(dòng)態(tài)地址鏈中始終保持有序排列,并按照一定的規(guī)則在動(dòng)態(tài)地址鏈上劃分出發(fā)送地址窗口和接收地址窗口,分別驅(qū)動(dòng)6DAT的封裝模塊和解析模塊。
表1 IPv6動(dòng)態(tài)地址鏈
2.2.1 動(dòng)態(tài)地址鏈同步機(jī)制
由于建立動(dòng)態(tài)地址隧道的兩個(gè)對(duì)等網(wǎng)關(guān)需要獨(dú)立計(jì)算并更新各自使用的動(dòng)態(tài)地址鏈,若要保證動(dòng)態(tài)地址以及動(dòng)態(tài)地址隧道的持續(xù)有效,要求對(duì)等網(wǎng)關(guān)的動(dòng)態(tài)地址鏈必須有保持同步的能力。
6 DAT模型所采用的動(dòng)態(tài)地址鏈同步機(jī)制要求分布于不同網(wǎng)關(guān)的各個(gè)動(dòng)態(tài)地址鏈擁有相同的更新周期。每隔一個(gè)更新周期,各個(gè)網(wǎng)關(guān)分別計(jì)算出需要添加的動(dòng)態(tài)地址序號(hào),并根據(jù)動(dòng)態(tài)地址序號(hào)計(jì)算得到動(dòng)態(tài)地址并添加到各自的動(dòng)態(tài)地址鏈中。因而只要約定一個(gè)共同的起始時(shí)間戳Timeinitial,就能根據(jù)當(dāng)前的時(shí)間戳Timecurrent以及周期T計(jì)算得到當(dāng)前需要添加的地址序號(hào)。
采用了上述的地址序號(hào)算法之后,并不要求兩個(gè)對(duì)等網(wǎng)關(guān)的時(shí)鐘完全精確一致,只要之間的時(shí)間戳誤差小于周期T,就能夠同步計(jì)算得到相同的地址序號(hào),完成同步操作,極大降低了對(duì)時(shí)鐘精度的要求。
2.2.2 動(dòng)態(tài)地址算法
根據(jù)動(dòng)態(tài)地址鏈同步機(jī)制,動(dòng)態(tài)地址算法必須滿足:根據(jù)確定的網(wǎng)關(guān)地址前綴和地址序號(hào),必須能夠唯一計(jì)算得到一個(gè)確定的動(dòng)態(tài)IPv6地址。
根據(jù)上述要求,可以提出一個(gè)適用于6DAT模型的動(dòng)態(tài)地址算法。給定網(wǎng)關(guān)前綴Prefix以及地址序號(hào)N,就可以計(jì)算得到動(dòng)態(tài)IPv6地址。
由于網(wǎng)關(guān)前綴和地址序號(hào)確定且唯一,該算法能夠計(jì)算得到確定且唯一的動(dòng)態(tài)IPv6地址。
動(dòng)態(tài)地址窗口指的是在動(dòng)態(tài)地址鏈上特定的動(dòng)態(tài)IPv6地址區(qū)間,包括發(fā)送地址窗口和接收地址窗口。
每個(gè)動(dòng)態(tài)地址鏈都有對(duì)應(yīng)的發(fā)送地址窗口和接收地址窗口,本地動(dòng)態(tài)地址鏈對(duì)應(yīng)著本地發(fā)送窗口和本地接收窗口,對(duì)端動(dòng)態(tài)地址鏈對(duì)應(yīng)著對(duì)端發(fā)送窗口和對(duì)端接收窗口。
2.3.1 發(fā)送地址窗口
根據(jù)地址窗口算法,動(dòng)態(tài)地址鏈上按照發(fā)送窗口容量劃分出特定的IPv6地址區(qū)間作為發(fā)送地址窗口。在建立動(dòng)態(tài)地址隧道時(shí),需要從本地發(fā)送地址窗口和對(duì)端發(fā)送窗口中隨機(jī)選擇一對(duì)動(dòng)態(tài)地址,分別作為動(dòng)態(tài)地址隧道數(shù)據(jù)分組的源地址和目的地址。
2.3.2 接收地址窗口
相應(yīng)的,動(dòng)態(tài)地址鏈上按照接收窗口容量劃分出特定的IPv6地址區(qū)間作為接收地址窗口。在接收到動(dòng)態(tài)地址隧道數(shù)據(jù)分組時(shí),需要檢查數(shù)據(jù)分組的源地址和目的地址是否分別位于對(duì)端接收地址窗口和本地接收地址窗口,然后再進(jìn)行后續(xù)處理和轉(zhuǎn)發(fā)。
2.3.3 地址窗口算法
發(fā)送地址窗口和接收地址窗口的特性決定了發(fā)送地址窗口的容量必須小于接收地址窗口的容量,即發(fā)送地址窗口是接收地址窗口的子集。
并且,為了保證發(fā)送網(wǎng)關(guān)所選擇的發(fā)送地址窗口中的動(dòng)態(tài)IPv6地址盡可能落在接收網(wǎng)關(guān)的接收地址窗口中,發(fā)送地址窗口必須盡可能接近接收地址窗口的中間位置,從而可以得到用于計(jì)算發(fā)送地址窗口和接收地址窗口的地址窗口算法。
當(dāng)接收地址窗口起始序號(hào)為N以及接收窗口和發(fā)送窗口容量分別為WinR和WinS時(shí),接收地址窗口為:
相應(yīng)的發(fā)送地址窗口為:
以圖3所示的動(dòng)態(tài)地址鏈為例,接收地址窗口是一個(gè)容量為16的動(dòng)態(tài)IPv6地址區(qū)間,動(dòng)態(tài)地址序號(hào)范圍為0~15。發(fā)送地址窗口是一個(gè)容量為8的動(dòng)態(tài)IPv6地址區(qū)間,動(dòng)態(tài)地址序號(hào)范圍為4~11。
2.3.4 地址窗口滑動(dòng)
由于發(fā)送地址窗口和接收地址窗口均為有限長(zhǎng)度的地址區(qū)間,為了保證源地址和目的地址的動(dòng)態(tài)性,發(fā)送窗口和接收窗口必須定時(shí)進(jìn)行滑動(dòng)更新。地址窗口滑動(dòng)情況如圖4所示。
按照動(dòng)態(tài)地址鏈的同步機(jī)制,每個(gè)動(dòng)態(tài)地址鏈都有各自的更新周期,每隔一個(gè)周期,都將計(jì)算得到一個(gè)新的動(dòng)態(tài)地址并添加到動(dòng)態(tài)地址鏈的末端。與此同時(shí),如果將發(fā)送地址窗口和接收地址窗口向地址序號(hào)增加的方向移動(dòng)一個(gè)地址空間,就可以完成對(duì)發(fā)送地址窗口和接收地址窗口的滑動(dòng)更新操作。
由于發(fā)送地址窗口和接收地址窗口均按照一定的周期在動(dòng)態(tài)鏈上進(jìn)行滑動(dòng)更新,其動(dòng)態(tài)更新的平滑性就能夠得到保證,能夠最大限度地避免因動(dòng)態(tài)地址切換而帶來的分組丟失等問題。
然而,雖然要求各個(gè)網(wǎng)關(guān)的動(dòng)態(tài)地址窗口盡力保持同步,但由于不可避免的時(shí)鐘精度誤差的存在,總是會(huì)有動(dòng)態(tài)地址窗口不一致的情況發(fā)生。試想一種情況,由于發(fā)送地址窗口沒有精確同步,發(fā)送端網(wǎng)關(guān)從其發(fā)送地址窗口中選取了一對(duì)動(dòng)態(tài)地址作為隧道數(shù)據(jù)分組的源地址和動(dòng)態(tài)地址,但該動(dòng)態(tài)地址對(duì)沒有位于接收端網(wǎng)關(guān)的發(fā)送地址窗口中,如圖5所示。此時(shí)由于接收端網(wǎng)關(guān)使用接收地址窗口進(jìn)行動(dòng)態(tài)地址對(duì)驗(yàn)證,只要發(fā)送端網(wǎng)關(guān)的發(fā)送地址窗口分組含于接收端網(wǎng)關(guān)的接收地址窗口,就能通過動(dòng)態(tài)地址驗(yàn)證。6DAT模型中將發(fā)送地址窗口和接收地址窗口進(jìn)行分離式設(shè)計(jì)的思想正是基于這樣的考慮。
圖3 發(fā)送地址窗口和接收地址窗口
圖4 地址窗口滑動(dòng)
圖5 動(dòng)態(tài)地址窗口非同步狀態(tài)
假設(shè)網(wǎng)關(guān)A和網(wǎng)關(guān)B需要建立動(dòng)態(tài)地址隧道。在網(wǎng)關(guān)A和網(wǎng)關(guān)B之間建立動(dòng)態(tài)地址隧道時(shí),各自所需的動(dòng)態(tài)IPv6地址來源于動(dòng)態(tài)地址鏈A和動(dòng)態(tài)地址鏈B。為了使網(wǎng)關(guān)間的動(dòng)態(tài)地址鏈保持同步,需要共享表2的網(wǎng)關(guān)配置信息。
表2 網(wǎng)關(guān)配置信息
上述網(wǎng)關(guān)間共享配置信息可以通過一定的機(jī)制進(jìn)行帶內(nèi)配置或者帶外配置??紤]到上述配置信息并不需要頻繁更新,若采用帶內(nèi)配置會(huì)導(dǎo)致額外的開銷以及潛在的安全性問題,因而采用靜態(tài)的帶外配置方式。
由于動(dòng)態(tài)地址鏈A和B初始狀態(tài)均為空,需要先對(duì)動(dòng)態(tài)地址鏈進(jìn)行動(dòng)態(tài)地址填充,由于發(fā)送地址窗口分組含于接收地址窗口,因而需要填充的動(dòng)態(tài)地址數(shù)量至少為:
將上述步驟得到的兩組動(dòng)態(tài)IPv6地址分別添加到動(dòng)態(tài)地址鏈A和B中:
初始化完成后,根據(jù)地址窗口算法,動(dòng)態(tài)地址鏈A和動(dòng)態(tài)地址鏈B的初始發(fā)送窗口分別如下。
發(fā)送窗口A[StartSA,EndSA]:
發(fā)送窗口B[StartSB,EndSB]:
當(dāng)網(wǎng)關(guān)A所在子網(wǎng)的主機(jī)向網(wǎng)關(guān)B所在子網(wǎng)的主機(jī)發(fā)送數(shù)據(jù)時(shí),網(wǎng)關(guān)A需要分別從發(fā)送窗口A和發(fā)送窗口B中隨機(jī)選取一對(duì)動(dòng)態(tài)IPv6地址作為源地址和目的地址。
如圖6所示,來自主機(jī)的數(shù)據(jù)分組先在網(wǎng)關(guān)A處添加6DAT分組頭,封裝成以上述動(dòng)態(tài)地址為源地址和目的地址的6DAT數(shù)據(jù)分組,然后再發(fā)送出去。
圖6 封裝流程
同理,當(dāng)網(wǎng)關(guān)B所在子網(wǎng)的主機(jī)需要向網(wǎng)關(guān)A所在子網(wǎng)的主機(jī)發(fā)送數(shù)據(jù)時(shí),網(wǎng)關(guān)B需要分別從發(fā)送窗口B和發(fā)送窗口A中隨機(jī)選取一對(duì)動(dòng)態(tài)IPv6地址作為源地址和目的地址。
來自主機(jī)的數(shù)據(jù)分組先在網(wǎng)關(guān)B處添加6DAT分組頭,封裝成以上述動(dòng)態(tài)地址作為源地址和目的地址的6DAT數(shù)據(jù)分組,然后再發(fā)送出去。
初始化完成后,根據(jù)地址窗口算法,動(dòng)態(tài)地址鏈A和動(dòng)態(tài)地址鏈B的初始接收窗口分別如下。
接收窗口A[StartRA,EndRA]:
接收窗口B[StartRB,EndRB]:
當(dāng)網(wǎng)關(guān)B接收到來自網(wǎng)關(guān)A的隧道數(shù)據(jù)分組時(shí),需要分別檢查隧道數(shù)據(jù)分組的源地址和目的地址是否分別位于接收窗口A和接收窗口B之中,如果是,則對(duì)其進(jìn)行解析并去除隧道分組頭以獲得原始數(shù)據(jù)分組,然后將其轉(zhuǎn)發(fā)至網(wǎng)關(guān)B所在子網(wǎng)中對(duì)應(yīng)的主機(jī)。
相應(yīng)的,當(dāng)網(wǎng)關(guān)A在接收到來自網(wǎng)關(guān)B的隧道數(shù)據(jù)分組時(shí),需要分別檢查隧道數(shù)據(jù)分組的源地址和目的地址是否位于接收窗口B和接收窗口A之中,如果是,則對(duì)其進(jìn)行解析并去除隧道分組頭以獲得原始數(shù)據(jù)分組,然后其轉(zhuǎn)發(fā)至網(wǎng)關(guān)A所在子網(wǎng)中對(duì)應(yīng)的主機(jī)。
為了對(duì)6DAT模型進(jìn)行驗(yàn)證,開發(fā)了6DAT的原型系統(tǒng),并對(duì)核心功能進(jìn)行了實(shí)現(xiàn)。該6DAT原型系統(tǒng)采用Go語言開發(fā),使用Netfilter Queue并結(jié)合Linux系統(tǒng)上的iptables完成對(duì)IPv6數(shù)據(jù)分組的捕獲和處理。部署該6DAT原型系統(tǒng)時(shí)使用了如表3所示的實(shí)驗(yàn)環(huán)境配置。
圖7 6DAT原型系統(tǒng)測(cè)試環(huán)境
表3 實(shí)驗(yàn)環(huán)境配置
為了對(duì)6DAT模型的部署進(jìn)行模擬,搭建了如圖7所示的測(cè)試環(huán)境。在兩臺(tái)具有雙網(wǎng)卡的服務(wù)器上部署了上述6DAT原型系統(tǒng)作為6DAT網(wǎng)關(guān),同時(shí)連接另外兩臺(tái)計(jì)算機(jī)作為6DAT主機(jī),并對(duì)其進(jìn)行相關(guān)的IPv6地址和路由的配置。
由于6DAT模型仍然需要時(shí)鐘信號(hào)驅(qū)動(dòng)動(dòng)態(tài)地址鏈和滑動(dòng)地址窗口進(jìn)行更新,而作為一個(gè)分布式系統(tǒng),實(shí)際應(yīng)用中難免有時(shí)鐘的精度誤差。通過測(cè)量不同時(shí)鐘誤差情況下系統(tǒng)的分組丟失率,對(duì)6DAT系統(tǒng)的抗時(shí)鐘誤差能力進(jìn)行評(píng)估。
仍然選擇發(fā)送100個(gè)ping報(bào)文的方式對(duì)分組丟失率進(jìn)行測(cè)試,調(diào)整兩個(gè)6DAT網(wǎng)關(guān)之間的系統(tǒng)時(shí)鐘誤差,記錄發(fā)送100個(gè)ping報(bào)文時(shí)的分組丟失率。測(cè)試結(jié)果如圖8所示。
圖8 分組丟失率與時(shí)鐘誤差
根據(jù)動(dòng)態(tài)地址鏈的同步機(jī)制以及地址窗口算法不難得到,若要避免分組丟失,則必須保證發(fā)送地址窗口的動(dòng)態(tài)地址全部落入接收地址窗口之中,即發(fā)送端的發(fā)送地址窗口的邊界在接收端的接收地址邊界以內(nèi)。據(jù)此,可以推算得到最大能夠允許的時(shí)鐘誤差為:
在本次實(shí)驗(yàn)中,接收地址窗口為8,發(fā)送地址窗口為4,窗口滑動(dòng)周期為10 s,根據(jù)式(25)計(jì)算可得最大理論時(shí)鐘允許誤差為20 s。而實(shí)驗(yàn)結(jié)果顯示,當(dāng)時(shí)鐘誤差大于20 s時(shí)系統(tǒng)分組丟失率急劇上升,也驗(yàn)證了推算是正確的。
將發(fā)送單位個(gè)數(shù)的IP數(shù)據(jù)分組時(shí)所使用的“信道”數(shù)量,即唯一IP地址對(duì)數(shù)量,定義為系統(tǒng)的流量分散能力,并且使用該指標(biāo)評(píng)估6DAT系統(tǒng)對(duì)惡意流量分析的抵抗能力。
當(dāng)6DAT并未啟用時(shí),發(fā)送端和接收端均使用靜態(tài)的IP地址,即自始至終只采用一對(duì)IP地址進(jìn)行傳輸。在這種情況下,流量分散能力與IP數(shù)據(jù)分組的數(shù)量成反比,IP數(shù)據(jù)分組越多則流量分散能力越弱,也就越容易遭受惡意流量分析攻擊。
在開啟6DAT之后,使用TCPDUMP工具對(duì)上述實(shí)驗(yàn)的IP數(shù)據(jù)分組進(jìn)行抓取和記錄,并對(duì)其進(jìn)行分析,統(tǒng)計(jì)其中唯一的IP地址對(duì)數(shù)量,得到表4的結(jié)果。
表4 IP地址對(duì)數(shù)量統(tǒng)計(jì)
此外,由于動(dòng)態(tài)IP地址對(duì)的數(shù)量受發(fā)送地址窗口的影響,因而選擇在發(fā)送100個(gè)報(bào)文的前提下,測(cè)試6DAT原型系統(tǒng)使用不同的發(fā)送地址窗口容量時(shí)的流量分散能力,測(cè)試數(shù)據(jù)如圖9所示。
由上述實(shí)驗(yàn)結(jié)果可以看出,在啟用6DAT之后,主機(jī)之間的流量被分散到大量IP地址對(duì)所組成的“信道”中。且當(dāng)發(fā)送窗口容量越大,則可用的動(dòng)態(tài)IPv6地址越多,動(dòng)態(tài)IPv6地址對(duì)也就越多,流量分散能力越強(qiáng)。若攻擊者對(duì)流量進(jìn)行截獲和分析,獲得全部的完整數(shù)據(jù)的難度也就會(huì)越大,也就越難分析得到通信雙方的真實(shí)身份以及通信方式。
圖9 發(fā)送窗口容量與流量分散能力
為了了解系統(tǒng)的時(shí)延和分組丟失情況,采用在兩個(gè)主機(jī)間發(fā)送ping報(bào)文的方式進(jìn)行測(cè)試。在開啟網(wǎng)關(guān)的6DAT功能的情況下,從一臺(tái)主機(jī)向另外一臺(tái)主機(jī)分別發(fā)送100、500以及1000個(gè)ping報(bào)文,分別記錄響應(yīng)時(shí)間和分組丟失情況。之后,在關(guān)閉網(wǎng)關(guān)的6DAT功能的情況下,重復(fù)上述實(shí)驗(yàn),分別再次記錄響應(yīng)時(shí)間和分組丟失狀況,實(shí)驗(yàn)結(jié)果見表5。
表5 ping響應(yīng)時(shí)間
從表5中不難發(fā)現(xiàn),開啟6DAT之后,由于存在對(duì)IP數(shù)據(jù)分組的封裝和解析操作,6DAT對(duì)IP數(shù)據(jù)分組的轉(zhuǎn)發(fā)存在一定的時(shí)延。對(duì)于大部分的IP數(shù)據(jù)分組,在進(jìn)行轉(zhuǎn)發(fā)的時(shí)候會(huì)增加約1 ms的時(shí)延,但也有極少部分的IP數(shù)據(jù)分組在轉(zhuǎn)發(fā)的時(shí)候產(chǎn)生了較大的時(shí)延??傮w來看,6DAT網(wǎng)關(guān)對(duì)IP數(shù)據(jù)分組的操作所帶來的時(shí)延并沒有給使用過程帶來較大的困擾,但仍然存在優(yōu)化的空間。
此外,根據(jù)測(cè)試結(jié)果,該6DAT原型系統(tǒng)在分組丟失率方面表現(xiàn)良好,并沒有表現(xiàn)出嚴(yán)重的分組丟失情況。
網(wǎng)絡(luò)地址跳變技術(shù)能夠?qū)⑼ㄐ烹p方的流量分散到多組IP地址所構(gòu)成的信道中進(jìn)行傳輸,能夠有效防止攻擊者通過流量分析的方式獲知用戶行為,竊取用戶信息。由于IPv6擁有巨大的地址空間,能夠提供足夠多的動(dòng)態(tài)地址用于網(wǎng)絡(luò)地址跳變,因而IPv6技術(shù)的發(fā)展與普及為網(wǎng)絡(luò)地址跳變傳輸技術(shù)的發(fā)展提供了機(jī)遇。
本文從IPv6地址跳變傳輸?shù)奶兺郊夹g(shù)這一技術(shù)入手,對(duì)現(xiàn)有的相關(guān)技術(shù)進(jìn)行總結(jié)和改進(jìn),提出了動(dòng)態(tài)地址鏈的概念,并通過使用動(dòng)態(tài)地址鏈將滑動(dòng)窗口應(yīng)用于IPv6跳變地址傳輸技術(shù),在此基礎(chǔ)上提出了基于滑動(dòng)地址窗口的IPv6動(dòng)態(tài)地址隧道模型。IPv6動(dòng)態(tài)地址隧道模型能夠?qū)⒘髁糠稚⒌蕉鄬?duì)動(dòng)態(tài)IPv6地址所組成的信道中進(jìn)行傳輸,能夠抵抗惡意的流量分析行為。此外,由于采用了動(dòng)態(tài)地址鏈和滑動(dòng)地址窗口機(jī)制,能夠大大降低對(duì)時(shí)鐘同步的精確度依賴。通過對(duì)IPv6動(dòng)態(tài)地址隧道模型的原型系統(tǒng)開發(fā)和測(cè)試,證明該原型系統(tǒng)在時(shí)延、分組丟失率、時(shí)鐘精度要求以及流量分散能力方面能夠達(dá)到模型的設(shè)計(jì)目標(biāo)。在未來的工作中,將會(huì)對(duì)該模型的加密模式進(jìn)行研究,并對(duì)該模型的關(guān)鍵算法進(jìn)行優(yōu)化,在保證模型的安全性的同時(shí)優(yōu)化性能以應(yīng)對(duì)應(yīng)用中的各種實(shí)際場(chǎng)景。
1 Stephen G,Matthew D,Randy M,et al.IPv6:nowhere to run,nowhere to hide.Proceedings of the 44th Hawaii International Conference on System Sciences(HICSS),Kauai,USA,2011
2 Shi L,Jia C,LV S,et al.Port and address hopping for active cyber-defense.Proceedings of the Conference on Intelligence and Security Informatics,Chengdu,China,2007
3 劉慧生,王振興,郭毅.一種基于多穴跳變的IPv6主動(dòng)防御模型.電子與信息學(xué)報(bào),2012,34(7):1715~1720 Li H S,Wang Z X,Guo Y.An IPv6 proactive network defense model based on multi-homing hopping.Journal of Electronics &Information Technology,2012,34(7):1715~1720
4 Stephen G,Matthew D,Randy M,et al.MT6D:a moving target IPv6 defense.Proceedings of the Military Communications Conference,Baltimore,USA,2011
5 Stephen G,Matthew D,Randy M,et al.Implementing an IPv6 moving target defense on a live network.Proceedings of the National Symposium on Moving Target Research,Annapolis,USA,2012
6 Lin K,Jia C F,Weng C.Distributed timestamp synchronization for end hopping.China Communications,2011,8(4):164~169
7 Lin K,Jia C F,Shi L Y.Improvement of distributed timestamp synchronization.Journal of China Institute of Communications,2012,33(10):110~116
8 Sifalakis M,Schmid S,Hutchison D.Network address hopping:a mechanism to enhance data protection for packet communications.Proceedings of the 40th Annual IEEE International Conference on Communications(IEEE ICC),Seoul,Korea,2005