翻译、编辑:Alex

技术审校:刘姗

本文来自OTTVerse,作者为Krishna Rao Vijayanagar。

▲扫描图中二维码了解音视频技术大会更多信息▲

Easy-Tech #022#

Microsoft的PlayReady是用于内容保护和发行的DRM解决方案和平台。它和Apple的FairPlay以及谷歌的Widevine一样,都可以提供安全的客户端SDK(用于内容加密和安全的解码和渲染)、许可证服务器、以及从客户端到服务器(反之亦然)传输过程中对许可证和密钥的处理。

在本文中,我们将深入了解微软PlayReady DRM的工作原理。我们还会了解PlayReady的基本构成,它的安全级别、设备支持和许可证获取方法。

PlayReady DRM

Microsoft的PlayReady是用于内容保护和发行的DRM解决方案和平台。

  • PlayReady也提供其他功能,比如计数服务、域控制和基于域的许可证、违规响应、用于直播的密钥轮换等。

  • PlayReady DRM支持MPEG-DASH、HLS和MSS(Microsoft Smooth Streaming)。输入视频既可以是fmp4、mp4格式,也可以是MSS中的ismv/isma格式。

  • PlayReady v4通过AES–CTR或AES–CBC加密模式支持基于CENC的加密。

  • PlayReady支持订阅、按观看次数付费、租借、购买和基于广告的商业模式。

  • PlayReady用于多种安全级别,并且具有防盗版的功能。

在下文中,我们将一起了解PlayReady DRM的基本构成、典型的DRM工作流程、安全级别以及设备支持等。

PlayReady DRM的基本构成

微软的PlayReady DRM基本构成如下所示:

视频打包器和内容打包服务器

  • 与FairPlay和Widevine类似,需要保护的内容首先使用OTT视频传输技术打包成适合流媒体传输的格式。PlayReady支持以MPEG-DASH、HLS和MSS格式输入。输入视频格式可以是fmp4、mp4,或者MSS中的ismv/isma。

  • 打包和加密后的内容被存储在内容打包服务器(Content Packaging Server)中,同时许可证信息和加密密钥被发送给许可证服务器。

密钥和密钥ID

  • 当使用PlayReady加密内容时,有两个信息至关重要:密钥和密钥ID

  • 密钥是实际的AES加密密钥,密钥ID是一个独特的值(GUID),它将密钥和内容对应起来。

  • 密钥被发送给许可证服务器,它是一个私密值。

  • 密钥ID是公开的,它被打包器以明文的(可读取)格式内嵌到播放清单中。

许可证服务器

  • 顾名思义,许可证服务器的主要任务就是向认证的客户端提供许可证信息,这样客户端就可以播放被保护的视频。

  • 它依赖于KMS(密钥管理系统,Key Management System)或者数据库存储密钥和密钥ID。KMS的设计并不在PlayReady的规范中。

PlayReady域控制器(或域服务器)

  • PlayReady Domain是PlayReady的一个功能,它允许内容提供商提供与一组设备(而非一个设备)绑定的许可证。这组设备被称为“”(Domain),它们可以相互共享许可证,而不是每次都联系许可证服务器。

  • 域控制器(Domain Controller )明确了规则:决定如何定义“域”(比如是以单个用户还是家庭的身份)。它也会强制定义进入和离开“域”的设备和PC数目,或者更新域证书。

计数服务器

  • 计数(PlayReady Metering)是PlayReady的一个功能:它可以记录内容播放次数。该计数可以在客户端生成和存储。

  • PlayReady 计数服务器(Metering Server )集合了来自所有PlayReady客户端的计数,并让客户端知道它们可以重置自己的单独计数。

  • 这对于追踪视频播放次数并相应地支付版权费用非常有用。

Microsoft PlayReady DRM的工作原理

在这一部分,我们一起来了解微软PlayReady DRM的工作原理。这里的解释参考了上文中关于PlayReady基本构成的内容。

PlayReady工作流程(来自微软)

第一步: 需要加密的内容首先被打包,然后再加密。加密后,内容被发送给分发服务器(Distribution Server)。许可证和加密密钥被发送给许可证服务器,而域信息则被发送给域服务器。

第二步: 在播放端,当用户按下“播放”键,播放器识别出内容已加密,并将该信息传达给浏览器中的内容解密模块CDM(通过EME)。CDM生成一个许可证请求,播放器将此请求发送给许可证服务器。从客户端发送的请求包含密钥ID以及客户端相关信息。

第三步: 许可证服务器使用密钥ID获取来自KMS的密钥并将其和其他相关许可证信息一起发送给客户端。来自许可证服务器的响应包括:

  • 内容加密密钥

  • 许可证权利

  • 权限和权利修正,也称为许可条件

