EME、CDM、AES、CENC和密钥-DRM的构建块

2020-11-03 10:15:19

任何试图理解DRM(数字版权管理)的人都将面对AES、CDM、CENC、EME等缩写。这对于新手来说可能会非常混乱,但理解它们对于很好地理解DRM是很重要的。在本文中,让我们简单介绍一下DRM的构建块:EME、CDM、AES、CENC,以及Keys&;密钥服务器的使用。

正如我们在前一篇文章中看到的,DRM是加密和业务规则的组合,用于控制数字内容的访问和消费。

提供工具和基础架构,使内容提供商能够加密其内容,并且。

围绕加密内容构建生态系统,以便内容提供商可以控制谁/什么可以解密和使用其内容。

在本系列的前一篇文章中,我们看到了Ram和Shyam互相发送编码消息。与此同时,哈里维护着代码簿,并决定谁来读/写笔记-记得吗?

现在,让我们将这个简单的系统替换为保护和分发视频所需的技术。我们能得到什么?

让我们描述一下我们这里有什么。有一部电影我们想要安全地发送给经过身份验证的用户。

我们向DRM公司的服务器请求一个码本来加密我们的视频,

然后,用户向DRM公司的服务器索要码本以解锁视频(解密)。

不要啊!我们这里有一个简单的玩具示例,演示如何使用DRM安全地传输电影。它完美地捕捉了DRM的本质,但在现实世界中不能很好地工作。

在本文的其余部分中,让我们将这个简单系统的每一部分都重新思考、重新设计,看看它如何适应视频交付和DRM的世界,好吗?

在我们讨论订单之前,让我们修改我们的示例,以适应视频交付的ABR(自适应比特率)模型。

ABR刷新器:在ABR中,一部电影被编码成不同的码率-分辨率组合(也就是梯子),然后拆分成不同的块或片段。每个块代表几秒钟的视频,并且它是可独立解码的。

“打包”指的是将一部电影分块或分解成小片,并在清单或播放列表文档中对其进行描述。当用户想要播放电影时,他需要参考此清单。

根据可用带宽,播放器请求特定比特率的块/段(再现,或阶梯的横档),并且CDN(内容递送网络)用所请求的块进行响应。

使用ABR进行视频传输的流行方法有MPEG、DASH和HLS。更深层次的了解,请参考我们关于OTT和ABR视频流媒体的文章。

这里唯一的变化是打包和基于CDN的交付步骤。就这样。

加密的整个想法是为了确保当有人截获我们的数据时,他们不应该阅读或观看视频。

加密刷新器:临时加密是一种用于保密数据并防止未经授权的人读取它的技术。加密使用“密钥”将输入数据(明文)转换为称为密文的替代形式。如果没有密钥,几乎不可能将密文转换回明文。

然而,实际上,在没有密钥的情况下解密是可能的,而且设计的加密算法使得反向工程在时间、金钱和所需的计算资源方面都非常昂贵。

最流行的加密技术之一是“高级加密标准”或简称“AES”。它也被称为Rijndael(以其发明者的名字命名),由美国国家标准与技术研究所(NIST)于2001年建立,用于加密电子数据。

它是一种简单的对称密钥算法:加密和解密使用相同的密钥。

根据密钥长度,它有三种变体:128位、192位和256位。密钥越长,就越难破解。

在没有密钥的情况下破解AES-128将需要“十亿倍十亿年”和一台超级计算机(来源)。

如果你对深入了解AES标准感兴趣,可以看看AES的维基百科页面。“我不是密码学专家,无法公正对待AES。

注:请记住,加密不是编码,解密不是视频空间的解码。对于视频,编码和解码分别是用来表示压缩和解压缩的词。要了解更多关于编码、解码和视频编解码器的信息,请阅读我们关于压缩需求和视频编解码器简单介绍的文章。

不,不是,让我们想一想这意味着什么。

如果一家内容提供商决定与三家不同的DRM公司接洽,而这三家公司都使用不同的加密技术,那么这意味着内容提供商需要对他们的视频加密三次,导致存储空间和其他资源的浪费。

这就是CENC规范产生的原因--减少这种加密驱动的市场碎片化,并降低存储需求。

