魏凌波,馮曉兵,張馳,盛化龍,俞能海
(1. 中國科學技術大學信息科學技術學院中國科學院電磁空間信息重點實驗室,安徽 合肥 230026;2. 中國科學院信息工程研究所信息安全國家重點實驗室,北京 100093)
網絡功能如防火墻(firewall)、網絡地址轉換(NAT,network address translation)、深度分組檢測[1](DPI,deep packet inspection)通常是指在源主機和目的主機之間除了交換機和路由器之外的其他中間設備(middleboxes)實現的功能,是現代網絡的重要組成部分。圖1顯示了包括防火墻、負載均衡(LB,load balance)在內的幾個常用的網絡功能。但傳統的網絡功能由硬件實現,存在著成本高、靈活性低和管理復雜等問題,而網絡功能虛擬化可以解決上述問題。
網絡功能虛擬化[2]把由硬件實現的網絡功能轉變為軟件實現,可以降低成本并且提高網絡功能的靈活性和擴展性,目前,被世界各地越來越多的組織所采用。近些年,隨著云計算的發展,人們探索了網絡功能外包部署的新模型,嘗試由第三方代理來提供網絡功能作為服務。目前,上述網絡功能已經可以托管在公共云或嵌入在互聯網服務提供商(ISP,Internet service provider)基礎設施內的私有云中。將網絡功能外包到云,可以獲得云計算技術帶來的優勢,如降低成本和易于管理等。
然而,網絡功能外包的同時,也對企業的隱私信息帶來了挑戰。在外包的過程中,未加密的通信流量和網絡功能策略暴露給云服務商。因此,外包框架需要提供保密性、與現有基礎設施的兼容性并具有高吞吐量。利用前綴保持的加密(prefix-preserving encryption)方案[3]匿名化 IP地址,本文提出了一種具有隱私保護的網絡功能外包系統(PPNFO,privacy preserving network function outsourcing),它實現了企業向云服務商外包多個網絡功能,同時保護了通信流量和網絡功能策略的隱私性。相比其他同類解決方案,它具有以下優勢。
1) 允許云服務商執行 IP地址匹配(例如,IP地址是否在子域128.0.0.0/24)或端口匹配(例如,端口是否在500~1 000范圍內)。
2) 不僅保護網絡功能策略的隱私,還保護了通信流量的隱私。而目前大多數的解決方案只考慮了網絡功能策略的隱私保護,存在流量信息泄露給云服務商的問題。
3) 云服務商處理的是加密的流量,所以很難進行探測攻擊。

