You need to enable JavaScript to run this app.
导航
火山引擎私有加密
最近更新时间:2024.10.11 16:44:56首次发布时间:2022.05.09 17:09:03

火山引擎提供一套自研的云端一体视频加密解决方案,采用私有加密算法,确保整个传输链路的安全性。相比 HLS 标准加密,私有加密更安全,使用门槛更低。本文为您介绍火山引擎私有加密的优势、架构、兼容性和使用流程。

优势介绍

  • 每个视频文件都有独立的密钥,有效防止单一密钥泄露可能带来的安全风险。此外,密钥经过二次加密,提高了安全性。
  • 提供适用于 Android、iOS、Web 等平台的播放器 SDK,可自动解密和播放加密内容。同时支持设备级 UnionInfo 校验,降低了密钥泄露后任意设备播放风险。
  • 对视频数据进行加密处理,即使下载至本地,视频仍然是加密状态,也能有效防止视频被盗用。

方案架构

火山引擎私有加密方案由加密转码解密播放两个核心模块组成。
图片

  • 加密转码
    1. 业务方上传视频。
    2. 视频点播存储源文件。
    3. 业务方触发加密转码。
    4. 点播转码服务从密钥管理服务获取密钥,加密视频文件。
    5. 转码完成后,存储加密后的视频文件。
  • 解密播放
    1. 业务授权:移动端的 App 或 Web 页面访问视频时,首先访问业务方自己的 API 或后端页面。在这里,业务方可以增加自己的权限控制,例如要求用户登录才能播放,并建议使用 HTTPS。如果业务允许播放,则通过业务方子账号的 AK/SK 签发播放凭证,并将其返回给 App/Web 端。
    2. 获取播放地址:播放端把视频 ID 和播放凭证传给点播 SDK,SDK 负责:
      • 从视频点播服务获取对应的多格式、多清晰度的播放地址。
      • 获取对应的密钥。密钥会进行二次加密,安全性更高。
    3. 点播 SDK 通过播放地址获取加密视频文件。
    4. 点播 SDK 使用密钥对视频进行解密,然后播放。

兼容性说明

Native 端

类型

格式

Android

HLS、DASH、MP4、OPUS

iOS

HLS、DASH、MP4、OPUS

Web 端

类型

格式

H5

  • Android H5:HLS、DASH、MP4、OPUS
  • iOS H5:HLS

浏览器

  • Chrome、Firefox:HLS、DASH、MP4、OPUS
  • Safari:HLS、DASH、MP4

如何使用

前提条件

加密转码

  1. 视频点播控制台创建媒体处理模板。音频转码模板、视频转码模板和极致超清模板均支持设置私有加密。您需开启 DRM 加密开关,如下图所示。
    图片

    说明

    媒体处理模板的其他参数配置请见以下文档:

  2. (可选)在视频点播控制台创建工作流。根据您创建的媒体处理模板类型勾选相应的工作流任务并关联开启了 DRM 加密的媒体处理模板。
    图片
  3. 触发私有加密转码。视频点播支持在媒资上传和媒体处理环节触发转码。您可以直接通过单个媒体处理模板发起转码,或基于包含媒体处理任务的工作流去发起转码。具体请见以下文档:
  4. 查看私有加密转码结果。
    • 控制台方式:
      1. 登录视频点播控制台,进入指定空间。
      2. 媒资管理 > 视频管理页面,单击目标视频操作列的详情按钮,进入视频详情页面。
      3. 单击视频地址页签。您可以查看该加密转码输出的流会标识加密字样。
        图片
    • OpenAPI 方式:调用 GetPlayInfo 接口,通过返回参数 PlayAuthId 是否有值区分,有值就是加密的。
    • 事件通知:如果您已配置工作流执行完成事件通知,可以通过事件中的 TranscodeInfo 字段获取转码产物信息。其中 TranscodeInfo.Encrypt 字段为 true 表示已加密。

解密播放

经过火山引擎私有加密的视频,只能使用视频点播提供的点播 SDK 对加密内容进行解密播放。

Native 端

使用 Android/iOS 点播 SDK 播放私有加密视频时,您需参考以下文档通过 vidplayAuthToken 设置播放源:

Native 端整体解密播放流程如下:
图片

  1. 发起播放请求:客户端携带 UnionInfo 发起播放请求。UnionInfo 是播放端从设备中提取的用于标识访问或设备唯一性的信息。可调用点播 SDK 的 getEngineUniqueId 方法生成设备唯一标识。
  2. 签发临时播放 Token:应用服务端通过视频点播服务端 SDK 本地签发包含 UnionInfo 的临时播放 Token。具体请见以下文档:

    说明

    签发临时播放 Token 时,除了 UnionInfo 参数,您还需指定 FileTypeFormat
    CodecDefinition 参数,确保 SDK 能够获取到加密文件地址。

  3. 下发临时播放 Token:应用服务端将包含 UnionInfo 的临时播放 Token 下发给客户端。
  4. 请求播放信息:点播 SDK 内部通过临时播放 Token 发起获取播放信息请求。点播服务将 PlayUrl 和加密后的播放密钥返回给点播 SDK。

    说明

    密钥通过 UnionInfo 二次加密,安全性更高。

  5. 请求加密视频内容:点播 SDK 内部通过 PlayUrl 向 CDN 请求加密视频内容。
  6. 解密播放:点播 SDK 内部先使用 UnionInfo 解密出真实的播放密钥,再使用密钥解密视频并播放。

Web 端

Web 点播 SDK 仅支持通过 Vid 模式播放私有加密视频。您需在实例化播放器时设置 unionIdgetVideoByToken.playAuthTokengetVideoByToken.getDrmAuthToken 参数。示例代码请见播放私有加密视频。Web 端整体解密播放流程如下:
图片

  1. 发起播放请求:客户端发起播放请求。应用服务端通过视频点播服务端 SDK 本地签发临时播放 Token,然后下发给客户端。具体请见以下文档:
  2. 请求播放信息:Web 点播 SDK 内部通过临时播放 Token 向点播服务请求播放信息,获取到 PlayUrlPlayAuthId 等信息。
  3. 请求私有加密 Token:Web 点播 SDK 内部携带 PlayAuthIdVidUnionInfo 向应用服务端请求获取私有加密 Token。应用服务端通过视频点播服务端 SDK 本地签发私有加密 Token,然后下发给客户端。具体请见以下文档:

    说明

    UnionInfo 是 SDK 使用您在实例化播放器时设置的 unionId 生成的,有效时长为 30 秒。

  4. 请求密钥:Web 点播 SDK 内部使用私有加密 Token 和 PlayAuthId 向点播密钥服务请求密钥。点播密钥服务解析出 UnionInfo,使用 UnionInfo 对密钥进行二次加密,并返回给 Web 点播 SDK。Web 点播 SDK 使用 UnionInfo 解密出真实密钥。

    说明

    密钥通过 UnionInfo 二次加密,安全性更高。

  5. 请求加密视频内容:Web 点播 SDK 内部通过 PlayUrl 向点播 CDN 请求加密视频内容。
  6. 解密播放:Web 点播 SDK 使用密钥解密视频并播放。