天天看點

終結BGP協定的安全漏洞——下一代網際網路架構SCION

作者:SDNLAB

傳統網絡中,各個AS(Autonomous System,自治系統)互相連接配接并使用EGP( Exterior Gateway Protocol,外部網關協定)互相通信,其中BGP是EGP的代表協定。BGP支援70000 多個不同網絡之間的協調,但在全球多次發生的網絡故障事實表明,BGP是網際網路中最脆弱的部分之一。2020 年,一場影響美國服務提供商 Cloudflare 的重大事件持續了 7 個小時,導緻全球流量下降 3.5%。此事件由一個微不足道的BGP配置錯誤引起——區域路由器中的輕微故障觸發了衆所周知的蝴蝶效應,進而導緻大部分地區的網際網路連接配接中斷。這種中斷會給企業帶來巨大的成本,并對依賴網際網路提供關鍵服務的機構造成嚴重影響。

那麼,一個重要的問題是:我們為何要依賴這種不可靠的基礎設施?答案出奇地簡單:在發明之初,BGP并非旨在處理我們今天擁有的全球規模和數量的網絡互連。BGP的建立是為了支援 80 年代後期規模小得多的網際網路互連。在過去的 30 年裡,它的大部分功能性運作給人一種虛假的穩定感。為了保證可靠通信,我們需要比 BGP 所能提供的更強大的屬性。

其中,由瑞士蘇黎世聯邦理工大學及其附屬公司 Anapaya Systems 開發的SCION(Scalability, Control, and Isolation On Next-Generation Networks)架構,自诩為“最現代、最安全的架構”,正引起業界關注。SCION 代表的是下一代網絡的可擴充性、可控性和隔離性,其目标是通過安全的域間路由和路徑感覺網絡實作一個安全、穩定和透明的網際網路。

本文将系統介紹什麼是SCION 、與傳統網際網路架構的對比、SCION應用現狀等。

傳統網際網路架構概述

網際網路是一個全球範圍内的互連計算機網絡系統。通過網際網路,我們可以即時分享全球的資料和資訊。我們依賴于手機、筆記本電腦、物聯網裝置、家庭自動化裝置等不斷地通路網際網路,以便與他人進行交流、購物、使用社交媒體以及工作等等。

從架構的角度來看,網際網路隻是多個網絡的互連,它是将世界各地的計算機網絡連接配接成一個實體。網際網路不是一台大型計算機,而是衆多計算機和裝置互相連接配接。

為了能夠連接配接所有大陸,在世界各地建立了一個非常複雜的實體海底網絡,如下所示:

| 海底電纜的布線(來源:維基百科)

網際網路的曆史

在網際網路時代之前,計算機隻是一台大型主機,無法與任何其他計算機“對話”。當時沒有任何技術或術語可以将兩台計算機通過“網絡”連接配接起來。

從曆史上看,網際網路的起源始于1960 年代,當時美國進階研究計劃局網絡(ARPANET) 開始開發其公共分組交換網絡。

1969年10月29日,加州大學洛杉矶分校(UCLA)的一名學生查理·克萊恩(Charley Kline)試圖登入斯坦福研究所(SRI)的主機,這是兩台計算機之間第一次成功發送資訊。

發送到遠端終端的第一個指令是“LOGIN” ——它一共進行了兩次嘗試,第一次嘗試在 Charley 鍵入“LOG”後崩潰了,但他們設法解決了問題,并在第二次嘗試時成功登入到 SRI 的遠端終端。随着時間的推移,ARPANET也開始不斷發展壯大。

然而,由于連接配接到 ARPANET 的網絡不同,使用的網絡協定也各不相同,一些網絡無法互相通信。為了克服這一挑戰,1970 年代開發出了TCP/IP協定棧,并在 1974 年産生了第一個初始 TCP RFC 草案 - RFC675。該 RFC 中首次使用術語“Internet”作為網際網路絡的簡寫。

