内容保护概述

media services logo


注意

请在 2024 年 2 月 29 日之前将 Azure 媒体服务 REST API 和 SDK 更新到 v3。 版本 3 的 Azure 媒体服务 REST API 与适用于 .NET 和 Java 的客户端 SDK 提供了比版本 2 更多的功能。 我们即将停用版本 2 的 Azure 媒体服务 REST API 与适用于 .NET 和 Java 的客户端 SDK。

必需的操作:若要最大程度地减少工作负载的中断,请参阅迁移指南,在 2024 年 2 月 29 日之前将代码从版本 2 的 API 和 SDK 转换为版本 3 的 API 和 SDK。 2024 年 2 月 29 日之后,Azure 媒体服务将不再接受来自版本 2 REST API、ARM 帐户管理 API 版本 2015-10-01 或版本 2 的 .NET 客户端 SDK 的流量。这其中包括可以调用版本 2 API 的任何第三方开源客户端 SDK。从媒体服务 v3 概述开始了解最新版本。

可以使用 Azure 媒体服务在媒体从计算机离开到存储、处理和传送的整个过程中确保其安全。 借助媒体服务,可以传送使用高级加密标准 (AES-128) 或三个主要数字版权管理 (DRM) 系统(Microsoft PlayReady、Google Widevine 和 Apple FairPlay)中任意一个动态加密的实时和请求内容。 媒体服务还提供了用于向已授权客户端传送 AES 密钥和 DRM(PlayReady、Widevine 和 FairPlay)许可证的服务。

下图阐释了媒体服务内容保护工作流:

Protect with PlayReady

本文介绍与了解使用媒体服务进行内容保护相关的概念和术语。 本文还提供指向讨论如何保护内容的文章的链接。

动态加密

可以通过 Azure 媒体服务传送使用 AES 明文密钥或 DRM 加密(利用 PlayReady、Widevine 或 FairPlay)动态加密的内容。 如果内容使用 AES 明文密钥加密并通过 HTTPS 发送,则在到达客户端之前,内容不会处于明文状态。

每个加密方法均支持以下流式处理协议:

  • AES:MPEG-DASH、平滑流式处理和 HLS
  • PlayReady:MPEG-DASH、平滑流式处理和 HLS
  • Widevine:MPEG-DASH
  • FairPlay:HLS

不支持对渐进式下载加密。

若要加密资产,则需要关联加密内容密钥和资产并且为该密钥配置授权策略。 可以指定或由媒体服务自动生成内容密钥。

还需要配置资产的传送策略。 如果要流式传输存储加密的资产,请确保通过配置资产传送策略来指定该资产的传送方式。

播放器请求流时,媒体服务通过 AES 明文密钥或 DRM 加密使用指定的密钥来动态加密内容。 为了解密流,播放器从媒体服务密钥传送服务请求密钥。 为了确定用户是否有权获取密钥,服务会评估为密钥指定的授权策略。

AES-128 明文密钥与 DRM

客户通常希望知道他们应该使用 AES 加密还是 DRM 系统。 这两种系统之间的主要区别是,使用 AES 加密时,内容密钥以未加密格式(“明文”)传输到客户端。 因此,可以通过网络跟踪在客户端上明文查看用于加密内容的密钥。 AES-128 明文密钥加密适合查看者是受信任方的用例(例如,加密员工观看的在公司内部分发的公司视频)。

与 AES-128 明文密钥加密相比,PlayReady、Widevine 和 FairPlay 均提供更高等级的加密。 内容密钥以加密格式传输。 此外,解密是在安全的环境中在操作系统级别处理的,在这样的环境中,恶意用户更难进行攻击。 在查看者可能不是受信任方且需要更高等级的安全性的用例中,建议使用 DRM。

存储加密

可以使用存储加密通过使用 AES 256 位加密在本地加密明文内容。 然后,可以将该内容上传到 Azure 存储,该内容在静止时以加密形式存储在其中。 受存储加密保护的资产会在编码前自动解密并放入经过加密的文件系统中。 在将资产作为新的输出资产上传回来之前,可以选择重新加密这些资产。 存储加密的主要用例是在磁盘上通过静态增强加密来保护高品质的输入媒体文件。

