开发 PlayReady Packager

在打包程序中开始合并 PlayReady 以保护内容之前,应先检查几个注意事项。 请注意,开发为要加密的内容提供 PlayReady 保护的打包程序:

  • 不需要来自 Microsoft 的许可协议。
  • 与在内容中插入 PlayReady 相关的 Microsoft 不收取任何费用。
  • Microsoft 没有适用于 PlayReady 编码器或包装器的版税付款。

因此,无需为这些项目分配任何时间或预算。

注意

如果不想自己开发 PlayReady 打包程序,某些Microsoft PlayReady合作伙伴可以为公司开发 PlayReady 打包程序。

开发概述

在打包器中合并 PlayReady 功能的开发时间取决于以下组件的开发和测试:

  • 密钥生成器 - 生成用于加密内容 (的密钥值及其关联的 KeyID) 。 如果使用 KeySeed 机制,则此生成器需要实现 PlayReady 密钥种子 规范中定义的函数。

  • PlayReady 标头生成器 - 生成 PlayReady 对象 (,包括 PlayReady 标头和/或嵌入式许可证Microsoft Store) 。 此 PlayReady 标头包括 KeyID 或 KeyID 列表、PlayReady 许可证服务器的默认 URL 以及受保护内容所需的任何自定义值。 此函数必须遵循 PlayReady 标头规范中概述的要求。

  • Packager - 使用密钥生成器提供的键值和由 PlayReady 标头生成器创建的 PlayReady 对象打包内容。

  • 密钥管理系统 - 如果使用 KeySeed 机制) ,则存储密钥值及其关联的 KeyId (不是必需的。

开发 PlayReady Packager

如果你已决定开发自己的 PlayReady Packager,则需要根据希望存储和交付内容的方式,决定打包程序的工作方式。 以下列表提供了将 PlayReady 功能添加到打包程序所需的必要步骤。

  1. 选择加密格式。 几种不同类型的加密用于保护内容。 Microsoft PlayReady系统使用对称密钥算法、高级加密标准 (AES) 。 从版本 4.0 开始,PlayReady 系统支持 CBC (密码块链) 和 CTR (计数器模式) 模式(如 ISO 标准 ISO/IEC 23001-7 中定义)中的 AES 128 密钥。 用于保护内容的加密机制封装在容器中,以便可以在各种平台上有效地浏览和解密文件。

    PlayReady 产品的符合性规则允许使用 CTR 模式或 CBC 模式中使用的 AES-128 密钥的任何加密格式。 有关详细信息,请参阅 PlayReady 内容加密模式

  2. 选择如何加密内容。 有关详细信息,请参阅 使用加密密钥

  3. 选择是仅使用 PlayReady 解密内容,还是希望支持多个 DRM。 有关详细信息,请参阅 使用加密工具

  4. 选择如何生成和存储内容密钥, (密钥值和密钥 ID) 。

    打包程序应包含某种密钥生成器,用于创建用于加密和解密内容的密钥值。 密钥生成器应将密钥 ID 关联到密钥值。 密钥值仍然是一个机密,密钥 ID 是公共的,并插入到内容中的 PlayReady 标头中。 如果打包程序不包含密钥生成器,则需要单独开发或源一个。

    你需要开发密钥管理系统来存储多个密钥值及其关联的密钥 ID,或者从第三方获得许可证。 密钥管理系统可以是数据库或任何其他类型的存储系统,但必须安全,以防止任何人未经授权访问密钥值。 Microsoft 不提供 PlayReady 的密钥管理系统。 或者,可以使用与 PlayReady 一起提供的 KeySeed 机制来代替密钥管理系统, (KeySeed 机制必须合并到打包器中和 PlayReady Server 中,该机制提供用于解密内容) 的许可证。

  5. 选择要如何在加密内容中插入 PlayReady 对象 (,包括 PlayReady 标头和/或嵌入式许可证存储) 。 有关详细信息,请参阅 如何生成 PlayReady 标头

  6. 选择如何将密钥值和密钥 ID 提供给 PlayReady 服务器,然后将密钥值分发到 PlayReady 客户端。

    你可以开发自己的 PlayReady 许可证服务器 (需要 PlayReady 的许可证,但 Microsoft 不会为你的开发或使用 PlayReady Server) 收取任何费用或版税,或者你可以使用第三方提供的或运营的 PlayReady 服务器。 无论是开发自己的 PlayReady Server 还是由第三方运行 PlayReady 服务器,都必须能够及时将密钥值和密钥 ID 传达给服务器,以便客户端能够有效地播放内容。

  7. 选择客户端将如何联系 PlayReady 许可证服务器来获取内容加密密钥。 客户端应用必须知道 PlayReady 许可证服务器 URL (也称为许可证获取 URL,或者需要获取许可证时) LA URL。 客户端应用可以编程为硬编码的 LA URL 值,或从服务器动态检索它。 如果客户端应用没有此 LA URL 值,它将使用内容 PlayReady 标头中找到的 LA URL 值,即默认的 LA URL。 尽管不需要,但在打包时,服务通常会在内容的 PlayReady 标头中包含默认的 LA URL 值。

请参阅

PlayReady 测试服务器内容