媒体转码HLS标准加密详解

本文涉及的产品
对象存储 OSS,20GB 3个月
视频点播 VOD,流量+存储+转码
对象存储 OSS,恶意文件检测 1000次 1年
简介: 视频加密是对视频内容保护的一种手段,对视频中的内容进行加密,可有效防止视频泄露和盗链问题,广泛用于在线教育及财经等领域。阿里云目前支持两种加密方式: 私有加密 和 HLS标准加密,HLS标准加密需要客户自己保护密钥,此文档介绍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, 然后返回给播放器

目录
相关文章
|
7月前
|
存储 编解码 Android开发
点播封装格式
点播封装格式
52 5
设计并实现同时支持多种视频格式的流媒体点播系统
设计并实现同时支持多种视频格式的流媒体点播系统
167 0
|
7月前
|
编解码 缓存 安全
视频点播这边在执行 HLS标准加密 转码后的视频,在解密播放上有些技术问题视频点播这边在执行 HLS标准加密 转码后的视频,在解密播放上有些技术问题
视频点播这边在执行 HLS标准加密 转码后的视频,在解密播放上有些技术问题视频点播这边在执行 HLS标准加密 转码后的视频,在解密播放上有些技术问题
215 1
|
编解码 监控 Serverless
基于函数计算实现音视频转码
本文为您介绍如何通过基于函数计算服务、Serverless工作流、对象存储OSS、日志服务SLS、专有网络VPC和文件存储NAS服务,实现音视频转码。
|
Web App开发 编解码 网络协议
网页端WebRTC推流转换为RTMP/GB28181等其他直播流协议
网页端WebRTC推流转换为RTMP/GB28181等其他直播流协议
377 0
|
编解码 Linux 开发工具
C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
294 0
|
存储 XML 编解码
RTSP 媒体协议流的录制方案及其覆盖策略详解
在安防和监控领域,RTSP 媒体协议流有很广泛的使用。本文将介绍一种针对 RTSP 媒体流的录制方案及其相应的覆盖策略。常见的实时录制功能支持三种模式,分别是云端录制、本地服务端录制和页面录制,今天我们介绍的录制方案属于云端录制。
422 0
RTSP 媒体协议流的录制方案及其覆盖策略详解
|
存储 安全 数据安全/隐私保护
产品百科 |HLS 标准加密安全播放
为了加强标准加密视频在解密播放时解密秘钥的安全性,业务方需要同时提供令牌服务和解密服务,其中令牌服务生成鉴权令牌,解密服务用于验证令牌和获取解密秘钥。
产品百科 |HLS 标准加密安全播放
|
存储 编解码 安全
视频点播HLS标准加密常见问题
为了有效防止视频泄露和盗链问题,视频加密技术的应用越来越广泛。阿里云视频点播服务提供了私有加密和标准加密,并在官网产品帮助文档中心提供了开发文档。本文再官网开发文档的基础上,补充说明一些开发者经常遇到的问题,以便更快速的定位、解决问题。
3811 0
视频点播HLS标准加密常见问题
|
编解码 Linux 开发工具
C++实现RTMP协议发送H.264编码及AAC编码的直播软件开发音视频
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等。