HLS標準加密採用AES_128演算法,能夠適配所有HLS播放器,並需結合密鑰管理與令牌服務,廣泛應用於線上教育、獨播劇等高安全需求領域。本文將介紹視頻的HLS加密與解密播放方法。
工作原理
ApsaraVideo for VOD採用信封加密技術,業務方通過阿里雲KMS產生資料密鑰(DK)和信封密鑰(EDK);使用DK加密視頻後,同時儲存加密視頻和(EDK)。終端播放時通過解密服務擷取(DK)進行視頻解密播放。
如果您需要對解密地址進行安全驗證,可以通過開啟M3U8標準加密改寫(預設改寫參數名為MtsHlsUriToken)實現對HLS資料訪問過程的再次加密保護。M3U8標準加密改寫的開啟方式及技術原理請參見配置M3U8標準加密改寫。
前提條件
-
阿里雲視頻加密(HLS 標準加密)屬於免費服務,但需通過視頻轉碼實現加密功能。轉碼操作將產生服務費用,具體計費標準請參考媒資轉碼計費。
-
已經開通了ApsaraVideo for VOD服務。開通步驟請參見開通ApsaraVideo for VOD。
-
已經授權ApsaraVideo for VOD訪問您Key Management Service的許可權,可以通過雲資源訪問授權頁面進行授權。
-
已在ApsaraVideo for VOD中配置加速網域名稱,具體步驟請參見添加加速網域名稱。
-
已安裝ApsaraVideo for VOD服務端SDK,具體步驟請參見服務端SDK。本文以Java語言為例進行說明。
加密及解密流程
上傳及加密流程

解密播放流程
開啟M3U8標準加密改寫(推薦)

未開啟M3U8標準加密改寫