TCP/IP 堆棧花了将近10 年的時間成為了 ARPANET 标準,所有節點都在 1983 年遷移到 TCP/IP 堆棧。其他較舊的協定,如 1960 年代開發的網絡控制程式 (NCP)已被棄用。Telnet和 FTP(檔案傳輸協定)是第一個使用 Internet 網絡的應用程式(自1969年以來可用)。

ARPANET 于1989 年關閉(最終于 1990 年退役),取而代之的是美國國家科學基金會網絡(NSF)。1986 年,NSF 建立了一個1.5 兆比特/秒的網絡,這就是衆所周知的NSFNET。許多商業和其他ISP(網際網路服務提供商)在此期間被引入并連接配接到該網絡。

1991 年之前,網際網路主要被科學家和政府機構用來交換資訊和資料。1991年,網際網路 (WWW)問世。盡管Internet網絡的最初發展始于美國,但是CERN項目通過引入最初的WWW和HTTP标準使得Internet更容易為普通使用者使用,進而帶動了Internet的大規模發展。

目前,根據IXPO組織的資料顯示:

  • 截止到2022年1月,全球共有49.5億人使用網際網路(占世界人口的 62.5%)
  • 索引網絡共22.5億頁
  • 據Statista的資料,到2025年,我們每天将發送超過3760億封電子郵件
  • IDC 預計,到 2025 年,全球資料空間将增長到175 zettabytes(1 ZB 等于 1 萬億 GB)
  • IOT Analytics 報告稱,到 2025 年,物聯網裝置将達到271億台
終結BGP協定的安全漏洞——下一代網際網路架構SCION

| 曆年網際網路裡程碑

綜上所述,網際網路的發展經曆了多次疊代更新。然而,在其發展過程中卻沒有預料到現代網際網路使用存在的一些問題。

現代網際網路架構

一般來說,現有的網際網路架構由三層ISP組成,ISP(internet service provider)是指網際網路服務提供商,類似中國電信、中國移動、中國聯通就是國内有名的ISP。

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| 目前的網際網路架構(來源:維基百科)

三層ISP結構分為主幹ISP(Tier 1 )、地區ISP(Tier 2)、本地ISP(Tier 3)。本地ISP給使用者提供最直接的服務,本地ISP可以連接配接到地區ISP,也可以連接配接到主幹ISP。隻要每一個本地ISP都安裝了路由器連接配接到某個地區ISP,而每一個地區ISP也有路由器連接配接到主幹ISP,那麼在這些互相連接配接的ISP的共同作用下,就可以完成網際網路中的所有的分組轉發任務。

網際網路交換點(IXP):為了更快地轉發分組,IXP允許兩個網絡直接連接配接并交換分組,而不需要通過第三個網絡來轉發分組。

是以,獲得網際網路接入的關鍵是連接配接到網際網路服務提供商,而問題是 ISP 如何互相信任并交換路由資訊?BGP(邊界網關協定)就是起到這個作用,BGP允許ISP之間交換IPv4和IPv6字首。

然而,ISP的BGP 路由交換政策很難建立清晰和開放的關系,這可能會導緻許多誤解,甚至是基于 BGP 的字首劫持,這種情況每天都會發生多次,Facebook、微軟等大型網際網路公司都難以避免遇到這個問題。

這就是傳統網際網路架構存在的主要問題(傳統網際網路架構并不是為了防止此類問題而建構的),現在出現了一種更現代的方法,稱為 SCION 。

SCION網際網路架構

SCION(下一代網絡的可擴充性、可控性和隔離性)是一種完全不同的全球網際網路架構方法,它主要側重于安全性、可控性、健壯性、高可用性和隔離性。SCION 項目于 2010 年在瑞士蘇黎世的 ETH 大學啟動,它被 IETF 認為是基于新型路徑感覺網絡的“未來網際網路提案”。

SCION 是一種路徑感覺協定,旨在取代網際網路中廣泛使用的 BGP 協定。路徑感覺架構允許終端主機(或網關)了解可用的網絡路徑段并将它們組合成端到端的路徑,并在標頭中攜帶。

SCION網絡架構的組成部分SCION網絡架構定義了如下概念:

隔離域 (ISD,Isolation domains ) :一個獨立的公共管轄區和故障域。

ISD 核心:管理 SCION 網絡核心的 AS(自治系統,autonomous systems),提供全球連接配接,負責 ISD 域内的政策。

核心 AS:ISD核心的一部分。

路由:可以分為 ISD 間域和 ISD 内域。

信任根配置 (TRC):每個 ISD 都有自己的信任根, 它解決了寡頭壟斷模型(Web PKI)和壟斷模型(DNSSEC,RPKI)的問題,并確定幾乎不會受到針對内部 ISD 路由政策的外部攻擊。

ISD 内信标系統:在 ISD 内通告可能的路徑,周遊 ISD 内的所有 AS,通過 ISD 核心提供多路徑。

ISD 間通信:如果主機“S”想要在 SCION 網絡中與主機“E”通信,則有三個 ISD(藍色、橙色和綠色)——下圖說明了該過程:

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| ISD間 通信圖(來源:SCION-architecture)

下面是一個簡單的 SCION 拓撲概述:

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| SCION 拓撲圖(來源:SCION-architecture article)

SCION網絡路由過程

SCION架構中,網際網路仍然由自治系統組成。但是,通過将自治系統分組到“隔離域 (ISD) ”中,增加了一個層次結構層。通常,ISD 中的 AS 共享某些屬性。例如,他們可能共享一個管轄區或地理位置。每個 ISD 都有自己的公鑰基礎設施(PKI),例如,用于保護 SCION 内的路由。ISD 的 PKI 隻能為它自己的隔離域中的系統分發證書。是以,如果安全受到威脅,其影響将僅限于受損的隔離域。隔離域的管理由 ISD 核心負責,由于核心 AS 負責 ISD 的管理,是以它們通常由 ISD 中所有其他 AS 信任的各方運作。ISD核心在域間路由中也起着重要作用。下圖 描述了 SCIONLab 網絡(截至 2020 年 9 月)中的不同 ISD 和一些 AS,這是一個支援 SCION 實驗的全球研究網絡。

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| 圖 :截至 2020 年 9 月的 SCIONLab 拓撲,顯示了駐留在各種隔離域中的自治系統(來源SCIONLab)

目前 Internet 上的路由依賴 BGP,由于 Internet 是在非層次結構的基礎上組織的,作為一個“扁平”網絡,路由器使用巨大的路由表以根據目标位址确定将資料包轉發到哪裡。而SCION 中有所不同:轉發基于資料包攜帶轉發狀态。即每個資料包都包含它需要傳輸的路徑(在 AS 級别),是以不再需要路由器上的巨大表。這釋放了路由器的記憶體,更重要的是,它使發件人能夠确定他們的網絡流量應該如何通過網際網路傳輸。為此,發送方需要知道哪些路徑可以到達預期的目标 AS。在确定路徑時,區分兩種情況:ISD 内的流量(ISD 内)和 ISD 之間的流量(ISD 間)。

在每個 ISD 中,AS 根據它們在以 ISD 核心為根的有向無環圖中的連接配接進行分層組織,可以直接有效确定可能的路徑。該過程也稱為信标,由核心 AS 啟動,核心 AS 向下遊的相鄰非核心 AS 發送路徑段建構信标 (PCB)。當非核心 AS 收到 PCB 時,它會添加自己的身份和一些附加資訊,稍後在資料包标頭中建構路徑時将需要這些資訊。然後它将 PCB 轉發給遵循相同程式的所有下遊鄰居。是以,PCB 包含有關它從 ISD 核心到目前 AS 的路徑資訊。最終 PCB 将到達葉 AS,并且根據 PCB 中的資訊,所有 AS 都将知道至少一條可以到達 ISD 核心的路徑。除了轉發 PCB 之外,每個 AS 還存儲它剛剛在本地學習到的路徑,并通知 ISD 核心它希望到達的路徑。最後,核心知道如何到達每個 AS,每個 AS 都知道如何到達核心。

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| 圖 :具有單個 ISD 的 SCION 拓撲示例。ISD 中的節點代表 AS