圖1 網絡功能示例
現有的網絡功能外包的研究工作大體分為以下 3類:1) 提出網絡功能外包的系統架構;2) 實現網絡功能外包中策略的隱私保護;3) 實現網絡功能外包中通信流量的隱私保護。
網絡功能外包系統架構的研究主要有Sherry等[4]提出的 APLOMB系統架構和 Gibb等[5]的方案。APLOMB系統將網絡功能外包到云服務商,把流入和流出企業的數據流重定向到云端。文獻[5]的方案可以使企業將網絡功能外包到外部功能提供者,企業只需要轉發數據,其他處理全部由外部功能提供者來執行;任何人都可以作為網絡服務提供者,沒有位置的限制。但這2種架構都沒有考慮隱私保護問題。
基于上述架構,很多保護網絡功能策略隱私的方案被提出來。文獻[6]提出了Ladon,將原始訪問策略轉換為防火墻決策圖,并使用Bloom filters算法對防火墻決策圖進行匿名化。但Ladon不能阻止公共云通過自由探測或僅僅通過傳輸竊聽和分析來推導出原始的防火墻策略。文獻[7]提出的Ladon混合云增強了Ladon的保密性,但用戶仍需要在私有云中維護防火墻,且Ladon混合云已被證明是不安全的。Shi等[8]提出了使用加密多線性映射[9]來模糊原始防火墻規則的框架 SOFA,云服務商通過過濾入站和出站通信來執行防火墻功能,但不能恢復原始的防火墻規則。SOFA還容易受到探測攻擊,存在安全漏洞[10]。文獻[11]提出的方案考慮了防火墻和其他如負載均衡器、載波級NAT、入侵檢測系統和深度分組檢測等網絡功能。以上方案的缺點是部分網絡功能外包給云,用戶仍需要用自己的中間盒來執行剩余的網絡功能,系統的通信開銷和計算成本較高,沒有考慮到通信流量隱私保護。
為了保護通信流量的隱私性,文獻[12]提出了BlindBox框架,通過使用HTTPS協議利用中間盒進行通信,兼顧了網絡功能策略隱私和通信流量隱私安全。但 BlindBox支持的外包中間盒少,而且不適用于短期連接的應用程序。基于BlindBox,文獻[13]提出了一種支持多種網絡功能外包方法Embark,它提出了加密方案PrefixMatch,可以使服務商快速執行前綴匹配,保證了加密分組的有效性。但該方案只能在明文域處理復雜的操作(除了允許/阻止)。Asghar等[14]提出了SplitBox,利用云虛擬機的分布式特性,給出了網絡功能的抽象定義,并利用幾個云為用戶提供網絡功能的協同計算。然而,該方案增加了系統的復雜性,且不支持網絡功能服務鏈的外包。
以上3類工作的安全性逐步提高,但所采用的加解密方法的計算復雜度仍有可降低的空間,對用戶信息的隱私保護也有待加強。基于前綴保持的加密方法,本文提出了一種隱私保護的網絡功能外包系統,同時實現了對用戶網絡功能策略和通信流量的隱私保護,而且比同類方案具有更高的吞吐量和更低的時延。
本文系統使用了APLOMB[4]架構,將企業通信流量重定向到云服務商。圖2是APLOMB的通信模型:通信流量先被網關發送到云服務商,經過云服務商完成相關的處理之后,再返回到企業網關。特別地,若2個企業之間共享了密鑰,通信流量信息經過云服務商處理之后便不再需要返回企業網關進行解密操作。

圖2 APLOMB的通信模型
這里,假設云服務商是“誠實且好奇”的,或稱之為“被動”攻擊者[15]。不同于“主動”攻擊者會惡意操縱數據、破壞正常運行的協議,“被動”攻擊者會按照企業的要求提供很好的服務,并具有所有數據的訪問權限,包括從網關接收到的通信流量和網絡功能策略信息。另外,由于網關是由企業進行管理和維護的,本文假設網關是可以被信任的,不會泄露任何信息。
本文主要討論包括防火墻、網絡地址轉換、負載均衡在內的網絡核心功能,用Enc表示一個通用加密協議,SIP表示源 IP地址,DIP表示目的 IP地址,SP表示源端口號,DP表示目的端口號,P表示協議,(SIP,DIP,SP,DP,P)表示一個連接的五元組,(SIP[],DIP[],SP[],DP[],P)表示一個規則。
來自不同供應商的防火墻可能具有顯著不同的配置和規則,因此,需要提取出防火墻的一般模型。使用文獻[16]中的模型,防火墻由多個訪問控制列表(ACL,access control list)組成,每個ACL由一個規則組成,規則可以用形式(謂詞,動作)解釋。其中,謂詞定義為源/目標 IP地址和端口以及協議的范圍的組合,可能的動作集合包括“接受”和“拒絕”。一般防火墻具有以下性質。

典型的NAT將一對源IP和端口轉換為一對外部源IP和端口。一般來說,NAT有以下要求。
1)相同的一對源 IP和端口應映射到相同的外部源IP和端口。
2)不同的一對源 IP和端口不應映射到相同的外部源IP和端口。
以下性質可以滿足以上2個要求。

負載均衡維護一個服務器池,可分為L3LB和L4LB。兩者均要滿足以下特性:相同的五元組應該轉發到相同的服務器,即相同的五元組應具有相同的加密結果,不同的五元組加密結果則不同。

