做者:Tongqing Qiu, Lusheng Ji, Dan Pei等html
單位:佐治亞理工學院、美國電話電報公司實驗室、康奈爾大學等算法
來源:Conference on Usenix Security Symposium網絡
時間:2009年框架
本文提出了一種魯棒性良好且支持增量部署的定位前綴劫持者的輕量級機制——LOCK。LOCK基於兩條重要的事實:一是劫持者不能操控未到達本身的AS路徑,二是到受害前綴的路徑會在劫持者附近造成「收斂」。具體方法是在網絡中分佈式的部署monitors來監控控制/數據平面的到受害前綴的路徑變化狀況,結果顯示LOCK區分前綴劫持者的準確率高達94.3%。本文貢獻有如下四點:分佈式
當因爲誤配置或惡意BGP路由器產生/宣稱不屬於它本身的IP前綴,咱們就說此時發生了IP前綴劫持。AS收到這類錯誤通告的BGP報文後,或許會接受並進一步傳播錯誤路由,路由器的路由表會受到「污染」,從而將會使本來應該到受害前綴(目標前綴)的流量重定向到攻擊者。按慣例咱們將前綴劫持分爲三類:性能
本文中的前綴劫持包括以上三種攻擊類型,除非有特定說明。目前有一系列方法來檢測前綴劫持,包括利用從控制平面收集的BGP更新報文中的信息,或利用從數據平面收集的端到端的探測信息,或結合兩者的方法。不一樣的是,LOCK是一種劫持者定位機制而不是劫持檢測機制,爲了定位劫持者,LOCK僅僅只須要知道特定前綴是否被劫持,所以LOCK也能結合檢測方法來進一步定位劫持者,此外,LOCK也能利用數據平面或控制平面信息來定位劫持者。spa
與前綴劫持檢測方法相似,定位劫持者也能夠從數據或控制平面出發來解決。無論怎樣,咱們的目標是在monitors利用到受害前綴的AS路徑信息來定位劫持者。在控制平面,AS路徑信息來自於路由表或更新報文中,在數據平面,AS路徑信息來自於AS級的traceroute命令(將IP地址映射爲AS號)。正如全部的方法有利有弊同樣,獲取實時的數據數據平面信息要比實時BGP信息要容易一些,可同時,又容易被劫持者操控AS路徑來反制定位算法。htm
目前,最經常使用的定位劫持者的方法是考慮目標前綴的源AS。如圖1(a)所示,分別顯示了在劫持者H攻擊前,M一、M二、M3三個monitors的AS路徑信息,它們都顯示源AS是T;在圖1(b)中,劫持者H宣稱一條路徑H可以到達目標前綴p,致使A、B、M一、M2接受了這條新路由,由於新路由要比以前(經過CDT)的要好。在這種狀況下,常規的定位方法能很容易的鑑別出新出現的源AS號H是劫持者。可是在圖1(c)中,這種常規的定位方法失效了。當劫持者H僞裝與自治域T之間有一條鏈路,而且聲稱AS路徑爲HT,而後又從新被A、B、M一、M2接受了這條路由,由於源AS依然是T,因此此時不能定位劫持者H。有人試圖想除了檢查源AS以外還要檢查在路徑中的其它AS信息,可是劫持者甚至可以不出如今AS路徑當中來應對這種追查,例如,在圖1(d)中,H假裝本身是擁有前綴p的T,這樣H不會出如今路徑中。blog
全部上述在控制平面出現的問題,在數據平面也一樣會存在,幾乎全部的數據平面探測機制都源於著名的traceroute命令,traceroute程序將不一樣的初始TTL值的報文發送到相同的目的地,當沿着路徑轉發至目的地的過程當中,每通過一個路由器TTL值就會相應減1,當TTL值爲0時,此時通過的路由器須要給探測源一個ICMP超時報文來告知它。當探測報文通過劫持者,而且此時初始TTL值遠大於源到劫持者的hop距離時,劫持者有不少方法干擾路徑探測,進而來應對這種定位算法。在下圖2(a)中,劫持者H的邊界路由器在黑洞和欺騙這兩類前綴劫持狀況下,會真實地響應traceroute命令。在這兩種狀況下,路由地址都屬於H,而且映射也爲H,簡單的定位方法可以肯定H是新出現的源AS,所以H是劫持者。然而,在如圖2(b)所示的竊聽攻擊中,劫持者H經過XYZT路徑來進一步傳播traceroute探測包,因爲此時源AS依然仍是T,因此此時方法失效。更進一步地,劫持者也能夠簡單的丟棄觸發報文並不做相應的響應,來進一步干擾traceroute探測。或者,它能夠用任意源IP地址發送ICMP超時消息,以欺騙探測源,使其認爲這些地址的路由器正在路由到目的地。劫持者甚至能夠在TTL值爲0以前就向探測源發送ICMP超時消息。在圖2(c)中,劫持者H操縱traceroute響應,在IP-AS映射以後,M1的AS路徑爲ACDT,M2的AS路徑爲BDT,這都不包含劫持者H,致使定位劫持很困難。排序
LOCK機制基於兩條重要的觀察,可以適應於數據平面和控制平面,不一樣種類的劫持,以及劫持者是否參與反制應對的狀況。第一條觀察是:劫持者不能操縱從被污染的vantage位置到劫持者「上游」(更靠近vantage位置)鄰居的部分AS路徑。在圖1(c)(d)和圖2(b)(c)中,對被污染的vantage位置M1和M2而言,劫持者H的上游AS是A和B,而且M1A和M2B是值得信賴的。第二條觀察是:從多個vantage位置到受害前綴,可信的部分受污染AS路徑會在劫持者附近造成「收斂」。本文重點關注劫持者的上游鄰居的鑑別,直覺上,劫持者應該在劫持者鄰居的1-hop鄰居集合的交叉點位置,而且若是monitors分佈得足夠均勻的話,交叉點集合的規模應該很小。對於給定AS的鄰居集能夠從AS級的拓撲信息得來。在圖1和圖2中,假設咱們知道A和B(它們分別位於vantage位置M1和M2的受污染路徑上)是劫持者的上游AS,那麼咱們能夠猜想劫持者應該屬於A的鄰居集合neighborset(A)={M1,B,H}和B的鄰居集合neighborset(B)={M2,C,H}的交集,很顯然,兩者的交集是H。可是,一般咱們並不知道劫持者的上游鄰居AS是誰,因此,在受污染路徑上的每個AS都有多是劫持者的上游鄰居AS,也就是說劫持者存在可能與任一個AS相鄰的可能性。咱們依此創建一條路徑的鄰居集合,這個集合包括此條受污染路徑上的每個AS及其全部的鄰居,顯然劫持者自己必然包含在這個集合中。LOCK將全部污染路徑的鄰居集合合併,並假設全部的污染路徑都通過了劫持者的鄰居AS,那麼理論上某個AS出如今集合中的次數越大,它就越有多是劫持者。接着咱們按照集合中出現的次數來進行排序,就會獲得最大可能的幾個「收斂點」,便可能的劫持者,排序越靠前,是劫持者機率就越大。
LOCK是利用互聯網上分佈式部署的monitors來工做的,monitors的數量和分佈位置都會影響定位劫持者的準確度,一般來講,monitors數量越多,LOCK可以達到的準確度也就越高,但與此同時帶來的開銷也會更多,這種開銷增加與monitors的數量增加呈線性相關,但得到的準確度提高量卻不多,因此咱們必須選取合適數量的monitors來兼顧準確度與開銷這兩方面。這一部分咱們提出了新穎算法來從候選集中選擇必定數量的monitors,咱們對monitor的選擇問題建模以下:一開始,咱們有M個候選monitors,對於每個目標前綴,從這M個monitors中選擇一個包含m個monitors的子集。爲了在基於必定數量的monitors狀況下可以達到最大的定位準確度,monitors的選擇必須有兩項要求:第一是能最大可能性地能觀察目標前綴的劫持事件,第二是monitor到目標前綴的路徑儘可能要多樣,這樣劫持事件就能從不一樣的路徑角度來分析。咱們的monitor選擇算法由如下三個部分組成:
給定目標前綴,候選monitors聚類標準基於各自到目標前綴的AS級路徑的類似度。一對路徑的類似度定義爲:以其中最短一條路徑爲標準,它們包含的相同AS數量,若是沒有共同的AS,那麼類似度爲0,若是一條路徑是另外一條路徑的子集或者彼此徹底相同,咱們就說類似度爲1。咱們一樣定義類間的類似度:分別從兩個類中任意取出一條路徑,兩條路徑的類似度的最大值即爲這兩個類的類似度。咱們定義聚類這部分是分層聚類問題,這類問題有著名算法如層次聚類方案(Hierarchical Clustering Schemes),其具備多項式時間複雜度。本文中,咱們採用以下簡單的聚類算法:第一步,從M個monitors出發,初始構造M個類,每一個類只包含一個monitor;第二步,計算每個類的類間類似度,將其中類似度最大的兩個類合併;第三步,重複第二步方法,直到最後只剩下m個類結束。
咱們在每個類中,基於能觀察對給定目標前綴t發生劫持事件的可能性的大小來對候選monitors進行排序。相關研究指出,對於一個給定的位置s,從s到t的路由是否被劫持者h污染,依賴於原始最優路由和由h宣稱的虛假路由。咱們假設當今互聯網的路由策略都遵循"prefer customer route"和"valley-free routing",根據s到t的原始最優路由的下一跳AS與s的商業關係分爲客戶、對等體和提供者,咱們將從s到t的原始最優路由分別標記爲客戶路由,對等體路由和提供者路由。根據域間路由協議,客戶路由優先級大於對等體路由大於提供者路由,而且其它路由策略同樣時,AS路徑更短的優點更大。所以,當劫持者h宣稱一條虛假路徑時,原始最優路由是提供者路由的monitors最容易被污染,對等體路由次之,客戶路由最末。其它策略相同時,AS路徑長的比短的更容易被污染。(讀者不妨思考一下爲何會這樣,哈哈哈,參考下表)。咱們的排序算法如算法1所示(我的認爲算法格式是真的差,就不能換個行嗎?而且算法自己也很粗糙)。注意到創建AS的拓撲關係自己也是一個具備挑戰性的問題,咱們利用相關技術來推測AS關係,顯然這樣獲得的結果不會很完整,可是後面的評估部分會證實排序算法依然會獲得較高的定位準確率。
LOCK機制定位劫持者基於從monitors到受害前綴的AS路徑,這能夠從控制平面來得到,如BGP的AS路徑,也可從數據平面來得到,如traceroute路徑。在數據平面,LOCK機制須要進行預處理而後計算相應的AS路徑。
劫持發生後,互聯網的一部分到受害前綴的流量將會通過劫持者,部署在被劫持位置的monitors將會知道它們的monitor-to-prefix被改變,這些monitors就是劫持者定位算法的基礎。有研究幫助咱們區分真實劫持致使的路徑改變與非劫持致使的路徑改變。若是monitor-to-prefix路徑來源於數據平面,LOCK將對路徑進行預處理,一般在數據平面上須要IP地址進行轉發的是traceroute,有關traceroute的講解可參考我另外一篇博文,在此再也不贅述。利用traceroute獲得的路由級路徑須要轉換爲AS級路徑,在轉換過程當中,traceroute結果中的空記錄將會被簡單的丟棄掉,這種簡化不會對最終結果有太大影響,由於只有當這個AS內的全部路由器對traceroute命令都失效時,纔會對結果有影響,而這種狀況是極少發生的。經過這種轉換獲得的路徑咱們稱之爲"reported paths"。經過iPlane服務能將IP地址映射爲對應的AS,因爲IXPs和sibling AS的存在,要實現很精確的結果幾乎是不可能的,咱們認爲這對咱們的算法影響是很小的,緣由以下:第一,路由或AS這些節點的分佈,可以致使映射錯誤的狀況是不多的,若是咱們的路徑不包含有問題的節點,咱們的結果不會受到映射錯誤的影響;第二,是由咱們算法的魯棒性決定的,只要這些映射錯誤的節點不在劫持者附近,一樣不會帶來影響。另外因爲短期內IP與AS的映射通常不會有改變,因此咱們能夠預先計算和存儲,不須要實時的從控制平面得到。若是traceroute觸發消息確實通過劫持者,劫持者也能夠僞造traceroute結果。考慮到前綴已經被劫持了,攜帶足夠大的初始TTL值的觸發消息,至少大於從monitors到劫持者的跳數,這很顯然地將會通過劫持者。劫持者能夠利用這點來僞造對觸發消息的響應來隱藏它本身的身份,因此,從這類虛假traceroute結果映射而來的AS路徑將會包含錯誤的AS,不妨稱之爲「噪音」。所以,若是路徑中的某個結點被判斷爲虛假節點,那麼咱們沒必要考慮此條路徑上超過這個節點的任何節點,由於這個虛假節點的位置必然已經超過了劫持者的位置。在預處理部分,咱們也考慮了AS節點的重複出現問題,若是某條路徑上至少出現兩次相同的AS,那麼超過此AS第一次出現位置的全部節點都是虛假的,這是由於真實的traceroute結果不會含有循環。
對於每個monitor,都存在一個對應的AS級的monitor-to-prefix路徑pi,不管是由traceroute路徑計算而來仍是直接從BGP路由器得來。定義路徑pi的鄰居集N(pi)爲路徑上全部節點及其與之相距一跳的全部鄰居AS的並集。由於目標受害前綴所屬的AS必然不是劫持者,因此咱們從N(pi)上將其去掉。注意到在劫持發生前,LOCK是基於從RouteView推測的AS拓撲來計算鄰居集,而不是從劫持發生時實時的BGP數據推測而來。儘管劫持者在攻擊前可以污染AS拓撲信息,可是也不可能污染全部的路徑。
/ *後文都是一大堆公式符號,做者做了改進並評估了效果,在此略去幾千字 */