文档中心 点播分发 HLS标准化加密

HLS标准化加密

更新时间:2024-03-11 17:23:35

一. 功能简介

  在“内容为王”的视频领域,用户并不关心在哪个网站上观看视频,而是在乎哪个网站上有自己喜欢的视频。为了提升自己的品牌影响力,增加用户粘度,以及培养用户付费观看的习惯,视频网站加大了自制内容的投入,以便提供差异化服务。对于大众口碑好、关注度高的优质IP,视频网站则不惜花费重金购买独家版权,以吸收用户。
  在巨大内容成本投入的情况下,如何避免独家视频被下载传播,导致视频网站和内容提供者的利益受到侵害,便成为视频网站亟需解决的问题。
  网宿作为中国CDN行业的领航者,一直致力于保障客户的服务质量,维护客户的合法利益。为帮助客户解决视频版权问题,网宿推出了HLS 标准化加密功能,通过对视频文件进行加密,用户只能通过特定的播放器才能正常播放视频文件,达到保护版权的目的。

二. 功能说明

2.1 基本原理

  HLS协议定义了一个加密标签:#EXT-X-KEY,用于标识视频文件是否被加密,用什么算法进行加密,并指明获取解密密钥的地址信息。
  播放器获取明文的m3u8文件,根据“#EXT-X-KEY”标签识别出视频文件经过加密,需要通过“URI”参数携带的URL信息获取解密密钥,并根据“METHOD”参数携带的算法信息对视频文件进行解密,才能正常播放视频文件。
  带有“#EXT-X-KEY”标签的m3u8文件示例如下:

媒体聚焦|网宿携手新疆喀什教育局,推动民族地区走出智慧教育新路

图1 使用HLS 标准化加密功能的m3u8文件示例

  在使用HLS 标准化加密功能时,需要注意:

  • 为避免合法用户获取解密密钥时,解密密钥在传输过程中被非法截取,播放器获取解密密钥的请求推荐使用https协议进行传输。
  • 在使用https协议进行传输时,可以同时让APP端在请求解密密钥时动态生成鉴权参数,由服务器对请求进行合法性校验,以判断是否进行响应。
  • 为避免合法用户获取到解密密钥后,将解密密钥进行非法传播,或者非法用户通过明文的m3u8文件知悉获取解密密钥的地址后进行非法请求,服务器可以先将解密密钥进行加密,再由特定的播放器进行解密,最后才得到解密密钥。
  • 如果对密钥也进行加密,由于播放器获取到密钥后需要先对密钥进行解密,所以需要特定的播放器。

2.2 业务流程

  HLS 标准化加密功能的关键是视频文件的加密、解密密钥的管理以及客户端视频的解密及播放。基于解密密钥管理的主体不同,网宿提供了网宿管理密钥和客户管理密钥两种方案,以便满足不同客户需求。
  下面以移动端在请求解密密钥时动态生成鉴权参数为例进行介绍。

2.2.1 网宿管理密钥

媒体聚焦|网宿携手新疆喀什教育局,推动民族地区走出智慧教育新路

图2 网宿管理密钥 业务流程图


  HLS 标准化加密功能包括两大部分:转码加密和解密播放,其中13为转码加密,48为解密播放。具体业务流程为:
  1. 客户通过API接口向网宿云存储下发HLS 标准化加密的http/https请求 ,接口传递的参数为用于加密ts的key及其存储地址。为避免客户调用网宿云存储的API接口下发加密请求时,API接口中携带的key被非法截取,API接口中的key需要进行非对称加密,非对称公钥由网宿云存储提供。
  2. 网宿云存储通过API接口向网宿云转码下发HLS 标准化加密请求,接口传递的参数包括用于加密ts的key以及用于解密key的非对称私钥。
  3. 网宿云转码通过非对称私钥解密出key,并用key对ts进行加密,同时生成新的m3u8文件(增加加密标签),并将新的m3u8、已加密ts文件和key,一并返回给网宿云存储。
  4. 用户发起视频请求,应用提示先登录,用户输入账号进行登录。目前在线教育、会员视频等有版权要求的应用,客户为了对用户进行管理,在播放视频或者分享时要求进行账号登录和验证。
  5. 登录验证通过。
  6. 用户请求视频,播放器向CDN节点请求m3u8文件,CDN节点响应m3u8文件。如果CDN节点没有该m3u8文件,则回云储存获取该m3u8文件并响应给客户。
  7. 播放器从m3u8文件中提取key的存储地址,并动态生成鉴权参数,拼装后向CDN节点发起https请求,CDN节点鉴权通过后,回网宿云存储获取加密密钥,并响应给播放器。
  8. 播放器通过http或者https协议 向CDN节点发起ts请求,CDN节点回网宿云存储获取ts文件,并响应给播放器,播放器对ts文件进行解密播放。

2.2.2 客户管理密钥

媒体聚焦|网宿携手新疆喀什教育局,推动民族地区走出智慧教育新路

图3 客户管理密钥 业务流程图


  与网宿管理密钥方案不同的是,客户需要提供鉴权中心和密钥管理中心,分别用于key请求鉴权和key存储管理。

2.3 接口说明


  客户调用网宿云存储HLS 标准化加密API接口的实例如下:
  curl -v -X POST -d “fops=YXZ0aHVtYi9tM3U4L2FiLzE5Mmsvci8xfHNhdmVhcy9hVzFoWjJWek9tZHFhRzB6ZFRndWJUTjFPQT09” -H “Authorization:86622e227a50d49d858c2494a935bc2e4ac543a7:MjQ3NGQxMzZkMWVkN2U0OWRiYmIyMDQ2NzljNDY3Y2FhZjMwMzdjZA==” --url http://mgr. wcsapi.biz.matocloud.com/fops
  其中fops=Urlsafe_Base64_Encode(avthumb|m3u8|Urlsafe_Base64_Encode(hlsKey)|Urlsafe_Base64_Encode(hlsKeyUrl))

关键参数说明如下:
参数名 是否必填 参数说明
hlsKey RSA加密视频的密钥该密钥为加密后的字符串,需要经过URL安全的Base64编码【使用Base64编码的原因是为了避免特殊字符,便于保存】,AES-128算法要求秘钥长度为16字节,hlskey=Base64_urlsafe(rsa_encrypt(AES_KEY))。
hlsKeyUrl 获取密钥的url。需要经过URL安全的Base64编码。
hlssk RSA私钥文件(PEM)格式,需要经过URL安全的Base64编码。hlssk是非对称加密密钥,转码任务提交时,会和转码任务一起下发给wct。

三. 适用场景

  适用于在线教育、在线培训、财经金融、独播剧、版权音乐等需要进行版权保护的应用场景。

四. 注意事项

  HLS 标准化加密功能属于增值服务,若要使用需另行付费。
  视频处理相关功能只能对保存在云存储上的视频文件进行操作,如果要使用必须同时开通云存储服务。
  hlskeykey需要以二进制字符串返回
  key.hex的生成方式:echo -ne ‘\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff’ > key.hex

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!