[編者按] 隨著無線通信技術和便攜式終端技術的快速發(fā)展,面向固定網絡環(huán)境的傳統(tǒng)IP技術迫切需要更新,以支持主機在網絡中的漫游和移動。為此提出了移動IP技術,它是下一代通信網絡(NGN)和下一代因特網(NGI)的重要基礎技術。本講座分3期介紹該項技術。第1期介紹移動IPv4和移動IPv6的基本原理和關鍵技術,第2期介紹移動IP的路由優(yōu)化技術和安全技術,第3期介紹移動IP切換技術,并簡述移動IP技術的未來發(fā)展。
4 移動IP路由優(yōu)化技術
4.1 MIPv6路由優(yōu)化實現(xiàn)
上一講已述及,所謂路由優(yōu)化指的是移動節(jié)點(MN)利用配置的轉交地址(CoA)直接和對端節(jié)點(CN)通信,不再經由至家鄉(xiāng)代理的隧道轉發(fā)數(shù)據,其優(yōu)點是顯而易見的。首先是避免了所有來往于MN的數(shù)據都要經由家鄉(xiāng)代理的單點故障問題,提高了組網安全性;其次是縮短了數(shù)據傳輸路徑,降低了網絡帶寬的消耗;與此相應,必將提高MN和對端實時通信的服務質量。
路由優(yōu)化的協(xié)議原理很簡單,和家鄉(xiāng)代理(HA)登記過程類似,只要MN和CN交互綁定更新(BU)和綁定更新確認(BA)報文,在CN上建立起MN的家鄉(xiāng)地址(HoA)和CoA的綁定,以后CN就可以使用CoA作為目的地址和MN直接通信了,當然還需要有下文所述的安全機制的保障。從理論上說,由于路由優(yōu)化有一定的協(xié)議開銷,只有對于持續(xù)時間較長的數(shù)據通信采用路由優(yōu)化才是經濟的,MN應該根據會話性質作出是否采用路由優(yōu)化的決策。可是實際上,會話持續(xù)時間往往難以估計,因此一種簡單的方法是通過配置規(guī)定MN是否采用路由優(yōu)化。
為了使路由優(yōu)化對于上層完全透明,以便上層應用不受影響,例如已建的TCP連接不會因此而中斷,應該使上層協(xié)議看到的CN-->MN分組的目的地址以及MN-->CN分組的源地址仍然是HoA,而并非CoA。為此協(xié)議規(guī)定,在CN-->MN分組中,基本報頭的目的地地址置為CoA,同時新定義一個第二類路由擴展報頭,置入HoA,如圖5(a)所示。當分組到達MN后,MN從路由擴展報頭中找回其HoA,替換基本報頭中的目的地址,作為該分組的最終目的地址,實際上就是通過節(jié)點內部將分組傳遞至上層。于是對于上層來說,分組目的地地址仍然是HoA。
與此類似,在MN-->CN分組中,基本報頭的源地址置為CoA,使得分組能夠順利通過外地鏈路上的接入路由器,同時將目的地選項擴展報頭中新定義的家鄉(xiāng)地址選項置為HoA,如圖5(b)所示。當分組到達CN后,CN從目的地擴展報頭中找出HoA,替換基本報頭中的源地址,然后將分組傳遞至上層。于是對于上層來說,分組源地址仍然是HoA。
4.2 路由優(yōu)化下的數(shù)據傳送
路由優(yōu)化具體實現(xiàn)時需要考慮兩點。
首先,CN可能也是一個移動節(jié)點,且正位于外地鏈路中,如果它們都和對方建立了路由優(yōu)化綁定,則在向對方發(fā)送的分組中將既包含第二類路由擴展報頭,又包含含有家鄉(xiāng)地址選項的目的地選項擴展報頭,排列次序是路由報頭在前。
其次,MN和CN之間根據應用需要可以建立IPSec安全關聯(lián),通常安全關聯(lián)都是對應兩者的HoA建立的,使其不會隨節(jié)點移動而變化,此時,發(fā)送分組的頭部構建過程將由3個步驟組成:
(1)基本報頭的源地址和目的地址分別置為本端和對端的HoA;
(2)加上第二類路由擴展報頭,其中置入對端的CoA;再加上目的地選項擴展報頭,其中家鄉(xiāng)地址選項置為本端的CoA;
(3)根據基本報頭信息(即兩端的HoA)建立和對端的安全關聯(lián)(形成IPSec頭部)后,再將第二類路由擴展報頭的地址內容和分組目的地址字段的內容交換,將目的地選項擴展報頭中的家鄉(xiāng)地址選項內容和分組源地址字段的內容交換。
5 移動IP安全威脅分析
5.1 綁定更新攻擊
移動IP技術的核心內容是MN通過向家鄉(xiāng)代理或CN發(fā)送BU消息,通知它們以CoA取代HoA將分組發(fā)往MN的當前位置,實現(xiàn)分組傳送的重定向。因此,BU消息自然是移動IP受攻擊的主要對象,安全威脅主要是由于攻擊者以假冒身份、篡改消息、偽造消息等手段使MN分組被轉送至錯誤的地點,從而導致用戶通信中斷、數(shù)據被竊聽、遭受拒絕服務攻擊等后果。典型攻擊情況包括:
(1) 阻斷通信:由于MN的HoA是公開的,因此攻擊者可以假冒移動節(jié)點向其家鄉(xiāng)代理發(fā)送BU消息,內置虛假的CoA,從而使MN再也收不到其他節(jié)點發(fā)來的分組。攻擊者也可能位于MN和家鄉(xiāng)代理或CN之間,截獲并篡改BU消息中的CoA參數(shù),實施所謂的中間人攻擊,使其他節(jié)點或CN發(fā)出的分組再也到達不了MN。
(2) 竊聽數(shù)據:使用上述同樣的手法,攻擊者將CoA設置或篡改為自身的地址,將至MN的所有分組都重定向至攻擊者,從而竊聽至MN的所有通信數(shù)據。
(3) 洪泛攻擊:攻擊者首先和某一節(jié)點建立會話連接,然后向該節(jié)點發(fā)送BU消息,將CoA設置為被攻擊者的地址,從而將該節(jié)點發(fā)出的數(shù)據都轉發(fā)給被攻擊者。攻擊者可以故意從該節(jié)點下載一個很大的文件,或者該節(jié)點根本就是一個播放視頻流的服務器,于是被攻擊者將會收到大量的無用數(shù)據,造成其設備和鏈路的過載甚至癱瘓。
(4) DoS攻擊:攻擊者可以向家鄉(xiāng)代理發(fā)送大量偽造的BU消息,每個消息的HoA都不相同,從而使家鄉(xiāng)代理建立大量的綁定數(shù)據緩存,耗盡所有的存儲空間,最終使家鄉(xiāng)代理無法工作。同樣的攻擊也可以針對非家鄉(xiāng)代理的其他節(jié)點。
5.2 擴展頭部攻擊
這里指的就是路由優(yōu)化中用到的兩個擴展頭部。當攻擊者是一個MN時,他本應該在目的地選項擴展報頭的家鄉(xiāng)地址選項中置入他的HoA,但是實際上他置入的是另外一個節(jié)點的地址,于是當CN收到攻擊者發(fā)來的分組后,將會把該節(jié)點的地址作為分組的源地址,并將回復數(shù)據分組發(fā)至該節(jié)點,攻擊者藉此對該節(jié)點實施洪泛攻擊。
當攻擊者是一個和MN通信的對端節(jié)點時,他本應該在第二類路由擴展報頭中置入MN的家鄉(xiāng)地址,但是實際上他置入的是另外一個節(jié)點的地址,于是MN將把收到的分組中繼轉發(fā)至該節(jié)點,而不是發(fā)給自身的上層協(xié)議。也許攻擊者并沒有對于該節(jié)點的訪問權,但是通過這樣的手段借助MN作為代理可以實現(xiàn)對該節(jié)點的訪問。
5.3 移動前綴發(fā)現(xiàn)攻擊
上一講述及,MN可以通過域名系統(tǒng)(DNS)的方法獲取其家鄉(xiāng)鏈路前綴,另一種方法是通過MN和HA之間交互移動前綴請求(MPS)和移動前綴通告(MPA)消息獲取。攻擊者可能截獲MN發(fā)送的MPS消息,然后假冒HA回復MPA,將其自身的鏈路前綴作為MN的家鄉(xiāng)鏈路前綴告知MN,這樣MN將把BU消息發(fā)送給攻擊者,以后所有發(fā)往MN的分組都將發(fā)給攻擊者,后者將可對所有分組進行復制、任意轉發(fā)甚至丟棄。
6 移動IP安全技術
根據以上分析,移動IP制訂了以下的安全保護措施。
6.1 家鄉(xiāng)代理綁定安全保護
其基本要求是:家鄉(xiāng)代理能夠確認綁定更新來自合法的MN、綁定消息未被篡改、綁定消息能夠加密以防竊聽,這些要求是通過IPSec實現(xiàn)的。IPSec是IETF制定的因特網網絡層的安全標準,提供IP分組傳送的認證(含報文完整性和抗重發(fā)攻擊)、加密以及密鑰與安全協(xié)定管理3項功能,它是IPv6的必備功能,也是移動IP安全技術的基礎。
IPSec加密功能僅對IP包的凈荷部分施行,IP報頭并不加密,因為中間路由器選路必須識別報頭。加密后的凈荷稱為封裝安全凈荷(ESP),其前部字節(jié)為ESP頭部。凈荷加密一般采用秘密密鑰算法,發(fā)送方和接收方共同商定一個共享密鑰KAB,該密鑰只有收發(fā)雙方知曉。發(fā)送方使用該密鑰加密:Y=E(X |KAB),其中,E表示加密算法,X 和Y分別表示明文和密文;接收方使用該密鑰解密:X=D(Y |KAB),其中,D表示解密算法,接收方只有使用同樣的密鑰才能解密還原得到原來的明文。加密技術的關鍵是要設計出一種高強度的算法,使得攻擊者攔截到大量的密文后仍然不能在實際可行的時間內推斷出明文,另一個關鍵問題是必需確保密鑰的秘密性。
IPSec認證功能采用基于秘密密鑰和消息摘要(MD)的算法,支持認證、報文完整性檢驗和抗重發(fā)攻擊3項功能。首先,發(fā)送方隨機生成一段數(shù)據Data,然后將Data附在秘密密鑰之后形成組合數(shù)據,再生成組合數(shù)據的消息摘要MD{KAB|Data},并將Data和MD一起發(fā)送給接收方。接收方收到后,將Data附在自己保存的KAB之后,同樣計算其摘要,然后將其和收到的MD比較。如果兩者相同,就判定報文的發(fā)送方是合法的。
所謂消息摘要就是根據一定的加密算法由一段任意長的數(shù)據計算得出的一個固定長度的較小的數(shù)據塊。該算法的特點是由不同的消息生成相同摘要的概率十分微小,這樣,即使攻擊者知道用戶發(fā)送的Data,由于不知道用戶的密鑰,也不可能生成組合數(shù)據的摘要。
如果Data就是用戶發(fā)出的報文,當攻擊者中途攔截到該報文并作篡改時,接收方收到后會發(fā)現(xiàn)MD{KAB|報文}有誤,從而拒絕該報文,這樣就實現(xiàn)了報文完整性檢驗。
如果Data是“報文+當前時戳”,當攻擊者中途攔截到該消息,過一段時間再重發(fā)該報文,接收方根據時戳可以判斷這是過時的老消息,將于丟棄。如果攻擊者重發(fā)時試圖修改時戳,則接收方將發(fā)現(xiàn)MD{KAB|報文|時戳}有誤,同樣將拒絕該消息。由此,可實現(xiàn)對重發(fā)攻擊的保護。
IPSec的認證信息形成認證頭部(AH),AH認證的數(shù)據不但包括IP包的凈荷,還包括IP報頭中的固定部分。如果AH和ESP同時存在,則AH位于ESP的外部。ESP除了必備的加密功能外,也可以提供任選的認證功能,但是它只對ESP本身的數(shù)據進行認證,并不對外部的IP報頭進行認證。
IPSec密鑰與安全協(xié)定管理功能引入安全關聯(lián)(SA)和安全策略(SP)兩個概念。SA由通信雙方協(xié)商確定,它規(guī)定了保護數(shù)據包安全需用到的IPSec協(xié)議、協(xié)議算法及參數(shù)、密鑰以及密鑰的有效時間等。一個具體的IPSec實現(xiàn)建有一個SA數(shù)據庫(SAD),數(shù)據庫中包含各種安全處理的SA記錄。SA是單向的,也就是說,每個通信方有一個處理發(fā)送數(shù)據包的SA(out),還有一個處理接收數(shù)據包的SA(in)。另外,SA是從屬于安全協(xié)議的,也就是說,每種安全協(xié)議(如加密和認證)分別有其對應的SA。
SP定義安全保護的策略。一個具體的IPSec實現(xiàn)建有一個SP數(shù)據庫(SPD),它和SAD聯(lián)合使用,提供靈活的安全保護功能。其基本過程是:根據數(shù)據包頭中特定字段的組合形成檢索SPD的“選擇符”,檢索結果包括一個SAD指針,指向SAD的一個記錄,該記錄規(guī)定了應如何對該數(shù)據包作安全性處理。
對應上述3項功能,IPSec包含3個協(xié)議:加密協(xié)議、認證協(xié)議和密鑰交換協(xié)議。其中,加密協(xié)議主要定義ESP頭部結構、ESP安全模式及ESP的處理;認證協(xié)議定義了AH結構及其處理;密鑰交換協(xié)議(IKE)是用來動態(tài)建立SA。
圖6示出ESP在IP數(shù)據包中的位置及其字段結構,它分配的協(xié)議號是50,即如圖6沒有AH保護的情況下,IP頭中的“協(xié)議”字段應置為50?!鞍踩珔?shù)索引”(SPI)供接收端唯一地標識應使用的SA。如前所述,發(fā)送方可根據選擇符得到SAD數(shù)據庫的一個記錄(即SA),其中除已協(xié)商好的安全協(xié)議、算法及參數(shù)外,還包含一個對應的SPI。發(fā)送方就將此SPI置入ESP頭部?!靶蛄刑枴笔且粋€單向遞增的計算器,每發(fā)送一個數(shù)據包,序列號加1,以支持抗重發(fā)攻擊保護。初始化向量是供加、解密算法使用的初值。這3個字段組成ESP頭,它們是不被加密的,否則接收端將無從知道如何處理,也無法執(zhí)行解密算法。被保護的數(shù)據是已被加密的密文數(shù)據。
ESP尾部包括填充字段和驗證數(shù)據。填充字段的作用是使ESP的邊界和32比特字的邊界對齊,某些加密算法要求輸入數(shù)據是一定大小密碼塊長度的整數(shù)倍,如不能滿足此要求,也要求加入填充字段。此外,填充還可以隱蔽凈荷數(shù)據的真實長度,提高加密性能?!跋乱粋€頭”字段的作用是指明被保護數(shù)據從屬于什么協(xié)議。最后的“驗證數(shù)據”是任選字段,就是認證算法生成的消息摘要,它只是對ESP本身的數(shù)據進行完整性保護,并不對其外部的IP頭部進行保護。
移動IP通常采用ESP對MN與HA之間的綁定更新過程進行保護。兩者之間的安全策略(SP)和安全關聯(lián)(SA)基于移動節(jié)點的家鄉(xiāng)地址(MN-HoA)和家鄉(xiāng)代理地址(HA-ADD)定義,所要保護的協(xié)議是攜帶BU/BA消息的移動擴展報頭(MH)。SA可以人工配置,采用指定的加密和認證算法以及靜態(tài)密鑰;也可以通過IKE協(xié)議動態(tài)配置,由MN和HA協(xié)商確定算法,采用動態(tài)密鑰,它需要設置證書中心,協(xié)議開銷較大,但密鑰管理及抗重發(fā)攻擊的能力更強。
針對MN向HA方向發(fā)送BU消息的保護,在MN中的SP和SA人工配置可為:
MN SPD OUT:
- IF source = MN-HoA destination = HA-ADD proto = MH
THEN USE SA SA1
MN SAD:
- SA1(OUT, spi_a, HA-ADD, ESP, TRANSPORT):
source = MN-HoA destination = HA-ADD proto = MH encryp = 3DES“KE” auth = hmac-shal“KA”
上述配置表示MN側的發(fā)送方向安全策略是:選擇符為“源地址=MN-HoA且目的地址= HA-ADD且被保護協(xié)議=MH”,使用編號為SA1的安全關聯(lián)。SA1安全關聯(lián)的定義是:輸出方向,SPI=spi_a,目的地地址=HA-ADD,采用ESP協(xié)議保護,保護模式是傳送模式;處理規(guī)則是:源地址=MN-HoA,目的地址= HA-ADD,被保護協(xié)議=MH,加密算法是3DES,加密密鑰是KE,認證算法是HMAC-SHAL,認證密鑰是KA。
在HA中的相應SP和SA配置如下所示,其含義不言自明:
HA SPD IN:
- IF source = MN-HoA destination = HA-ADD proto = MH
THEN USE SA SA1
HA SAD:
- SA1(IN, spi_a, HA-ADD, ESP, TRANSPORT):
source = MN-HoA destination = HA-ADD proto = MH encryp = 3DES “KE” auth = hmac-shal“KA”
圖7是MN構建由ESP保護的BU消息的步驟。首先,構建IP基本報頭,其源地址為MN-HoA,目的地址為HA-ADD,并構建移動擴展報頭,內置BU消息;然后,插入目的地選項擴展報頭,其家鄉(xiāng)地址選項置為MN-CoA;接著,根據安全關聯(lián)SA1,對移動報頭作加密和認證處理,插入ESP頭部;最后,將家鄉(xiāng)地址選項地址和IP包的源地址互換。HA接收該IP包后,作相反處理,通過認證操作確認報文來自合法的MN,且報文未被篡改,通過解密操作得到原始的BU報文,由此確保BU傳送的安全性。
6.2 路由優(yōu)化安全保護
路由優(yōu)化需要保護的是MN和CN之間交互的綁定更新過程,從理論上說,也可以利用IPSec技術實現(xiàn),但是要求MN與眾多的CN建立安全關聯(lián)并不現(xiàn)實,因此,移動IPv6(MIPv6)專門為此定義了一個返回路由可達過程。其基本思路是使CN確認MN的同時擁有HoA和CoA兩個地址,即這兩個地址都指向同一個節(jié)點,因此請求在這兩個地址之間進行分組重定向沒有安全隱患。其實現(xiàn)方法是讓MN以HoA和CoA作為源地址分別向CN發(fā)送一個報文,CN設法對這兩個地址的報文進行身份認證,如果認證均成功,就表明MN擁有這兩個地址。
圖8是返回路由可達過程的協(xié)議步驟。
如圖8所示,有以下幾步:
(1)MN向CN發(fā)送家鄉(xiāng)地址測試啟動(HOTI)消息,消息的源地址是HoA,因此必需經由家鄉(xiāng)代理(HA)轉送,消息中帶有一個隨機數(shù)Cookie1用以關聯(lián)CN回送的響應。
(2)NM向CN發(fā)送轉交地址測試啟動(COTI)消息,消息的源地址是CoA,消息中也帶有一個隨機數(shù)Cookie2。
(3)CN收到COTI后,根據式(1)計算“CoA密鑰生成令牌”:
CoA密鑰生成令牌= First (64,
HMAC_SHA1 (Kcn, (CoA | Nonce2| 1))) (1)
式(1)中,Kcn是CN系統(tǒng)初始化時生成的密鑰,適用于所有MN;Nonce是CN周期生成的時變隨機數(shù),其長度為64 bit,每次生成的Nonce都存儲在系統(tǒng)中,并賦予一個16 bit的索引,可供以后檢索;Nonce2表示收到COTI時CN當時的時變隨機數(shù);將CoA與Nonce2串接后,使用密鑰Kcn并采用HMAC_SHA1算法計算得到報文認證碼,取其前64位即為所需的CoA令牌。
CN向MN回送轉交地址測試(COT)消息,消息的移動報頭中攜帶下列參數(shù):Cookie2、Nonce2索引和CoA令牌。
(4)CN收到HOTI后,根據式(2)計算“HoA密鑰生成令牌”:
HoA密鑰生成令牌= First (64,
HMAC_SHA1 (Kcn, (HoA | Nonce1| 0)))(2)
CN經由家鄉(xiāng)代理向MN回送家鄉(xiāng)地址測試(HOT)消息,消息的移動報頭中攜帶下列參數(shù):Cookie1、Nonce1索引、HoA令牌。
(5)MN收到COT和HOT消息,核查消息中回送的Cookie,確認是CN發(fā)回的應答后,根據HoA令牌和CoA令牌生成一個綁定管理密鑰Kbm,如式(3)所示。
Kbm=SHA1(HoA令牌 | CoA令牌) (3)
然后構建移動頭部,頭部中包含以下參數(shù):綁定更新報文、nonce1索引、nonce2索引、認證數(shù)據。其中,認證數(shù)據如式(4)所示,移動數(shù)據如式(5)所示。
認證數(shù)據=First(96,MAC(Kbm,
移動數(shù)據) (4)
移動數(shù)據=CoA|CN地址|移動頭數(shù)據
(除認證數(shù)據以外)(5)
最終形成綁定更新消息發(fā)往CN,消息的源地址是CoA。
(6)CN收到綁定更新消息后,根據消息中攜帶的索引找回nonce1和nonce2,重新計算得出Kbm,進而算得認證數(shù)據,與綁定更新消息中攜帶的認證數(shù)據對比,如相等就表示HoA和CoA的確匯聚于同一節(jié)點,于是就接受該綁定更新請求,并向MN回送綁定確認消息,確認消息中也帶有認證數(shù)據。
6.3 其他安全保護
其他安全保護包括擴展頭部和移動前綴發(fā)現(xiàn)的保護。
考慮的擴展頭部包括家鄉(xiāng)地址選項和路由選擇頭部,這兩個擴展只有在CN已經接受MN的綁定更新以后才能使用。因此,CN在收到一個包含家鄉(xiāng)代理選項的報文時,應檢查其綁定緩存區(qū),核實是否存在家鄉(xiāng)地址選項中的地址(HoA)和報文源地址(CoA)的綁定。如不存在,應丟棄該報文,并回送綁定錯誤報文。
對于第二類路由擴展報頭,規(guī)定其中只能包含一個地址,且必須是HoA,而且只有當某節(jié)點是MN時才會處理該擴展報頭,這樣它能判斷報頭中的地址是否就是其自身的地址,防止報文被中繼到其他無關的節(jié)點。
用于移動前綴發(fā)現(xiàn)的MPS和MPA消息的保護機制和家鄉(xiāng)代理綁定更新的保護機制大體上相同,差別只在于安全策略和安全關聯(lián)的設置中,被保護的協(xié)議應該是互聯(lián)網控制報文協(xié)議(ICMP),而不是綁定更新時的移動頭。(待續(xù))
收稿日期:2008-07-21
作者簡介
糜正琨,南京郵電大學通信與信息工程學院教授、博士生導師,中國通信學會會士。目前主要研究方向是下一代網絡技術和異構網絡融合技術。曾獲江蘇省科技進步二等獎一項,信息產業(yè)部科技進步二等獎和三等獎各一項,已發(fā)表SCI、EI收錄論文30余篇,出版專著和國家級教材8部,申請國家發(fā)明專利4項。