現在考慮這樣一種情況,AS D(在上圖中)想要與 AS E(兩者都是非核心AS)進行通信,是以它詢問核心如何從核心到達 AS E(我們指的是這部分路徑作為下段)。它已經知道自己如何到達核心(我們将這部分路徑稱為上行段),是以它可以将這兩個段組合起來建構一條從自身到 AS E 的路徑。它在 SCION 資料包标頭中包含該路徑,是以路徑上的每個 AS 都知道将資料包轉發到哪裡。如果兩個段相交,即如果路徑的上段和下段經過同一個非核心 AS,則可以采取捷徑。在這種情況下,首先将資料包轉發到核心是沒有意義的,隻是為了讓它再次采用相同的路由傳回。直接對等互連也是可能的。

我們現在知道如何到達同一個 ISD 中的另一個 AS,隻要兩個路徑段在同一個核心 AS 開始/結束。然而,我們仍然沒有到達另一個 ISD 中的 AS 所需的完整路徑,或者使用上行和下行段不在同一核心 AS 結束/開始的路徑。這個問題由 ISD 間路由解決,所有核心 AS 都參與其中。ISD 間路由使用與 BGP 類似的方法:它将 PCB 發送給它的鄰居,鄰居添加各自的資訊并将新的 PCB 轉發給它們的鄰居。這聽起來類似于 ISD 内部路由方法,但 ISD 間路由沒有方向性。這意味着該過程不如内部 ISD 方法有效,并且也無法擴充。

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| 圖 :具有三個不同 ISD 的 SCION 拓撲示例。ISD 中的節點代表 AS

使用上述過程的結果,AS 能夠通過使用以下遞歸方法來建構自己的 ISD 和其他 ISD 中的其他 AS 進行通信。這次 AS G 想要與位于另一個 ISD 中的 AS Q 進行通信。通過内部 ISD 信标,G 知道如何到達其 ISD 的核心(上行段)。G詢問核心如何到達Q。通過 ISD 間路由,G 的 ISD 核心知道如何到達 Q 的 ISD 核心。這部分路徑稱為核心段。G 的 ISD 核心詢問 Q 的 ISD 核心如何從其 ISD 核心(下段)到達 Q。G 的 ISD 核心然後将核心段和下段傳回給 G。G 現在可以通過組合上段、核心段和下段來建構到 Q 的完整路徑。注意,由于每個段可能有多個選項,是以可以使用多個路徑,不同的資料包可以使用不同的路徑。當然,路徑可能不再起作用,例如,由于鍊路故障。在這種情況下,G 将需要通過另一條路徑再次發送丢失的資料包和後續資料包。路徑問題可以通過網絡向發送方發出信号(類似于今天 ICMP 發生的情況),也可以從沒有接收到資料包的事實中推斷出來。

由于路徑在 AS 級别定義并包含在資料包中,是以我們需要知道我們要與之通信的終端主機位于哪個 AS 和 ISD 中。是以,我們需要将這兩條附加資訊包含在終端主機的位址中。是以,一個位址現在由三部分組成:ISD、AS 和終端主機的本地位址。終端主機的位址在上述任何過程中都沒有用到,隻用于自治系統内部的本地傳遞。

SCION 在設計時考慮了安全性,是以在上述所有過程中,涉及的資料都經過身份驗證,進而排除了路由劫持。

IP網絡上的SCION路由

在路由過程方面,SCION 使用了所謂的“Beaconing(信标)”而不是 BGP。Beaconing 程序負責釋出新路徑和路徑探索程序。

BGP 協定有一個可選的多路徑功能,可以使用,但預設情況下不啟用,它需要額外的配置,供應商也可以自行更改,這在網際網路中沒有廣泛使用。

與傳統 BGP 的對比見下表:

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| BGP/BGPSec/SCION控制平面能力對比

盡管在整個 AS 中原生使用 SCION 可能是充分利用 SCION 的最佳方式,但這可能很難實作。在整個網絡中采用 SCION 需要每個連接配接的裝置來處理 SCION 協定。在所有類型的裝置和所有應用程式中實作 SCION 可能被證明是困難的。

