功能介绍
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="http://www.ctyun.cn/hls.key?token=xxx"。
其含义为:使用AES-128算法,秘钥通过http://www.ctyun.cn/hls.key?token=xxx进行获取,在下载完M3U8索引文件中的TS视频后,利用AES-128算法和对应秘钥对其进行解密后播放。
整个过程技术原理如下:
- 客户端播放器向CDN服务器发起形如:http://www.ctyun.cn/test.m3u8?token=xxx的请求。
- CDN服务器对该请求进行token鉴权,鉴权通过后,若无缓存,则向源站获取原始M3U8文件内容,并对其body部分进行改写,在标签中插入如下内容:#EXT-X-KEY:METHOD=AES-128,URI="http://www.ctyun.cn/hls.key?token=xxx",并最终返回给客户端播放器。
- 客户端播放器下载M3U8文件,并解析其中的EXT-X-KEY标签,向http://www.ctyun.cn/hls.key?token=xxx发起请求。
- www.ctyun.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文件的加密秘钥获取地址,一般为同个加速域名下的某个地址,如http://www.ctyun.cn/hls.key。 |
秘钥地址的鉴权参数 | TS文件的加密秘钥获取地址中的鉴权参数,默认为对应M3U8的鉴权参数;如M3U8存在多个参数名,需指定具体的参数名称。 |
TS文件是否改写 | 指M3U8中的TS文件列表是否需要添加鉴权参数,如是,请说明具体需要添加的鉴权参数key和value信息。 |