看清OMA DRM文件的本质

DRM即digital right management,数字权限管理技术。DRM标准目前有1.0、2.0、2.1三个版本,由 OMA(Open Mobile Alliance)发布。
当然还有其他很多机构和联盟都提出过相应的DRM标准。例如Marlin Developer Community提出的Marlin DRM;Google则通过收购Widevine公司推出了Widevine DRM。

OMA DRM文件分为以下三种类型:

这里写图片描述

Forward Lock

1、Forward Lock文件说明
转发锁定文件,后缀为.dm文件,文件由文件头和媒体内容组成,媒体内容是二进制明码。文件头部分,记录了媒体内容编码方式,媒体内容类型等。该类型不允许通过设备应用转发给其他设备。针对手机举例,不允许作为Mms, Email附件,不允许通过蓝牙共享。可以在本机上无限制使用。

Forward Lock不能转发,可以无限制使用 不含RO权限可以无限制使用.用IMEI做为唯一的识别码.只允许在download的手机上使用DRM.且只允许剪切文件到SD卡.倘若用户拔掉SD卡.移除到另外一台手机上.由于IMEI已经变化.故用户还是无法播放FL文件..FL文件可以设置为铃声,壁纸等

用UltraEdit打开forward lock文件,其文件头如下图所示:标示了Content-Type和Content-Transfer-Encoding

这里写图片描述

其文件尾如下图
这里写图片描述

从图示可见 forward lock有如下所示的格式:

    --mime_content_boundary\r\n
    Content-type: audio/mpeg\r\n
    Content-Transfer-Encoding: binary\r\n
    \r\n
      ID3.......@*TT2    
      ...
      .\r\n
    --mime_content_boundary--\r\n

说明:
DRM文件格式其实就是在原始的媒体文件加了一个文件头和一个文件尾。
文件头一共增加了四行,在这里我把隐藏字符也用转义字写出来,目的就是为了看清楚。

第一行是以--开头,后跟一个随机的字符串,但结尾时也必须是这个字符串, 然后是回车换行
第二行是说明此文件的mime type
第三行是编码格式  
第四行是一个空行 
然后是原始的媒体文件,这里没有详细给出,进行了省略。
最后,在原始文件的末尾先来一个回车换行
最后一行是以--开头和结尾,中间放上跟头一样的字符串,回车换行。
  1. Forward Lock工作流程
    用特定工具(比如:Sony Ericsson DRM Packager),或者是手动编写,将一个普通的视频文件(例如mp4) 生成一个符合标准的DRM文件,放到服务器上;

用户付费后,用下载工具将此DRM文件下载到本地;

下载工具必须支持这种DRM文件,下载的时候,其内部实际上是把此DRM文件进行了加密,加密算法可以采用AES等算法。密钥应该是每台机器生成一个唯一的密钥,加密和解密密钥是相同的。

这样,在本地端就有了一个加密的媒体文件,用户可以在本机上进行播放,但如果COPY到另外的机器上,由于密钥不同,所以不以成功解密,这样就达到了ForwardLock的目的。

Combined Delivery

合并分发文件, 后缀为.dm文件,文件有两部分组成,第一部分是权限信息,第二部分为媒体信息, 文件内容也是明码形式。权限信息为xml结构,并包含有一个content-id元素,媒体信息部分也包含有一个content-id,这两个id完全相同。不同id一定是对应到DRM服务器上不同的媒体文件。该类型文件的使用由其中包含的权限文件进行约束。

目前的CD文件有RO权限.RO+Content绑定在一起,大致包括下列几种类型:
有次数限制的,如count 5 times,只允许播放5次
有期限限制的,如2013年7月8日12点—2013年7月10日18点
期限截止的, 如2013年9月5日之前.
次数和期限结合的,,如2013年7月10日—-2013年7月13日,count 5,,就是在这期间只能播放5次

且用户不可以手动更改时间来把已过期的CD文件变为有效的文件

文件头:

这里写图片描述

文件尾:
这里写图片描述

这种文件会将媒体文件本身以及查看该媒体文件所需要的权限一并分发给用户。
如上图所示:
可以很明显的看到,CD文件头包含了DRM媒体文件本身(FL)的头信息,同时还包含了一个独立的权限文件信息。这个嵌入在文件当中的权限信息有自己的Content-type 和Content-Transfer-Encoding

<o-dd:version>1.0</o-dd:version>  //版本信息 OMA DRM 1.0
//content-id,与媒体信息部分的content-id一致
<o-dd:uid>cid:my-text-20171030171025-0314704591@site.com</o-dd:uid>  
<o-dd:play>  //因为是音乐文件
...
<o-dd:count>6</o-dd:count> //有6次使用权限
...
//媒体信息部分
--mime_content_boundary
Content-Type: audio/midi   //媒体文件的mime
Content-ID: <my-text-20171030171025-0314704591@site.com>  //媒体信息部分的content-id
Content-Transfer-Encoding: binary

Seperate Delivery

Seperate Delivery包括两个文件:后缀为 .dcf 的媒体信息文件有文件头;后缀为 .drc或.dr 的权限文件。有RO权限.RO和Content分开.下载好conteng后.需要通过购买权限来获取密钥,并通过wap push获取RO权限

SD的文件和CD文件类似,只是用户需要去服务业者的网络上先去下载内容文件.当下载内容文件后.还得花钱去购买权限RO

只有获得有效的RO,才可以播放SD文件,同CD一样,SD文件也是无法通过更改手机时间来把已过期的SD文件变为有效的文件

SD文件可以通过MMS进行发送.但是发送之前,用户必须购买SD的RO权限才可以经过MMS,BT,EMAIL等发送

如果用户只是用SD的内容文件去发送,可以发送出去,但是接收端的用户也是无法使用该SD文件的

对于.dcf内容文件,它的文件由文件头与媒体信息组成,文件头有content-id, 媒体信息是加密的。

这里写图片描述

下面用NotePad++++打开的结果:
mime、content-id和Rights-Issuer都可以看到

这里写图片描述

.dr的权限文件是通过wap push或者其他形式单独传送的,后缀为.drc或.dr形式。权限文件会包括id以及key这两个节点。

这里写图片描述

SD文件,会将媒体文件同权限文件分离开来;这样就提出了一个新的问题:如何将权限同对应的媒体文件进行匹配?别着急,看看SD文件结构,这其中包含了重要的一项:Rights-Issuer他标示了当前的SD文件所对应的权限文件。我们也可以通过这一项来使得对应的SD文件可用!

DRM 文件的制作

用特定工具(比如:Sony Ericsson DRM Packager),或者是手动编写,可以将一个普通的视频文件(例如mp4) 生成一个符合标准的DRM文件

Android中DRM代码结构

代码结构

frameworks/base/drm/ (DRM的Java和JNI代码)

这里写图片描述

frameworks/av/drm/

这里写图片描述

frameworks/av/include/drm/

frameworks/av/services/mediadrm/

这里写图片描述

frameworks/base/media/

 java/android/media/MediaDrm.java
 ...
发布了70 篇原创文章 · 获赞 46 · 访问量 13万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览