第四步: 播放器收到来自许可证服务器的许可证,并将它传递给内容解密模块CDM(通过EME)。由于信息已被加密,所以播放器和其他任何软件都无法读取和滥用该信息。

第五步: CDM或者某些设备中的硬件组件将接收到许可证服务器中的响应,从中提取内容密钥,并使用密钥解密、解码以及渲染视频。

PlayReady同时提供可在客户端实现的License Store,用于在客户端存储密钥和权限。有时也称之为“哈希数据存储”(Hashed Data Store)或者HDS。

太棒了!现在你已经了解了PlayReady DRM的工作原理。

PlayReady中的许可证获取

PlayReady中有两种获取许可证的方法(知道这一点很重要):

  • Proactive: 使用这种方法,客户端在播放开始前发送许可证请求给许可证服务器(比如,用户正在浏览内容或者阅读电影摘要就可以作为可能播放的高指标)。

  • Reactive: 使用这种方法,在用户按下播放键后,客户端在License Store(哈希数据存储)中搜索许可证。如果客户端没有找到许可证,它就需要向许可证服务器请求一个新的许可证。请注意,微软的PlayReady会提供工具构建客户端上的License Store(HDS)。

  • 向你的DRM厂商资讯他们是否支持Proactive和Reactive的许可证获取非常重要,因为它会影响你的工作流程和客户端实现。

现在我们看下PlayReady提供的安全级别及其功能。

PlayReady安全级别:SL150、SL2000和SL3000

PlayReady有三个安全级别:SL150、SL2000和SL3000。

但在了解安全级别之前,让我们重温一下TEE(可信执行环境,Trusted Execution Environment)的定义。维基百科这样定义TEE

主处理器的安全区域,能够确保加载代码和数据的私密性和完整性。

TEE对于DRM而言非常重要,因为它可以显著提升安全性,并且在确保解密密钥和解密视频不被泄露和盗用方面发挥了关键作用。

在了解了TEE之后,我们一起来看下PlayReady三个安全级别SL150、SL2000和SL3000之间的区别。

SL150

  • SL150是PlayReady中的最低安全级别。

  • 不推荐用于产品,应只用于闭门测试。

  • 在这一安全级别,不提供任何保护(资产、客户端和密钥等),黑客可以任意入侵。

SL2000

  • 可用于制作场景和商业内容。

  • 在这一级别,软件或硬件中的内容、资产、密钥和客户端都可以受到保护。

SL3000

  • SL3000是PlayReady DRM中最安全的级别,于 2015 年与 PlayReady v3 一起推出。

  • 通过EME对资产、客户端和密钥进行硬件保护。

  • 通常情况下,HD、UHD和HDR内容使用SL3000保护。

如何实现安全级别?

根据微软的文档描述,安全级别作为客户端证书(Client Certificate)的一种属性,在制造阶段就已经内嵌在了客户端。因此,当客户端发起许可证请求时,它也会提及其安全级别。

许可证服务器检查客户端安全级别并返回用于相应分辨率的内容密钥。比如,如果内容提供商希望只有SL3000级别的客户端才能观看1080p的内容,而客户端提供的安全级别是SL2000,那么许可证服务器将不会返回1080p视频的内容密钥。

许可证服务器还可以将最小安全级别设置为SL150、SL2000或者SL3000。客户端需要检查这个值,如果安全级别低于最小值,那么客户端将拒绝播放视频。

商业模式

前文已经提到, PlayReady支持订阅、按观看次数付费、租借、购买和基于广告的商业模式。让我们简单了解一下这些商业模式之间的区别。

订阅

在这种商业模式中,许可证既可以是基于时间限制的模式,也可以是链式模式。

  • 时间限制模式(Time-based model):许可证只在特定时间期限内有效。如果订阅处于活跃状态,且许可证即将到期,那么许可证会自动更新;如果取消了订阅,那么许可证则自动失效。

  • 链式模式(Chained):该模式中有一个根许可证和叶许可证的概念,根许可证包括基于时间限制的订阅策略,叶许可证与之绑定。当根许可证过期时,叶许可证也会过期。

按观看次数付费

在这种商业模式中,PlayReady将内容许可证预先传输给订阅者,并确认许可证成功存储在客户端设备上。

租借

这种具有时间限制的基本许可证非常灵活。你可以规定许可证在多长时间内有效(按下播放键后的1天、30天或者24小时)。

购买

这种商业模式会假设许可证完全不会过期。除此之外,当用户购买内容时,PlayReady能够将内容复制到一台不同的设备,或者将内容转换为其他DRM方案。

哪些平台支持微软的PlayReady DRM?

下列这些平台都支持PlayReady:

  • Windows生态系统

  • XBox & PlayStation游戏机

  • Android

  • iOS

  • Chromecast

  • Roku

  • Edge和IE11等浏览器

  • 智能电视(三星、LG等)

