李旭陽,郜 帥,國興昌,劉寧春
(北京交通大學(xué) 電子信息工程學(xué)院 下一代互聯(lián)網(wǎng)互聯(lián)設(shè)備國家工程實(shí)驗(yàn)室,北京 100044)
組播是一種相對(duì)于單播的通信方式,它的主要用途是解決單播方式在一對(duì)多的通信場景下產(chǎn)生的資源消耗和占用大的問題。盡管組播在視頻直播、多媒體會(huì)議、股市行情流等場景下有重要的作用,但它在安全方面有較大的缺陷,容易遭到竊聽、盜用、拒絕服務(wù)等安全攻擊,導(dǎo)致了使用場景受限。
在目前的IP組播安全領(lǐng)域中,主要的研究方向是組播的消息保護(hù)。為了加密組播信息,組播源和接收者需要擁有會(huì)話密鑰。此外,在組播場景中,接收者的數(shù)量和狀態(tài)處于動(dòng)態(tài)變化中,為保證組播數(shù)據(jù)的前、后向保密性,需要?jiǎng)討B(tài)地更新密鑰。目前密鑰的管理方案主要分為三大類:集中式、分散集中式和分布式。集中式方案只存在唯一的一個(gè)管理節(jié)點(diǎn),統(tǒng)一進(jìn)行密鑰的分配和更新,LKH是其中最為著名的方案[1],該方案通過建立一臺(tái)組控制器維護(hù)一棵邏輯密鑰樹,通過樹形的路徑向葉子節(jié)點(diǎn)上的成員分發(fā)密鑰。分散集中式通過建立多臺(tái)子控制器將組成員進(jìn)行分組管理,典型代表是Iolus[2],它將一個(gè)名為GSC(組安全控制器)的實(shí)體設(shè)置為安全根節(jié)點(diǎn),并將多個(gè)GSI(組安全中介)設(shè)置為中間管理節(jié)點(diǎn),密鑰由GSC生成,并沿著GSI傳遞給每個(gè)接收者。分布式方案不建立額外的管理實(shí)體,密鑰由所有成員共同協(xié)商生成,這種方法實(shí)現(xiàn)較為困難,對(duì)成員和網(wǎng)絡(luò)的要求較高。
從這些方案可以看出,IP組播與單播不同,在密鑰管理方面更為復(fù)雜。目前比較成熟的IP組播密鑰管理方案都是集中式的分層體系,這種集中化、層次化的思想與SDN(軟件定義網(wǎng)絡(luò),software defined network)[3]網(wǎng)絡(luò)架構(gòu)相似,又因?yàn)镾DN控制器掌握著完整的網(wǎng)絡(luò)拓?fù)湫畔?,因此更在建立組播樹方面更有優(yōu)勢[4],使得近些年出現(xiàn)了一批基于SDN的組播安全機(jī)制的研究[5]。這些方案提出將組播安全策略部署在SDN控制器上,利用SDN控制器在資源調(diào)度和拓?fù)浒l(fā)現(xiàn)的優(yōu)勢,來更好地實(shí)現(xiàn)安全組播通信的相關(guān)功能。
SDN組播安全主要分為三個(gè)部分。第一部分是身份認(rèn)證和訪問控制,目前國內(nèi)外出現(xiàn)了幾種不同的SDN組播認(rèn)證方案。例如,Kici′nski模型[6]構(gòu)建了一個(gè)三層的SDN組播安全架構(gòu),用戶向高層組播應(yīng)用發(fā)送入組請(qǐng)求。與此方案的三層結(jié)構(gòu)不同,鄒劍鋒提出了一個(gè)兩層的SDN組播模型[7],通過IGMP實(shí)現(xiàn)組播接收者的入組,控制器負(fù)責(zé)用戶的認(rèn)證和管理。此外,Leu提出了一種組播接收者的訪問控制方案[8],由組播源對(duì)接收者進(jìn)行身份認(rèn)證,然后提供身份認(rèn)證令牌。田金川提出了一種基于端口的身份認(rèn)證機(jī)制[9],通過向SDN控制器發(fā)送專用的挑戰(zhàn)/應(yīng)答報(bào)文,實(shí)現(xiàn)對(duì)該成員的訪問控制。根據(jù)這些方案的特點(diǎn),可以發(fā)現(xiàn)它們都存在一些共同的缺點(diǎn),即并不支持組播源的身份認(rèn)證。第二部分是安全的路由協(xié)議,SDN控制器使用OpenFlow[10]或類似南向接口協(xié)議與交換機(jī)進(jìn)行通信,根據(jù)OpenFlow規(guī)范,可以部署TLS[11]來保護(hù)控制器與交換機(jī)之間的信道。第三部分是組播數(shù)據(jù)的保護(hù),在目前的SDN組播領(lǐng)域中還沒有涉及組播數(shù)據(jù)加密和密鑰管理方面的研究。
綜合現(xiàn)有的SDN組播安全研究方案[12-13],認(rèn)為其中存在以下兩方面缺陷:
(1)身份認(rèn)證方案不完善。一方面,現(xiàn)有的研究中缺少對(duì)于組播源的認(rèn)證方案,這可能導(dǎo)致組播接收者收到來自虛假組播源的惡意消息。另一方面,大多數(shù)現(xiàn)有的認(rèn)證方案需要多次握手來傳遞認(rèn)證信息,認(rèn)證過程復(fù)雜且導(dǎo)致了額外的延遲。
(2)缺少消息加密機(jī)制?,F(xiàn)有的SDN組播安全機(jī)制研究中鮮有涉及組播消息的保護(hù)內(nèi)容,組播消息未加密會(huì)導(dǎo)致信息的泄漏,不符合一些安全性要求較高場景的需求。
基于這兩方面的原因,該文提出了一種新的基于SDN的安全組播架構(gòu),以滿足特定場景下的高安全性組播需求。該方案對(duì)比現(xiàn)有SDN組播機(jī)制有以下方面的改進(jìn):基于數(shù)字證書的身份認(rèn)證方法;同時(shí)支持組播源和組播接收者的身份認(rèn)證;支持組播消息加密;集中式的密鑰管理機(jī)制,包括組播會(huì)話密鑰的生成、分配和更新。
為了實(shí)現(xiàn)更快速的身份認(rèn)證方法,該方案引入了數(shù)字證書機(jī)制,以降低組播源/接收者與SDN控制器之間因認(rèn)證而產(chǎn)生的握手次數(shù)。在該方案中,每一個(gè)組播源/接收者都需要提前向SDN控制器申請(qǐng)一個(gè)數(shù)字證書,該證書可以區(qū)分申請(qǐng)者的身份類型,即組播源或接收者。擁有該證書之后,該組播源/接收者加入一個(gè)組播組時(shí)僅需要向SDN控制器發(fā)送其證書摘要,以完成身份認(rèn)證。同時(shí),該方案參考了IGMPv3協(xié)議[14]的組播加入方式,構(gòu)建了一種用于SDN組播的組播加入報(bào)文,用來承載身份認(rèn)證信息和入組請(qǐng)求,使得認(rèn)證和入組只需通過一個(gè)報(bào)文即可完成。
組播消息加密需要一個(gè)組播組的所有組播源和接收者共享一個(gè)由SDN控制器生成并分發(fā)的會(huì)話密鑰。為了實(shí)現(xiàn)會(huì)話密鑰的安全分發(fā),SDN控制器分別使用組播源/接收者在申請(qǐng)數(shù)字證書過程中生成的公鑰對(duì)會(huì)話密鑰進(jìn)行加密,通過單播進(jìn)行分配。表1總結(jié)了該方案和前文提到的幾種SDN組播安全模型的基本特征,通過對(duì)比可以看出,該方案在安全性和方案的完整性上有明顯優(yōu)勢。
表1 幾種SDN組播安全模型與該方案的對(duì)比
根據(jù)SDN的體系結(jié)構(gòu),該方案的網(wǎng)絡(luò)體系結(jié)構(gòu)主要由兩部分組成。在控制平面上,SDN控制器負(fù)責(zé)身份認(rèn)證、發(fā)放數(shù)字證書、管理密鑰和構(gòu)建組播路徑。在轉(zhuǎn)發(fā)平面上,SDN交換機(jī)負(fù)責(zé)根據(jù)SDN控制器發(fā)送的流表轉(zhuǎn)發(fā)數(shù)據(jù)包??刂破骱徒粨Q機(jī)之間的通信基于OpenFlow協(xié)議。方案拓?fù)淙鐖D1所示。
圖1 基于SDN的安全組播方案拓?fù)?/p>
根據(jù)該方案的思路,一個(gè)完整的SDN安全組播流程需要包括以下幾個(gè)步驟:
·組播源/接收者向SDN控制器申請(qǐng)數(shù)字證書;
·組播源/接收者向SDN控制器構(gòu)建并發(fā)送組播加入和身份認(rèn)證報(bào)文;
·SDN控制器處理報(bào)文的同時(shí)進(jìn)行身份認(rèn)證;
·SDN控制器向SDN交換機(jī)生成并下發(fā)流表,向組播源和接收者生成和分配組播會(huì)話密鑰;
·組播源和接收者通過組播會(huì)話密鑰進(jìn)行加密組播通信;
·當(dāng)組播組發(fā)生變化時(shí),SDN控制器更新流表和組播會(huì)話密鑰。
下面對(duì)上述步驟進(jìn)行具體描述。
(1)數(shù)字證書申請(qǐng)。
在該方案中,所有的組播源和組播接收者都需要向SDN控制器申請(qǐng)數(shù)字證書,申請(qǐng)時(shí)需要提供身份信息、代表組播源/接收者的標(biāo)識(shí)以及自身的公鑰。
SDN控制器收到此申請(qǐng)后會(huì)對(duì)身份信息進(jìn)行審核,同時(shí)記錄其組播源/接收者身份,若審核通過則為其生成數(shù)字證書。隨后控制器對(duì)證書做摘要計(jì)算并用私鑰簽名,將證書與簽名一起頒發(fā)給相應(yīng)組播源和接收者,并將證書與摘要存入本地證書庫。
組播源和接收者收到數(shù)字證書和證書摘要后首先用控制器公鑰對(duì)證書摘要進(jìn)行解密,得到一個(gè)摘要值Hash1,然后使用證書中指定的簽名算法對(duì)證書進(jìn)行摘要計(jì)算得到Hash2,若有Hash1=Hash2,則認(rèn)為該證書真實(shí)可信并用作后續(xù)身份認(rèn)證的憑證。
(2)組播源/接收者入組。
當(dāng)一個(gè)組播源或組播接收者要加入到一個(gè)組播組時(shí),需要向SDN控制器發(fā)送組播加入和身份認(rèn)證報(bào)文,報(bào)文格式如圖2所示。其中,加入/退出標(biāo)識(shí)為0x11,當(dāng)此標(biāo)識(shí)為0x22時(shí)表示組播離開報(bào)文;組播源/組播接收者類型標(biāo)識(shí)表示主機(jī)加入組播組后要成為的角色,0x11表示組播源,0x22表示接收者,此字段應(yīng)與證書中的組播源/接收者標(biāo)識(shí)符相對(duì)應(yīng)。當(dāng)前主機(jī)需要將自己的數(shù)字證書摘要值用SDN控制器的公鑰加密,放入加密的數(shù)字證書摘要字段,并將其長度寫入加密的數(shù)字摘要長度字段。該組播源/接收者將構(gòu)建好的報(bào)文發(fā)送給SDN控制器。
圖2 組播加入和身份認(rèn)證報(bào)文格式
(3)身份認(rèn)證和組播加入確認(rèn)。
SDN控制器收到組播加入和身份認(rèn)證報(bào)文后,解析各個(gè)字段,確定報(bào)文類型、組播源/接收者類型、組播地址、組播源地址等信息,取出加密的數(shù)字證書摘要用私鑰解密,與證書庫中的摘要進(jìn)行比較,若存在該記錄并且組播源/接收者類型無誤,則通過身份認(rèn)證,確認(rèn)該組播源/接收者加入。
(4)流表下發(fā)和密鑰分配。
當(dāng)一個(gè)組播組中同時(shí)存在至少一個(gè)組播源和接收者時(shí),SDN控制器為該組播組計(jì)算和建立組播路徑,并向SDN交換機(jī)下發(fā)組播流表。同時(shí),控制器為該組播組生成一個(gè)組播會(huì)話密鑰用來加、解密組播消息,分別用該組播組的組播源、接收者公鑰加密,以單播發(fā)送。組播源和接收者收到加密的組播會(huì)話密鑰,用自身私鑰解密。至此該組播組可以開始進(jìn)行加密的組播通信,即組播源向組播地址發(fā)送用組播會(huì)話密鑰加密的組播消息,組播接收者向組播地址接收消息,用組播會(huì)話密鑰解密。
一個(gè)組播組在進(jìn)行組播通信的過程中,組播接收者會(huì)發(fā)生以下形式的變化:
·新的組播接收者加入;
·組播組內(nèi)的組播接收者離開。
當(dāng)組播接收者需要進(jìn)行上述操作時(shí),需要向SDN控制器發(fā)送請(qǐng)求報(bào)文;SDN控制器需要驗(yàn)證報(bào)文并更新組播路徑、下發(fā)新流表并更新組播會(huì)話密鑰,以保證前后向保密性。
(5)組播組變化時(shí)的組播路徑與密鑰更新。
當(dāng)一個(gè)正在進(jìn)行組播通信的組播組有新的接收者加入或組內(nèi)接收者離開時(shí),該接收者應(yīng)按照步驟2中所示方法構(gòu)建和發(fā)送組播加入(離開)和身份認(rèn)證報(bào)文,其中加入/退出標(biāo)識(shí)分別填寫0x11(加入)或0x22(離開),由SDN控制器接收并解析審核相應(yīng)信息。確認(rèn)無誤后,SDN控制器會(huì)重新計(jì)算組播路徑,向SDN交換機(jī)下發(fā)新流表,并生成新的組播會(huì)話密鑰,加密分配給當(dāng)前組播組內(nèi)的組播源和接收者。相應(yīng)組播源和接收者解密獲得新的組播會(huì)話密鑰,使用此密鑰進(jìn)行接下來的加密組播通信。
上述流程示意如圖3所示。
圖3 SDN組播安全方案流程示意圖
實(shí)驗(yàn)在一臺(tái)服務(wù)器上安裝了開源SDN控制器軟件ONOS[15]作為SDN控制器,另一臺(tái)服務(wù)器安裝了Mininet軟件[16]通過Open vSwitch[17]虛擬出了四臺(tái)SDN交換機(jī),連接拓?fù)淙鐖D4所示,交換機(jī)與控制器之間通過OpenFlow協(xié)議通信,并開啟TLS選項(xiàng)。
一臺(tái)主機(jī)作為組播源,與一臺(tái)SDN交換機(jī)相連,兩臺(tái)主機(jī)A和B作為組播接收者分別連接至另外兩臺(tái)不同的交換機(jī),其中組播源和組播接收者A已取得SDN控制器頒發(fā)的數(shù)字證書,組播接收者B還未申請(qǐng)證書。此外,該方案在所有組播源和接收者上安裝了開源播放器軟件VLC作為組播數(shù)據(jù)流的輸入/輸出工具進(jìn)行組播通信。
2.2.1 組播源/接收者認(rèn)證的實(shí)現(xiàn)
在本測試環(huán)境中,已經(jīng)向SDN控制器申請(qǐng)過證書,并通過了身份認(rèn)證的組播源和接收者A的信息保存在SDN控制器的身份信息數(shù)據(jù)庫中,如圖5所示,組播源B未向SDN控制器申請(qǐng)過數(shù)字證書。
圖5 身份信息數(shù)據(jù)庫內(nèi)容
此時(shí),組播源、接收者A、接收者B構(gòu)建和發(fā)送組播加入和身份認(rèn)證報(bào)文,由于接收者B未取得數(shù)字證書,因此報(bào)文中的數(shù)字證書摘要字段為空。SDN控制器接收請(qǐng)求后即建立組播路徑,其中包括了主機(jī)與交換機(jī)之間建立的接口。從圖6(a)中可見,SDN控制器為該組播組建立了以組播源為來源的入端口以及以接收者A為目的的出端口,與組播接收者B相連的端口未在其中。同時(shí),通過圖6(b)的SDN交換機(jī)的狀態(tài)可以看出,SDN控制器已下發(fā)了組播流表,同樣轉(zhuǎn)發(fā)至組播接收者A所在端口,未向接收者B所在端口轉(zhuǎn)發(fā)。因此,該方案在測試環(huán)境下實(shí)現(xiàn)了SDN組播接收者的訪問控制。
(a)SDN控制器端口狀態(tài)
2.2.2 加密組播通信的實(shí)現(xiàn)
組播源、組播接收者A和B都通過SDN控制器認(rèn)證加入組播組,他們會(huì)收到SDN控制器發(fā)送的加密組播會(huì)話密鑰。組播源使用VLC播放器配置組播流輸出視頻源,并輸入解密后的會(huì)話密鑰,以生成加密的組播流。組播接收者A和B使用VLC播放器配置輸入流的組播地址和源地址,此時(shí)組播通信開始,但因接收者未輸入密鑰導(dǎo)致組播視頻無法正常播放。組播接收者A向VLC輸入解密過的組播會(huì)話密鑰后,組播視頻即可正常播放,接收者B仍然不能播放,反之亦然。以此證明該方案在實(shí)驗(yàn)環(huán)境下實(shí)現(xiàn)了安全的加密通信。
2.3.1 身份認(rèn)證時(shí)延
為測試身份認(rèn)證對(duì)SDN組播造成的時(shí)延影響,本測試使用Mininet軟件虛擬出大量的主機(jī)當(dāng)作組播接收者,并逐漸增加接收者的數(shù)量,分別測量從組播接收者發(fā)出組播加入和身份認(rèn)證報(bào)文到接收者收到組播流的時(shí)間間隔。作為對(duì)照,本測試在同等條件下測量了一般的SDN組播環(huán)境下從組播接收者發(fā)送IGMP報(bào)文到收到組播流的時(shí)間間隔。
將兩種情況下的數(shù)據(jù)匯總起來得到如圖7(a)的結(jié)果。從圖中可以看出,認(rèn)證過程的加入額外造成了少量的時(shí)延,但未對(duì)整體性能產(chǎn)生較大的影響。
2.3.2 加解密時(shí)延
為測試組播消息加密對(duì)SDN組播造成的時(shí)延影響,本測試選取了不同清晰度的視頻文件作為組播流,測量從組播源開始輸出加密組播視頻流到組播接收者正常播放解密視頻之間的時(shí)間間隔,結(jié)果如圖7(b)所示。由圖可見,即使是播放清晰度為1 080 P的高清視頻,整個(gè)過程也只需要2秒左右,加密對(duì)組播造成的時(shí)延對(duì)實(shí)際使用的影響有限。
圖7 性能測試結(jié)果
提出了一種基于SDN的安全組播方案,其中包括了組播源/接收者的身份認(rèn)證和組播消息的加密傳輸兩大方面內(nèi)容。針對(duì)現(xiàn)有SDN組播安全方案中組播接收者的認(rèn)證過程復(fù)雜,并且不對(duì)組播源進(jìn)行身份認(rèn)證的問題,提出了一種基于數(shù)字證書的身份認(rèn)證機(jī)制,通過一種新的組播加入和身份認(rèn)證報(bào)文實(shí)現(xiàn)組播源和接收者的入組請(qǐng)求和身份認(rèn)證,保證組播源和接收者身份的真實(shí)性。為了實(shí)現(xiàn)組播消息的加密傳輸,該方案為SDN控制器加入了密鑰管理的功能,包括組播會(huì)話密鑰的生成、分配、更新,保證了組播消息的機(jī)密性。仿真結(jié)果表明,該方案可以實(shí)現(xiàn)有效拒絕非法組播源/接收者入組,并實(shí)現(xiàn)加密組播功能,性能測試結(jié)果顯示,因安全機(jī)制造成的時(shí)延對(duì)實(shí)際使用的影響有限,該方案對(duì)解決組播安全問題有一定實(shí)用價(jià)值。