通過以上分析可以發現,以防火墻、NAT、LB為代表的網絡功能都是對五元組進行操作。以防火墻為例,它查看數據分組的頭部,按照數據分組的源地址和目的地址來決定數據分組應該接受還是拒絕。這類網絡功能在本地會事先生成一個規則列表,每個規則對應相應的動作。云服務商按照規則對往來的數據分組進行匹配。
PPNFO包含4個階段:第一階段是策略加密階段,由企業完成線下操作,不需要實時性;第二階段是通信流量加密階段,由企業的管理員在本地完成;第三階段是匹配階段,由云服務商來完成;第四階段是通信流量解密階段,在本地完成。PPNFO應用了基于前綴保持的加密方法,可以使云服務商執行IP地址前綴匹配或端口匹配。圖3是PPNFO系統的處理流程。
云服務商按照規則對往來的數據分組進行匹配,匹配方式可以分為2種,精確匹配和間隔匹配,例如,檢查五元組是否滿足(SIP1,SP1,DP1,P1,SIP1)=(SIP2,DIP2,SP2,DP2,P2),這屬于精確匹配;檢測端口范圍是否在1 000~2 000之間或一個IP是否屬于56.24.67.0/16,這屬于間隔匹配。間隔匹配可以定義成形式為f[a,b](x)的布爾函數,當且僅當x∈[a,b]時返回真。精確匹配是間隔匹配的一種特殊的情況,更容易實現。本文提出了有效解決前綴表示的間隔匹配的方法,也可用于精確匹配。
對于不是用前綴來表示的規則,首先,要將其轉換為前綴表示。舉例來說,間隔[32,111],用 8位二進制表示為[00100000,01101111],可以轉換成一組前綴的表示形式{001*,010*,0110*}。驗證一個數是否在這個間隔中,等價于驗證這個數是否和某一個前綴匹配。例如,37(二進制表示為00100101)與前綴 001*匹配,則屬于這個間隔;128(二進制表示為 10000000)不匹配任意一個前綴,則說明128不屬于這個間隔。算法1給出了如何把間隔表示轉換成前綴表示的方法。
算法1 生成前綴
輸入 [p1p2…pn,q1q2…qn]
步驟1 form=1 tondo
步驟 2 ifpm<qmthen
步驟3 記下m,break
步驟4 end if
步驟5 end for
步驟6 if 找不到m
步驟7 returnp1p2…pn
步驟 8 else if 所有的i∈[m,n],pi= 0,qi= 1 then
步驟9 returnp1p2…pm-1*
步驟10 else
步驟 11 把[p1p2…pn,q1q2…qn]轉變為[p1p2…pm-10pm+1…pn,q1q2…qm-1011…1]和[p1p2…pm-1100…0,q1q2…qm-10qm+1…qn]
步驟 12 將[pm+1…pn,11…1]和[100…0,qm+1…qn]作為輸入,從步驟1開始執行,分別產生前綴
步驟13 return所有前綴
步驟14 end if
接下來,介紹由文獻[3]提出的前綴保持加密。對前綴保持加密的定義如下,假設a和b有kbit相同的前綴,則加密后的密文E(a)和E(b)也應具有kbit相同的前綴。如果明文可以取n位數的任何值,則整個明文集合可以由高度為n的完整二叉樹表示,稱為明文樹。注意到,整個可能的IPv4地址集合可以由高度為32的完整二叉樹表示,每個地址由葉子節點表示。該樹中的每個節點(不包括根節點)對應于一個由節點的高度指示的比特位置和由父節點的分支方向指示的比特值。圖4(a)即一棵明文樹。

圖3 PPNFO系統的處理流程
文獻[3]提出的加密方法可以看作對明文樹的非葉子節點(包括根節點)指定一個二進制變量。此變量決定加密函數是否改變這個點的值。應用了加密函數后,明文樹變成了密文樹。圖4(b)表示加密樹,圖4(c)表示經過圖4(b)處理后的密文樹。從圖4中可以看出,2個明文串001和010具有1 bit相同的前綴,加密后分別為111和100,同樣具有1 bit相同的前綴。
用 fi來表示加密函數,i=1,2,…,n-1,f0是一個常數函數。a=a1a2…an表示明文,密文用a'=a'1a'2…a'n來表示。對于每一個a'i,計算a'i=ai⊕fi-1(a1a2…ai-1),然后得到密文a'=a'1a'2…a'n。

