HLS标准化加密

更新时间:2025-05-22 16:54:58

HLS标准化加密(HLS AES加密)通过使用高级加密标准(AES-128)算法对视频分片进行加密,保障视频内容在传输过程中的安全性。这种对称密钥加密方式使用相同密钥进行服务器端加密和播放器端解密。

加密后,HLS播放列表(m3u8文件)会包含EXT-X-KEY标签,为播放器提供内容解密所需信息:

#EXT-X-KEY:METHOD=AES-128,URI="https://keypathURI/hls_aes.key",IV=0x00000000000000000000000000000000

播放时,播放器会首先从播放列表指定的URI获取解密密钥,之后才能解码视频分片。

操作前置条件

启用HLS AES加密前需确保:

  • 您的原始视频已上传至对象存储空间
  • 您的账户已启用流媒体处理功能
  • 您已了解发起API请求

步骤1:生成并配置RSA密钥

为确保API请求中AES加密密钥的安全传输,必须使用RSA加密进行保护。此过程需要生成密钥对并将私钥注册到我们平台上。

生成RSA密钥对

执行以下命令创建RSA公私钥:

# 生成私钥(2048位)
openssl genrsa -out private.key 2048

# 从私钥提取公钥
openssl rsa -in private.key -pubout -out pub.key

请妥善保管密钥文件。公钥用于对你的 AES 密钥加密,私钥由后端用于对密钥解密。

注册RSA私钥

  1. 将私钥文件进行Base64编码
  2. 把编码结果提供给我们的客服团队,由他们完成配置
  3. 详细流程参考RSA私钥示例

步骤2:准备加密参数

构造加密请求时,您需要按以下结构构造包含特殊加密设置的fops参数(文件操作参数):

<op>/<Format>
  /hlsKey/<hlsKey>
  /hlsKeyUrl/<hlsKeyUrl>
  |saveas/<Urlsafe_Base64_Encode(bucket:filekey)>

生成hlsKey参数

hlsKey是必须经过RSA加密后才能加入API请求的AES加密密钥:

  1. 生成16字节(128位)随机值作为AES密钥
  2. 使用RSA公钥配合OAEP填充进行加密
  3. 对结果进行URL安全的Base64编码

以AES密钥值01234566543210abcdef888888abcdef为例:

# 生成随机16字节密钥(按需)
openssl rand -hex 16

# 使用RSA-OAEP加密您的密钥并对其进行编码以供API传输
echo -n "01234566543210abcdef888888abcdef" | openssl rsautl -encrypt -pubin -inkey pub.key -oaep | openssl base64 -A | tr "+/" "-_"

输出字符串即为加密后的hlsKey参数值。

设置hlsKeyUrl参数

hlsKeyUrl参数用于指定播放器获取密钥的地址,可选两种方式:

  1. 使用自有密钥服务器:提供密钥管理系统的URL
  2. 使用对象存储:上传密钥文件至存储空间并使用其URL

使用方式2创建密钥文件:

# 从十六进制密钥生成二进制密钥文件
echo -ne "\x01\x23\x45\x66\x54\x32\x10\xab\xcd\xef\x88\x88\x88\xab\xcd\xef" > key.hex

上传至存储空间后,使用可访问URL作为hlsKeyUrl参数值,例如:

https://bucketname.s3-cn-north-1.wcsapi.com/key.hex

步骤3:执行加密流程

参数准备完成后,现在可以通过API请求执行加密视频内容操作。

API请求示例

此示例将加密vod-wcs-test001存储空间下的名为test_hls.m3u8视频文件:

curl -v -X POST \
  -d "bucket=Urlsafe_Base64_Encode(vod-wcs-test001)&key=Urlsafe_Base64_Encode(test_hls.m3u8)&fops=Urlsafe_Base64_Encode(avthumb/m3u8/hlsKey/encrypted hlsKey/hlsKeyUrl/https://bucketname.s3-cn-north-1.wcsapi.com/key.hex|saveas/Urlsafe_Base64_Encode(vod-wcs-test001:hls_aes_.m3u8))&force=1&separate=1" \
  -H "Authorization: AccessKey EncodeSign" \
  --url "http://mgrDomain/fops"

转码成功完成后,加密视频将存储在指定存储空间。生成的HLS清单文件(m3u8)会包含EXT-X-KEY标签,提示内容已加密和为播放器提供密钥地址。

安全建议

  • 始终妥善保管RSA私钥
  • 建议对密钥URL设置访问权限控制,防止未授权访问
  • 对于高安全场景,建议部署一个基于Token的认证机制来保障密钥分发的安全性
本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!