结语

我希望现在你已经充分理解了微软PlayReady DRM的工作原理。网上有很多关于PlayReady的信息、示例代码、播放器和SDK,都可以帮助你加深理解PlayReady并实现它。

我们下次再见,保重!

致谢:

本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。

原文链接:

https://ottverse.com/microsoft-playready-how-does-it-work/

延伸阅读:

中学生也能看懂的DRM

Apple FairPlay DRM及其工作原理

Google Widevine及其工作原理

构建DRM系统的重要基石——EME、CDM、AES、CENC和密钥


Microsoft PlayReady DRM及其工作原理相关推荐

  1. Microsoft PlayReady DRM

    支持在 Web 浏览器中使用加密媒体扩展和 Microsoft PlayReady DRM 本文内容 简介 实现方法 万维网联合会 (W3C) HTML5 加密媒体扩展 (EME) 为网站引入了一项功 ...

  2. Apple FairPlay DRM及其工作原理

    翻译.编辑:Alex 技术审校:刘姗 本文来自OTTVerse,作者为Krishna Rao Vijayanagar. ▲扫描图中二维码了解音视频技术大会更多信息__▲ Easy-Tech #020# ...

  3. DRM之Microsoft PlayReady学习入门(一)

    数字内容生态背景 未来在数字媒体生态系统中有几个重要的转变. 安全性正在转向硬件,应用程序正在让位于浏览器,网络正在成为OTT内容的管道,内容交付正在转向云: 现在 趋势 基于软件的安全性 基于硬件的 ...

  4. 路由及路由器工作原理深入解析3:路由与port

        日志"路由及路由器工作原理深入解析1"http://user.qzone.qq.com/2756567163/blog/1438322342介绍了"为什么要使用路 ...

  5. JavaScript 工作原理(二)-如何在 V8 引擎中书写最优代码的 5 条小技巧(译)

    From:https://segmentfault.com/a/1190000014770145 原文请查阅这里,略有删减. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScrip ...

  6. [中英对照]How PCI Works | PCI工作原理

    How PCI Works | PCI工作原理 Your computer's components work together through a bus. Learn about the PCI ...

  7. GPRS的工作原理、主要特点

    GPRS的工作原理.主要特点: 引 言 近年来,通信技术和网络技术的迅速发展,特别是无线通信技术的发展,使得电力系统的自动化程度进一步提高.GSM网络出现后,技术人员很快把GSM模块嵌入到各种仪表仪器 ...

  8. 【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)...

    一年前,从不知道Ajax是什么,伴随着不断的积累,到如今常常使用,逐渐有了深入的认识. 今天,假设想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在具体讨论Aj ...

  9. DLL动态链接库的工作原理

    DLL动态链接库的工作原理 分类: VC++神奇理论2012-08-29 11:12 2635人阅读 评论(0) 收藏 举报 dll工作windowsexedelphimicrosoft " ...

最新文章

  1. uart协议_UART协议简介
  2. 计算机管理学科,计算机学院学科经费使用与管理细则(试行)
  3. Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法
  4. PaddleOCR——Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案
  5. 设计模式(一)---简单工厂模式
  6. 使用Maven导出工程依赖的jar包
  7. 巴基斯坦国立计算机与新科大学,新加坡四所大学和新科院学费全面上调
  8. NSUserDefault
  9. 分享小知识:善用Group By排序
  10. java keytool工具详解
  11. vue直播rtmp流
  12. adb ps shell 查看进程_adb shell查看进程方法
  13. 2022最新PHP微信/QQ域名防封直连系统源码
  14. 我从华为身上学到的项目管理经验 -- 测试篇
  15. DevOps读书清单:十本应该放入书架的经典
  16. alpine linux 简介
  17. Cadence Other格式网表导出与导入ortelesis.dll
  18. UDP打洞、P2P组网方式研究
  19. 1.layer弹窗在使用时,原本隐藏的div,在打开弹窗后竟然显示出来了
  20. 《移动游戏开发精要》读书笔记

热门文章

  1. 03-SQLPlus的常用命令和使用
  2. FTTB+NAT+pppoe+CBAC+*** client+AAA配置
  3. vs2022安装详细
  4. Franklin-Reiter相关消息攻击
  5. 微计算机原理及应用第八章,微机原理第八章--8251讲解
  6. java代码安全检测机制,下列选项中,属于Java语言的代码安全检测机制的一项是______。A.动态链接B.访问权限的检查C.通过接...
  7. java NIO BIO和AIO
  8. C语言:裴波那契数列(数组)
  9. 冒泡排序 (Java)
  10. 电音制作宿主软件-Ableton Live Suite v11.0.2 x64 WiN