详情页标题前

腾讯云对象存储通过 HLS 加密防止视频泄露

详情页1

HLS标准加密

视频加密是指对视频中的内容进行加密,可有效防止视频泄露和盗链问题,广泛用于在线教育及财经等领域。本文介绍数据万象HLS标准加密的原理和接入流程。

工作原理

COS服务采用信封数据加密的方式加密视频。业务方调用腾讯云密钥管理服务(KMS)生成数据密钥(DK)和信封数据密钥(EDK),然后利用数据密钥(DK)加密视频,并将加密后的文件和信封数据密钥(EDK)存储。播放器终端通过解密服务获取数据密钥(DK)请求解密播放视频。
数据万象视频加密流程如下:

腾讯云对象存储通过 HLS 加密防止视频泄露

说明业务方开通腾讯云数据万象服务(CI)、存储服务(COS)、访问控制(CAM)、密钥管理服务(KMS)以及内容分发网络(CDN)(如未开通)。

加密流程

1. 用户业务侧将视频上传到对象存储后,请求 HLS 加密。2. 数据万象收到加密请求后,向 KMS 请求加密密钥。3. 数据万象通过转码功能对视频进行 HLS 加密。4. 加密后,对象存储通过 CDN 分发加密后的 HLS 视频文件。

解密流程

1. 终端用户登录播放器终端,用户业务侧会对终端用户进行身份校验,校验通过后,会为播放终端分配一个 Token,并将带 Token 的播放地址返回给播放器端。2. 用户播放终端解析返回的 m3u8 文件,得到 “URI” 内容,向 URI 请求密钥。3. 用户业务侧的风控管理服务收到请求后,先根据用户逻辑自行判断合法性,再通过调用 KMS 服务的 API 查询密钥。4. 密钥管理服务将返回的密钥返回给播放终端。播放终端通过获取的密钥对 m3u8 文件进行解密并播放。

业务方实现概览

接入准备

1. 开通腾讯云相关服务2. 授权数据万象媒体处理访问 KMS3. 调用 KMS 服务的解密接口搭建解密服务,并将调用 KMS 接口获得的明文密钥 Base64 Decode 之后返回播放终端

加密视频

1. 登录 数据万象控制台2. 在左侧导航栏中,单击存储桶管理,进入存储桶列表。3. 找到您需要存储视频的存储桶,并单击右侧操作栏的管理,进入相应存储桶管理页面。4. 单击左侧的任务和工作流,选择模板配置页签,进入模板配置页面。5. 选择音视频转码,单击创建转码模板,弹出创建转码模板窗口。6. 在创建转码模板窗口中,配置如下基本信息后,点击下一步。

腾讯云对象存储通过 HLS 加密防止视频泄露


模板名称:长度不超过64字符,仅支持中文、英文、数字、下划线_、中划线-*转码类型:确认视频或纯音频转码。封装格式:选择 HLS。转码时长:可选为源视频时长、自定义配置时长。分片时长:设置 ts 分片长度,默认5s。7. 配置如下视频参数后,点击下一步。

腾讯云对象存储通过 HLS 加密防止视频泄露


删除视频流:仅保留音频,删除视频轨。编码格式:指定音视频压缩编码方式,包含 H264、H265、VP8、VP9、AV1等。码率:数据传输时单位时间传送的数据位数。码率峰值:视频实时码率的最高值。分辨率:度量图像内数据量。长短边自适应:横竖屏自适应,当 Width 或 Height 至少填写一项时生效。视频帧率:设置视频帧率。编码级别:针对特定应用场景的特定编码功能的集合。旋转角度:设置视频是否旋转。视频颜色格式:视频颜色采样方式设置。8. 配置如下音频参数后,点击下一步。

腾讯云对象存储通过 HLS 加密防止视频泄露


删除音频流:删除音频轨。编码格式:设置音频压缩格式。采样率:指定音频采样率。采样位宽:指定音频采样位深。音频码率:音频单位数据量。声道数:音源数量。保持双音轨:是否保留双声道。9. 配置如下高级配置后,点击完成。

腾讯云对象存储通过 HLS 加密防止视频泄露


删除文件 Metadata 信息:删除文件元信息。视频宽高调整方式:视频宽高缩放方式,视频画面剪裁。支持自动去黑边或自定义剪裁。检测视频分辨率:当输入视频分辨率(宽或高)小于输出设置时,按输入视频分辨率转码。检测视频码率:当输入视频码率小于输出设置时,按输入视频码率转码。检测音频码率:当输入音频码率小于输出设置时,按输入视频码率转码。HDRtoSDR 变换:是否开启 HDRtoSDR 变换。关键帧最大帧数:设置帧间隔。缓冲区大小:码率控制缓冲区大小用于控制码率波动。视频算法器预设:平衡视频转码过程中的画面质量和转码速度。视频加密:开启 HLS 视频加密。10. 单击确定,完成加密模板配置,后续选用此模板 配置工作流配置任务 即可实现加密视频。说明 可根据您使用的开发语言选择查看对应代码示例。

播放HLS加密视频

请按以下指引完成视频解密播放:1. 搭建 token 服务。注意 token 服务需要根据您的加密逻辑自行搭建,以达到更高的视频安全等级。2. 搭建解密服务。搭建一个本地 HTTP 服务,用于解密视频和获取解密密钥。以下为 PHP 示例代码:

