1. 概述
如何保障視訊內容的安全,不被盜鏈、非法下載和傳播,是困擾眾多企業已久的問題,特別是獨播劇、線上教育、財經金融、行業培訓等線上版權視訊領域尤為迫切,處理不好會造成極為嚴重的經濟損失,甚至法律風險。
阿里雲視訊點播提供了完善的內容安全保護機制,可以滿足不同業務場景的安全需求。
2. 訪問限制
訪問限制是在雲端配置視訊資源的訪問策略,達到基本的保護目的,主要手段有:
- Referer、IP和UA(User-Agent)的黑白名單
- 一定週期內,URL的訪問次數限制、獨立IP數限制
2.1 Referer黑白名單
- 基於 HTTP 協議支援的 Referer機制,通過 Referer跟蹤來源,對來源進行識別和判斷,使用者可配置訪問的 Referer 黑、白名單(二者互斥)來限制視訊資源被訪問的情況。
- 支援黑名單和白名單兩種模式,訪客對資源發起請求後,請求到達CDN 節點,節點會根據使用者預設的防盜 鏈黑名單或白名單進行過濾,符合規則可順利請求到視訊資料;若不符合,請求會被拒絕,並返回403響應 碼。
- 配置後會自動新增泛域名支援,例如填寫a.com,最終配置生效的是*.a.com,所有子級域名都會生效。
- 由於移動端一般拿不到Referer,當前預設支援空Referer訪問,可選擇關閉。
示例
設定點播域名 vod-test1.cn-shanghai.aliyuncs.com 的Referer白名單為 aliyun.com,且不允許空Referer訪問,請求 資料:
curl -i 'http://vod-test1.cn-shanghai.aliyuncs.com/sv/5101d1f8-1643f9ab241/5101d1f8-1643f9ab241.mp4'複製程式碼
返回
當請求帶上允許的referer後即正常返回:
curl -i 'http://vod-test1.cn-shanghai.aliyuncs.com/sv/5101d1f8-1643f9ab241/5101d1f8-1643f9ab241.mp4' \
-H 'Referer: http://www.aliyun.com'複製程式碼
2.2 UA黑白名單
UA(User-Agent)是一個特殊字串頭,幫助服務端識別使用者使用的作業系統及版本、CPU型別、瀏覽器及版本、 瀏覽器渲染引擎&語言和外掛等。可通過UA黑白名單來限制特定瀏覽器或終端的訪問。
如PC端IE9瀏覽器:
UserAgent:Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0;複製程式碼
可模擬HTTP請求驗證:
curl -i 'http://vod-test1.cn-shanghai.aliyuncs.com/sv/5101d1f8-1643f9ab241/5101d1f8-1643f9ab241.mp4' \
-H 'User-Agent: iPhone OS;MI 5'複製程式碼
2.3 IP黑白名單
視訊點播支援配置IP黑名單或白名單,拒絕或只允許特定IP的訪問。
- 支援IP列表新增,並支援新增IP網段,例如127.0.0.1/24。
網段127.0.0.1/24,24表示採用子網掩碼中的前24位為有效位,即用32-24=8bit來表示主機號,該子網可以容納2^8 - 2 = 254 臺主機,故可表示IP網段範圍:127.0.0.1~127.0.0.255。
- 可選擇優先使用 remote_addr 或 X-Forwarded-For(XFF) 作為請求端IP,或者同時匹配。
2.4 訪問次數和獨立IP數限制
點播服務可限制媒體資源在一定時間週期內(如1天)的最大訪問次數和最大獨立IP數,核心原理是所有請求先到中心化的訪問計數服務進行驗證,判斷是否超過預設的閾值,若超過則拒絕服務,返回HTTP 403。
- 該限制為URL(包括檔案地址和簽名資訊)維度而非檔案維度,但可配置忽略URL中的部分引數;限制的閾 值到域名粒度,可單獨設定。
- 訪問計數服務是多區域部署的中心化服務,一個URL只能被排程到其中一個區域,以保證中心化計數。
- CDN邊緣節點收到請求後會訪問中心化計數服務進行計數和驗證。
2.5 小結
- 訪問限制的使用門檻很低,只需簡單配置即可使用,能起到一定的保護作用,特別是Web端。
- Referer和UA都是基於HTTP Header,容易被偽造,安全性低。
- IP黑白名單機制和訪問數限制,無法實現內容分發給大量C端使用者,不適合廣泛的內容消費場景,且後者在 閾值範圍內也可能被非法訪問。
3. 播放中心鑑權
播放地址若固定不變會帶來持久的非法擴散傳播,且無法有效遏制,視訊點播提供的URL鑑權可通過生成動態的加密URL(包含許可權驗證、過期時效等資訊)來區分合法請求,以達到保護視訊資源的目的。
- 開啟URL鑑權後,點播的播放器SDK、獲取播放地址的API/SDK都會自動生成帶時效的播放URL;如需要自己生成鑑權的動態URL,則可使用下述 鑑權 法。
- 開啟URL鑑權後,所有媒體資源,包括視訊、音訊、封面、截圖等地址都會進行鑑權。
- 鑑權Key的設定是以域名為粒度,且存於服務端以確保安全;支援主、備Key平滑切換,若更換主Key,可使用備Key生成播放地址,以做為更換的橋接,實現交替更新。
鑑權方法
鑑權URL構成
http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash複製程式碼
鑑權URL由播放檔案地址+驗證串構成,驗證串是根據鑑權key+過期時間通過md5演算法計算得出,且具有時效性, 預設為3600秒(可後臺配置)的有效時間,可在生成播放地址或獲取地址時設定過期時間;若地址過期則訪問時 CDN會返回HTTP 403。
動態地址示例
http://vod.example.com/video/aliyun-sample.mp4?auth_key=1500523200-0-0-80cd3862d699b7118eed99103f2a3a4f複製程式碼
示例中的auth_key引數值字首1500523200(時間為2017-07-20 12:00:00),表示該地址會在2017-07-20 13:00:00過期。
更多資訊可參考 阿里雲視訊點播-URL鑑權。
4. 業務方二次鑑權
播放中心鑑權使用了阿里雲的預設鑑權中心,但由於沒有客戶業務請求資訊的輸入,對盜鏈等非法請求的判斷還比較單一,使用二次鑑權會更加精準。
- 二次鑑權是指點播CDN將使用者的請求透傳到客戶的鑑權中心,由客戶自己判定該請求是否合法,CDN根據 客戶的判斷結果執行相應動作:允許或拒絕訪問。
- 二次鑑權需要客戶自己開發和部署鑑權中心,該鑑權中心的域名如果同時在 CDN上面加速,可以按照一定 規則快取客戶的鑑權結果,以減輕客戶鑑權中心的壓力。點播CDN會默將把使用者請求的 headers 和 request_uri 透傳到客戶自定義的鑑權中心,並根據鑑權中心返回的結果執行相應的動作。過程如下圖:
如業務方可將其使用者的登入Cookie或UUID等資訊隱藏於播放請求中,進而透傳到自己的鑑權中心以判定是否為合法使用者。
5. 視訊加密
防盜鏈安全機制能有效保障使用者的合法訪問,但對於付費觀看視訊的場景,使用者只需通過一次付費行為拿到視訊合 法的防盜鏈播放URL,將視訊下載到本地,進而實現二次分發。因此,防盜鏈方案對於視訊版權保護是遠遠不夠的。視訊檔案一旦洩露,會給付費觀看模式造成十分嚴重的經濟損失。
阿里雲視訊加密是對視訊資料加密,即使下載到本地,視訊本身也是被加密的,無法惡意二次分發,可有效防止視訊洩露和盜鏈問題。
5.1 阿里雲視訊加密
阿里雲視訊加密採用私有的加密演算法和安全傳輸機制,提供雲端一體的視訊安全方案,核心部分包括 “加密轉碼” 和 “解密播放”。
核心優勢:
- 每個媒體檔案擁有獨立的加金鑰匙,能有效避免採用單一金鑰時,一個金鑰的洩露引起大範圍的安全問題。
- 提供信封加密機制“密文Key+明文Key”,僅密文Key入庫,明文Key不落儲存,所有過程只在記憶體中,用完 即銷燬。
- 提供安全的播放器核心SDK,涵蓋iOS/Android/Flash多平臺,自動對加密內容進行解密播放;H5播放器不支援加密視訊的播放。
- 播放器和雲端使用私有加密協議進行密文傳輸,不傳輸明文Key,有效防止金鑰被竊取。
- 提供安全下載,快取到本地的視訊會再次加密,在確保無網離線播放前提下,防止視訊被拷貝竊取。
注意:阿里雲視訊加密僅支援輸出HLS格式,且只能使用阿里雲播放器。 更多資訊參考 阿里雲-視訊加密
5.2 HLS標準加密
HLS標準加密支援 HTTP Live Streaming 中規定的通用加密方案,使用AES-128對視訊內容本身進行加密,同時能 支援所有的HLS播放器,使用者可選擇使用自研或開源的播放器。相比私有加密方案,靈活性更好,但使用門檻更 高、安全性更低:
- 使用者需搭建金鑰管理服務,提供金鑰生成(用於轉碼時對視訊內容進行加密)和解密服務(用於播放時獲取 解密金鑰),也可基於 阿里雲KMS 進行封裝。
- 使用者需提供令牌頒發服務,用於驗證播放端的身份,避免解密金鑰被非法獲取,此處為關鍵點,處理不好會千里之堤潰於蟻穴。
- 播放器和雲端傳輸明文Key,容易被竊取。
更多資訊參考 阿里雲-HLS標準加密
5.3 小結
視訊加密方案各有優劣,一般來說,越是標準、通用,靈活性越高,但安全性越低,選擇哪種方案取決於自己的業務場景,有所取捨:
安全等級:阿里雲視訊加密 > HLS標準加密
阿里雲視訊加密安全性明顯高於HLS標準加密。
易用性:阿里雲視訊加密 > HLS標準加密
阿里雲視訊加密提供雲端一體解決方案,只需簡單配置並接入阿里雲播放器即可無縫整合加密能力;HLS標準加密需自建金鑰管理和令牌頒發服務。
通用性:HLS標準加密 > 阿里雲視訊加密
HLS標準加密可適配所有M3U8播放場景;阿里雲視訊加密僅支援阿里雲播放器 (Android/iOS/Flash)。
使用費用:阿里雲視訊加密 = HLS標準加密
阿里雲視訊加密和HLS標準加密都可免費使用。
- iOS/Android/Flash使用阿里雲視訊加密或HLS標準加密會有很好的安全性;但由於H5端為明文,要保證更高的安全性首選商業DRM(Chrome等瀏覽器的原生支援)。