音视频-加密技术-最终方案
2022-06-17
工具
阅读 952 次
基于之前到技术调研和技术演变,总结出最终技术方案。
通过音视频技术调研起草,演变,到现在的方案定稿,可以解决客户端加密解密动源码的问题,也可以解决小程序或其他第三方播放器兼容的问题。
点播加密流程
- 上传音视频,将原视频文件,从后台上传到服务器
- AES-128加密,分片,生成m3u8文件,服务器将文件分片加密
- 上传图床,分片加密后上传第三方图床
- 登录
- 终端用户登录播放器终端,服务器会对终端用户进行身份校验,校验通过后,会为播放终端分配一个Token,并将带Token播放地址返回给播放器端。 若转码加密后的HLS视频播放地址为:https://1280.cdn-vod.huaweicloud.com/input/test.m3u8,则播放器终端获取的播放地址为:https://1280.cdn-vod.huaweicloud.com/input/{token}/test.m3u8
- 播放器终端通过带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
- 播放终端解析返回的m3u8文件,得到EXT-X-KEY标签中的“URI”内容,向“URI”请求密钥。
- 服务器收到密钥请求后,先验证Token的合法性,若Token合法,则向OSS查询密钥。
密钥可以选择将查询到的密钥缓存在本地,当下次有其它播放终端请求时,可以直接返回,无需每次都向点播服务获取。
- 服务器将密钥返回给播放终端。播放终端通过获取的密钥解密播放m3u8文件。
- 携带token 获取m3u8
- 读取原m3u8文件,写入token返回
- 请求加密,认证播放
解密流程
- 终端用户登录播放器终端,服务器会对终端用户进行身份校验,校验通过后,会为播放终端分配一个Token,并将带Token播放地址返回给播放器端。 若转码加密后的HLS视频播放地址为:https://1280.cdn-vod.huaweicloud.com/input/test.m3u8,则播放器终端获取的播放地址为:https://1280.cdn-vod.huaweicloud.com/input/{token}/test.m3u8
- 播放器终端通过带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
- 播放终端解析返回的m3u8文件,得到EXT-X-KEY标签中的“URI”内容,向“URI”请求密钥。
- 服务器收到密钥请求后,先验证Token的合法性,若Token合法,则向OSS查询密钥。 密钥可以选择将查询到的密钥缓存在本地,当下次有其它播放终端请求时,可以直接返回,无需每次都向点播服务获取。
客户端存储音视频,加密流程
存储
- 登录,与点播登录一样
- 请求m3u8文件,读取
- 解析m3u8文件,遍历下载ts
- 请求key,加密key存储,得到服务器给的明文key,如果直接存储,很容易被人盗取直接播放,所以这一步需要做加密
- 下载并篡改m3u8和设计ts与key路径,指向对于服务目录
- 本地播放时,起服务,当监听到key路径,本地通过算法解密返回播放器播放
本地播放,无网络播放本地m3u8
- 播放器请求m3u8文件
- 本地服务读取对应m3u8文件返回
- 播放器请求本地服务key
- 本地服务读取解密key返回
- 播放器请求ts直接播放
0条评论