付費(fèi)觀看視頻的模式是很多平臺(tái)的核心業(yè)務(wù),如果視頻被錄制并非法傳播,付費(fèi)業(yè)務(wù)將受到嚴(yán)重威脅。因此對(duì)視頻服務(wù)進(jìn)行加密的技術(shù)變得尤為重要。
本文所指的視頻加密是為了讓要保護(hù)的視頻不能輕易被下載,即使下載到了也是加密后的內(nèi)容,其它人解開加密后的內(nèi)容需要付出非常大的代價(jià)。
常見(jiàn)的視頻加密技術(shù)分兩種
防盜鏈:一種加了防盜鏈簽名的URL,經(jīng)過(guò)簽名的URL能夠與流服務(wù)器的安全機(jī)制進(jìn)行配合,可以將URL的使用權(quán)限定在指定的APP或播放器上,惡意第三方拿到URL也不能使用和播放;
流媒體加密:通過(guò)對(duì)稱加密算法加密視頻內(nèi)容本身,用戶獲得加密后的視頻內(nèi)容,通過(guò)驗(yàn)證的用戶可以獲取解密視頻的密鑰,在客戶端解密后播放。這種方式實(shí)現(xiàn)起來(lái)流程復(fù)雜,會(huì)帶來(lái)更多的計(jì)算量。
實(shí)際應(yīng)用場(chǎng)景中,一般結(jié)合著兩種技術(shù)一起使用,下面分別介紹這兩種加密技術(shù)。
一、防盜鏈
1、Referer防盜鏈
Referer是HTTP協(xié)議中request header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請(qǐng)求的時(shí)候,一般會(huì)帶上Referer,告訴服務(wù)器是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的,服務(wù)器基于此可以獲得一些信息用于處理。如果refer信息不是來(lái)自本站,就阻止訪問(wèn)或者跳到其它鏈接。
Nginx防盜鏈的配置:如針對(duì)文件類型的配置方法。
程序清單1 Nginx防盜鏈配置
這種方法是在server或者location段中加入:valid_referers none blocked,其中none表示空的來(lái)路,也就是直接訪問(wèn),比如直接在瀏覽器打開一個(gè)文件,blocked表示被防火墻標(biāo)記過(guò)的來(lái)路,*.zlg.cn表示所有子域名。
以上表示所有來(lái)自zlg.cn和域名中包含zlg.cn的站點(diǎn)都可以訪問(wèn)當(dāng)前站點(diǎn)的圖片和視頻文件,如果來(lái)源域名不在blocked列表中,則返回一個(gè)403給盜鏈者。
2、Token防盜鏈
Token防盜鏈通過(guò)對(duì)時(shí)間有關(guān)的字符串進(jìn)行簽名,將時(shí)間、簽名信息通過(guò)一定的方式傳遞給CDN(Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò))節(jié)點(diǎn)服務(wù)器作為判斷依據(jù),CDN 節(jié)點(diǎn)則會(huì)根據(jù) URL 的加密形式,取出對(duì)應(yīng)的過(guò)期時(shí)間,和當(dāng)前服務(wù)器時(shí)間進(jìn)行比較,確認(rèn)請(qǐng)求是否過(guò)期,過(guò)期的話,則直接拒絕;如果時(shí)間未過(guò)期,CDN 節(jié)點(diǎn)將根據(jù)約定的簽名算法和密文,將計(jì)算后的值和 URL 中的原始加密串進(jìn)行比較;通過(guò)之后,請(qǐng)求會(huì)被認(rèn)為是合法的。不合法的請(qǐng)求可以采取禁止訪問(wèn)或其他操作。
其流程如下圖1 Token防盜鏈流程所示。
客戶端業(yè)務(wù)服務(wù)器生成驗(yàn)證信息,驗(yàn)證信息的生成由業(yè)務(wù)服務(wù)器負(fù)責(zé),具體的加密過(guò)程需要確認(rèn)如下事項(xiàng)。
確認(rèn)過(guò)期時(shí)間的格式,默認(rèn)采用UNIX時(shí)間戳格式;
確認(rèn)驗(yàn)證信息中的密文,用戶計(jì)算驗(yàn)證信息,需要和 CDN 平臺(tái)約定;
確認(rèn)驗(yàn)證信息時(shí)加入的參數(shù),默認(rèn)為URL 的路徑部分;
根據(jù)上文的算法說(shuō)明計(jì)算驗(yàn)證信息,其中請(qǐng)求 URL 中的驗(yàn)證參數(shù)為_upt。
CDN節(jié)點(diǎn)驗(yàn)證過(guò)程
根據(jù)約定解析取出過(guò)期時(shí)間,和當(dāng)前 CDN 節(jié)點(diǎn)服務(wù)器時(shí)間進(jìn)行比較,確認(rèn)請(qǐng)求是否過(guò)期;
根據(jù)上文約定好的算法計(jì)算方式,計(jì)算出 MD5 加密串后,和URL中的加密串進(jìn)行比較,驗(yàn)證加密串是否一致;
如果以上兩個(gè)步驟都驗(yàn)證通過(guò),請(qǐng)求才會(huì)被認(rèn)為是合法的,這時(shí) CDN 會(huì)請(qǐng)求資源響應(yīng)給客戶端,否則會(huì)被認(rèn)為是非法請(qǐng)求,直接響應(yīng) HTTP status code 403。
圖1Token防盜鏈流程
二、流媒體加密
1、常見(jiàn)的應(yīng)用與瀏覽器播放的流媒體傳輸協(xié)議有
HLS:Apple 推出的基于 HTTP 協(xié)議的 MP4 分片傳輸協(xié)議,可用于點(diǎn)播和直播場(chǎng)景。HLS 是目前最成熟的支持流媒體加密的能應(yīng)用在瀏覽器里的流媒體傳輸協(xié)議,HLS 原生支持加密。具有如下優(yōu)點(diǎn):
建立在HTTP之上,使用簡(jiǎn)單,接入代價(jià)小;
分片技術(shù)有利于CDN加速技術(shù)的實(shí)施;
部分瀏覽器原生支持,支持點(diǎn)播和錄播。
RTMPE:基于 TCP 的 FLV 分塊 message 傳輸協(xié)議,用于 Flash 客戶端。 使用由 Diffie-Hellman 密鑰交換 和 HMACSHA256 組成的行業(yè)標(biāo)準(zhǔn)基本加密。傳輸數(shù)據(jù)時(shí),RTMPE 生成一對(duì) RC4 密鑰。一個(gè)密鑰加密服務(wù)器發(fā)送的數(shù)據(jù),另一個(gè)密鑰加密發(fā)送到服務(wù)器的數(shù)據(jù)。RTMPE 阻止第三方應(yīng)用程序偵聽(tīng)客戶端和服務(wù)器之間的數(shù)據(jù)傳輸;
HTTP-FLV:基于 HTTP 長(zhǎng)連接的 FLV 分塊 tag 傳輸協(xié)議,將RTMP封裝在HTTP協(xié)議之上,可以更好的穿透防火墻等,可用于點(diǎn)播和直播場(chǎng)景。
流媒體加密技術(shù)的核心就在于對(duì)這每一小塊視頻分別使用對(duì)稱加密算法,在服務(wù)端加密客戶端解密,通過(guò)權(quán)限驗(yàn)證的用戶才能拿到解密一小塊視頻的密鑰。
之所以選擇對(duì)稱加密是因?yàn)榱髅襟w要求很強(qiáng)的實(shí)時(shí)性,數(shù)據(jù)量又很大。非對(duì)稱算法的計(jì)算都比較復(fù)雜,效率較低,適合對(duì)少量數(shù)據(jù)進(jìn)行加密。對(duì)稱加密效率相對(duì)較高,所以流媒體加密首選對(duì)稱加密。
由于HLS加密目前最為成熟穩(wěn)定,因此僅介紹該加密方案。
HLS 由兩部分構(gòu)成,一個(gè)是 .m3u8 文件,一個(gè)是 .ts視頻文件(TS 是視頻文件格式的一種)。整個(gè)過(guò)程是,瀏覽器會(huì)首先去請(qǐng)求 .m3u8 的索引文件,然后解析 m3u8,找出對(duì)應(yīng)的 .ts文件鏈接,并開始下載,如下圖2 HLS加密流程所示。
圖2 HLS加密流程
m3u8 文件是一個(gè)文本文件,在開啟 HLS 加密時(shí),內(nèi)容大致如下。
程序清單2 m3u8文本內(nèi)容
這個(gè)文件描述了每個(gè) TS 分片的 URL ,但這些分片都是加密后的內(nèi)容,要還原出原內(nèi)容需要從
中解析出獲取解密密鑰的URL https://priv.example.com/key.do 和對(duì)稱加密算法 AES-128,再?gòu)脑揢RL中獲取到密碼后,再在客戶端解密出原內(nèi)容。
2、啟用HLS加密后需完成如下工作
針對(duì)每個(gè)TS需要去請(qǐng)求獲取秘鑰;
需要多提供一個(gè)給客戶端獲取密鑰的鑒權(quán)服務(wù);
針對(duì)每個(gè) TS 需要去執(zhí)行對(duì)稱加密的解密計(jì)算。
本著互利共贏的理念,目前zlg.cn中的大部分音視頻資料未采用防盜鏈與流媒體加密技術(shù),各個(gè)合作伙伴可以在其網(wǎng)站中正常使用zlg.cn的音視頻資料鏈接。若zlg.cn采用了上述中refer防盜鏈和HLS流媒體加密技術(shù)保護(hù)部分保密資料,對(duì)于未授權(quán)的第三方則有很好的防護(hù)作用。
第一重防護(hù):第三方在其網(wǎng)站上添加的來(lái)自zlg.cn的鏈接將無(wú)法訪問(wèn),直接跳轉(zhuǎn)至403網(wǎng)頁(yè)或其他網(wǎng)頁(yè),如zlg.cn主頁(yè)。
第二重防護(hù):對(duì)于視頻資源,第三方播放器獲取到的文件為.m3u8文本文件,解析后能夠獲取到加密后的切片.ts文件和加密方案,但由于沒(méi)有授權(quán),因此無(wú)法獲取秘鑰,也就無(wú)法解密并播放該視頻資源。
-
視頻
+關(guān)注
關(guān)注
6文章
1930瀏覽量
72778 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
8982瀏覽量
85107 -
加密技術(shù)
+關(guān)注
關(guān)注
0文章
144瀏覽量
17348
原文標(biāo)題:安全加密(四):拾遺?流媒體加密技術(shù)
文章出處:【微信號(hào):Zlgmcu7890,微信公眾號(hào):周立功單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論