DRM-Playready总结

时间:2024-04-06 09:00:33

1. 前言

Playready是微软开发的媒体文件保护技术,包括加密,输出的保护和数字版权管理(DRM)。Playready是目前应用较为广泛的DRM技术之一。

Playready所开发的产品有:

  • PlayReady Server SDK

    用于服务器开发,实现内容包装、许可证分发、域管理和计量服务等。

  • PlayReady PC SDK

    用于个人PC端的软件开发,实现PC端的许可证管理、在设备间传输保护内容、播放内容等。

  • PlayReady Client SDK for Android/iOS

    用于开发Android/iOS移动设备端的应用程序,实现播放受PlayReady 保护的数字内容。

  • PlayReady Porting Kit

    用于开发人员为不同设备创建Playready系统架构,从而支持Playready数字内容保护的相关功能(如许可证获取、内容解密)。

Playready的安全等级有三种:

  • SL150:

    开发目的没有提供保护;客户端可以使用任何形式实现;基于任何Playready porting kit版本开发。

  • SL2000:

    可通过硬件方式提供保护,也可以不适用硬件保护;客户端可以是一个软件应用也可以是一个硬件设备;是否采用TEE保护是可选的;基于任何Playready porting kit版本开发。

  • SL3000:

    通过硬件方式提供保护;客户端必须是一个设备并采用TEE;同时必须遵从Compliance Rules和Robustness Rules。此方案提供较高的安全性。

具体内容可查看playready官网

2. 架构

2.1 Android中架构

在Android中主要使用两种Level,SL2000和SL3000。下面基于AndroidQ给出架构图。由于各个厂商的差异,下图中playready service的实现方法会有所不同。

SL2000:
DRM-Playready总结
SL3000:
DRM-Playready总结

2.2 在Linux中架构

暂无

2.3 在IOS中架构

暂无

2.4 在Windows中结构

暂无

3. 移植

microsoft提供的源码并没有适配到各个平台,需要根据各自的平台去移植适配

3.1 在Android中移植

基于SL2000相对SL3000简单,所以先移植SL2000。

SL2000:

  1. 获取源码(向microsoft获取)
  2. 参考DRM步骤进行配置
  3. 增加playready的plugin代码,这里给出一个范例:

playready-plugin-for-android-specification

​ github: https://github.com/MicrosoftDocs/PlayReady/tree/live

  1. 调试播放通路,mediacodec(mediaplayer一般不使用)

  2. 使用exoplayer等播放器进行测试

SL3000:

SL3000的原理,简单的归纳就是将解密部分的代码移植到secure os上进行,这就需要tee模块,通过各种ta实现,通过命令发送到secure os中运行。同时,要适配好secure os里的一些规则。

​ 移植完后,需要进行各种测试。

3.2 在Linux中移植

暂无

3.3 在IOS中移植

暂无

3.4 在windows中移植

暂无

4. 应用

  1. 这里提供一个网页test player
  2. google认证测试GMS
  3. netflix, exoplayer等播放器
  4. 盒子上一些vip片源
  5. 片源商,HBO等
  6. xbox
    DRM-Playready总结