功能介紹
HLS標準加密改寫功能,是指CDN節點回源獲取到M3U8文件內容后,改寫其中的#EXT-X-KEY標簽,增加加密算法、秘鑰URI地址以及鑒權參數信息。客戶端播放器收到被改寫的M3U8文件后,基于#EXT-X-KEY標簽識別到對應TS文件為加密文件,此時會攜帶鑒權參數向秘鑰URI地址發起請求,獲取到秘鑰內容后,基于加密算法和獲取的秘鑰解密TS數據內容并實現視頻播放,最終通過HLS加密實現內容版權保護。
背景信息
視頻播放場景中通常都很關注防盜鏈以及版權保護,HLS協議提供了標準加密方案。
HLS協議中用到很多標簽,這些標簽存在于M3U8索引文件中,其中#EXT-X-KEY標簽用于顯示TS文件是否加密。如攜帶該標簽,且值不為空,則代表TS文件有加密,客戶端播放器需要對其進行解密后播放。
常見的#EXT-X-KEY標簽格式:#EXT-X-KEY:METHOD=AES-128,URI="//www.daliqc.cn/hls.key?token=xxx"。
其含義為:使用AES-128算法,秘鑰通過//www.daliqc.cn/hls.key?token=xxx進行獲取,在下載完M3U8索引文件中的TS視頻后,利用AES-128算法和對應秘鑰對其進行解密后播放。
整個過程技術原理如下:
- 客戶端播放器向CDN服務器發起形如://www.daliqc.cn/test.m3u8?token=xxx的請求。
- CDN服務器對該請求進行token鑒權,鑒權通過后,若無緩存,則向源站獲取原始M3U8文件內容,并對其body部分進行改寫,在標簽中插入如下內容:#EXT-X-KEY:METHOD=AES-128,URI="//www.daliqc.cn/hls.key?token=xxx",并最終返回給客戶端播放器。
- 客戶端播放器下載M3U8文件,并解析其中的EXT-X-KEY標簽,向//www.daliqc.cn/hls.key?token=xxx發起請求。
- www.daliqc.cn服務器通過鑒權后,向客戶端播放器返回秘鑰信息。
- 客戶端播放器繼續解析M3U8文件,并下載對應TS文件內容。
- 客戶端播放器基于AES-128算法,以及獲取的秘鑰信息,對下載的TS文件進行解密播放。
上述整個環節中,為避免非法客戶端基于M3U8明文中的鑒權地址獲取到解密秘鑰,有如下建議:
- 獲取秘鑰的地址需做https加密傳輸,避免秘鑰在傳輸過程中被劫持。
- 獲取秘鑰的過程需要做嚴格的鑒權,客戶端播放器請求時需攜帶鑒權參數,由服務端校驗請求的合法性,鑒權通過后再返回秘鑰文件。
- 最好對秘鑰本身進行加密,即使客戶端播放器獲取到秘鑰后,也需要同時獲悉秘鑰的解密key,才能正常使用秘鑰,從而確保僅特定的播放器才能播放加密TS內容。
- 作為整個防盜鏈保護版權方案的一部分,TS文件鏈接最好也做防盜鏈鑒權,天翼云CDN支持同時對M3U8中的TS文件URL或參數做增刪改的處理,并支持繼承M3U8中的鑒權參數,使得M3U8對應的TS文件也具備相同的鑒權屬性。
適用場景
如視頻網站使用HLS協議,且具備較強的版權保護和防盜鏈需求,可通過在源站對TS文件做加密,配合使用CDN的HLS標準加密改寫功能,并結合嚴格的鑒權策略,實現HLS視頻的版權保護。
配置說明
目前該功能暫不支持客戶自助開啟,如需使用,請通過提交工單向天翼云客服申請。
提交工單時,請您提供如下信息:
| 參數 | 說明及示例 |
|---|---|
| 加密算法 | TS文件的加密算法,默認為AES-128。 |
| 秘鑰地址 | TS文件的加密秘鑰獲取地址,一般為同個加速域名下的某個地址,如//www.daliqc.cn/hls.key。 |
| 秘鑰地址的鑒權參數 | TS文件的加密秘鑰獲取地址中的鑒權參數,默認為對應M3U8的鑒權參數;如M3U8存在多個參數名,需指定具體的參數名稱。 |
| TS文件是否改寫 | 指M3U8中的TS文件列表是否需要添加鑒權參數,如是,請說明具體需要添加的鑒權參數key和value信息。 |