媒體轉碼HLS標準加密詳解
1. 基本概念
祕鑰管理服務(Key Management Service,簡稱KMS)
一項安全管理服務,主要負責資料祕鑰的生產、加密、解密等工作。開通請點選這裡
資料祕鑰(Data Key,簡稱DK)也稱明文金鑰
DK為加密資料使用的明文資料金鑰
信封資料金鑰(Enveloped Data Key,簡稱EDK)也稱密文金鑰
EDK為通過信封加密技術保密後的密文資料金鑰
2. 原理
HLS標準加密是通過MTS呼叫KMS服務生成明文祕鑰DK進行加密,將對應的密文祕鑰EDK 通過keyuri傳送給客戶,keyuri 是客戶建立HLS標準加密工作流的時候需要傳入的一個引數,是使用者業務伺服器的URL地址;使用者業務伺服器keyuri可以通過 KMS的API介面解密接收到的密文祕鑰EDK得到明文祕鑰DK,再進行base64decode返回給客戶端,客戶端通過該值解密播放視訊;
3. 操作
1)開通KMS
2)呼叫sdk 建立工作流,傳入對應的引數(點選檢視demo)
工作流中關鍵配置
開始活動結點:InputFile:{“Bucket”:”bucketdemo”, “Location “:”oss-cn-hangzhou”, “ObjectPrefix”:”HLS-Encryption”};
此配置表示:內容創作者上傳視訊到杭州 oss://bucketdemo/HLS-Encryption 這個路徑下會自動觸發加密轉碼;
轉碼活動結點:Encryption:{“Type”:”hls-aes-128″, “KeyUri”:”https://decrypt.demo.com”};
轉碼完成後,KeyUri的配置會出現在m3u8檔案中,供播放器使用,內容類似:URI=”https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271″
其中Ciphertext引數的內容就是密文祕鑰EDK,MediaID就是該媒體資源的媒體ID;其中使用者業務伺服器KeyUri可以通過 KMS的API介面解密接收到的密文祕鑰EDK,得到明文祕鑰DK,再進行base64decode返回給客戶端,客戶端通過該值解密播放視訊;
3)上傳視訊
兩種方法上傳視訊,都會自動觸發加密轉碼
I 通過MTS控制檯上傳視訊至剛剛建立的工作流
II 通過OSS上傳工具上傳視訊至oss://bucketdemo/HLS-Encryption路徑
III 轉碼完成後,m3u8檔案內容示例
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271"
#EXTINF:4.127544,
15029611683170-00001.ts
#EXT-X-ENDLIST
4) 播放
播放器播放加密轉碼後的m3u8資源:https://vod.demo.com/test.m3u8;
播放器解析得到EXT-X-KEY:METHOD=AES-128,URI=https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271 的URI部分內容,向URI請求獲取明文祕鑰DK 的base64decode資料;業務端接收到請求,根據Ciphertext=aabbccddeeff解析得到密文祕鑰EDK: aabbccddeeff,業務端呼叫KMS API介面解析密文祕鑰EDK,得到明文祕鑰DK,進行base64decode返回給播放器端;播放器端根據得到的明文祕鑰DK 的base64decode資料解密播放m3u8視訊;
播放器支援:safari瀏覽器,蘋果系的 H5播放都支援,VLC支援,MTS WEB播放器不支援
4. 業務安全
如果使用者想要業務安全,那麼可以考慮客戶端訪問加密視訊m3u8的時候加引數MtsHlsUriToken;
比如正常的播放地址為https://vod.demo.com/test.m3u8, 當拼接攜帶MtsHlsUriToken引數後為https://vod.demo.com/test.m3u8?MtsHlsUriToken=業務方頒發的令牌
播放時,播放器向阿里CDN請求https://vod.demo.com/test.m3u8?MtsHlsUriToken=業務方頒發的令牌 ,阿里CDN會動態修改m3u8檔案中的解密URI(EXT-X-KEY:METHOD=AES-128,URI=”https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271″),如原為https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271 , 修改後為 https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271&MtsHlsUriToken=業務方頒發的令牌
所以,播放器最終請求解密URI為:https://decrypt.demo.com?Ciphertext=aabbccddeeff&MediaId=fbbf98691ea44b7c82dd75c5bc8b9271&MtsHlsUriToken=業務方頒發的令牌 ,此地址中,攜帶了業務方搬發的令牌,業務方進行驗證即可
5. 業務方需要做的事情
1】搭建頒發及驗證MtsHlsUriToken令牌服務
2】校驗解密令牌,推薦一個令牌只允許使用一次
3】解密金鑰:EDK即Ciphertext, 此時,要呼叫KMS服務的解密介面進行解密 介面說明, 解密後,可快取,以減少不必要的網路IO
4】解密拿到DK即明文金鑰,需要base64decode, 然後返回給播放器
相關文章
- 為SRS流媒體伺服器新增HLS加密功能(附原始碼)伺服器加密原始碼
- 淺析 HLS 流媒體協議協議
- 標準庫~JSON物件詳解JSON物件
- 詳解css媒體查詢CSS
- Go標準庫:Go template用法詳解Go
- 基於HLS的多媒體防盜方案調研
- Maven中optional標籤詳解(轉)Maven
- JMeter流媒體線上播放HLS外掛BlazeMeter - HLS Plugin實現視訊線上播放壓測JMeterPlugin
- 直播預告|OpenHarmony標準系統多媒體子系統之相機解讀
- 基於 SRS+NG 搭建 HLS 直播流媒體伺服器伺服器
- DES加密詳解加密
- 直播預告丨 OpenHarmony 標準系統多媒體子系統之相機解讀
- 直播預告丨OpenHarmony標準系統多媒體子系統之視訊解讀
- 模組轉測標準
- 直播協議詳解 RTMP、HLS、HTTP-FLV、WebRTC、RTSP協議HTTPWeb
- Golang開源流媒體伺服器(RTMP/RTSP/HLS/FLV等協議)Golang伺服器協議
- Go 結構體標籤詳解Go結構體
- 簡單有效的多標準中文分詞詳解中文分詞
- SpringBoot程式碼混淆與反混淆加密工具詳解Spring Boot加密
- 用純RUST手擼一個開源流媒體服務(RTMP/HTTPFLV/HLS)XIURustHTTP
- 深入理解高階加密標準(Advanced Encryption Standard)加密
- 密碼學系列之:bcrypt加密演算法詳解密碼學加密演算法
- 攝取轉碼的媒體應用Media Encoder 2022
- Android 加密知識詳解Android加密
- QWinFF(媒體轉換器)
- 014---多媒體標籤
- 指標詳解指標
- MediaCodec 高效解碼得到標準 YUV420P 格式幀
- 軟體工程國家標準軟體工程
- Android 多媒體之 Silk 格式音訊解碼Android音訊
- 加密原理詳解:對稱式加密VS非對稱式加密加密
- 4 種標準元註解
- 頂層架構初定 詳解國內首個區塊鏈標準架構區塊鏈
- Tomcat詳解系列(3) - 原始碼分析準備和分析入口Tomcat原始碼
- 高階加密標準(英語:Advanced Encryption Standard,縮寫:AES)加密
- 2018影片加密技術詳解一機一碼怎麼用?加密
- 密碼學系列之:Argon2加密演算法詳解密碼學Go加密演算法
- FFmpeg命令影片音訊轉碼引數詳解音訊
- 標準API展開BOM程式碼API