音视频-加密技术-最终方案

2022-06-17 工具 阅读 614 次

基于之前到技术调研和技术演变,总结出最终技术方案。

通过音视频技术调研起草,演变,到现在的方案定稿,可以解决客户端加密解密动源码的问题,也可以解决小程序或其他第三方播放器兼容的问题。

点播加密流程

音视频-加密技术-最终方案-黄继鹏博客

  1. 上传音视频,将原视频文件,从后台上传到服务器
  2. AES-128加密,分片,生成m3u8文件,服务器将文件分片加密
  3. 上传图床,分片加密后上传第三方图床
  4. 登录
    1. 终端用户登录播放器终端,服务器会对终端用户进行身份校验,校验通过后,会为播放终端分配一个Token,并将带Token播放地址返回给播放器端。 若转码加密后的HLS视频播放地址为:https://1280.cdn-vod.huaweicloud.com/input/test.m3u8,则播放器终端获取的播放地址为:https://1280.cdn-vod.huaweicloud.com/input/{token}/test.m3u8
    2. 播放器终端通过带Token的播放URL向服务器请求播放。由于Token是动态的,所以服务器收到请求后,会直接读取OSS文件。服务器会将请求URL中的Token写入m3u8文件的的“URI”中。 返回给播放器的m3u8文件中会携带播放终端的Token值,示例如下所示。
    #EXTM3U  
    #EXT-X-VERSION:3  
    #EXT-X-TARGETDURATION:6  
    #EXT-X-MEDIA-SEQUENCE:0 
    #EXT-X-KEY:METHOD=AES-128,URI="https://domain-sample/encrypt/get-key?asset_id=6aee80009c4ca6970f508d6334194794&token={token}",IV=0x80a3ff24ccd788042ca7f2237e74c59d  
    #EXTINF:5.000000,  6aee80009c4ca6970f508d6334194794_1_1920X1080_3000_0_0.ts  
    #EXTINF:5.000000,  6aee80009c4ca6970f508d6334194794_1_1920X1080_3000_0_1.ts  
    #EXT-X-ENDLIST
    
    1. 播放终端解析返回的m3u8文件,得到EXT-X-KEY标签中的“URI”内容,向“URI”请求密钥。
    2. 服务器收到密钥请求后,先验证Token的合法性,若Token合法,则向OSS查询密钥。 密钥可以选择将查询到的密钥缓存在本地,当下次有其它播放终端请求时,可以直接返回,无需每次都向点播服务获取。
      1. 服务器将密钥返回给播放终端。播放终端通过获取的密钥解密播放m3u8文件。
  5. 携带token 获取m3u8
  6. 读取原m3u8文件,写入token返回
  7. 请求加密,认证播放

解密流程

  1. 终端用户登录播放器终端,服务器会对终端用户进行身份校验,校验通过后,会为播放终端分配一个Token,并将带Token播放地址返回给播放器端。 若转码加密后的HLS视频播放地址为:https://1280.cdn-vod.huaweicloud.com/input/test.m3u8,则播放器终端获取的播放地址为:https://1280.cdn-vod.huaweicloud.com/input/{token}/test.m3u8
  2. 播放器终端通过带Token的播放URL向服务器请求播放。由于Token是动态的,所以服务器收到请求后,会直接读取OSS文件。服务器会将请求URL中的Token写入m3u8文件的的“URI”中。 返回给播放器的m3u8文件中会携带播放终端的Token值,示例如下所示。
#EXTM3U  
#EXT-X-VERSION:3  
#EXT-X-TARGETDURATION:6  
#EXT-X-MEDIA-SEQUENCE:0 
#EXT-X-KEY:METHOD=AES-128,URI="https://domain-sample/encrypt/get-key?asset_id=6aee80009c4ca6970f508d6334194794&token={token}",IV=0x80a3ff24ccd788042ca7f2237e74c59d  
#EXTINF:5.000000,  6aee80009c4ca6970f508d6334194794_1_1920X1080_3000_0_0.ts  
#EXTINF:5.000000,  6aee80009c4ca6970f508d6334194794_1_1920X1080_3000_0_1.ts  
#EXT-X-ENDLIST
  1. 播放终端解析返回的m3u8文件,得到EXT-X-KEY标签中的“URI”内容,向“URI”请求密钥。
  2. 服务器收到密钥请求后,先验证Token的合法性,若Token合法,则向OSS查询密钥。 密钥可以选择将查询到的密钥缓存在本地,当下次有其它播放终端请求时,可以直接返回,无需每次都向点播服务获取。

客户端存储音视频,加密流程

存储

音视频-加密技术-最终方案-黄继鹏博客

  1. 登录,与点播登录一样
  2. 请求m3u8文件,读取
  3. 解析m3u8文件,遍历下载ts
  4. 请求key,加密key存储,得到服务器给的明文key,如果直接存储,很容易被人盗取直接播放,所以这一步需要做加密
  5. 下载并篡改m3u8和设计ts与key路径,指向对于服务目录
  6. 本地播放时,起服务,当监听到key路径,本地通过算法解密返回播放器播放

本地播放,无网络播放本地m3u8

音视频-加密技术-最终方案-黄继鹏博客

  1. 播放器请求m3u8文件
  2. 本地服务读取对应m3u8文件返回
  3. 播放器请求本地服务key
  4. 本地服务读取解密key返回
  5. 播放器请求ts直接播放
0条评论
...