若要传送存储加密资产,必须配置资产的传送策略,以使媒体服务了解要如何传送内容。 在流式传输资产之前,流式处理服务器会解密内容,然后使用指定的传送策略(例如 AES、通用加密或无加密)流式传输内容。

加密类型

PlayReady 和 Widevine 使用通用加密模式(AES CTR 模式)。 FairPlay 使用 AES CBC 模式加密。 AES-128 明文密钥加密使用信封加密。

许可证和密钥传送服务

媒体服务提供用于向已授权客户端传送 DRM(PlayReady、Widevine 和 FairPlay)许可证和 AES 密钥的密钥传送服务。 可以使用 Azure 门户、REST API 或适用于 .NET 的媒体服务 SDK 来配置许可证和密钥的授权与身份验证策略。

控制内容访问

可以通过配置内容密钥授权策略控制谁有权访问内容。 内容密钥授权策略支持开放或令牌限制。

开放授权

通过开放授权策略,将内容密钥发送到任意客户端(无限制)。

令牌授权

使用令牌限制授权策略时,内容密钥仅发送到在密钥/许可证请求中提供了有效 JSON Web 令牌 (JWT) 或简单 Web 令牌 (SWT) 的客户端。 此令牌必须是由安全令牌服务 (STS) 颁发的。 可以使用 Azure Active Directory 作为 STS,也可以部署自定义 STS。 必须将 STS 配置为创建令牌,该令牌使用指定密钥以及在令牌限制配置中指定的颁发声明进行签名。 如果令牌有效,而且令牌中的声明与为密钥/许可证配置的声明相匹配,则媒体服务密钥传送服务会将所请求的密钥/许可证返回到客户端。

配置令牌限制策略时,必须指定主验证密钥、颁发者和受众参数。 主验证密钥包含为令牌签名时使用的密钥。 颁发者是颁发令牌的安全令牌服务。 受众(有时称为范围)描述该令牌的意图,或者令牌授权访问的资源。 媒体服务密钥交付服务会验证令牌中的这些值是否与模板中的值匹配。

令牌重放防护

令牌重放预防功能允许媒体服务客户设置一个限制,以限制可使用同一令牌请求密钥或许可证的次数。 客户可以在令牌中添加 urn:microsoft:azure:mediaservices:maxuses 类型的声明,其中值是令牌可用于获取许可证或密钥的次数。 对密钥传送服务使用同一令牌的所有后续请求都将返回未经授权的响应。 请参阅“如何在 DRM 示例中添加声明”。

注意事项

  • 客户必须控制令牌生成。 声明需要放在令牌本身中。
  • 使用此功能时,令牌过期时间超过接收请求时间一小时以上的请求将被拒绝,并返回未经授权的响应。
  • 令牌由其签名唯一标识。 对有效负荷的任何更改(例如,对到期时间或声明的更新)都会更改令牌的签名,并且该令牌将算作密钥传送服务之前没有遇到过的新令牌。
  • 如果令牌超过了客户设置的 maxuses 值,则播放将失败。
  • 此功能可用于所有现有的受保护内容(仅需要更改颁发的令牌)。
  • 此功能同时使用 JWT 和 SWT。

流 URL

如果资产是使用多个 DRM 加密的,请在流式处理 URL 中使用加密标记:(format='m3u8-aapl', encryption='xxx')。

请注意以下事项:

  • 仅可以指定不多于一个加密类型。

  • 如果仅向资产应用了一种加密,则无需在 URL 中指定加密类型。

  • 加密类型不区分大小写。

  • 可以指定以下加密类型:

    • cenc:对于 PlayReady 或 Widevine(通用加密)
    • cbcs-aapl:对于 FairPlay(AES CBC 加密)
    • cbc:对于 AES 信封加密

附加说明

  • Widevine 是 Google Inc. 提供的一项服务,并受 Google Inc. 服务条款和隐私策略的约束。