本次分享,將針對(duì)當(dāng)前各類終端加密場(chǎng)景,分別介紹基于的會(huì)議、SFU模式的會(huì)議以及 SFU模式的會(huì)議數(shù)據(jù)加密的異同。
內(nèi)容源自263音視頻架構(gòu)師賀曉敏在視頻會(huì)議下半場(chǎng)圓桌上的分享。
PPT資料鏈接:
提取碼:t02m
隨著遠(yuǎn)程協(xié)作工具在各行業(yè)被廣泛應(yīng)用,并且很多企業(yè)都宣布將遠(yuǎn)程辦公作為一種常態(tài)化的協(xié)作模式,這就意味著如視頻會(huì)議等遠(yuǎn)程協(xié)作辦公產(chǎn)品的普及性已經(jīng)提升到了企業(yè)戰(zhàn)略的高度。也令企業(yè)對(duì)視頻會(huì)議軟件或平臺(tái)的安全性越發(fā)重視。
視頻會(huì)議的普及必然意味著需要支持更高的并發(fā)量、更便捷的使用和支持移動(dòng)化、智能化終端的接入,企業(yè)自建的視頻會(huì)議平臺(tái)已無(wú)法滿足企業(yè)使用需求,企業(yè)對(duì)公有云產(chǎn)品的接受度逐漸提高,企業(yè)對(duì)視頻會(huì)議產(chǎn)品安全性的拷問(wèn)也隨之而來(lái)。
縱觀全球,一方面網(wǎng)絡(luò)攻擊相較從前更具廣泛性、針對(duì)性和破壞性,另一方面,由于國(guó)際政治環(huán)境的客觀原因,逆全球化發(fā)展帶來(lái)信任危機(jī),政企、軍警等各領(lǐng)域都對(duì)視頻會(huì)議安全性提出更高的信息安全要求。
非常榮幸能夠代表263參加這次活動(dòng)。今天我會(huì)就視頻會(huì)議終端到終端的加密策略,分享目前263正在研發(fā)和實(shí)踐中的幾種加密方法。
首先介紹一下263。263在企業(yè)互聯(lián)網(wǎng)通信領(lǐng)域已深耕20余年,為企業(yè)級(jí)客戶提供如視頻會(huì)議、企業(yè)直播、企業(yè)郵箱、云存儲(chǔ)、電話會(huì)議等產(chǎn)品和服務(wù)。2015年,263收購(gòu)了當(dāng)時(shí)國(guó)內(nèi)最大的互動(dòng)直播平臺(tái)展視互動(dòng),全面布局了企業(yè)互聯(lián)網(wǎng)通信領(lǐng)域產(chǎn)品線。
近年來(lái),263逐漸從傳統(tǒng)的工具型的廠商向一站式數(shù)字化營(yíng)銷服務(wù)商轉(zhuǎn)變,通過(guò)云視頻技術(shù)能力賦能行業(yè)客戶,在云視頻會(huì)議、云直播應(yīng)用領(lǐng)域極大地提升了整體視頻服務(wù)的能力,滿足企業(yè)客戶開(kāi)展遠(yuǎn)程視頻會(huì)議、直播營(yíng)銷、遠(yuǎn)程培訓(xùn)等各種視頻協(xié)作需求,幫助企業(yè)創(chuàng)造數(shù)字化營(yíng)銷新價(jià)值。
#視頻會(huì)議安全背景介紹.
提到視頻會(huì)議安全,始終繞不開(kāi)的一個(gè)因素就是去年的疫情。自從2020年的疫情之后,快速催化了遠(yuǎn)程辦公、遠(yuǎn)程協(xié)作市場(chǎng),尤其在視頻會(huì)議、在線教育、線上培訓(xùn)、線上峰會(huì)等各行業(yè)的細(xì)分場(chǎng)景應(yīng)用越來(lái)越廣泛,并且終端不局限于電腦和視頻會(huì)議硬件。例如在物聯(lián)網(wǎng)領(lǐng)域,各種傳感器、無(wú)人機(jī)等終端也需要視頻通信能力;在醫(yī)療領(lǐng)域,核磁共振圖像的傳輸、紅外掃描等,在政府應(yīng)急指揮領(lǐng)域的遠(yuǎn)程跟蹤監(jiān)控等,無(wú)一不需要在各類終端上實(shí)現(xiàn)視頻通信能力。終端種類繁多,對(duì)數(shù)據(jù)安全的要求也不盡相同,這對(duì)于視頻通信平臺(tái)的安全策略是很大的挑戰(zhàn)。
另外,視頻會(huì)議行業(yè)整體的發(fā)展趨勢(shì)越來(lái)越趨向于協(xié)議的標(biāo)準(zhǔn)化、兼容性和能力的融合。當(dāng)前,視頻會(huì)議的應(yīng)用場(chǎng)景越來(lái)越復(fù)雜,企業(yè)采用自建方案,使用私有協(xié)議的成本越來(lái)越高,因此,采用公有云方案的企業(yè)越來(lái)越多,遭到網(wǎng)絡(luò)攻擊的概率也相對(duì)增高,并且網(wǎng)絡(luò)攻擊的強(qiáng)度也隨之升級(jí),變得針對(duì)性更強(qiáng)、破壞力更大、影響范圍更廣,視頻會(huì)議平臺(tái)的安全性及加密策略,受到了越來(lái)越多企業(yè)的重視。下面我將分享一些傳統(tǒng)視頻通信的加密方法和目前263研發(fā)的幾種視頻會(huì)議終端到終端的加密方法。
#端到端的加密.
傳統(tǒng)加密技術(shù)共有三種,對(duì)稱加密、非對(duì)稱加密和TLS加密。
對(duì)稱加密,即用同一個(gè)方法加密,對(duì)方再用同一個(gè)方法解密,這種加密技術(shù)要求雙方公用密碼需要通過(guò)私有通道提前分配,類似諜戰(zhàn)電影中的密碼本。對(duì)稱加密的優(yōu)勢(shì)是速度快、效率高,但弊端也很明顯,一旦密鑰暴露,數(shù)據(jù)就會(huì)被竊聽(tīng)。
隨著加密技術(shù)的發(fā)展,由對(duì)稱加密技術(shù)引申出了非對(duì)稱加密技術(shù),這種技術(shù)的加密和解密密鑰不同,一般是公鑰加密,私鑰解密。公鑰即使泄露,也不會(huì)導(dǎo)致數(shù)據(jù)泄露。通信雙方只需要提前把自己的公鑰發(fā)給對(duì)方,就可以實(shí)現(xiàn)公鑰加密。而發(fā)送出去后,對(duì)方收到再解密,這種技術(shù)比對(duì)稱加密的安全性有一定的提高。
第三類是TLS加密。TLS加密的優(yōu)勢(shì)是在非對(duì)稱加密的基礎(chǔ)上,解決了身份認(rèn)證問(wèn)題。加密通信過(guò)程是先向認(rèn)證機(jī)構(gòu)申請(qǐng)證書(shū),把證書(shū)認(rèn)證為公鑰發(fā)送給對(duì)方,對(duì)方收到證書(shū)后在第三方驗(yàn)證其證書(shū)是否有效,兩方的驗(yàn)證通過(guò)后開(kāi)始公鑰加密,私鑰解密通信的過(guò)程。
#基于的會(huì)議數(shù)據(jù)加密.
下面,我重點(diǎn)講一下基于的數(shù)據(jù)加密。為更好地保障客戶的信息安全,263的云視頻服務(wù)使用的是自研的技術(shù),并且在視頻會(huì)議數(shù)據(jù)的安全性上著重做了加固。
由于本身的協(xié)議設(shè)置是端到端的通信,所以基于的會(huì)議大多數(shù)是客戶端到服務(wù)器的平臺(tái)之間的數(shù)據(jù)。過(guò)程是標(biāo)準(zhǔn)的SDP會(huì)話協(xié)商——ICE打洞解決數(shù)據(jù)及網(wǎng)絡(luò)問(wèn)題——基于UDP的DTLS實(shí)現(xiàn)雙方密鑰交換——SRTP數(shù)據(jù)傳輸,發(fā)送方使用公鑰加密數(shù)據(jù)基于webrtc的視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),使用SRTP通道發(fā)送,對(duì)方收到后解密。
媒體數(shù)據(jù)使用的是SRTP,可用例傳輸信令,各大平臺(tái)使用比較少,用的是SCTP加密。的會(huì)話建立過(guò)程中,會(huì)話信令的交換沒(méi)有標(biāo)準(zhǔn)化定義,一般來(lái)說(shuō)基于實(shí)現(xiàn)以兼容瀏覽器,但也可以自己去實(shí)現(xiàn)。如上圖,信令用的就是TCP的TLS加密、數(shù)據(jù)用UDP的SCTP/SRTP的加密過(guò)程(新版本已實(shí)現(xiàn)基于UDP/HTTP3/Quic的實(shí)現(xiàn))。
密鑰交換的過(guò)程是的關(guān)鍵,這里舉例說(shuō)明。例如現(xiàn)在基于的會(huì)議平臺(tái)下有兩個(gè)終端,要進(jìn)行媒體數(shù)據(jù)的轉(zhuǎn)發(fā),其過(guò)程是首先建立會(huì)話,建立過(guò)程中會(huì)生成一對(duì)或兩對(duì)密鑰,上行的流和下行的流是兩個(gè)獨(dú)立對(duì)等的流,即發(fā)送和接受分別是一對(duì)密鑰。假設(shè)終端A生成的是(A,a),服務(wù)器生成的是(S1,s1),終端B也是同樣的過(guò)程,完成之后,它們都建立了自己的媒體流。接下來(lái)就是數(shù)據(jù)的轉(zhuǎn)發(fā)過(guò)程,A終端使用公鑰加密服務(wù)器,發(fā)送給服務(wù)器,服務(wù)器使用它們之間協(xié)商的密鑰解密,然后做處理(包括組包、排序、抗丟包、NACK的過(guò)程),在分發(fā)過(guò)程中可能還會(huì)做SFU的分流,就是分流,然后給每一個(gè)終端發(fā)的時(shí)候再用它們協(xié)商的密鑰加密發(fā)送,終端收到后再解密,反過(guò)來(lái)同樣。
這就實(shí)現(xiàn)了整個(gè)會(huì)議中每個(gè)終端到服務(wù)器之間的信道是加密的,服務(wù)器會(huì)把收到的數(shù)據(jù)解密、組包、重新加密、發(fā)送。它存在的問(wèn)題是服務(wù)器在一系列處理過(guò)程中,內(nèi)存CPU消耗比較高。
目前,這一加密技術(shù)已在263平臺(tái)加以運(yùn)用。263基于自研的技術(shù),不僅實(shí)現(xiàn)了云視頻會(huì)議和云直播產(chǎn)品穩(wěn)定、流暢、超低延遲的視頻通信,也憑這一加密技術(shù)為政府、金融、醫(yī)藥等行業(yè)及對(duì)數(shù)據(jù)安全要求較高的企業(yè)客戶的數(shù)據(jù)安全保駕護(hù)航。
#視頻會(huì)議中的一對(duì)一私密會(huì)話.
對(duì)于1對(duì)1的視頻會(huì)議,263在平臺(tái)的開(kāi)發(fā)上設(shè)計(jì)了一種私密對(duì)話的加密方式來(lái)保障視頻會(huì)議安全。假設(shè)這是一個(gè)標(biāo)準(zhǔn)的會(huì)議服務(wù)器,終端A和B正常進(jìn)入會(huì)議中,它們之間想做一個(gè)私密會(huì)話,會(huì)話使用的是第三方平臺(tái),基于平臺(tái)的SDK擴(kuò)展協(xié)議自己做了加密的信令擴(kuò)展,它的過(guò)程是:A終端欲發(fā)起會(huì)話,其先生成密鑰再把公鑰發(fā)給對(duì)方,B接受會(huì)話,生成應(yīng)答后也把公鑰發(fā)送回來(lái),就可以實(shí)現(xiàn)一對(duì)一的加密數(shù)據(jù)流轉(zhuǎn)發(fā)。
#SFU模式下的終端到終端加密.
在SFU模式,即分發(fā)模式下,會(huì)議服務(wù)器需要將每個(gè)終端數(shù)據(jù)通過(guò)服務(wù)器分發(fā)給多人,因此不能給每個(gè)1對(duì)1的數(shù)據(jù)流都進(jìn)行全流程加密,而只能實(shí)現(xiàn)上線流或下行流的數(shù)據(jù)傳輸通道加密。我們現(xiàn)在要求整個(gè)分發(fā)過(guò)程,會(huì)議服務(wù)器不能破解每個(gè)終端的信令或者數(shù)據(jù),確保不會(huì)被監(jiān)聽(tīng)。要達(dá)成在一個(gè)不可信任的平臺(tái)上實(shí)現(xiàn)可信任的通話,需要以下過(guò)程:首先,每個(gè)終端先生成一對(duì)”信令密鑰”,在入會(huì)時(shí)會(huì)把自己的公鑰廣播到會(huì)場(chǎng)里面。后續(xù)發(fā)送需要加密的信令時(shí),只需要使用對(duì)方的公鑰進(jìn)行加密即可。這樣,所有的終端都可以發(fā)送信令給服務(wù)器,但是服務(wù)器不能破解信令。
之后則是數(shù)據(jù)的加密發(fā)送過(guò)程。數(shù)據(jù)的加密和信令所有區(qū)別。如果要求每個(gè)人的數(shù)據(jù)加密后發(fā)出,服務(wù)器不僅不能解密,還要求所有終端都可以接收,這就需要一個(gè)授權(quán)的過(guò)程。
例如:A客戶端使用”A1”數(shù)據(jù)密鑰,A客戶端的數(shù)據(jù)在入會(huì)后就可以使用自己的A1公鑰進(jìn)行加密,然后再發(fā)給服務(wù)器;服務(wù)器不知道A客戶端的數(shù)據(jù)私鑰,所以不能解密;其他客戶端在需要接收A的數(shù)據(jù)時(shí),會(huì)首先發(fā)送一個(gè)請(qǐng)求信令,這個(gè)信令使用信令公鑰”A”進(jìn)行加密,轉(zhuǎn)發(fā)到A終端;A收到后會(huì)進(jìn)行鑒權(quán)認(rèn)證,確保對(duì)方是合法終端(應(yīng)用可以建立自己的鑒權(quán)平臺(tái),并在請(qǐng)求中包含證書(shū))。認(rèn)證同意后,就可以把相應(yīng)的應(yīng)答發(fā)送出去,這里面的應(yīng)答包括數(shù)據(jù)私鑰”a1”。
注意這里公鑰當(dāng)作私鑰,私鑰當(dāng)作公鑰,是一個(gè)反向的過(guò)程。這樣,終端B就可以接收服務(wù)器的數(shù)據(jù)流。B已經(jīng)得到授權(quán)可以使用A的私鑰進(jìn)行解密A的加密數(shù)據(jù)。這樣,通過(guò)服務(wù)器轉(zhuǎn)發(fā)加密的數(shù)據(jù)通道就已經(jīng)完成了。
這SFU模式下的終端到終端加密,其證書(shū)的過(guò)程。首先存在兩個(gè)客戶終端A和B。下面是基于會(huì)議平臺(tái)SDK做的第三方的應(yīng)用。A客戶端首先向會(huì)議管理服務(wù)器發(fā)布一個(gè)加密的視頻流,服務(wù)器會(huì)廣播給所用終端;然后B終端在觀看前需要向客戶自己搭建的證書(shū)平臺(tái)獲取證書(shū),完成之后再向會(huì)議管理服務(wù)器訂閱視頻流并提供證書(shū);服務(wù)器收到請(qǐng)求后將包含證書(shū)B(niǎo)的請(qǐng)求轉(zhuǎn)發(fā)給終端A后,終端A在證書(shū)服務(wù)器上進(jìn)行證書(shū)認(rèn)證,通過(guò)后再把自己的公鑰通過(guò)會(huì)議管理服務(wù)器轉(zhuǎn)發(fā)給B,B接收收,A和B之間就可以進(jìn)行數(shù)據(jù)流的交流。
# SFU模式的終端到終端加密.
在 SFU模式下,若既想用到的標(biāo)準(zhǔn)協(xié)議,又想在其之上進(jìn)行終端間加密則需要以下的過(guò)程。
前面的的過(guò)程和剛剛一樣,使用加密的信令通道。標(biāo)準(zhǔn)的會(huì)話建立完成之后基于webrtc的視頻會(huì)議系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),例如一個(gè)B請(qǐng)求A的數(shù)據(jù),B請(qǐng)求數(shù)據(jù)的私鑰。之后在數(shù)據(jù)流的分發(fā)過(guò)程中,在的SRTP的加密之前,做一個(gè)API層的回調(diào)交給應(yīng)用端,讓其自己再做一層加密之后,再用SRTP的加密。
另外,在的服務(wù)器上只需要做通道的解密,不需要完整的視頻幀數(shù)據(jù)解密,不要組幀等過(guò)程,只需要做一個(gè)排序,之后給每個(gè)人分發(fā)還是使用的連接。這樣B在收到數(shù)據(jù)后,不僅需要進(jìn)行SRTP的解密,還需要解密一層客戶自己做的API層的加密處理。這樣就將終端到終端的加密過(guò)程嵌入到里。
SFU加密信令通道和標(biāo)準(zhǔn)會(huì)議相同。私鑰請(qǐng)求需要在之外獨(dú)立建立這樣的過(guò)程。數(shù)據(jù)流的分發(fā)就進(jìn)行剛剛介紹的三個(gè)變化:多一層加密、少一層組幀、多一層解密。基于上述的方法,通過(guò)協(xié)議的設(shè)計(jì)即可實(shí)現(xiàn)一種可信任加密數(shù)據(jù)的通信過(guò)程。
#問(wèn)題.
這里存在兩個(gè)問(wèn)題。一個(gè)是身份認(rèn)證,一個(gè)是協(xié)議兼容問(wèn)題。
身份認(rèn)證方面。我們已經(jīng)實(shí)現(xiàn)服務(wù)器是安全的、傳輸通道是安全的,但是終端是不是安全的并沒(méi)有明確的定義。剛剛提到的證書(shū)過(guò)程,沒(méi)有標(biāo)準(zhǔn)化。我們只提供開(kāi)放的API或者類似的方式,用戶可以很靈活的自己去實(shí)現(xiàn)。一般來(lái)說(shuō)一對(duì)多的證書(shū)認(rèn)證很難實(shí)現(xiàn)一個(gè)標(biāo)準(zhǔn)化的過(guò)程。除了使用證書(shū)平臺(tái)之外,也可以使用硬件層面實(shí)現(xiàn),例如加密狗的方式。
協(xié)議兼容方面。在一套加密的的系統(tǒng)上,如果想兼容標(biāo)準(zhǔn)瀏覽器客戶端就需要其他的解決方案。瀏覽器拿到數(shù)據(jù)后不會(huì)進(jìn)行API的解密,發(fā)送的數(shù)據(jù)也沒(méi)有公鑰”A1”的加密過(guò)程。我們有兩個(gè)解決思路:一、系統(tǒng)同時(shí)支持兩種加密和不加密的會(huì)議,加密的會(huì)議暫不支持瀏覽器。二、提供服務(wù)器層的SDK,讓用戶可以基于SDK建立一個(gè)管理平臺(tái)專門用于授權(quán)。這樣在瀏覽器端的接入時(shí),在服務(wù)器分發(fā)之前可以進(jìn)行完全解密再加密。這樣的分發(fā)建議第三方在自己可信任的機(jī)房搭建服務(wù)器來(lái)實(shí)現(xiàn)轉(zhuǎn)接。