<?php/** * 需要用到 腾讯云开发者工具套件(SDK)3.0 获取地址 https://github.com/TencentCloud/tencentcloud-sdk-php * 万象控制台配置转码文件的 UriKey 之后,该接口的处理逻辑参考以下 demo * 1) 获取到密文 $_GET['Ciphertext'] * 2) 请求 KMS Decrypt 接口,拿到响应后 进行 base64解码 * 3) 接口返回 解码后的字符串 */
require_once './tencentcloud-sdk-php/vendor/autoload.php';
use TencentCloud\Common\Credential;use TencentCloud\Kms\V20190118\KmsClient;use TencentCloud\Kms\V20190118\Models\DecryptRequest;use TencentCloud\Common\Exception\TencentCloudSDKException;
$secretId = "";$secretKey = "";$ciphertext = $_GET['Ciphertext'];$kmsRegion = $_GET['KMSRegion'];
try { $cred = new Credential($secretId, $secretKey); $kmsClient = new KmsClient($cred, $kmsRegion);
$decryptRequest = new DecryptRequest(); $decryptRequest->setCiphertextBlob($ciphertext); $resp = $kmsClient->Decrypt($decryptRequest); $plaintext = $resp->getPlaintext(); $decodeStr = base64_decode($plaintext);
echo $decodeStr;}catch(TencentCloudSDKException $e) { echo $e;}

java 示例代码如下:
完整示例

@RestController@CrossOrigin("*")public class KMSDecryptController {
@RequestMapping("decrypt") public void decrypt(@RequestParam("Ciphertext") String ciphertext,@RequestParam("KMSRegion") String region, HttpServletResponse response) { try { // 实例化一个认证对象,入参需要传入腾讯云账户 secretId,secretKey,此处还需注意密钥对的保密 // 密钥可前往 https://console.cloud.tencent.com/cam/capi 网站进行获取 Credential cred = new Credential("", ""); // 实例化 http HttpProfile httpProfile = new HttpProfile(); httpProfile.setEndpoint("kms.tencentcloudapi.com"); // 实例化一个 client 选项,可选的,没有特殊需求可以跳过 ClientProfile clientProfile = new ClientProfile(); clientProfile.setHttpProfile(httpProfile); // 实例化要请求产品的 client 对象,clientProfile 是可选的 KmsClient client = new KmsClient(cred, region, clientProfile); // 实例化一个请求对象,每个接口都会对应一个 request 对象 DecryptRequest req = new DecryptRequest(); //写入待解密数据 req.setCiphertextBlob(ciphertext); // 返回的 resp 是一个 DecryptResponse 的实例,与请求对象对应 DecryptResponse resp = client.Decrypt(req); String plaintext = resp.getPlaintext(); //对秘钥进行 base64解密 byte[] decode = Base64.getDecoder().decode(plaintext); //返回流 ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(decode); outputStream.close(); } catch (TencentCloudSDKException | IOException e) { System.out.println(e.toString()); } }}

3. 播放加密视频。您可以使用自己的播放器或腾讯云播放器播放加密视频。
对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/144421.html

(0)
上一篇 2023年12月9日 上午1:46
下一篇 2023年12月9日
详情页2

相关推荐

  • 阿里云RDS数据库DescribeDBInstancesAsCsv – 按CSV文件格式查询实例列表-云淘科技

    目前该API接口已标记为弃用,推荐使用替代API:Rds(2014-08-15) – DescribeDBInstances。 该接口用于查询实例列表。 接口说明 说明 本接口已下线,请勿使用。请使用DescribeDBInstances接口。调试您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,Open…

    阿里云数据库 2023年12月9日
  • 腾讯云弹性伸缩竞价实例创建策略

    弹性伸缩的竞价实例创建策略可帮助您以最佳方式最有效地利用竞价资源,同时仍能利用竞价实例提供的大幅折扣,是一种让您获得优化使用计算资源成本的策略。弹性伸缩提供了以下可用于竞价实例创建的策略: 容量优化策略(推荐) 弹性伸缩优先选择最可用的竞价实例机型,以这种方式扩容可帮助您最好的利用竞价实例资源。容量优化策略可在减少中断可能性的前提下,降低总体资源使用成本。示…

    2023年12月9日
  • 腾讯云对象存储生成预签名链接

    简介 本文档提供关于生成对象预签名链接相关的 SDK 示例代码。关于使用预签名 URL 上传的说明请参见 预签名授权上传, 使用预签名 URL 下载的说明请参见 预签名授权下载。说明签名规则。请参考 请求签名。建议用户使用临时密钥生成预签名,通过临时授权的方式进一步提高预签名上传、下载等请求的安全性。申请临时密钥时,请遵循 最小权限指引原则,防止泄露目标存储…

    腾讯云 2023年12月9日
  • 腾讯云对象存储模板接口

    简介 本文档提供关于模板接口的 API 概览以及 SDK 示例代码。说明:阅读本文档前请先打开示例代码  创建模板 接口文档及示例函数名 API 文档 示例函数名 创建音视频转码模板 ci_create_transcode_template 创建极速高清转码模板 ci_create_high_speed_hd_template 创建精彩集锦模板…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS通过自定义角色访问数据(跨账号场景)-云淘科技

    OSS投递任务(新版)运行时,将读取Logstore中数据并投递到OSS Bucket中。您可以授予OSS投递任务使用自定义角色来完成以上操作。如果Logstore和OSS Bucket不属于同一个阿里云账号,您可参考本文档完成授权操作。 前提条件 已在阿里云账号A下创建RAM角色a,在阿里云账号B下创建RAM角色b。具体操作,请参见步骤一:创建RAM角色。…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。