本文是对微软DRM 7.0 SDK官方帮助文档的直接翻译,因为时间仓促,难免错漏,仅希望能给大家的开发节约一点时间。
你可以使用微软的Windows媒体版权管理7.0 程序开发包编程管理加密内容和版权许可。下图说明了整个过程的步骤。
点击在新窗口查看全图
上图显示了在内容打包程序、版权许可分发程序、Windows媒体许可服务和请求一个特定的未经授权的Windows媒体文件的用户之间的交互。下面所列的项目与图示中的步骤号一一对应:
  1. 内容打包程序用一个许可密钥种子和一个密钥标识生成一个密钥。许可密钥种子是在内容打包程序和许可证书分发程序之间共享的秘密,它是一个不少于5字节长的随机值。密钥标识是一个全局唯一标识符。
  2. 内容打包程序使用密钥加密内容,并把密钥标识和用于版权许可分发的互联网地址置入内容头。然后内容打包程序把内容头和加密内容一起打包到一个Windows媒体文件中。
  3. 内容打包程序把Windows媒体文件传递给用户。
  4. 用户的播放器请求Windows媒体版权管理服务器确定其所请求的Windows媒体文件是否可以播放。
  5. Windows媒体版权管理服务器搜索版权库以获得播放内容的合法版权许可。
  6. 如果Windows媒体版权管理服务器搜索所需的版权许可失败,它会从版权许可分发程序申请一个版权许可。质询(challenge)用于请求内容头中包含的版权许可及与用户电脑相关的信息。
  7. 版权许可分发程序使用共享版权许可密钥和密钥标识生成与第1步中由内容打包程序生成的相同的密钥。然后版权许可分发程序加密该密钥。
  8. 版权许可分发程序生成了一个版权许可,并将加密的内容密钥添加到版权许可中,再添加一个从Windows媒体版权许可服务中获得的证书,然后使用证书中的公有密钥对版权许可进行签名。
  9. 版权许可分发程序将签名后的版权许可传送到客户电脑的Windows媒体版权管理器上。
  10. Windows媒体版权管理器验证该签名,并将该许可放在许可库中。
  11. Windows媒体版权管理器进行解密,并将所请求的多媒体内容包发送到播放器。
下面的图显示了你打包Windows媒体文件必须要用到的对象。要想把内容打包成能够响应用户的请求,必须创建一个包含版本7的头、版本1的头和加密内容的Windows媒体文件。

点击在新窗口查看全图
当一位客户发送了一个播放内容的请求,你必须创建一个包含以下项目的文件头。黙认是使用数据库存储这些项目。
项目
描述
获取许可的网络链接
网站用来发放许可的链接
个别版本号
这是一个可选参数,代表在客户电脑上播放内容需要个别客户端版本。
内容标识
可选字符串,用于唯一标识内容。强烈推荐包含内容标识。
密钥标识
内容打包程序和许可发放程序均要用来生成密钥的字符串。
属性
可选的一组命名值,可以用于标识内容所有者,作者的名字,内容的类型等等。强烈推荐使用属性。
 
下列项目不包含在头中。
项目
描述
密钥
用来加密内容的值。
许可密钥种子
在内容打包程序和许可分发程序间共享的秘密。种子和密钥标识是用来生成密钥的。
私有签名密钥
私有签名密钥被内容打包程序用来签名头。
公有签名密钥
公有密钥是内容打包程序生成并交给许可分发程序用于验证头。
 
可以使用WMRMKeys对象创建密钥、密钥标识、许可密钥种子、内容标识、私有签名密钥和公有签名密钥。必须用WMRMHeader对象取得所需项,并创建和签名一个内容头。签名是必需的。
必须用WMRMProtect对象加密原始内容并打包,连同版本1和版本7的头置入Windows媒体文件中。
下图显示了需要用来创建和分发许可的对象。
点击在新窗口查看全图
要获得许可,客户电脑的播放器发送一个质询指令到许可发放程序。一个质询由版本7内容头、用户电脑相关信息、请求行为列表还有一个可选的版本1质询构成。必须使用WMRMChallenge对象取得这些项。
在当前的Windows媒体版权管理版本中,在质询请求的行为列表中仅包含播放加密内容的权限。内容打包程序可以通过WMRMRights对象指定附加的版权。如果内容打包程序和版权许可分发程序不属于同一个人或同一组织,许可发放程序必须告诉内容打包程序随证书发放什么样的权限。
要创建许可,许可发放程序需要向Windows媒体许可服务器请求一个证书。证书中包含一个许可发放程序必须用来签名许可的公有密钥。
在取得了质询及指定了权限以后,必须使用WMRMLicGen对象创建并签名一个许可。许可包含了用于加密内容的密钥、特定的权限、客户端电脑的信息、可选属性、可选优先号以及许可发放程序的证书。
必须使用WMRMResponse对象为发送到客户端Windows媒体版权管理器的许可创建响应字符串。
Windows媒体版权管理SDK支持脚本语言。它支持如下对象。
对象
描述
WMRMChallenge对象
处理许可请求。
IWMRMCoding接口
转换文本和二进制字符串。
WMRMHeader对象
管理内容头。
WMRMKeys对象
管理加密密钥和许可密钥种子。
WMRMLicGen对象
创建许可。
WMRMProtect对象
加密文件。
WMRMResponse
将许可递交给客户端。
WMRMRights对象
指定加密内容的使用权限。
LicenseGenerator对象
创建版本1许可。
RMGetLicense对象
允许客户端获得许可。
更详细的资料包括编程指南以及带有详细说明的实例代码会陆续在此发表。
顺便说一句,千龙网[url]http://www.qianlong.com[/url]正在努力开发新一带的宽带平台,完全Flash MX表现页面,XML数据中间层,JSP管理系统,请大家密切关注。
 
DRM

0

收藏

王喆

9篇文章,1W+人气,0粉丝

Ctrl+Enter 发布

发布

取消

推荐专栏

基于Kubernetes企业级容器云平台落地与实践

容器私有云平台实践之路

共15章 | 李振良OK

¥51.00120人订阅
上新
Web网站安全评估分析及防御

企业级网安运维

共30章 | simeon2005

¥51.0054人订阅
老司机网络运维干货集锦(含路由交换安全Qos优化)

新西兰资深网工运维之道

共16章 | 姜汁啤酒

¥51.00471人订阅
负载均衡高手炼成记

高并发架构之路

共15章 | sery

¥51.00162人订阅
带你玩转高可用

前百度高级工程师的架构高可用实战

共12章 | 曹林华

¥51.00244人订阅
最近更新
VMware vSAN中小企业应用案例

掌握VMware超融合技术

共42章 | 王春海

¥51.0076人订阅

0

分享
王喆