`
eagledame
  • 浏览: 9559 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

android DRM解析

 
阅读更多
转载自:http://quanminchaoren.iteye.com/blog/849512

简而言之,DRM系统提供一套机制对用户使用手机上的媒体内容(如ringtong, mp3等)进行限制,如限制拷贝给第三方,限制使用次数或时限等,从而保护内容提供商的权利。建议读者可以阅读OMA DRM 的规范,以便更好的了解代码。

相关代码主要位于下列目录:
frameworks/base/media/java/android/drm/mobile1
frameworks/base/media/libdrm/moblile1
frameworks/base/media/libdrm/mobile2
packages/apps/Mms/src/com/android/mms/drm: drm
packages/providers/DrmProvider/src/com/android/providers/drm

下面先作简要分析:
frameworks/base/media/libdrm/moblile1应该是提供OMA DMA1.0的本地/c++ 实现
frameworks/base/media/libdrm/moblile2应该是提供OMA DAM2.0的本地/c++ 实现。

frameworks/base/media/java/android/drm/mobile1 对应用提供OMA DRM 1.0 (即frameworks/base/media/libdrm/moblile1)的java接口。目前尚没有OMA DRM 2.0的java接口,也就意味着OMA DRM 2.0在Android中尚未应用。

packages/apps/Mms/src/com/android/mms/drm 实现在MMS中如何使用DRM。
packages/providers/DrmProvider/src/com/android/providers/drm ?

下面再作具体介绍:
一 目录 frameworks/base/media/java/android/drm/mobile1
这个目录是OMA DRM 1.0的java 接口。
OMA DRM 1.0 定义了几个重要概念:
DRM消息(DRM message):用户下载的一条DRM内容。根据下面介绍的DRM内容传输方式的不同,DRM消息中包含的内容亦有所不同,可能只包含一个未经加密的媒体对象;也可能即包含未加密的媒体对象,也包含一个权利对象;也可能只包含一个经过加密的媒体对象(.dcf)。
媒体对象 (media object):包含媒体资源,如一个mp3, ringtone等。
权利对象(Right object): 限制用户如何使用媒体对象。


OMA DRM 1.0 定义了DRM内容的四种传输方式:
1. Combined delivery: 这种传输方式中,媒体对象以未经加密的方式(plain) 与Right object打成一个包,一块传输。这个包下载到手机设备上后,不允许转发给其他设备。
2. Forward lock: 这种传输方式是combined delivery的一个特例。媒体对象没有对应的Rigth object。媒体对象不允许转发给其他设备
3. Separate delivery: 媒体对象和权利对象分别传输。媒体对象采用对称密钥加密,文件以.dcf为后缀。权利对象中则包含对应的密钥。
4. Superdistribution:类似separate delivery, 但媒体内容允许转发给其他设备。

相应地,本目录的代码中:

DrmConstraintInfo对象描述了(对媒体内容的)一组限制属性,如开始/结束使用日期,使用次数等;

DrmRights对象代表了一个OMA 权利对象。

DrmRightsManager管理设备上的Rigth Objects。所有下载的权利对象,不论是由separate delivery 还是 combined delivery,权利对象都要首先安装到设备上。


DrmRawContent代表一条DRM内容,分为两类:DRM_MIMETYPE_MESSAGE_STRING --DRM内容是经combined delivery 或 forward lock传输的(也即媒体对象没有加密,没有或者有一个权利对象); DRM_MIMETYPE_CONTENT_STRING -- DRM内容是经 separate delivery传输的(也即媒体对象是经过加密的dcf格式,不包含权利对象)。

DrmInputStream:这个对象从一个DrmRawContent对象中读出经过权利对象验证并解密后的(需要的话)媒体对象内容。这个内容之后就可以传给相关应用输出给用户。


二 目录frameworks/base/media/libdrm/moblile1
本目录真正实现DRM DRM 1.0。
drm1_jni.c提供对DrmRawContent中方法的本地实现;
objmng目录下是具体实现。frameworks/base/media/libdrm/mobile1/include/objmng/svc_drm.h中有关于每个方法的详细解释,基本思路是每打开一个Drm 内容,就创建一个session,然后提供一系列方法,以此session为参数,对Drm进行各种操作,如获取属性,读取解密后内容等。这里不再赘述。

分享到:
评论

相关推荐

    exoplayer播放dash+drm widvine加密流

    ExoPlayer是一个开源的Android媒体播放器框架,由...总的来说,ExoPlayer结合DASH和Widevine DRM,为Android应用提供了安全且高性能的加密流媒体播放能力。理解并掌握这些技术,对于开发高级的视频应用是非常重要的。

    DRM实现流媒体的加密

    3. **客户端解密模块**:在用户设备上运行,负责接收和解析授权信息,使用正确的密钥对加密的流媒体内容进行解密,使得用户能够播放或消费内容。 4. **内容分发网络(CDN)**:为了提供流畅的用户体验,流媒体服务...

    解析 Epub格式文件的dameon

    例如,对于有DRM(数字版权管理)的Epub文件,daemon可能需要解密后再进行处理;对于不合规的Epub文件,daemon可能会进行校验并抛出错误。 总结起来,Epub Daemon是处理Epub文件的一种高效工具,它能够帮助我们快速...

    android Download实现过程相关资源

    本文将详细解析Android下载实现的过程,并基于提供的"DRM"这一标签,探讨可能涉及的数字版权管理(Digital Rights Management)技术。 首先,让我们来看看Android下载的基本流程: 1. **创建DownloadManager**: ...

    OMA_DRM技术体系结构分析.pdf

    - **授权对象**:采用XML格式,易于生成、解析和验证,确保版权信息的一致性和安全性。 - **内容保护格式**:定义了统一的内容封装格式,支持多种数字媒体类型。 - **内容分发方式**:支持多样化的分发模式,包括...

    Android多媒体框架分析.pdf

    * android:上层库,实现了音视频采集、播放的接口和 DRM 数字版权管理的接口实现。 * baselibs:包含数据结构和线程安全等内容的底层库。 * codecs_v2:音视频的编解码器,基于 OpenMAX 实现。 * engines:核心部分...

    Android多媒体框架初步分析

    - **android**:上层库,实现了Android所需的音视频采集和播放接口,以及DRM(Digital Rights Management)数字版权管理接口。 - **baselibs**:底层库,包含数据结构和线程安全等相关内容。 - **codecs_v2**:基于...

    stagefright-plugins-master_stagefright_android_

    此外,Android 8.0(Oreo)引入了MediaDrm API,增强了对数字版权管理(DRM)的支持。 六、实际应用与开发 对于开发者而言,理解Stagefright的工作原理有助于优化多媒体应用的性能。例如,选择正确的MediaCodec进行...

    Android多媒体框架分析

    - **android**:上层库,实现音视频采集和播放接口以及DRM数字版权管理接口。 - **baselibs**:底层库,包含数据结构和线程安全等内容。 - **codecs_v2**:音视频编解码器,基于OpenMAX实现。 - **engines**:核心...

    Android_Package_installer原理简述.doc

    4. 扫描`data/app-private`,处理DRM保护的APK(如果存在)。 Package Installer与PackageManager Service协作,确保了安装过程的顺利进行。它们共同确保了应用的安全性,例如,验证签名以防止恶意软件,检查权限以...

    全能解析3.8.zip

    8. **多平台适配**:如果这是一个跨平台的应用,源码还需要包含针对不同操作系统(如iOS、Android、Web等)的适配代码。 9. **版权保护**:对于流媒体服务,可能有DRM(数字权限管理)机制,保护内容不被非法复制或...

    Android电子书阅读器.zip

    1. DRM:对于有版权保护的电子书,可以集成数字权限管理(DRM)技术。 2. 数据加密:对用户数据进行加密存储,保障用户隐私。 八、持续更新与维护 1. 版本迭代:根据用户反馈和市场需求持续优化更新。 2. 兼容性...

    android 电子书

    开发者需要了解这些格式的解析和渲染机制,以便在Android应用中实现兼容性。 其次,开发Android电子书应用时,可以利用现有的开源框架,如EpubReader、PDF.js等。EpubReader是专门处理EPUB格式的库,它可以解析元...

    Android 3.0新特性介绍

    以下是对这些新特性的详细解析: 1. **用户界面改进**: - **多窗口界面**:Android 3.0引入了多窗口界面,允许用户在一个屏幕上同时操作多个应用,充分利用大屏幕空间。 - **System Bar**:位于屏幕底部的系统条...

    Android程序源码--阅读器功能

    总的来说,这个"Android程序源码--阅读器功能"涵盖了Android应用开发的多个方面,包括文件解析、UI设计、动画实现、字体渲染、数据持久化、性能优化以及可能的DRM技术。通过研究这段源码,开发者可以深入理解Android...

    android 网络媒体

    本文将深入探讨Android网络媒体的相关知识点,包括网络视频的获取、解析、缓存、播放以及性能优化等方面。 一、网络视频的获取 网络视频通常以HTTP、RTSP或HLS(HTTP Live Streaming)等协议传输。Android系统内置...

    完整版android视频播放器_android源码.zip

    以下将详细解析其可能包含的关键知识点: 1. **多媒体框架(Media Framework)**:Android的多媒体框架是播放音频和视频的基础,它包括MediaCodec、MediaPlayer、MediaExtractor等组件。MediaCodec用于解码音视频流...

    Android多媒體框架初步分析

    - android:提供了针对Android的上层库,实现了音视频采集、播放及DRM接口。 - baselibs:基础库,包含数据结构和线程安全等内容。 - codecs_v2:基于OpenMAX实现的音视频编解码器。 - engines:核心部分,实现...

    android 电子书 专业版

    在Android上实现分页显示TXT电子书,需要解析TXT文件内容,将长文本拆分为适合屏幕显示的独立页面。这涉及到字符串处理、字符编码理解(如UTF-8)以及文本段落的分割算法。 2. **文本渲染与布局**:在Android中,...

Global site tag (gtag.js) - Google Analytics