幸運的是,有一種部署 SCION 的方法使我們能夠利用它的許多優勢,同時也無需修改網絡中的應用程式或終端主機。在這種情況下(如圖所示),域間 SCION 通信由網絡而不是終端主機處理。所有終端主機繼續按照他們目前的方式使用 IP。這是通過在網絡中部署 SCION-IP 網關 (SIG) 來實作的。SIG 通過 SCION 網絡隧道傳入 IP 資料包,處理例如路徑選擇。然後目标網絡中的 SIG 将 IP 資料包傳送到目标終端主機。是以,我們可以将當今的 IP 網絡與 SCION 內建,并立即從 SCION 的特性中受益。SCION 協定可以通過現有的 TCP/IP 網絡“建立隧道”,但需要額外的 80 個位元組來傳輸額外的 SCION 資訊。

下面是一個示例拓撲,展示了 SCION 如何通過 IP 網絡建立隧道:

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| SCION over IP 網絡示例(來源:SIDN Labs)

關于協定本身,它引入了幾個新的标頭:

通用标頭:在所有 SCION 流量中共享:

終結BGP協定的安全漏洞——下一代網際網路架構SCION

位址标頭:辨別流量的來源和目的地,辨別 ISD、AS 和主機位址:

終結BGP協定的安全漏洞——下一代網際網路架構SCION

路徑類型标頭:關于路徑中繼資料、跳數(最多 64 )和附加資訊(可選)的資訊:

PathMeta header:攜帶特定路徑頭的中繼資料資訊:

擴充标頭:未來對 SCION 協定的擴充都使用以下格式實作:

終結BGP協定的安全漏洞——下一代網際網路架構SCION

SCION 的優勢

與傳統網際網路相比,SCION最重要的優勢是:

高可用性通信:預設情況下使用并啟用多路徑通信,不受目前 BGP 級攻擊影響,例如字首劫持。

用戶端路徑控制:SCION可以保證每個資料包走的路徑,特别是哪些 ISP 或地理位置沒有被周遊。

秘密路徑:隻能由標明的通信夥伴使用。即使攻擊者知道網絡拓撲,加密路徑保護也可以隐藏路徑,進而使路徑不可能被 DDoS攻擊。

VPN鍊路保護:VPN 鍊路可以由 SCION 網絡提供,為端到端 VPN 隧道提供上面列出的所有屬性。

更快的路徑故障轉移。

與現有網絡基礎設施的互操作性:SCION 可以在現有 IP 網絡之上使用。在這種情況下,可以使用 SCION-IP 網關 (SIG) 将 SCION 标頭封裝在 TCP/IP 堆棧之上,這種情況下的SCION效率較低,因為它不是端到端的,但您可以利用現有的 IP 網絡來傳輸和隧道支援 SCION 的流量,并且仍然可以獲得 SCION 的許多優勢,尤其是在安全性方面。為了擴充 SCION 感覺網絡,可以在 AS 内部署 SCION 邊界路由器 (BR) 以支援本地支援 SCION 的通信。

傳輸不可知:SCION 可以本地運作(僅使用 SCION 标頭)或使用任何常用的底層傳輸,無論它是 IP 網絡、MPLS 網絡等。

無 BGP:不再需要 BGP 協定。SCION 旨在取代 Internet 中的 BGP。

資料平面處理減少:減少對資料包的處理。

就其本質而言,SCiON 以可控性、可靠性和安全性的形式提供了對業務通信至關重要的三大獨特屬性。

SCION提高安全性和高可用性

雖然普通 SCION 具有安全性和可用性優勢,但 SCION 有兩種額外的“風味”,它們為域間路由帶來了額外的屬性。他們被稱為 EPIC 和 COLIBRI。

EPIC