在我们深入CENC之前,让我们先退一步来看看OTT流协议的状态。

今天使用的协议主要有两种-MPEG-DASH和HLS。还有其他协议,如MSS(Microsoft平滑流式处理)和HDS,但是,我们将把它们放在一边讨论。

MPEG-DASH将MP4格式用于其视频,而HLS将MPEG-TS(TS)容器用于其文件。如果内容提供商同时使用MPEG-DASH和HLS,则他们需要以MPEG-DASH和HLS文件格式存储其视频的副本。

现在,让我们将DRM加密问题添加到其中。如果我们假设的三个数字版权管理提供商使用三个不同的加密标准,那么一个内容提供商需要存储2*3个…。每份录像带六份!这是对存储空间的浪费!!

为了解决视频流协议带来的第一个问题,创建了CCMAF标准规范,该规范规定视频可以以更碎片化的MP4容器格式(Fmp4)存储。有了MPEG-DASH和HLS的支持,您现在只能创建一组视频,将其存储为FMP4格式,并为这两种协议使用一组通用的文件。只需确保您创建了两个清单(叹息!)。

如果不同的DRM技术使用不同的加密标准,我们仍然需要存储每个文件的多个副本,对吗?

为此,MPEG开发了CCENC或通用加密规范,指定视频可以使用CCENC(AES-128 CTR)或CCBCS(AES-128 CBC)进行加密。CCTR代表计数器;CBC代表密码块链接。

CENC的含义是,内容提供商只需要加密他的视频一次,任何解密模块都可以解密。*注:只要密钥得到强有力的保护,公开加密算法就不是问题。

市场上有三种主要的DRM技术-Apple FairPlay、Google Widevine和Microsoft PlayReady。

如您所见,这导致了流空间的混乱和碎片化。一个可能的趋同点是CMAF和AES-CBC以及CBCS模式的普遍使用,但是,这将如何影响仅支持CTR或仅支持MPEG-TS的传统设备?那是我们下次再讨论的问题。

到目前为止,我们已经确定将使用AES-128位加密对视频进行加密。在这个阶段,出现的几个问题是-

任何内容提供商都可以使用专用软件手动生成加密密钥。或者,几家DRM供应商提供必要的工具和软件来生成这些密钥。

让我们先了解一下“为什么”。当你去酒店的时候,你会向接待员要特定房间的钥匙,告诉他房间号码,对吗?您在这里通过告诉她房间号来提供钥匙和房间之间的关联。

同样,当我们使用特定密钥加密一部电影时,我们需要创建该关联并将其提供给DRM许可证服务器(如果您愿意,我们的接待员)。

在DRM中,“KeyID”提供加密密钥和电影之间的关联。它是在为特定电影创建加密密钥时生成的唯一字符串。

加密密钥和密钥ID存储在与DRM许可证服务器并行工作的安全服务器(密钥库)中。

当客户端需要播放加密电影时,它通过提供特定电影的密钥ID向DRM许可证服务器请求解密密钥。如果DRM许可证服务器对该请求(可信请求)感到满意,它将要求密钥库提供与该密钥ID相关联的解密密钥。

基本原理:没有密钥ID,许可证服务器就无法查找电影的解密密钥。

答:密钥ID与破折号或HLS清单一起发送到视频播放器。播放器解析清单,找到密钥ID,并向DRM许可证服务器请求与该密钥ID相关联的解密密钥。

加密密钥是“私有的”,需要与其关联的密钥ID一起存储在安全密钥存储中。

任何拥有密钥ID的人都可以向许可证服务器请求私钥(解密密钥)。这取决于DRM提供商对提出请求的人进行身份验证,然后提供或拒绝解密密钥。

下面是我们刚刚了解的关于密钥、加密和许可证服务器的框图。

在客户端(播放器应用程序),用户按下播放他想要观看的电影。现在,视频播放器需要一种方法来识别电影是否加密。

否则,它将尝试并播放加密的电影,崩溃,并导致可怕的用户体验。

您可以在清单中添加注释,说明电影已加密,并提供其密钥ID。