所使用的fi定義為其中,L返回“最低有效位”。R是偽隨機函數或偽隨機置換,如文獻[17]。P是填充函數,擴展a1a2…ai為一個與R的塊大小匹配的更長的字符串。k是偽隨機函數R中使用的密鑰,其長度應該遵循偽隨機函數的要求。
基于前綴保持的加密方法,提出的 PPNFO系統不僅可以支持防火墻的外包,還可用于NAT、負載均衡的外包。該系統主要由4個階段組成。
1) 策略加密階段
此階段的主要目的是保護網絡策略的隱私性,該部分操作是非交動的,在企業本地完成。網絡功能策略不發生變化的情況下,該階段只需在初始化時執行一次。另外該系統支持策略的實時更新。策略更新之前,網關要向云服務商發送信號。然后,網關對新的網絡策略進行加密處理并發送給云服務商。在這段時間內,云服務商基于舊的網絡策略對通信流量進行處理。一旦網關將所有待更新的策略處理完,便向云服務商發送信號,要求它交換新的數據。收到信號之后的云服務商處理完當前的通信流量后,便更換所有新的網絡策略,并通知網關策略已經更新。前綴保持加密算法如算法2所示。
算法2 前綴保持加密
輸入 [p1p2…pi]
步驟1 for i=1 to n do
步驟 2 p'i=pi⊕gi-1(p1p2…pi-1)
步驟3 return p'1p'2…p'i-1
2) 通信流量加密階段
對于往來的通信流量,企業的管理員仍要對其進行加密,然后發送給云服務商。對網絡功能策略和通信流量的雙重加密,使云服務商無法獲取企業的隱私信息,進一步確保了系統的安全性。
以一個數據分組為例,對于到達企業網關的數據分組,首先提取出與網絡策略相關的域。本文選擇源IP、目的IP、源端口和目的端口,然后進行加密處理。加密后的域重新填充到數據分組覆蓋掉原來的值,得到新的數據分組,最后將其發送給云服務商。具體如算法3所示。
算法3 通信流量加密
輸入 原始通信流量 x
步驟1 取出 SIP,DIP,SP,DP
步驟2 then 轉換 SIP,DIP,SP,DP為二進制形式
步驟3 加密SIP,DIP,SP,DP 得到SIP',DIP',SP',DP'
步驟4 將 SIP,DIP,SP,DP替換為 SIP',DIP',SP',DP'
步驟5 return x'
3) 匹配階段

圖4 前綴保持加密示例
此階段由云服務商來完成,由于需要處理大量實時的數據分組,所以對性能的要求很高。對于每個到來的數據分組,云服務商對其進行匹配操作。若策略匹配的結果為“拒絕”,則直接丟棄數據分組;若為“接受”,則將數據分組返回企業網關。具體如算法4所示。
算法4 匹配
輸入 通信流量 x'、策略 r'
步驟1 for i =1 to n do
步驟2 ri'={SIPi',DIPi',SPi',DPi'}
步驟3 ifSIP'= SIPi',DIP' = DIPi',SP'=SPi',DP' = DPi'
步驟4 x'= ri'
步驟5 else
步驟6 下一條策略
4) 通信流量解密階段
云服務器在完成通信流量匹配之后,會將符合規則的數據分組返回企業網關。由于網關之前對這個數據分組進行了加密操作,所以仍需要解密還原出原始的數據分組,然后將數據分組發送到對應的目的地址。具體如算法5所示。
算法5 解密
輸入 [p'1p'2…p'n]
步驟1 for i =1 to n do
步驟 2 pi= p'i⊕gi-1(p'1p'2…p'i-1)
步驟3 return p1p2…pn
這里,假設企業網絡和外部網絡、云服務商之間的連接是在公共網絡上,所以攻擊者可以竊聽并下載加密的消息。本節分析基于前綴保持加密方案的安全性。文獻[3]已經證明式(1)實現的功能和一個隨機的前綴保持函數是相同的。而且如4.2節中所述,當明文可以取任意n bit的值時,前綴保持加密函數分組含 2n-1個二進制變量。所以,密鑰有 22n-1種可能性。例如,若n為16,則可能的密鑰有2265535種。因此,式(1)中的k有足夠多的選擇域,攻擊者通過暴力攻擊的手段破解系統是不切實際的。
對于已知明文攻擊,由于加密機制具有前綴保持的特性,攻擊者可以從其他密文里推斷信息。例如,如果攻擊者獲取一個明文密文對然后知道另一個密文那么攻擊者將會知道k位前綴對應的明文是注意,如果攻擊者知道一個明文密文對也會知道另外一個明文密文對所以,攻擊者總是知道偶數對<明文,密文>。
假設攻擊者知道2對<明文,密文>。給定一個隨機的密文,使A(n)表示可以推斷出來的前綴的平均長度。明文的 k bit前綴被推斷出的概率是若k=n,則概率是因此,有

