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