加密視頻
-
上傳視頻並接收回調。
為確保支援HLS標準加密的視頻不被自動轉碼,在上傳至ApsaraVideo for VOD時需要使用系統內建的不转码模板組進行上傳,以防止上傳時自動觸發轉碼。
-
通過ApsaraVideo for VOD控制台上傳,請參見通過ApsaraVideo for VOD控制台上傳檔案;通過服務端介面上傳,請參見媒體上傳。
-
配置ApsaraVideo for VOD的事件通知,當接收到視頻上傳完成的回調訊息時,則表明視頻已經上傳到ApsaraVideo for VOD中。事件通知的配置方法,請參見事件通知。
-
-
搭建Data Encryption Service。
-
建立Service Key。
Service Key是Key Management Service中的主加密Key,必須用於產生標準加密金鑰。未建立將導致調用建立KMS資料密鑰介面產生密鑰時將會報錯。
-
單擊頁面左上方的服務地區標識,切換到需要建立Service Key的服務地區下。
說明建立的Service Key與視頻儲存的來源站點地區必須一致,例如:視頻儲存在華東2(上海),則Service Key必須在華東2(上海)建立。
當前可選的服務地區包括:華東2(上海)、華北2(北京)、華南1(深圳)、日本(東京)、新加坡、印尼(雅加達)、印度(孟買)、德國(法蘭克福)。
-
登入ApsaraVideo for VOD控制台,選擇配置管理 > 媒体处理配置 > 标准加密。
-
在標準加密頁面,單擊建立Service Key。
建立成功後,會提示您密鑰(Service Key)建立成功,且在密鑰資訊地區可以查看您的Service Key。
說明若已提示密鑰建立成功,仍未看到Service Key,可能是由於服務角色缺失導致,您可以通過重新授權恢複角色後再重新整理頁面查看Service Key。
-
-
調用介面產生資料密鑰。
調用建立KMS資料密鑰介面產生資料密鑰(DK)和信封資料密鑰(EDK)時,無需傳參。成功後,返回的CiphertextBlob即為AES_128格式的(EDK),需緩衝此值用於標準加密轉碼。返回的Plaintext即為(DK)。
-
-
建立用於HLS標準加密的轉碼模板組。
HLS標準加密過程中需要用到兩個轉碼模板組:系統內建的不轉碼模板組和需要自行建立的HLS標準加密模板組。HLS標準加密模板組建立方法如下:
-
登入ApsaraVideo for VOD控制台,選擇配置管理 > 媒体处理配置 > 转码模板组。
-
在轉碼模板組頁面建立用於HLS標準加密的模板組。
其中,封装格式需設定為hls;在高级参数地區,必須開啟视频加密,且加密方式勾選私有加密選項;其餘參數您可以根據實際需要進行配置,詳細的參數解釋,請參見轉碼模板。
-
模板建立完成後,您可以在轉碼模板組列表頁查看轉碼模板組的ID,請儲存該ID用於後續發起HLS標準加密轉碼時使用。建立完成後,在轉碼模板組列表中找到建立的模板組,記錄其 ID 值,後續加密配置中需要使用該模板組 ID。
-
-
發起HLS標準加密轉碼。
-
調用SubmitTranscodeJobs介面,發起HLS標準加密轉碼。
-
如果已經配置了ApsaraVideo for VOD的事件通知,當接收到單個清晰度轉碼完成或全部清晰度轉碼完成的回調訊息時,則表明視頻已經轉碼完成。
-
-
查看HLS標準加密結果。
轉碼完成後,您可以通過如下三種方式來判斷標準加密是否成功。
-
方式一:登入點播控制台,進入音/視頻詳情頁,選擇視頻地址頁簽,查看視頻地址清單。若 M3U8 格式的轉碼輸出在格式列顯示標準加密標籤,則表明標準加密已生效。
-
方式二:將帶有标准加密字樣的M3U8檔案的地址拷貝出來,使用命令
curl -v "M3U8檔案地址",查看擷取到的M3U8內容是否存在URI="<業務方在發起標準加密時傳遞的解密URI地址,即DecryptKeyUri參數值>"關鍵資訊,有則表明為標準加密且加密成功。 -
方式三:調用查詢轉碼任務詳情介面,傳入步驟四中返回參數 JobId 的值。若返回參數TranscodeTemplateId為步驟三中建立的轉碼模板組ID且TranscodeJobStatus為轉碼成功,則表明為標準加密且加密成功。
-
HLS(M3U8)標準加密改寫(推薦)
開啟M3U8標準加密改寫功能後,系統會在HLS協議的Media Playlist(M3U8檔案)中#EXT-X-KEY標籤後自動添加加密參數(如密碼編譯演算法、密鑰URI及鑒權參數)。用戶端解析改寫後的M3U8檔案時,將使用帶鑒權參數的密鑰URI請求密鑰,通過密鑰和指定演算法解密TS分區,從而實現HLS流媒體的加密訪問保護
步驟一:開啟標準加密參數透傳
在ApsaraVideo for VOD控制台開啟HLS标准加密参数透传。
開啟HLS标准加密参数透传後,可改寫HLS協議的M3U8檔案,具體為修改#EXT-X-KEY標籤中的URI,在其末尾追加用戶端請求攜帶的參數,預設參數名為MtsHlsUriToken。
前提條件
已配置跨域訪問,詳情請參見配置跨域資源共用。
政務雲暫不支援該功能。
操作步驟
-
在左側導覽列,單擊配置管理。
-
單擊分发加速配置 > 域名管理,進入域名管理頁面。
-
在指定網域名稱右側的操作列,單擊配置。
-
在指定網域名稱的左側導覽列,單擊视频相关。
-
在加密播放地區,開啟HLS标准加密参数透传開關。在視頻相關頁面的加密播放地區,可以看到HLS標準加密參數透傳開關處於關閉狀態,參數名稱為
MtsHlsUriToken。
-
開啟後,HLS標準加密參數透傳時,將通過改寫Token鑒權資訊參數幫您鑒權。改寫的參數名稱為
MtsHlsUriToken,參數的值為test。當CDN解密播放時,會將MtsHlsUriToken=test追加到M3U8檔案中#EXT-X-KEY標籤的URI末尾。
步驟二:攜帶MtsHlsUriToken參數請求
用戶端攜帶MtsHlsUriToken參數向CDN節點發起對M3U8檔案的訪問請求。
其中,MtsHlsUriToken需要您自行搭建令牌服務,頒發使用者令牌(即產生MtsHlsUriToken)。
下述代碼所產生的Token即是MtsHlsUriToken,其中需要按實際情況變更的參數如下:
步驟三:解密播放檔案
CDN節點收到用戶端請求後,鑒權通過則解密播放檔案。
若上述步驟二中產生的MtsHlsUriToken參數值為test,則當CDN解密播放時,會將MtsHlsUriToken=test追加到M3U8檔案中#EXT-X-KEY標籤的URI末尾。
具體的鑒權校正邏輯您需要自行實現,可以參考播放視頻中開啟M3U8標準加密改寫方式的解密服務的範例程式碼。
播放視頻
開啟M3U8標準加密改寫(推薦)
-
搭建解密服務。
搭建一個本地HTTP服務,用於解密視頻。
調用解密KMS資料密鑰密文介面進行解密,該介面返回的資料密鑰(DK)即
PlainText是建立KMS資料密鑰介面返回的PlainText經過base64_decode之後的資料。如果您需要對解密地址進行安全驗證,可以通過開啟M3U8標準加密改寫(預設改寫的參數名為
MtsHlsUriToken)實現對HLS資料訪問過程的再次加密保護。根據您是否開啟M3U8標準加密改寫,搭建解密服務的代碼實現不同,具體如下: -
擷取視頻播放地址和憑證。
-
播放加密視頻。
HLS標準加密支援所有的HLS播放器,您可以選擇使用自研的播放器或阿里雲播放器進行播放加密視頻。
如果使用阿里雲播放器,請按照阿里雲播放器的要求擷取令牌和鑒權資訊後播放,詳情請參見如何播放加密視頻。如果使用非阿里雲播放器,請自行實現播放邏輯。
使用阿里雲播放器測試播放的內部流程解析如下:
開啟M3U8標準加密改寫(推薦)
未開啟M3U8標準加密改寫
-
搭建解密服務。
搭建一個本地HTTP服務,用於解密視頻。
調用解密KMS資料密鑰密文介面進行解密,該介面返回的資料密鑰(DK)即
PlainText是建立KMS資料密鑰介面返回的PlainText經過base64_decode之後的資料。具體樣本如下:
-
擷取視頻播放地址和憑證。
-
播放加密視頻。
HLS標準加密支援所有的HLS播放器,您可以選擇使用自研的播放器或阿里雲播放器進行播放加密視頻。
如果使用阿里雲播放器,請按照阿里雲播放器的要求擷取令牌和鑒權資訊後播放,詳情請參見如何播放加密視頻。如果使用非阿里雲播放器,請自行實現播放邏輯。
使用阿里雲播放器測試播放的內部流程解析如下:
未開啟M3U8標準加密改寫