即如果已知2對<明文,密文>,而攻擊者從一個隨機的密文上推斷出的信息平均不超過2 bit。
若攻擊者已知k對<明文,密文>。當n→∞時,給定一個密文,攻擊者可以推斷出的平均長度為lbk+2[3]。因此,攻擊者通過比較一個密文和已知的<明文,密文>獲取的前綴信息是有限的。所以,即使攻擊者獲取到了一些<明文,密文>,系統也是安全的。當然,這對系統來說是一個潛在的威脅,因為攻擊者了解更多的<明文,密文>對,就會推斷出更多的信息。因此在使用過程中,可以定期更新密鑰,這時攻擊者了解的<明文,密文>便沒有任何用處。
綜上,本文采用的前綴加密方法可以有效地抵抗攻擊者的暴力攻擊和已知明文攻擊;在面對“誠實且好奇”的云端服務器時,可以保護企業網絡功能策略和通信流量的隱私性。
硬件環境:CPU是Intel(R) Core i3-4130,內存是DDR3 12 GB,硬盤是1 TB 7 200轉/秒。開發環境:開發操作系統使用了 Ubuntu14.04,開發語言及工具分別為C/C++、Click模塊路由器。
Embark和SplitBox實現了與PPNFO系統相同的隱私保護功能,它們對通信流量和網絡功能策略進行了加密,具有很高的安全性。在本節中,將這2種方案與本文系統作比較。由于策略加密階段是在本地完成的,對網絡功能外包性能的影響可以忽略不計,3種方案的此階段不作比較,而主要比較通信流量加密階段和匹配階段的性能。
1) 策略加密階段的開銷
圖5顯示了PPNFO隨著網絡功能策略數量的增加平均時間成本的變化。策略加密階段只需要一次而且只在網絡策略變化時才會進行加密。從圖 5中可以看出,隨著網絡策略的數量增長,時間開銷大致呈線性增加。PPNFO加密30個防火墻策略的時間約為4.08 ms。這個時間很短,完全不會影響網絡功能外包的性能。

圖5 策略加密階段開銷實驗結果
2) 通信流量加密階段的開銷
對于每個傳入和傳出的數據分組,需要實時地進行通信流量加密。圖6顯示出了PPNFO通信流量加密時間隨著數據分組增長的時間開銷。為了驗證PPNFO可以實時地進行通信流量加密,實驗中分別采用 101、102、103、104、105個數據分組計算時間代價,可以看到,在數據分組數量不大的情況下,計算耗時與數據分組數量幾乎呈線性關系,在數據量較大時甚至整體性能要優于線性復雜度。這種性能已經符合通信流量處理的實時性要求,且處理相同數量的數據分組,PPNFO用時最少。

圖6 通信流量加密階段開銷實驗結果
3) 匹配階段的開銷
匹配階段包括執行策略檢查以及將分組返回給網關。PPNFO與其他2種方案的匹配時間隨著防火墻策略數量的變化曲線如圖7所示。本實驗執行了1 000萬個數據分組,從圖7中可以看出,3種方案的匹配時間都隨著防火墻策略數量的增加而增加。但在防火墻策略數量相同的情況下,PPNFO實驗效果最優。

圖7 時間開銷隨網絡功能策略數量變化
3種方案的網絡吞吐量隨著防火墻策略數量的變化曲線如圖8所示。這里,吞吐量的單位是Gbit/s,代表了系統所能達到的傳輸速率。從圖8中可看出,隨著防火墻策略數量的增加,3種方案的吞吐量都在降低。在網絡功能策略數目相同的前提下,PPNFO吞吐量最大,大約是其他2種方案的1.5倍。