另一种方式是在视频比特流中插入几个字节的唯一信息。当播放器在播放前检查比特流时,它可以捕捉到这个唯一的信息,并意识到它是加密的。

许可证服务器使用预定义的机制来识别发出请求的玩家是否是可信的。

在许可证服务器对播放器的真实性感到满意后,它会使用许可证解密密钥进行响应。

我们已经描述了一个简单的方案,但我们的方案存在许多(技术和商业)问题。这里马上就有一些问题。

我们已经描述了一个向DRM许可证服务器发送解密密钥请求的原型“播放器”。但是,如果播放器中的解密软件暴露了密钥和解密的内容怎么办?

另外,如果您是视频播放器开发人员,是否必须为每种DRM技术开发解密模块?而且,您是否需要在他们每次更改界面时都更新它?

它将导致一个紧密耦合的体系结构,并将阻止任何试图开放和即插即用生态系统的尝试。让我们看看能做些什么。

在玩家级别,前面描述的职责跨不同模块进行划分,如下所示-。

播放器负责获取电影、解析清单、提取密钥ID、向DRM许可证服务器发出请求等。

一个单独的模块(称为CDM或内容解密模块)负责创建许可证请求、解密和解码内容。

创建许可证请求的机制(使用密钥ID、设备标识符、对请求签名等)。

了解从DRM许可证服务器接收的许可证响应(响应也是加密的)并提取解密密钥的机制。

使用这些细节,称为CDMS(内容解密模块)的模块可以内置到Chrome、Firefox、Microsoft Edge、Safari等浏览器中。

他们根据许可证规范安全地存储解密密钥(例如,将密钥存储X天)。

由于上述原因,浏览器中的CDM是开源的,这是业界和公众争论不休的一个来源。他们不是不可信的,因为公众看不到CDM源代码里有什么。

注:有几个浏览器为您提供了关闭CDM的选项。但是,如果您这样做,您将无法观看任何受DRM保护的内容。这是该行业的权衡。

以下是Firefox插件页面(在我的Ubuntu20.04机器上)中的Widevine插件的屏幕截图。

哦,等等,还有一层抽象我们还没有讨论过。

我们在上一节中看到,播放器应用程序需要在浏览器中与CDM对话,并与许可证服务器交换许可证信息,对吗?

播放器供应商需要集成所有不同的许可服务器&;CDM,并跟踪其界面的更改以保持最新。

一家播放器公司表示,他们不支持一些流行的“XYZ”平台,因为XYZ的界面经常变化,那么很可能没有人会购买他们的播放器。不太好!

这就产生了一个位于播放器和CDM之间的层,称为加密媒体扩展(EME)或加密媒体扩展(Encrypted Media Extensions)。EME提供了一套标准化的API,供播放器(APP)与CDM通信。

内容解密模块(CDM)是对视频进行解密和可选的解码+显示的软件。

视频播放器是一个JavaScript程序,它使用EME API在CDM和许可证服务器之间传输消息。

使用EME的优点在于,由于使用EME引入的互操作性,内容提供商和播放器供应商现在正在开发可以在不同浏览器上观看的流服务。无论使用哪种DRM平台或浏览器(CDM),您都可以开发一款应用程序,该应用程序使用统一的EME规范与许可证服务器和CDM对话。

在解密视频之后,需要将其解码并显示给用户,而不会暴露解密、解码或原始帧。CDM(内容解密模块)在防止数据泄露方面起着至关重要的作用,因为它是解密数据的第一个接触点。

解密电影并将码流交给应用程序(不是很安全,因为有人可以侵入应用程序转储视频)。

解密、解码视频帧并将其传递给平台的显示引擎。

该过程也可以在软件或设备硬件中进行(更安全)。

但它缺少一些关键功能,这些功能使其对内容提供商具有吸引力。

在这个阶段,我想区分核心DRM技术提供商(如Apple、Google和Microsoft)和围绕这些技术提供服务的DRM供应商。在这一节中,让我们看看在涉及DRM时业界预期的几条业务规则-这些规则可以由DRM技术提供商或DRM供应商直接提供。