EPIC代表檢查每個資料包.它通過資料平面中的每個資料包粒度引入了額外的安全性和透明度。在普通 SCION 中,相同的路徑資訊用于多個資料包并且獨立于資料包内容,而在 EPIC 中,路徑資訊與資料包内容相關聯。EPIC 有多種變體,可提供不同級别的安全性。它可用于向所有中間躍點提供資料包源的身份驗證和到目的地的有效負載的身份驗證。通過建構這些功能,它甚至可以用于為源和目的地提供資料包所采用路徑的驗證。為了實作這一點,每一跳都會向資料包添加加密證據,記錄處理過程。但是,該功能在資料包處理期間需要額外的加密操作,并且需要在終端主機和路徑上的每一跳之間共享的附加密鑰。這可以通過一個名為 DRKey 的系統有效地完成。DRKey 的一個重要特性是可以即時計算密鑰,這使得 EPIC 的加密比涉及記憶體查找時更快。在标準 x86 硬體上,資料包的處理時間不到 100 納秒。這允許非常快速的資料包身份驗證,是以可以非常快速地傳輸資料,因為可以允許經過身份驗證的資料包通過傳統防火牆。該原理已在 LightningFilter 中得到證明,它在基于 x86 的伺服器上的實驗設定中實作了 120 Gbps 的速度。

COLIBRI

鑒于 EPIC 引入了額外的身份驗證和驗證,COLIBRI提供了域間帶寬預留,這使得為兩個終端主機之間的路徑確定最小帶寬成為可能。結合 LightningFilter 以高速過濾經過身份驗證的資料包,即使在拒絕服務攻擊下,也可以實作高水準的關鍵服務可用性。

SCION網絡的類型

目前部署的SCION網絡有兩種類型:

1)SCIONLab :SCIONLab 是一個全球研究網絡,用于測試 SCION 下一代網際網路架構。

任何人都可以參與其中并建立最多五個支援 SCION 的 AS。

SCIONLab 的基礎設施包括全球連接配接的 AS 和 ISD(隔離域)網絡。

易于設定,所有必需的元件都可以作為一組 VM 進行部署,作為軟體包安裝,或者可以從源代碼建構。

SCION 也有一些局限性:

PKI 控制平面是集中式的,這意味着存在單點故障,但它确實使密鑰分發更容易、更快,這在某些使用場景下更為重要。Overlay 連結(通過公共網際網路)用于基礎設施内部和使用者 AS 的基礎設施之間,降低了完整 SCION 部署的安全性、可用性和性能方面的能力,但也降低了複雜性。

下圖展示了目前全球 SCIONLab 網絡的拓撲結構:

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| 現有 SCIONLab 全球研究網絡拓撲結構(來源:SCIONLab)

2)生産級全球SCION 網絡- Anapaya(ETH 大學的衍生公司)生産級全球 SCION 網絡,目前主要由瑞士銀行和金融機構使用,但越來越多的 ISP 和企業實體正在加入。

終結BGP協定的安全漏洞——下一代網際網路架構SCION

| 目前Production SCION-Internet地圖(來源:SCION-architecture)

總 結

與任何協定一樣,SCION 也有其缺點,其主要的潛在問題在于:

擷取路徑存在額外延遲。這可以通過緩存和路徑重用來避免,類似于 DNS 過程。

帶寬開銷。協定标頭中需要新資訊,是以在資料包中使用了更多空間,不過這些空間都沒有被浪費,所有資訊都被使用,它提供了路徑控制、更簡單的資料平面等。

可能需要新證書(例如 TRC 證書),好處是安全性更高。

工程師必須學習新的協定和方法。

但是,正如本文所述,新協定為網際網路流量提供了一種全新的方法,其優點超過了這些缺點,尤其是在路由控制、安全性、可擴充性和高可用性方面。它可以完全控制到終端系統的路由過程——您可以為您的流量決定最佳路徑,其中“最佳路徑”可能意味着:最快、最便宜、避開某些地區或管轄區等等。

由于 SCION 內建了完整的PKI 基礎設施,并且每個資料包都經過簽名和驗證,是以它提供了額外的安全性。SCION 是無 BGP 的,使用一種稱為beaconing的新路由方法。

此外,使用 Research SCION 網絡可以很容易地測試 SCION 基礎設施,任何人都可以參與其中。

繼續閱讀