圖8 3種方案的吞吐量比較
目前,網絡功能已經成為人們生活中不可或缺的一部分。隨著網絡功能虛擬化和云計算技術的發展,越來越多的企業將自己的網絡功能外包給云服務商來實現和維護。然而,在網絡功能外包的過程中,存在著安全隱患。本文利用前綴保持的加密方案設計和實現了網絡功能外包系統,解決了網絡功能外包中的隱私保護問題。最后以防火墻為測試用例進行了實驗驗證,結果表明 PPNFO比同類方案具有更高的吞吐量和更低的時延,降低了企業和云服務商的成本。
參考文獻:
[1]于強,霍紅衛. 一組提高存儲效率的深度包檢測算法[J]. 軟件學報,2011,22(1): 149-163.YU Q,HUO H W. Algorithms improving the storage efficiency of deep packet inspection[J]. Journal of Software,2011,22(1): 149-163.
[2]袁泉,湯紅波,黃開枝,等. 基于Q-learning算法的vEPC虛擬網絡功能部署方法[J]. 通信學報,2017,38(8): 172-182.YUAN Q,TANG H B,HUANG K Z,et al. Deployment method for vEPC virtualized network function via Q-learning[J]. Journal on Communications,2017,38(8):172-182.
[3]XU J,FAN J,AMMAR M H,et al. Pre fi x-preserving IP address anonymization: measurement-based security evaluation and a new cryptography-based scheme[C]//10th IEEE International Conference on Network Protocols. 2002: 280-289.
[4]SHERRY J,HASAN S,SCOTT C,et al. Making middleboxes someone else's problem: network processing as a cloud service[J]. ACM SIGCOMM Computer Communication Review,2012,42(4): 13-24.
[5]GIBB G,ZENG H,MCKEOWN N. Outsourcing network functionality[C]//The First Workshop on Hot Topics in Software De fi ned Networks. 2012: 73-78.
[6]KHAKPOUR A R,LIU A X. First step toward cloud-based fi re-walling[C]//2012 IEEE 31st Sym-posium on Reliable Distributed Systems (SRDS). 2012: 41-50.
[7]KUREK T,NIEMIEC M,LASON A. Taking back control of privacy:a novel framework for preserving cloud-based firewall policy confidentiality[J]. International Journal of Information Security,2016,15(3):235-250.
[8]SHI J,ZHANG Y,ZHONG S. Privacy-preserving network functionality outsourcing[J]. arXiv preprint,arXiv:1502.00389,2015.
[9]CORON J S,LEPOINT T,TIBOUCHI M. Practical multilinear maps over the integers[M]//Advances in Cryptology-CRYPTO. 2013: 476-493.
[10]CHEON J H,HAN K,LEE C,et al. Cryptanalysis of the multilinear map over the integers[M]//Advances in Cryptology-EUROCRYPT 2015: 3-12.
[11]MELIS L,ASGHAR H J,DE CRISTOFARO E,et al. Private processing of outsourced network functions: feasibility and constructions[C]//The 2016 ACM International Workshop on Security in Software Defined Networks & Network Function Virtualization. 2016: 39-44.
[12]SHERRY J,LAN C,POPA R A,et al. Blindbox: deep packet inspection over encrypted traffic[J].ACM SIGCOMM Computer Communication Review,2015,45(4): 213-226.
[13]LAN C,SHERRY J,POPA R A,et al. Embark: securely outsourcing middle-boxes to the cloud[C]//13th USENIX Symposium on Networked Systems Design and Implementation (NSDI 16). 2016:255-273.
[14]ASGHAR H J,MELIS L,SOLDANI C,et al. SplitBox: toward efficient private network function virtualization[C]//The Workshop on Hot Topics in Middleboxes and Network Function Virtualization.2016: 7-13.
[15]MATT B. Introduction to computer security[M]. Pearson Education India,2006.
[16]WANG C,CHOW S S M,WANG Q,et al. Privacy-preserving public auditing for secure cloud storage[J]. IEEE transactions on computers,2013,62(2): 362-375.
[17]DAEMEN J,RIJMEN V. The design of Rijndael: AES-the advanced encryption standard[M]. Springer Science & Business Media,2013.