FairPlay、Widevine、PlayReady等DRM技术提供商不提供用户身份验证服务。但是,DRM供应商可以!当用户点击“Play”时,一个单独的服务器验证用户的凭证(例如,customerID)。它根据订阅级别、促销代码等检查用户是否有权播放该内容。在此服务器对用户进行身份验证后,应用程序可以向许可证服务器发出许可证请求。1注意:这是对工作流程的极大简化,专业的DRM供应商有更复杂的工作流进行身份验证。

当内容提供商想要在某些国家/地区阻止播放电影时,会使用地理阻止。与用户身份验证类似,这是大多数DRM供应商提供的附加服务。当用户点击特定电影的“播放”时,DRM供应商的服务器可以检查是否可以在用户的位置观看该电影。根据内容提供商的规则,许可证和加密密钥要么被发送到客户端,要么被拒绝。

顾名思义,从许可证服务器接收到永久许可证后,可以将其存储在客户端设备上。它可以用于播放电影,直到达到许可证中提到的过期时间。在许可证到期之前,CDM需要提出许可证续签请求。

非永久许可证用于立即播放电影。它们不能长时间储存。它们通常在当前播放会话过期后使用并丢弃,或者如果存在过期时间较短的策略,则在会话中途使用和丢弃。

密钥轮换涉及用不同的密钥加密电影的不同部分(或片断),以减轻攻击。假设黑客获得了一部电影的密钥。在这种情况下,如果后面的部分使用不同的关键点,则可能只允许他观看电影的一小部分。此外,您还可以使用多个密钥为内容的不同部分关联不同的许可规则。例如,电影的“独家幕后”部分只能向高级订阅者播放,而所有免费订阅者都可以观看电影的其余部分。

一些服务提供在互联网连接不可用的情况下播放视频-称为“离线播放”。当我知道自己要登上长途航班时,我已经在Netflix上下载了几部电影到我的手机上。在这种情况下,播放器无法联系许可证服务器来获取DRM密钥。

因此,DRM提供商需要提供将密钥安全地存储在设备上的选项,以便即使在互联网连接不可用时也可以解锁和回放内容。需要高度安全的CDM实现来防止密钥泄露。

加密和解密电影可能会很昂贵,特别是在超高清和4K电影中,需要优化加密。一种这样的优化是仅加密每个视频段的帧内帧(关键帧/I帧/IDR帧)。这种优化有几个优点-。

加密速度更快,因为内部帧只占电影中总帧数的很小比例。

只有在解码内部帧之后,才能解码其从属帧(即,依赖于I帧的帧)。因此,如果没有可解码的内部帧,电影将变得无用。

Apple Fairplay中的Sample-AES就是一个例子,它只加密每个媒体段的样本。我们会在关于苹果FairPlay DRM的文章中读到。

内容解密可以在软件或硬件中进行,通常认为硬件解密更安全,因为操作发生在可信执行环境(TEE)中。在维基百科中,TEE被定义为“主处理器的安全区域,它保证加载到其中的代码和数据在保密性和完整性方面受到保护”。

内容提供商需要有条件地允许/阻止在各种设备上回放的机制。要做到这一点,一种直接的方法是生成DRM许可证,该许可证指定允许哪些设备播放电影比特率阶梯的特定分辨率。

例如,Google的Widevine定义了三个安全级别-L1(最高)、L2和L3(最低)。通常,具有L3安全级别的设备会被阻止播放高清分辨率。我们将在Google的Widevine DRM上的另一篇文章中阅读更多关于这方面的内容。

我希望您理解AES、EME、CDM、CENC、Keys&;密钥服务器是如何构成DRM的构建块的。

在接下来的几篇文章中,让我们更深入地研究商业DRM解决方案,如Widevine、PlayReady和FairPlay。

BuyDRM™是一家为娱乐、企业和运输行业提供数字版权管理和内容安全服务的领先供应商。自世纪之交以来,BuyDRM™已经为当今许多最大的品牌积累了大量的成功故事。

OTT运营商、电视网络、电影制片厂、游戏网站和优质内容分销商使用BuyDRM™获奖的KeyOS Multi-DRM平台,为他们的流媒体和可下载视频提供强大的内容安全性。

客户包括美国电影科学与艺术学院(AMPAS)、美国广播公司(AUST)

.